Adam Gastineau and GitHub
7a7303aceb
fix(mobile): properly group download tasks for Live Photos ( #29952 )
...
* fix(mobile): properly group download tasks for Live Photos
* Remove completely unused onLivePhotoDownloadStatus
* Remove dead code
2026-07-21 10:45:15 -05:00
Timon and GitHub
6fa3f2feac
chore: bump openapi-generator version to v7.24.0 ( #30067 )
...
* remove patch in favor of [OpenAPITools/openapi-generator#23930 ](https://github.com/OpenAPITools/openapi-generator/issues/23930 )
partially revert "chore(mobile): make openapi requests abortable (#28692 )"
* gen client
* bump openapi-generator version to v7.24.0
* gen client
* enum migration changes
* drop enum exhaustion switch check
2026-07-20 20:06:23 -04:00
99883096d6
fix: still part of live photo hidden on bg upload ( #29884 )
...
* fix: still part of live photo hidden on bg upload
* add foreground tests
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-07-13 14:50:06 -05:00
7ee2f3644f
fix(mobile): mark Live Photo motion part hidden on upload ( #29699 )
...
* fix(mobile): mark Live Photo motion part hidden on upload
* review suggestion
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-07-07 09:27:39 -05:00
Santo Shakil and GitHub
abd62d9295
fix(mobile): show like and comment options on album photo deep links ( #29020 )
2026-06-12 14:55:26 -05:00
296cd40da9
refactor: nullable settings key ( #28988 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-11 18:05:50 -05:00
Santo Shakil and GitHub
9cb94343d1
fix(mobile): keep timezone when editing asset date time ( #28978 )
...
* fix(mobile): keep timezone when editing asset date time
* fix(mobile): negative utc offsets with minutes off by an hour
2026-06-10 21:31:31 -05:00
8132e8a38c
feat: image quality option in sharing ( #28918 )
...
* feat: share with quality options
* merge main
* clean up
* refactor
* translation
* translation
* add settings and default behavior
* fix: lint
* cleanup
* merge main
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-10 09:26:09 -05:00
Timon and GitHub
28e42f7e29
refactor(mobile): use Optional only on API boundary ( #28845 )
2026-06-05 04:29:13 +05:30
99281de6ab
refactor!: disallow star rating < 1 ( #27896 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
Co-authored-by: timonrieger <mail@timonrieger.de >
2026-06-04 17:06:28 +00:00
Timon and GitHub
d21cb28526
fix(mobile): shared link edit sends explicit null instead of empty string ( #28812 )
...
* fix(mobile): clear shared link password
* fix(mobile): clear shared link description
* fix(mobile): clear shared link expiry
2026-06-03 18:19:35 -04:00
9d4a6614b1
feat(mobile): Android. Immich as a gallery / image viewer app ( #26109 )
...
* feat(mobile): handle Android ACTION_VIEW intent
- add ViewIntent Pigeon API and generated bindings
- implement Android ViewIntentPlugin + iOS no-op host
- route ExternalMediaViewer by ViewIntentAttachment
- buffer pending view intents and flush on user ready/resume
* feat(mobile): fallback to computed checksum for timeline match
- hash local asset on-demand when checksum missing
- search main timeline by localId or checksum before standalone viewer
- persist computed hash into local_asset_entity
* fix(mobile): proper handling is user authenticated
* feat(mobile): open ACTION_VIEW fallback in AssetViewer
drop ExternalMediaViewer route
* feat(mobile): add logger
* test(mobile): add unit tests for view intent pending/flush flow
* fix(mobile): fix format
* fix(mobile): remove redundant iOS code
update code related to LocalAsset model and asset viewer
* refactor(mobile): simplify view intent flow and support file-backed ACTION_VIEW assets
remove redundant view intent model/repository layer
handle transient ACTION_VIEW files in viewer/upload flow
clean up managed temp files for fallback assets
* refactor(mobile): extract MediaStore utils and resolve view intents via merged assets
* refactor(mobile): move deferred view intents into providers, split view-intent providers, and clean up ACTION_VIEW handling
* refactor(mobile): resolve merge conflicts
use NativeSyncApi for hash files instead method from removed BackgroundServicePlugin.kt
* style(mobile): format files
* style(mobile): format files #2
* refactor(mobile): lazily materialize view-intent files and clean up temp-file handling
* fix(mobile): flush pending view intents after login navigation
* refactor(mobile): split view intent handler by platform and trigger it from app events
* refactor(mobile): move view intent handling behind platform-specific factories
* refactor(mobile): simplify code
* fix(mobile): hand off deep-link viewer to main timeline after upload
Add MainTimelineHandoffCoordinator to switch the asset viewer to the main timeline once a view-intent asset is uploaded and becomes available, and guard viewer reload/navigation transitions to avoid race conditions and crashes.
* refactor(mobile): use remote asset ids for view intent handoff and simplify resolver
* refactor(mobile): resolve merge conflicts
* style(mobile): reformat code
* style(mobile): reformat code #2
* fix(mobile): stabilize Android view intent asset resolution and fallback viewer
* refactor(mobile): share AssetViewer pre-navigation state preparation
* fix(mobile): wait for main timeline before deferred view intent handoff
* refactor(mobile): decouple view intent asset resolver from providers
* fix(mobile): avoid double pop when canceling upload dialog
* fix(mobile): resolve view intent MIME type with fallbacks
* docs(mobile): clarify view intent fallback asset TODO
* fix(mobile): resolve merge conflicts
* cleanup
* lint
---------
Co-authored-by: Peter Ombodi <peter.ombodi@gmail.com >
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex Tran <alex.tran1502@gmail.com >
2026-06-03 12:05:52 -05:00
Timon and GitHub
96d521e149
feat(mobile): add three-state field serialization ( #27231 )
...
* bump to v7.22.0 and update patching
* gen client
* migrate mobile call sites
2026-06-03 08:13:17 -04:00
14aff51da9
refactor: rename metadata to settings ( #28691 )
...
rename metadata to settings
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-30 10:27:55 -05:00
0d6cce4a5b
fix: api repositories using stale endpoint ( #28667 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-28 16:44:11 -05:00
55947cb227
refactor: drop metadata scope ( #28668 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-28 16:42:59 -05:00
3b23f71a3f
refactor: cleanup metadata ( #28485 )
...
jason-ify metadata
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-28 01:19:25 +05:30
936c28a40b
feat(mobile): improve downloading algorithm for sharing ( #27312 )
...
* feat(mobile): better downloading while sharing
* chore: separate download group
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-27 17:00:49 +00:00
78ac0ade01
feat(mobile): add manage media APIs to NativeSyncApi ( #28441 )
...
* feat(mobile): add manage media APIs to NativeSyncApi
* fix(mobile): remove legacy local file manager from trash sync
* refactor(mobile): move media permission methods to PermissionApi
* cleanup
---------
Co-authored-by: Peter Ombodi <peter.ombodi@gmail.com >
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-22 17:40:11 +05:30
Mert and GitHub
7b9dab872b
fix(mobile): separate group ids for separate app installs ( #28448 )
...
* separate group ids
* remove pigeon method
* Revert "remove pigeon method"
This reverts commit d699ff2094 .
2026-05-21 12:25:20 -05:00
shenlong and GitHub
77701dd5a3
refactor: migrate backup config ( #28483 )
2026-05-19 00:40:10 +05:30
d4808fdc4d
refactor: migrate album config ( #28482 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-18 23:28:59 +05:30
shenlong and GitHub
9cffcc9f4e
refactor: migrate network config ( #28471 )
2026-05-18 16:22:42 +00:00
24b1dae9f2
feat(mobile): "Add Tags" asset multiselect option ( #26269 )
...
* add bulk_tag_assets_action_button to general_bottom_sheet.widget
include create tag tile in 'Add Tags' action modal
* follow provider -> svc -> repo pattern for tags
* rebase and cleanup
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-18 20:29:09 +05:30
aeaf846482
chore: cleanup unused store keys ( #28415 )
...
cleanup unused store keys
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-13 18:03:57 -05:00
0a4ed6fd71
refactor: migrate viewer config to metadata table ( #28396 )
...
* refactor: app metadata
* refactor to per row store
* cleanup
* more test
* review changes
* more refactor
* refactor
* migrate primary color
* migrate dynamic theme
* migrate colorfulInterface
* cleanup providers
* migrate cleanup
* migrate mapconfig
* remove unused keys
* migrate timeline config
* migrate image config
* migrate viewer config
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-13 09:36:19 -05:00
b6e2ce1f35
fix(mobile): revert drop deprecated deviceAssetId / deviceId from upload fields ( #28384 ) ( #28400 )
...
* Revert "chore(mobile): drop deprecated deviceAssetId / deviceId from upload fields (#28384 )"
This reverts commit 571e6a8560 .
* chore(mobile): add note on kept deprecated upload fields
---------
Co-authored-by: Santo Shakil <shakil.mezbah@gmail.com >
2026-05-13 09:36:16 -05:00
79801595db
refactor: move image config to metadata table ( #28228 )
...
* migrate image config
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-13 03:20:35 +05:30
3e1c8aacb1
feat(mobile): trash/restore all ( #28116 )
...
* feat(mobile): trash/restore all
* chore: remove themeData variable
* chore: filter query by user
* refactor
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-05-12 14:56:19 -05:00
91ac56cef2
refactor: move timeline config to metadata table ( #28227 )
...
* migrate timeline config
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-13 01:23:25 +05:30
Brandon Wees and GitHub
dc6f8e746e
fix: deep link for assets when asset viewer already open ( #27971 )
2026-05-12 16:19:54 +00:00
Santo Shakil and GitHub
571e6a8560
chore(mobile): drop deprecated deviceAssetId / deviceId from upload fields ( #28384 )
...
server removed both fields from AssetMediaCreateDto in #27818 . zod silently strips unknown fields so uploads still work, but we send dead weight on every request.
drop from foreground + background upload paths + share intent path. deviceAssetId stays as the internal background_downloader taskId, just not in the multipart form fields anymore.
2026-05-12 09:12:26 -04:00
4d6a50c2cb
refactor: move map config to metadata table ( #28226 )
...
* refactor: app metadata
* refactor to per row store
* cleanup
* more test
* review changes
* more refactor
* refactor
* migrate primary color
* migrate dynamic theme
* migrate colorfulInterface
* cleanup providers
* migrate cleanup
* migrate mapconfig
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-11 22:43:52 -05:00
e142e3aca7
feat: recently added assets page ( #28272 )
...
* feat(server): add ordering date option to time buckets
* feat(web): add recently added page
* feat(server): recently created assets in explore data
* feat(web): recently added in explore tab
* fix: recently added assets ordering
* fix(server): failing bucket test
* feat(web): improve recently added preview
* chore: update e2e explore/timeline tests
* chore: rename and refactor timeline ordering dates
* fix(web): invalid timeline option
* feat(mobile): recently added page
* fix(server): sync tests
* fix(mobile): resync assets to get uploadedAt column
* chore: rename assetorderby enum
* chore(mobile): formatting
* minor fixes
* stylings
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-05-11 21:35:10 +00:00
12f7b2a005
chore: add always_put_control_body_on_new_line lint ( #28352 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-11 13:47:24 -04:00
21af184045
refactor: move cleanup config to metadata table ( #28225 )
...
* refactor: app metadata
* refactor to per row store
* cleanup
* more test
* review changes
* more refactor
* refactor
* migrate primary color
* migrate dynamic theme
* migrate colorfulInterface
* cleanup providers
* migrate cleanup
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-07 11:27:06 -05:00
d4a97f2d25
refactor: move theme config to metadata table ( #28224 )
...
* refactor: app metadata
* refactor to per row store
* cleanup
* more test
* review changes
* more refactor
* refactor
* migrate primary color
* migrate dynamic theme
* migrate colorfulInterface
* cleanup providers
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-07 15:12:14 +00:00
97100a4362
refactor: app metadata ( #28113 )
...
* refactor: app metadata
* refactor to per row store
* cleanup
* more test
* review changes
* more refactor
* refactor
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-05 10:45:51 +07:00
4bfb8b36c2
chore!: migrate album owner to album_user ( #27467 )
...
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com >
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-22 16:52:23 +02:00
2070f775d6
refactor: remove riverpod generator ( #27874 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-17 20:01:44 +05:30
79fccdbee0
refactor: yeet old timeline ( #27666 )
...
* refactor: yank old timeline
# Conflicts:
# mobile/lib/presentation/pages/editing/drift_edit.page.dart
# mobile/lib/providers/websocket.provider.dart
# mobile/lib/routing/router.dart
* more cleanup
* remove native code
* chore: bump sqlite-data version
* remove old background tasks from BGTaskSchedulerPermittedIdentifiers
* rebase
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-15 23:00:27 +05:30
6dd6053222
feat: mobile editing ( #25397 )
...
* feat: mobile editing
fix: openapi patch
this sucks :pepehands:
chore: migrate some changes from the filtering PR
chore: color tweak
fix: hide edit button on server versions
chore: translation
* chore: code review changes
chore: code review
* sealed class
* const constant
* enum
* concurrent queries
* chore: major cleanup to use riverpod provider
* fix: aspect ratio selection
* chore: typesafe websocket event parsing
* fix: wrong disable state for save button
* chore: remove isCancelled shim
* chore: cleanup postframe callback usage
* chore: clean import
---------
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com >
2026-04-15 09:26:40 -05:00
9c9feddf7d
refactor: folder page to use new models ( #27657 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-13 12:19:44 -05:00
Luis Nachtigall and GitHub
a277c6311f
fix(mobile): streamline error handling for live photo saving ( #27337 )
2026-03-27 19:07:38 -05:00
Mert and GitHub
1506776891
fix(mobile): add cookie for auxiliary url ( #27209 )
...
add cookie before validating
2026-03-23 16:22:46 -05:00
Mert and GitHub
019beaed0b
fix(mobile): server url migration ( #27050 )
...
decode json
2026-03-19 12:52:51 -05:00
ff936f901d
fix(mobile): duplicate server urls returned ( #26864 )
...
remove server url
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-03-13 22:09:42 -05:00
Mert and GitHub
c403e03a42
fix(mobile): logout on upgrade ( #26827 )
...
* use cookiejar
* cookie duping hook
* remove old pref
* handle network switching on logout
* remove bootstrapCookies
* dead code
* fix cast
* use constants
* use new event name
* update api
2026-03-11 12:07:27 -05:00
ba3f114625
chore: always use Package Imports ( #26630 )
...
* chore: always_use_package_imports
* fix: lint
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-03-05 11:18:01 -06:00
a05c8c6087
feat(mobile): use shared native client ( #25942 )
...
* use shared client in dart
fix android
* websocket integration
platform-side headers
update comment
consistent platform check
tweak websocket handling
support streaming
* redundant logging
* fix proguard
* formatting
* handle onProgress
* support videos on ios
* inline return
* improved ios impl
* cleanup
* sync stopForegroundBackup
* voidify
* future already completed
* stream request on android
* outdated ios ws code
* use `choosePrivateKeyAlias`
* return result
* formatting
* update tests
* redundant check
* handle custom headers
* move completer outside of state
* persist auth
* dispose old socket
* use group id for cookies
* redundant headers
* cache global ref
* handle network switching
* handle basic auth
* apply custom headers immediately
* video player update
* fix
* persist url
* potential logout fix
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-03-05 11:04:45 -06:00