shenlong
47d34e3b4b
refactor: mobile lock action ( #29767 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-08-01 08:06:41 +05:30
Adam Gastineau
483b375c26
fix(mobile): resolve owned assets when partner owns identical asset ( #30137 )
...
* fix(mobile): resolve owned assets when partner owns identical asset
* Add limit to auth user expressions
* Change debug method semantics
2026-07-31 14:37:12 +00:00
shenlong
fe5c8ed0fb
refactor: base action ( #29617 )
...
* refactor: existing actions to new structure
# Conflicts:
# mobile/lib/presentation/actions/action.widget.dart
# mobile/lib/presentation/widgets/action_buttons/favorite_action_button.widget.dart
# mobile/lib/presentation/widgets/action_buttons/unfavorite_action_button.widget.dart
# mobile/test/unit/presentation/partner_page_test.dart
* rename to actionitem
* more cleanup
* review changes
* lint changes
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-07-30 17:02:14 -04:00
Adam Gastineau
e7aace436d
chore(mobile): Apply stricter linting rules for correctness ( #30372 )
...
* chore(mobile): Apply stricter linting rules for correctness
* Added discarded_futures rule
2026-07-30 19:39:24 +00:00
Adam Gastineau
d864a90811
chore(mobile): Apply stricter linting rules for formatting ( #30370 )
...
* chore(mobile): Apply stricter linting rules for formatting
* Formatting fixes
2026-07-30 08:56:46 +00:00
shenlong
04a38ba91c
refactor: asset update method ( #30201 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-07-27 10:15:36 -04:00
shenlong
20ae07e228
fix: run background tasks in root isolate ( #30101 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-07-23 20:06:37 +05:30
Santo Shakil
943bfafb7a
fix(mobile): show real error when an asset can't be added to an album ( #29754 )
...
* fix(mobile): show real error when an asset can't be added to an album
* fix(mobile): show added toast when an add-to-album partly succeeds
* docs(mobile): explain why a partial add-to-album shows added
2026-07-21 10:56:50 -05:00
Timon
ee4bd3f833
feat: add album asset event handling ( #29008 )
...
* feat: add album asset event handling
* fix medium tests
* patch medium test
* collapse in AlbumUpdate
2026-07-21 10:55:46 -05:00
Timon
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
Adam Gastineau
a225c962de
fix(mobile): properly handle live photos locally ( #29462 )
...
* fix(mobile): properly handle live photos locally
* Added basic motion photo data tests
* Cover mismatched platforms and motion photos
* Revert unnecessary storage.repository changes
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
2026-07-07 12:25:43 -05:00
shenlong
f73796597c
fix: albums broken on v2 mobile clients ( #29446 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-07-02 14:04:37 -05:00
Alex
165bca4b0a
feat: new feature message ( #29388 )
...
* feat: new feature board
* wip
* wip
* wip
* lint
* lint
* pr feedback
* pr feedback
* i18n
* i18n
2026-06-30 13:53:13 -05:00
shenlong
cb1af3a8ec
feat: favorite bottom sheet action ( #29320 )
...
* chore: cleanup partner action test
* feat: favorite bottom sheet action
* review suggestions
* implicit favorite handling
* feat: viewer favorite icon to action (#29321 )
* feat: viewer favorite icon to action
* feat: advance info action
* implicit favorite handling
* feat: viewer favorite icon to action
# Conflicts:
# mobile/lib/presentation/widgets/asset_viewer/viewer_top_app_bar.widget.dart
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* chore: timeline action test (#29324 )
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* clear selection only on success
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-06-25 16:55:06 -04:00
shenlong
0f49bcbd27
chore: do not optimize on cleanup ( #29118 )
2026-06-16 12:42:12 -04:00
Santo Shakil
9ee412110f
fix(mobile): stop sync albums crashing on the main isolate ( #29133 )
...
the album sync provider read cancellationProvider, which only exists in the background isolate and throws on the main one. moved the cancel signal onto the isolate call path.
fixes #29125
fixes #29119
2026-06-16 09:14:33 -05:00
shenlong
4bc411b7c7
revert: clear album description sends null instead of empty string ( #28956 )
...
Revert "fix(mobile): clear album description sends null instead of empty string (#28817 )"
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-06-09 22:05:37 -05:00
Yaros
346b98ed4f
feat(mobile): min face count per-user ( #28805 )
2026-06-05 13:16:07 -04:00
Timon
28e42f7e29
refactor(mobile): use Optional only on API boundary ( #28845 )
2026-06-05 04:29:13 +05:30
Yaros
733373c0ca
feat(mobile): ocr support ( #26523 )
2026-06-05 04:29:03 +05:30
shenlong
6b0fd89cd2
refactor: partner-page ( #28783 )
...
* refactor: partner-page
* cleanup
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-06-04 09:05:45 -04:00
Santo Shakil
429e181c8f
fix(mobile): run iOS bg task phases in parallel ( #28293 )
...
onIosUpload runs sync local, sync remote, hash and handle backup
sequentially. on the bg refresh task path that's a 20s budget from
iOS, and sync + hash usually eat all of it before backup gets a turn
to enqueue any candidates.
these phases don't actually depend on each other. local + remote sync
touch different tables. hash works off whatever's already in drift.
handle backup reads candidates and just enqueues to URLSession bg.
anything one phase produces in this fire shows up to the others on
the next fire, and server-side dedup catches the rare race where
backup enqueues something sync remote was about to mark as already
uploaded.
so this runs all four concurrently via Future.wait, with hash getting
the full maxSeconds-1 budget instead of a fixed 5s. outer budget
timeout still caps everything before iOS expires.
second small change: getAssetsToHash orders by createdAt DESC instead
of id ASC to match getCandidates. when hash runs inside a refresh
fire it processes recent photos first.
2026-06-03 20:13:52 -05:00
Timon
4a8c3b60be
fix(mobile): clear album description sends null instead of empty string ( #28817 )
2026-06-03 18:22:19 -04:00
Mert
963862b1b9
fix(mobile): proper background task cleanup ( #28694 )
...
* event-based cancellation
wire hash cancellation
await cleanup
remove forced kill
add regression tests
abort sync requests
fix cleanup ordering in teardown
exit isolate
test background sync
test sigabrt crash
cleanup
* abort local sync
2026-06-03 08:16:19 -04:00
Alex
206992605e
feat: upload local assets to album from bottom sheet ( #28531 )
...
* feat: upload local assets to album from bottom sheet
* Cancel token
* refactor
* refactor
* Update mobile/lib/domain/services/remote_album.service.dart
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
---------
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
2026-05-30 13:14:49 -05:00
shenlong
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
shenlong
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
shenlong
8d5d12b108
chore: upgrade flutter to 3.44.0 ( #28537 )
...
* chore: upgrade flutter to 3.44.0
# Conflicts:
# mise.lock
* static analysis fix
* fix ios ci
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-05-27 11:14:44 -05:00
Peter Ombodi
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
shenlong
77701dd5a3
refactor: migrate backup config ( #28483 )
2026-05-19 00:40:10 +05:30
Alex
4a7f06e8fd
feat: upload and add local asset directly to album ( #28123 )
...
* feat: manually upload local assets to album
* feat: manually upload local assets to album
* refactor
* Upload status
* pr feedback
2026-05-18 20:31:22 +05:30
Benjamin Nguyen
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
shenlong
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
shenlong
8f4b0fce49
fix: limit android background worker duration ( #23566 )
...
* fix: limit each android background run to 20 mins
# Conflicts:
# mobile/lib/domain/services/background_worker.service.dart
* review chages
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-05-11 23:08:17 -05:00
Ben Beckford
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
shenlong
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
shenlong
bd58db4fcc
fix: periodically execute pragma optimize ( #28241 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-05-07 09:54:35 -05:00
shenlong
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
Mert
b554664791
chore!: duration in milliseconds ( #28003 )
...
* server changes
* openapi
* web changes
* mobile changes
* assume 3.0 client
* deprecate
* review feedback
* update medium tests
* linting
2026-04-30 09:44:27 -04:00
Peter Ombodi
5a457d72c9
fix(mobile): delete assets on trash empty, Android ( #26070 )
...
* fix(mobile): improve trash sync flow
- trash local assets on remote delete events
- unify remote trash handling and support assetDelete cleanup by remote asset id
- update sync stream tests
* fix(mobile): revert pubspec.lock
* refactor(mobile): remove helper
remove unused columns from results
* refactor(mobile): use remoteIds in getAssetsFromBackupAlbums and remove getAssetsFromBackupAlbumsByRemoteIds
refactor tests
---------
Co-authored-by: Peter Ombodi <peter.ombodi@gmail.com>
2026-04-27 18:46:49 +05:30
Daniel Dietzler
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
Luis Nachtigall
539a39ae49
refactor(mobile): Migrate durationInSeconds to durationMs ( #26615 )
2026-04-20 23:28:11 -04:00
shenlong
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
shenlong
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
Thomas
6012d22d98
fix(mobile): incorrect asset dimensions in search ( #26725 )
...
Search results use a different provider than the main timeline, and they
appear appear to have diverged a bit. This means that assets can
sometimes look wrong or different in search compared to the main
timeline or albums.
2026-03-05 21:58:58 -06:00
Brandon Wees
9597f8c37f
feat(mobile): SyncAssetEditV1 ( #26518 )
...
* feat(mobile): SyncAssetEditV1
* fix: websocket handling
* fix: server version requirement
* fix: revert pubspec changes
2026-03-05 13:03:59 -06:00
Mert
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
Thomas
228ac63ab9
feat(mobile): keep search results visible ( #26498 )
...
Search results are replaced with a spinner when loading the next page,
which is quite jarring. Search results now remain visible when loading
the next page with a spinner at the bottom. The next page also loads
sooner, which makes it feel a lot smoother.
Co-authored-by: Alex <alex.tran1502@gmail.com>
2026-03-04 11:27:11 -06:00
Luis Nachtigall
f4e156494f
feat(mobile): add playbackStyle to local asset entity and related database schema ( #26596 )
...
* feat: add playbackStyle to local asset entity and related database schema
* implement conversion function for playbackStyle in local sync service
* implement conversion function for playbackStyle in local sync service
* refactor: remove deducedPlaybackStyle from TrashedLocalAssetEntityData
* add playbackStyle column to trashed local asset entity
* make playbackStyle non-nullable across the mobile codebase
* Streamline playbackStyle backfill:
- only backfill local assets playbackStyle in flutter/dart code
- only update trashed local assets in db migration
* bump target database version to 23 and update migration logic for playbackStyle
* set playback_style to 0 in merged_asset.drift as its a getter in base asset
* run make pigeon
* Populate playbackStyle for trashed assets during native migration
2026-03-01 14:50:21 -05:00
Brandon Wees
e633bc3f24
fix: missing deletedAt and isVisible columns on mobile ( #26414 )
...
* feat: SyncAssetV2
* feat: mobile sync handling
* feat: request correct sync object based on server version
* fix: mobile queries
* chore: sync sql
* fix: test
* chore: switch to mapper
* fix: sql sync
2026-02-23 09:50:54 -05:00