shenlong
0f49bcbd27
chore: do not optimize on cleanup ( #29118 )
2026-06-16 12:42:12 -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
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
shenlong and shenlong-tanwen
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 and shenlong-tanwen
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
shenlong
77701dd5a3
refactor: migrate backup config ( #28483 )
2026-05-19 00:40:10 +05:30
shenlong and shenlong-tanwen
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
shenlong and shenlong-tanwen
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 and shenlong-tanwen
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
Mert and Alex
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
Mert and shenlong
27a2808470
fix(mobile): mtls on native clients ( #25802 )
...
* handle mtls on ios
* update android impl
* ui improvements
* dead code
* no need to store data separately
* improve concurrency
* dead code
* add migration
* remove unused dependency
* trust user-installed certs
* removed print statement
* fix ios
* improve android styling
* outdated comments
* update lock file
* handle translation
* fix prompt cancellation
* fix video playback
* Apply suggestion from @shenlong-tanwen
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com >
* Apply suggestion from @shenlong-tanwen
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com >
* formatting
---------
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com >
2026-02-05 17:42:53 +00:00
Alex and shenlong-tanwen
e4443fa43e
chore: dart http foreground upload ( #24883 )
...
* feat: bring back manual backup
* expose iCloud retrieval progress
* wip
* unify http upload method, check for connectivity on iOS
* handle LivePhotos progress
* feat: speed calculation
* wip
* better upload detail page
* handle error
* handle error
* pr feedback
* feat: share intent upload
* feat: manual upload
* feat: manual upload progress
* chore: styling
* refactor
* refactor
* remove unused logs
* fix: background android backup
* feat: add error section
* remove complete section
* remove empty state and prevent slot jumps
* more refactor
* fix: background test
* chore: add metadata to foreground upload
* fix: email and name get reset in auth provider
* pr feedback
* remove version check for metadata field in upload payload
* chore: fix unit test
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-01-15 20:10:08 -06:00
Alex and shenlong-tanwen
c086a65fa8
chore: update drift ( #23877 )
...
* chore: update drift
* update drift dep
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2025-11-18 16:07:33 +00:00
shenlong and shenlong-tanwen
365abd8906
fix: check if unmetered instead of wifi ( #23380 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2025-11-05 13:27:38 -06:00
shenlong and shenlong-tanwen
ac0d646401
fix: mobile unawaited_futures lint ( #21661 )
...
* chore: add unawaited_futures lint as warning
# Conflicts:
# mobile/analysis_options.yaml
* remove unused dcm lints
They will be added back later on a case by case basis
* fix warning
# Conflicts:
# mobile/lib/presentation/pages/drift_remote_album.page.dart
* auto gen file
* review changes
* conflict resolution
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2025-10-27 09:32:52 -05:00
Alex and shenlong-tanwen
f4969694cd
fix: isolate freeze app on older ios device ( #22509 )
...
* fix: isolate freeze app on older ios device
* always use at-least 5 isolates
* fix: bad merge
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2025-10-22 12:43:03 -05:00
cf52b879b1
fix: ios skip posting hash response after detached from engine ( #22695 )
...
* skip posting message after detached from engine
* review changes
* cancel plugin before destroying engine
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-10-13 21:09:12 -05:00
8ee495b08f
fix: promote to foreground service before starting engine ( #22517 )
...
fix: show notification from native
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-10-07 08:49:43 -05:00
shenlong and shenlong-tanwen
ee3c07d049
fix: process upload only after successful remote sync ( #22360 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2025-09-29 10:10:00 -05:00
shenlong and shenlong-tanwen
c5fbbee8f6
chore: update android background worker notification text ( #22347 )
...
chore: update android bg notification text
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2025-09-26 00:22:17 +05:30
35b62cd016
fix: prevent background worker when main app is running ( #22252 )
...
* fix: prevent background worker only when the main app is actively running
* handle ref disposals better
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-09-21 20:45:47 -05:00
532ec10d5f
refactor: hashing service ( #21997 )
...
* download only backup selected assets
* android impl
* fix tests
* limit concurrent hashing to 16
* extension cleanup
* optimized hashing
* hash only selected albums
* remove concurrency limit
* address review comments
* log more info on failure
* add native cancellation
* small batch size on ios, large on android
* fix: get correct resources
* cleanup getResource
* ios better hash cancellation
* handle graceful cancellation android
* do not trigger multiple hashing ops
* ios: fix circular reference, improve cancellation
* kotlin: more cancellation checks
* no need to create result
* cancel previous task
* avoid race condition
* ensure cancellation gets called
* fix cancellation not happening
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-09-17 23:42:37 -05:00
61c3f27fdc
feat: add configurable backup on charging only and delay settings for android ( #22114 )
...
* feat: add configurable on charging only and delay
* Segmented and style the settings
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-09-17 14:13:49 +00:00
b26b452530
fix: do not listen for store updates in isolates ( #21947 )
...
* dispose store on isolate cleanup
* do not listen for store updates in isolates
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-09-14 14:50:17 -05:00
Mert
17bbcdf584
chore(mobile): add debugPrint lint rule ( #21872 )
...
* add lint rule
* update usages
* stragglers
* use dcm
* formatting
* test ci
* Revert "test ci"
This reverts commit 8f864c4e4d3a7ec1a7e820b1afb3e801f2e82bc5.
* revert whitespace change
2025-09-12 18:56:00 -04:00
Alex
42a03f2556
fix: concurrency issue ( #21830 )
2025-09-11 19:02:03 +00:00
722a464e23
fix: android background backups ( #21795 )
...
* upload using dart client
* add connectivity api
* respect backup network setting
* comment as to why we need to wait for setForegroundAsync call
* log assets skipped due to network constraint
* dynamic spawning -> false
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-09-11 12:01:15 -05:00
Alex
56e5236a39
chore: clean up background tasks ( #21785 )
2025-09-10 16:17:37 -05:00
e239b8d2fa
fix: android crash on app pause ( #21768 )
...
* revert service locks
* rename backgroundWorkerFgServiceProvider
* refactor: parallel background worker init (#21769 )
* refactor: parallel background worker init
* fix: hashing not running from the background engine (#21773 )
* init and dispose workmanager from background engine
* log message contend
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-09-10 17:15:42 +00:00
Alex
59accbf32a
fix: prevent isolate deadlock ( #21692 )
2025-09-08 19:18:13 +00:00
5fe954b3c9
fix: use lock to synchronise foreground and background backup ( #21522 )
...
* fix: use lock to synchronise foreground and background backup
# Conflicts:
# mobile/lib/domain/services/background_worker.service.dart
# mobile/lib/platform/background_worker_api.g.dart
# mobile/pigeon/background_worker_api.dart
* add timeout to the splash-screen acquire lock
* fix: null check on created date
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-09-04 11:44:33 -05:00
shenlong and shenlong-tanwen
9d3f10372d
refactor: simplify background worker ( #21558 )
...
* chore: log hash starting
* chore: android - bump the min worker delay
* remove local sync only task and always enqueue background workers
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2025-09-03 09:57:30 -05:00
shenlong and shenlong-tanwen
674faf2e57
fix: local sync task never runs on iOS ( #21491 )
...
* fix: local sync task never runs on iOS
* chore: rename ios register method
* refactor from using dart callback to dart entrypoint + more logs
* check if file exists before hashing
* reschedule local sync task
* chore: rename background worker logger
* refactor: move file exists check inside repo
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2025-09-03 02:05:58 +05:30
0df88fc22b
feat: beta background sync ( #21243 )
...
* feat: ios background sync
# Conflicts:
# mobile/ios/Runner/Info.plist
* feat: Android sync
* add local sync worker and rename stuff
* group upload notifications
* uncomment onresume beta handling
* rename methods
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-08-28 14:11:54 +00:00