* feat: view similar photos on mobile
# Conflicts:
# mobile/lib/models/search/search_filter.model.dart
# mobile/lib/utils/action_button.utils.dart
* fix: bottom sheet is unusable after navigating to search
* feat(mobile): open DriftSearchPage as root route
* reset search state on tab navigation
* fix tests
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* feat: show "appears in" albums on asset viewer bottom sheet
fix: multiple RemoteAlbumPages in navigation stack
this also allows us to not have to set the current album before navigating to RemoteAlbumPage
chore: clarification comments
handle nested album pages
fix: hide "appears in" when an asset is not in any albums
fix: way more bottom padding
for some reason we can't query the safe area here :/
* fix: bottom sheet now is usable when navigating to another asset viewer
* fix: rebase conflict
* fix: restore ancestors album to currentRemoteAlbumProvider when popping
* fix: view flashing when dismissing a album viewer
* chore: code review changes
* fix: styling and padding
* chore: rework currentRemoteAlbumProvider to be scoped by the Remote album page
* fix: override remote album provider on required pages
* chore: convert query to all SQL calls instead of matching in Dart
* fix: album query
* fix: unawaited future
* Update deep_link.service.dart
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* 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>
* feat: add OCR functionality and related configurations
* chore: update labeler configuration for machine learning files
* feat(i18n): enhance OCR model descriptions and add orientation classification and unwarping features
* chore: update Dockerfile to include ccache for improved build performance
* feat(ocr): enhance OCR model configuration with orientation classification and unwarping options, update PaddleOCR integration, and improve response structure
* refactor(ocr): remove OCR_CLEANUP job from enum and type definitions
* refactor(ocr): remove obsolete OCR entity and migration files, and update asset job status and schema to accommodate new OCR table structure
* refactor(ocr): update OCR schema and response structure to use individual coordinates instead of bounding box, and adjust related service and repository files
* feat: enhance OCR configuration and functionality
- Updated OCR settings to include minimum detection box score, minimum detection score, and minimum recognition score.
- Refactored PaddleOCRecognizer to utilize new scoring parameters.
- Introduced new database tables for asset OCR data and search functionality.
- Modified related services and repositories to support the new OCR features.
- Updated translations for improved clarity in settings UI.
* sql changes
* use rapidocr
* change dto
* update web
* update lock
* update api
* store positions as normalized floats
* match column order in db
* update admin ui settings descriptions
fix max resolution key
set min threshold to 0.1
fix bind
* apply config correctly, adjust defaults
* unnecessary model type
* unnecessary sources
* fix(ocr): switch RapidOCR lang type from LangDet to LangRec
* fix(ocr): expose lang_type (LangRec.CH) and font_path on OcrOptions for RapidOCR
* fix(ocr): make OCR text search case- and accent-insensitive using ILIKE + unaccent
* fix(ocr): add OCR search fields
* fix: Add OCR database migration and update ML prediction logic.
* trigrams are already case insensitive
* add tests
* format
* update migrations
* wrong uuid function
* linting
* maybe fix medium tests
* formatting
* fix weblate check
* openapi
* sql
* minor fixes
* maybe fix medium tests part 2
* passing medium tests
* format web
* readd sql
* format dart
* disabled in e2e
* chore: translation ordering
---------
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* feat(mobile): open assetviewer via album activities page
* adjust ui behavior: keep current asset & disable initial forcus
* fix: Run 'make build' and 'make pigeon'
* feat: improved update messaging on app bar server info
* chore: message improvements
* chore: failed to fetch version error message
* feat: open latest release when tapping "Update" on server out of date message
* fix: text alignment states
* chore: code review updates
* Apply suggestion from @alextran1502
Co-authored-by: Alex <alex.tran1502@gmail.com>
* Apply suggestion from @alextran1502
Co-authored-by: Alex <alex.tran1502@gmail.com>
* chore: lots of rework of the version checking code to be cleaner
Added a semver utility class to simplify comparisons, broke the update notification logic into own widget, reworked view construction and colors.
* fix: show warnign without having to tap on app bar icon
* chore: colors
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* feat: add auto play setting to mobile
* feat: add auto play video setting to web
* address review comments
* fix setting id
---------
Co-authored-by: Saschl <noreply@saschl.com>
* chore: refactor show view in timeline button
This refactor includes changes to notify asset viewer about where an asset was shown from.
* chore: realized I could just pull from the timelineProvider instead of storing it in the asset viewer state
* chore: rename enum to TimelineOrigin and update members
* fix: update isOwner condition
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* fix: shared album control permissions
* fix: properly display "add photos"
* fix: dont allow modification of album order
* fix: album title/description edit from app bar
* chore: code review changes
* chore: format translations
* chore: lintings
Found via `codespell -q 3 -S "*.svg,./i18n,./docs/package-lock.json,./readme_i18n,./mobile/assets/i18n" -L afterall,devlop,finaly,inout,nd,optin,renderd,sade`
* fix:prefer trashing to deletions
* skip local only assets in move to lock action
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
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>
* fix: respect storage indicator size setting
* remove black bar on the bottom of the setting scaffold page
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
* feat: show motion photo icon on timeline tile
* chore: switch to private widget for asset type icons
* chore: small cleanup on asset type icons widget
* chore: map widget and page styling
* fix: map bottom sheet styling
* fix: attribution location on android
it appears that on android, the attribution marker is positioned from the top of the display and on iOS its positioned from the safe area edge
* 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>
* chore: refresh backup stats when entering backup page
* check for success status
* remove logs
* remove sync remote when toggle the button
* show status immediately after navigating to screen
* pr feedback
* fix: show delete on device when asset has a local match
* change test description
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* fix: display album image in selection mode
* fix: align MultiSelectStatusButton to display instead of back button in album
* small styling tweak
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* 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>
* 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>
* feat: disable snapping when a timeline has less than 12 months
* fix: disable placeholders when not snapping
also moved month constant to constants.dart
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* 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>
* chore: robust isolation tasks coordination
* give more time for database transaction to clean up
* chore: clean up logs
* chore: clean up logs
* fix: logs
* wip
* album creation
* fix: album api repository no invalidating after logging out
* add linkedRemoteAlbumId column and migration
* link/unlink remote album
* logic to find and add new assets to album
* pr feedback
* add toggle option to backup option page
* refactor: provider > service
* rename
* Handle page pop manually
* UI feedback for user creation and sync linked album
* uncomment migration
* remove unused method
* fix(mobile): Correction of image creation date by using mtime instead of ctime.
* use the timestamps from the asset for uploads
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* 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>
* fix: retain filter and sort options when pulling to refresh
* chore: use classes to manage state
* chore: format
* chore: refactor to keep local state of filter/sorted albums instead of a global filteredAlbums
* fix: keep sort when page is navigated away and returned
* chore: lint
* chore: format
why is autoformat not working
* fix: default sort direction state
* fix: search clears sorting
we have to cache our sorted albums since sorting is very computationally expensive and cannot be run on every keystroke. For searches, instead of pulling from the list of albums, we now pull from the cached sorted list and then filter which is then shown to the user
* fix: Enables videotimeline in readonly mode
- Enables only the video controls in the bottom bar when readonlyMode is enabled.
- Fixes the message on the app profile bar when readOnlyMode is enabled **but** betaTimeline is not enabled.
Fixes https://github.com/immich-app/immich/issues/21441
Signed-off-by: Sudheer Puthana <Sud-Puth@users.noreply.github.com>
* cleanup bottom bar handling
---------
Signed-off-by: Sudheer Puthana <Sud-Puth@users.noreply.github.com>
Co-authored-by: bwees <brandonwees@gmail.com>
* chore: log name and createdAt of asset on hash failures
* add album name to hash failure logs
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>