Commit Graph
390 Commits
Author SHA1 Message Date
Santo Shakil 11e9a4b4da fix(mobile): clear the app's cookies on logout (#32965) 2026-11-05 20:35:16 +03:00
Santo Shakil 7aba6c3f88 feat(mobile): delete passkeys (#32785)
* feat(mobile): delete passkeys

* fix(mobile): refresh the passkey list from the store after a delete
2026-11-05 20:35:16 +03:00
Santo Shakil f727e8edb4 feat(mobile): rename passkeys (#32784)
* feat(mobile): rename passkeys

* fix(mobile): refresh the passkey list from the store after a rename

* fix(mobile): skip the name dialog after creating a passkey
2026-11-05 20:35:16 +03:00
Santo Shakil cfa416e612 feat(mobile): list passkeys (#32783)
* feat(mobile): list passkeys

* fix(mobile): show the passkey list as the server's passkeys

* fix(mobile): reword and align the passkey list, refresh it from the store
2026-11-05 20:35:16 +03:00
Santo Shakil 22e7b20d3e feat(mobile): login with passkey (#32782)
* feat(mobile): login with passkey

* feat(mobile): use the server feature level on the login page

* refactor(mobile): share the steps after a login

* password, OAuth and passkey logins end with one finishLogin
* OAuth now also connects the websocket, like the password login

* fix(mobile): passkey login through the shared login steps

* fix(mobile): build the login response through its constructor
2026-11-05 20:35:16 +03:00
Santo Shakil 28a52948a9 feat(mobile): passkeys page with new passkey (#32781)
* feat(mobile): passkeys page with new passkey

* feat(mobile): passkeys entry under settings

* show it in settings when logged in and passkeys are on
* remove it from the profile menu

* feat(mobile): use the server feature level for passkeys

* hide passkeys below the passkeys feature level, without asking the server
* keep the server's feature level on ServerVersion

* fix(mobile): passkeys as a settings section through the store

* fix(mobile): filter the settings sections in SettingSection

* fix(mobile): remove the passkeys description and use the settings padding
2026-11-05 20:35:16 +03:00
Santo Shakil 17ad3a2e8a fix(mobile): show view in timeline for photos opened from a deep link (#33001) 2026-11-05 20:34:15 +03:00
Santo Shakil fae436a03c fix(mobile): log out before resetting the local database (#32928)
* fix(mobile): log out before resetting the local database

* fix(mobile): use a stateful widget for the reset state instead of hooks

* fix(mobile): run the reset tests' db work on the real clock
2026-11-04 20:47:09 +03:00
Codex 2800192c76 feat: add private file storage for web and Android 2026-10-31 23:07:09 +03:00
DawidKrynski c8a957a116 fix(mobile): use context search once server features are loaded (#31800)
Co-authored-by: Dawid Krynski <188586034+DawidKrynski@users.noreply.github.com>
Co-authored-by: Santo Shakil <santoshakil@users.noreply.github.com>
(cherry picked from commit be8e42526700d9ec5e72061e33f5039d50e40bae)
2026-10-29 20:43:01 +03:00
Ethan Ferrier f7697264ed fix(mobile): ocr delete by asset (#32611)
(cherry picked from commit 56ed326acda2220fc7e3b21b17b3c8d24daf99cc)
2026-10-29 20:43:01 +03:00
Brent Saltzman 3c383e46d1 fix: avoid duplicate manufacturer in camera name (#32657)
* fix(web,mobile): avoid duplicate manufacturer in camera name

Some cameras (e.g. Canon) already include the manufacturer in the EXIF
model, which made the details view show "Canon Canon EOS R6m2". Only
prepend the make when the model does not already start with it.

* refactor(web,mobile): address review feedback on camera name helper

- Use toLowerCase instead of toLocaleLowerCase for the comparison
- Hoist the whitespace regex to a static in the Dart helper
- Match any word of the make, so "EASTMAN KODAK COMPANY" with
  "KODAK EASYSHARE C875" is deduplicated too
- Compute the camera name once in DetailPanel

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
(cherry picked from commit cb2ea1e308d8a85f2f340f50b646f161d3528670)
2026-10-29 20:41:02 +03:00
shenlong c581bce715 fix: include partner shared assets for people even without showInTimeline (#32675)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
(cherry picked from commit 21ed7454836073a646273c7475b347e043439a90)
2026-10-28 20:41:41 +03:00
Kairui Liu c482c1e53e fix: preserve stack primary asset selection (#31380)
* fix: preserve stack primary asset selection

* test: select stacked assets by id

* chore: limit dart formatting changes

* fix: address stack viewer review feedback

* fix: align stack ordering with server

* fix: keep stack primary asset first

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
(cherry picked from commit 5a5d7be11084969c3c00a294ce6c0527042f88e7)
2026-10-27 23:12:13 +03:00
Yaros 919a4fd9ef fix: watch asset delete/archive in search (#31343)
* fix: watch asset delete/archive in search

* fix: restore via toast

* chore: format

* refactor: simplify search asset pruning

* chore: implement suggestions

* chore: more suggestions

* fix: mounted check

(cherry picked from commit f7b8ae5da370f947223b006618e5b4e5fb42fd33)
2026-10-26 22:35:01 +03:00
Mert 70ef2884f0 feat(mobile): jxl decoder (#32592) 2026-10-24 11:52:05 +03:00
Codex ca4d8d5a7a Prepare 3.3.5-local.8 and complete deletion regression test imports 2026-10-22 20:44:45 +03:00
gitTurboflieger 3aa65809b1 fix(mobile): stop trashing assets after deletion cancellation (#32522)
* fix(mobile): stop trashing assets after deletion cancellation

* fix(mobile): handle Android system delete cancellation

* fix(mobile): simplify

* simplify test

(cherry picked from commit 3517973b8a316c8fb729bf82fe4bbf95884b9146)
2026-10-22 20:43:53 +03:00
Santo Shakil 99a7830f6c fix(mobile): bump sqlite3_connection_pool to 0.2.13 (#32662)
* fix(mobile): bump sqlite3_connection_pool to 0.2.13

* fix(mobile): require sqlite3_connection_pool 0.2.13

(cherry picked from commit 539499ee5e3843d338287edcf6808c1820c74800)
2026-10-22 20:43:14 +03:00
Codex e04e70db2e Close startup log connection and use portable export filenames 2026-10-22 05:39:19 +03:00
Santo Shakil e66d5a70e7 fix(mobile): hide server addresses in upload error logs (#32550)
* fix(mobile): hide server addresses in upload error logs

* fix(mobile): remove duplicate upload failure logs

(cherry picked from commit 211773f778ca24ac33e64d46e50b3ab46702c851)
2026-10-22 05:22:44 +03:00
Santo Shakil 814cc14f88 feat(mobile): share logs from the startup error screen (#32288)
* fix(mobile): hide server addresses and tokens in shared logs

* feat(mobile): share logs from the startup error screen

* use only the shared logs patterns on the startup error screen

* fix(mobile): stop writing server urls and oauth values to the log

* fix(mobile): redact logs where they are read

* redact the startup error screen share

* fix(mobile): hide server addresses and tokens in shared logs

* fix(mobile): stop writing server urls and oauth values to the log

* fix(mobile): redact logs where they are read

* fix(mobile): redact logs when they are written

* log the startup error and share it as a log row

* fix(mobile): hide ipv6 addresses and name labels after their settings

* comment why the startup error row is only added here

(cherry picked from commit f7fa8a3a2d2c3b0ab59f90fbcc3c230c58a2aede)
2026-10-22 05:18:40 +03:00
Santo Shakil 59bf69f1d5 fix(mobile): hide server addresses and tokens in shared logs (#32287)
* fix(mobile): hide server addresses and tokens in shared logs

* fix(mobile): stop writing server urls and oauth values to the log

* fix(mobile): redact logs where they are read

* fix(mobile): redact logs when they are written

* fix(mobile): hide ipv6 addresses and name labels after their settings

(cherry picked from commit 89d2de1274a3e1a70a6169f4cfe1feebfb327791)
2026-10-22 05:18:40 +03:00
Codex 9533e7c67a test: adapt local regressions to Vitest 5 and verify date fallback 2026-10-19 20:43:27 +03:00
Santo Shakil f64adb5b36 fix(mobile): fallback localizations for unsupported locales (#32452)
* fix(mobile): fallback localizations for unsupported locales

* load the default delegates with an explicit english locale
2026-10-19 20:27:43 +03:00
Codex 43b94defd9 fix(mobile): use JSON maps for nested config compatibility defaults 2026-10-17 19:47:28 +03:00
Codex 85820ca45e test: cover user admin queries and config compatibility for local.4 2026-10-17 19:37:37 +03:00
Dag Stuan 92ab6e9c41 fix(mobile): Keep asset viewer controls hidden if they were hidden before zooming. (#31832) 2026-10-16 20:51:28 +03:00
Santo Shakil 12196bef4f fix(mobile): save typed coordinates in the location picker (#32460) 2026-10-16 20:51:28 +03:00
Codex 6665bb4796 feat: add verified Android and web update checks in settings 2026-10-15 14:54:44 +03:00
Codex 3b04c1c4dc test(mobile): mock wakelock binary transport for video regression checks 2026-10-14 21:42:22 +03:00
Codex d25c946c29 test(local): cover shared link access and video readiness; fix lint dependency 2026-10-14 21:37:42 +03:00
Jason Rasmussen c318714fdc feat: server feature level (#32178)
* feat: server feature level

* fix: correctly compute feature level

(cherry picked from commit cc1e2363651eaff63848baad2c7932923ca66554)
2026-10-14 21:24:14 +03:00
Will 1daf922555 feat(mobile): mobile tags (#30753)
* 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>
(cherry picked from commit 83c7ec50056bbefa10869c78457f8882c72275e2)
2026-10-14 21:24:13 +03:00
immich-push-o-matic[bot]andSanto Shakil 762748f9ea fix(mobile): show the memories date in every app language (#32262)
fix(mobile): show the memories date in every app language (#32259)

(cherry picked from commit 116a9436ad1f8164d9dee904551e5067d724be99)

Co-authored-by: Santo Shakil <santoshakil@users.noreply.github.com>
2026-10-09 09:04:03 +00:00
f6fc530734 fix: show date on memories page (#32245)
fix: show date on memories page (#32206)

* fix: show date on memories page

* Clean up API

* Drop imports

---------


(cherry picked from commit 108a3cadbfe3b3e4305c04d8e4217aafb445f626)

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Adam Gastineau <adam@agg.im>
2026-10-08 20:38:58 +00:00
immich-push-o-matic[bot]andAdam Gastineau f7dd3ccdc6 fix(mobile): prevent rapid toggling and rerendering of cells (#32236)
fix(mobile): prevent rapid toggling and rerendering of cells (#32200)

* fix(mobile): prevent rapid toggling and rerendering of cells

* Apply Shakil's fix

(cherry picked from commit 9640d9f5d2b3cc2e0fab441401be54c0c03de4f5)

Co-authored-by: Adam Gastineau <adam@agg.im>
2026-10-08 18:16:57 +00:00
ed3073624b fix: memories mobile sync for older clients (#32167)
fix: memories mobile sync for older clients (#32150)


(cherry picked from commit 8d377bfef5a0c9d840bf2c19d155f9779387baeb)

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
Co-authored-by: Santo Shakil <shakil.mezbah@gmail.com>
2026-10-06 14:10:38 +00:00
immich-push-o-matic[bot]andAlex 62bcb0601f feat: birthday memory on mobile (#32165)
feat: birthday memory on mobile (#32113)

* feat: birthday memory on mobile

* chore: remove yellow bg colors

* pr feedback

(cherry picked from commit 82cfc4b28b55c660d9c2da00c57437a20585a47b)

Co-authored-by: Alex <alex.tran1502@gmail.com>
2026-10-06 13:51:26 +00:00
immich-push-o-matic[bot]andSanto Shakil b9b7ddb569 fix(mobile): don't re-upload a photo the server already has (#32004)
fix(mobile): don't re-upload a photo the server already has (#31941)

(cherry picked from commit 02063972e82b1bfd17b6fc2e3b3ff39936229ea5)

Co-authored-by: Santo Shakil <santoshakil@users.noreply.github.com>
2026-10-02 07:23:29 +00:00
immich-push-o-matic[bot]andSanto Shakil 20472b34dc fix(mobile): don't start the foreground backup in iOS background launches (#32002)
fix(mobile): don't start the foreground backup in iOS background launches (#31943)

* fix(mobile): don't start the foreground backup in iOS background launches

* add a TODO to remove the background launch check

(cherry picked from commit 3e4492924541a0e73ea3c326fcfcfcd053871610)

Co-authored-by: Santo Shakil <santoshakil@users.noreply.github.com>
2026-10-02 07:22:41 +00:00
immich-push-o-matic[bot]andSanto Shakil cb5ea76227 fix(mobile): make the iOS background batch wait for its remote sync (#32003)
fix(mobile): make the iOS background batch wait for its remote sync (#31942)

* fix(mobile): make the iOS background batch wait for its remote sync

* test onIosUpload itself, the worker reads its sync services from the providers

(cherry picked from commit ad93370f0287faafa7db615c726f32bd9e6d30e7)

Co-authored-by: Santo Shakil <santoshakil@users.noreply.github.com>
2026-10-02 07:22:19 +00:00
immich-push-o-matic[bot]andSanto Shakil 234cb6d19b fix(mobile): face thumbnail stuck blank after renaming a person (#32001)
fix(mobile): face thumbnail stuck blank after renaming a person (#30769)

* 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

(cherry picked from commit a29153e90e127ee26ad7555f6fb7c562b97b4abe)

Co-authored-by: Santo Shakil <santoshakil@users.noreply.github.com>
2026-10-02 07:22:01 +00:00
c12d5e6d35 feat: people management (#31620)
Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-09-28 21:29:15 +02:00
Santo Shakil 638b6ac553 fix(mobile): don't stack an upload with itself (#31851) 2026-09-28 22:15:04 +06:00
Santo Shakil fbff5f41be fix(mobile): ask before deleting local only photos on android 10 and below (#31146)
* 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
2026-09-25 20:19:01 +06:00
Adam Gastineau 2ccd0effc8 chore(mobile): enable dead code CI (#31753)
* chore(mobile): enable dead code CI

* Restore accidentally removed test and set mise default
2026-09-24 06:57:06 -07:00
Santo Shakil a4af86282d fix(mobile): resume after the app was launched in the background (#31557)
* 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
2026-09-24 10:15:44 +06:00
Santo Shakil 2466eaeecd fix(mobile): play the server copy when the local video file cannot be read (#31606)
* 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
2026-09-24 10:15:33 +06:00
shenlongandshenlong-tanwen da5c2fedbe fix: save user_version in migration transaction (#31039)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-09-23 19:14:55 +05:30