* feat(mobile): mobile tags
* fix(mobile); refactoring, replaced hook
* tag provider through asset service
* make search use a tag set
* use tag action directly
* use notification listener
* untag action
* handle untag response
* fix tests and add untag action test
* fix material error from tag picker dialog
* fix(mobile): clip tag picker tiles and update tag overflow
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Santo Shakil <shakil.mezbah@gmail.com>
* chore(mobile): rust native core
* chore(mobile): move the android byte buffer into the native core
* chore(mobile): move the raw photo rotation into the native core
* move the rotation into immich_core, the jni side only wraps it
* use the pointer loop in rotate again, the bounds checked writes were slower on a pixel 5
* chore(mobile): move the 10 bit conversion into the native core
* move the 10 bit conversion into immich_core, neon for 32 bit arm
* chore(mobile): one thumbhash decoder in the native core
* decode the thumbhash straight into the returned buffer, its jni entry sits next to the c export
* chore(mobile): move the 10 bit conversion into the native core
* move the 10 bit conversion into immich_core, neon for 32 bit arm
* chore(mobile): move the 10 bit conversion into the native core
* move the 10 bit conversion into immich_core, neon for 32 bit arm
* move the android rust flags into native/.cargo/config.toml
* chore(mobile): move the raw photo rotation into the native core
* move the rotation into immich_core, the jni side only wraps it
* use the pointer loop in rotate again, the bounds checked writes were slower on a pixel 5
* fix(mobile): face thumbnail stuck blank after renaming a person
* flatten the codec error guard and rework the tests around framework driven reuse
* trim the image provider tests and note the per load state rule
* keep two small image provider tests: the renamed face and a late failure of a cancelled load
* clearer image provider tests: return the created completer, comment the steps, drop the unused listener, rename to thumbWithChecksum
* use the provider constructor with a lint ignore in the cache key test
* ask before deleting local only photos on android 10 and below
* move the delete consent prompt into _cleanupLocalAssets
* ask on android 11 as well before deleting local photos
* ask before deleting only where android shows no prompt
* split the local delete prompt into its own helper
* pick the local delete dialog in one flat branch and rename notBackedUp to isLocalOnly
* run the first resume after a background launch with a full local sync
* keep the untouched lines of the swift file as they were
* check the background launch at the first resume even after a pause
* play the server copy when the local video file cannot be read
* flatten the video source choice and add tests for it
* drop the platform override from the video viewer test