* 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
* 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
* 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
* 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
* 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)
* fix(mobile): clamp out of range datetimes so timeline queries cannot crash
* replace the per column converters with a clamping custom type
* heal each table in one statement, rename the clamp type, read dates as stored
* one medium test for the clamp, drop the dart side bounds, private clamp type
* feat(mobile): stack edited photos over the original on upload
* stack through the asset service and give the live photo still its task metadata
* add plain photo stacking tests and the 2x2 edit detection matrix
* chore(mobile): static Store to unify and streamline reactivity
* Add tests of caching and new stores
* Don't instantiate PeopleDbRepository
* Slight DB rename and fix throwing store methods
* chore(mobile): shared DataController for management of data sources
* chore(mobile): shared DataController for management of data sources
* Fix lint with removed dependency
* Re-order Store bootstrap
* Remove extra import
* chore(mobile): static Store to unify and streamline reactivity
* Add tests of caching and new stores
* Don't instantiate PeopleDbRepository
* Slight DB rename and fix throwing store methods