Adam Gastineau
dc813e2816
fix(mobile): handle transient loading states for map timelines ( #29735 )
...
* fix(mobile): handle transient loading states for map timelines
* fix(mobile): handle transient loading states for map timelines
* Add support for new method
* Rewrote map options notifier to be more Riverpody
2026-08-28 06:06:10 -07:00
Timon
8b3d6b320b
feat(server): new search API ( #30179 )
2026-08-27 20:39:55 +02:00
Adam Gastineau
c04c81a979
chore(mobile): remove Drift* prefixes from classes and variables ( #31038 )
...
* chore(mobile): remove Drift* prefixes from classes and variables
* Remove *Drift* from related mocks
2026-08-26 19:11:12 +00:00
Lauritz Tieste and shenlong-tanwen
4ff7148f85
feat(mobile): show asset owner in asset details ( #29302 )
...
* feat(mobile): show asset owner in asset details
* refactor(mobile): fetch asset owner from local DB instead of API
* cleanup
* review changes
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-08-25 20:40:05 +00:00
351be95769
feat: memories view ( #28675 )
...
* wip web memories view
* paginate searchMemories
* improve memories ui
* feat(mobile): memories view
* improve memories web ui
* fix(web): avoid unnecessary memory refreshes
* refactor(web): move timline memory manager filter
* fix(web): memories infinitely loading on 0 results
* fix(web): memories resetting
* feat(web): animated memory previews
* feat(web): memory page dark styling
* chore(mobile): fix failing memory lane tests
* chore(mobile): remove old import
* chore(e2e): fix failing memory lane tests
* chore(server): revert searchMemories changes
* chore(server): lint
* chore(mobile): fix bad merge
* chore(e2e): fix memory ui tests
* chore(web): rename /memory to /memories
* chore(mobile): linting
* chore(web): linting
* fix(web): prevent duplicate memory page loading
* fix(web): lint
* fix(web): memories page improvements
* chore(mobile): lint
* fix(mobile): fix translations
* fix(mobile): build errors
* fix(web): prevent memories from infinitely loading
* chore(e2e)): fix failng memory viewer test
* chore(web): clean up types in memory manager
* chore(web): lint
* feat: update list and detail memory page layouts
* onlyFavorites through drift
* rename to get all
* mobile: use widgetWhen in memory list page
* remove redundant check
* fix: e2e
---------
Co-authored-by: Timon <mail@timonrieger.de >
Co-authored-by: Jason Rasmussen <jason@rasm.me >
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-08-24 19:16:33 -05:00
Adam Gastineau
8dcfd36fa5
chore(mobile): move Drift into mobile/data ( #30966 )
...
* chore(mobile): move Drift into mobile/data
* Move into more structured subdirectories
* Fix changed merge paths
2026-08-25 00:51:02 +05:30
Adam Gastineau
11cdfa9c5e
chore(mobile): remove commited db.repository.steps.dart ( #30910 )
2026-08-22 07:37:47 +05:30
Santo Shakil
a490cea1c4
fix(mobile): dedupe stale remote_asset rows on sync ( #28445 )
...
* fix(mobile): dedupe stale remote_asset rows on sync
queue a pre-delete on the matching partial-index tuple before each
upsert in updateAssetsV1/V2 so the second insert does not crash on
SqliteException(2067) when the server re-issues a new id for the
same (ownerId, checksum). closes #22522 #27186 .
* run the dedupe deletes before the inserts and keep only the last duplicate per payload
* switch the asset upsert to insert or replace
* trim the dedupe tests to the essentials
2026-08-21 11:13:48 +00:00
Santo Shakil
a066b5f301
fix(mobile): order album/place/person timelines by local date ( #29338 )
...
* fix(mobile): order album/place/person timelines by local date
* fold the timeline date ordering into one helper and tighten the tests
* drop the redundant none guard from the place asset query
* format
2026-08-20 13:52:33 +06:00
Adam Gastineau
225ca9ab8d
chore(mobile): use Drift @DriftAccessor() and collapse some providers ( #30693 )
...
* chore(mobile): use Drift @DriftAccessor() and collapse some providers
* Fix import order
* Required formatting
2026-08-17 14:43:32 -07:00
shenlong and shenlong-tanwen
652ef8a427
refactor: server capabilities ( #30663 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-08-14 07:53:12 -05:00
shenlong and shenlong-tanwen
303a9f15b1
refactor: reactive driftGetAllPeopleProvider ( #30660 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-08-12 21:12:12 +05:30
shenlong and shenlong-tanwen
52edcc0c74
refactor: unify person model ( #30659 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-08-12 21:12:11 +05:30
Santo Shakil
9862e50aab
fix(mobile): decode remote thumbnails at displayed size ( #29965 )
...
* fix(mobile): decode remote thumbnails at displayed size
* use nullable decode size and reuse the tapped thumbnail in the viewer
* clean up decode size naming and guards
2026-08-10 21:14:23 +06:00
shenlong and shenlong-tanwen
cafd6c7c0f
refactor: cleanup actions & action tests ( #30265 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-08-01 08:06:44 +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 and shenlong-tanwen
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
858aeadce8
chore(mobile): Apply stricter linting rules for Flutter and known issues ( #30373 )
2026-07-30 15:15:35 -04: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
Adam Gastineau
27a29b6fab
chore(mobile): remove Drift generated code ( #30297 )
...
* chore(mobile): remove Drift generated code
* Remove Drift test generated files from tree
* Make static_analysis use the shared mobile:codegen action
* Remove static_analysis generated file diffing
2026-07-29 20:29:07 +00:00
shenlong and shenlong-tanwen
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
Yaros and shenlong-tanwen
792d88961a
feat(mobile): custom date range for map ( #26205 )
...
* feat(mobile): custom date range for map
* refactor: rename timerange & remove isvalid
* refactor: rename customtimerange variables
* refactor: add back setRelativeTime
* refactor: implement suggestions
* refactor: suggestions
* fix: ifPresent
* fix: context.locale
* chore: restrict selection
* refactor: move options to mapconfig
* refactor: move model to domain
* chore: locale toLanguageTag
* add map codec tests
* rebase
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-07-23 20:48:15 +05:30
shenlong and shenlong-tanwen
9403e71d23
refactor: add asset update method ( #29384 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-07-22 19:51:06 +00:00
shenlong and shenlong-tanwen
3485dbffda
refactor(mobile): extract CachedKeyValueRepository ( #28789 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-07-21 20:23:50 +00:00
Peter Ombodi and Peter Ombodi
a30ebab70c
fix(mobile): refresh asset stack after deleting viewer item ( #28164 )
...
* fix(mobile): refresh asset stack after deleting viewer item
* fix(mobile): clamp stack index,
filter visible stack assets
* refactor(mobile): simplify stack asset refresh handling
* fix(mobile): revert changes in DeleteLocalActionButton
* style(mobile): reformat code
* fix(mobile): remove redundant setStack
---------
Co-authored-by: Peter Ombodi <peter.ombodi@gmail.com >
2026-07-22 01:48:47 +05:30
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
Santo Shakil
4938fd4c89
fix(mobile): back up files moved into a watched folder on android ( #29872 )
2026-07-21 19:09:50 +05:30
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
shenlong and shenlong-tanwen
9cea3f2375
chore: pump drift ( #29113 )
...
* chore: pump drift
* run codegen
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-07-16 17:32:30 +00:00
ffafc144c6
refactor: use single bucket for none grouping ( #29880 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-07-13 15:01:59 -05:00
shenlong and shenlong-tanwen
4fe33289b8
fix: ignore log db corruptions ( #29656 )
...
* fix: ignore log db corruptions
* review suggestion
* log corruption recovery
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-07-09 11:36:04 -05:00
Adam Gastineau and Alex
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
Ben Beckford and Alex
c7b4a798cb
fix: incorrect grouping of recently added assets ( #29666 )
...
* fix: incorrect grouping of recently added assets
* chore(web): lint
* chore(web): refactor timeline utc to local dates
* chore(mobile): index remote asset upload dates
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-07-07 11:21:58 -05:00
shenlong and shenlong-tanwen
0ebb723b39
fix: wrap migrations in transaction ( #29664 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-07-07 10:54:24 -05:00
Santo Shakil and mertalev
58b1c5e8fb
fix(mobile): fix 10-bit heic and avif colors on android ( #29631 )
...
* fix(mobile): fix 10-bit heic and avif colors on android
* fix(mobile): share the decode pool across flutter engines
* vectorize conversion
---------
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com >
2026-07-06 21:16:09 +00:00
Santo Shakil
12b7cd066b
fix(mobile): show memories with no showAt/hideAt in the timeline lane ( #29158 )
2026-06-16 18:46:52 +00:00
shenlong
0f49bcbd27
chore: do not optimize on cleanup ( #29118 )
2026-06-16 12:42:12 -04:00
shenlong and shenlong-tanwen
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
e2954b6411
fix(mobile): show albums whose assets are all trashed ( #28985 )
2026-06-11 09:41:02 -05:00
Santo Shakil
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
Santo Shakil
07813135b5
fix(mobile): deduplicate people in asset details panel ( #28972 )
2026-06-10 14:37:45 +00:00
Yaros
346b98ed4f
feat(mobile): min face count per-user ( #28805 )
2026-06-05 13:16:07 -04:00
shenlong and shenlong-tanwen
60683bd91e
fix: cross isolate drift watchers ( #28862 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-05 12:15:41 -05:00
Yaros
733373c0ca
feat(mobile): ocr support ( #26523 )
2026-06-05 04:29:03 +05:30
shenlong and shenlong-tanwen
58528cad08
refactor: replace drift_flutter with drift_sqlite_async ( #28440 )
...
replace drift_flutter with drift_sqlite_async
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-05 00:01:50 +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
shenlong and shenlong-tanwen
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
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