The existing implementation for showing asset details uses a bottom
sheet, and is not in sync with the preview or scroll intent. Other apps
use inline details, which is much cleaner and feels better to use.
Some widgets, like Icon widgets, automatically inherit opacity from the
icon theme in the context. Many other widgets however, do not. The
Immich logo, profile picture, and backup badge are examples of widgets
of this.
All unsupported toolbar widgets have been updated to support inheriting
the opacity from the icon theme.
IconButtons internally animate properties like opacity, which is kind of
nice, but means we have to do more work to replicate that behaviour for
other widgets. In most cases, we can simply use an IconButton widget and
forward the correct opacity. The Immich logo however is not a button,
and therefore we need to use a custom TweenAnimationBuilder.
All widgets are using efficient, native opacity rather than the heavy
Opacity widget.
* feat(mobile): hide search by context/OCR if disabled on server (#25472)
* revert(mobile): remove changes to old search page
---------
Co-authored-by: Nicolas <nicolasroy@MacBookPro>
* use adjustment time in iOS for hash reset
# Conflicts:
# mobile/lib/infrastructure/repositories/local_album.repository.dart
# mobile/lib/presentation/pages/drift_asset_troubleshoot.page.dart
* migration
* feat: sync cloudId and eTag on sync
* fixes fixes
* more fixes
* re-sync updated eTags
* add server version check & auto sync cloud ids on compatible servers
* fix test
* remove button from sync status page
* chore: modify for testing
* more changes
* chore: add commas in toString
* use cached provider in splash screen
* read upload service provider to prevent reset
* log errors from fetching cloud id mapping
* WIP: migrate cloud id - debug log
* ignore locked asset update
* bulk update metadata
* change log text
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
* refactor: form & form field
* chore: remove unused components
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
* feat(server): Support camera `make`, `model`, and `lensModel` in Storage Template (#24650)
* add support for make, model, lensModel in storage template
* no pkg lock
* Apply suggestion from @danieldietzler
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
* query and formatting
---------
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
* wip: copy-writing
* feat: cutoff date preset options and filter options
* fix: don't include iCloud Shared Album
* chore: message about excluding shared album assets
* feat: show preview in a separate page
* feat: show clean up hint modal after success deletion
* pr feedback
* pr feedback
* pr feedback
---------
Co-authored-by: Rahul Kumar Saini <rahul-kumar-saini@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
* feat(mobile): refactor album options into kebab menu for improved UX
* feat(mobile): update BaseActionButton to use iconColor for text styling and add delete button color in DriftRemoteAlbumOption
* feat: const Divider(height: 1)
* fix(mobile): update icon color for album options menu button
* chore: refactor
* chore: refactor
* add test
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* feat(mobile): implement viewer kebab menu with about option
* feat: revert exisitng buttons, adjust label name
* unify MenuAnchor usage
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* use adjustment time in iOS for hash reset
* migration
* fix equals check
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* fix(mobile): first video memory doesn't play
* refactor: moved logic to static method
* refactor: fix haptic feedback & empty check
* refactor: use DriftMemory on setMemory
* refactor: move video reset into if block
* Quick date picker
* Include current year in quick date picker
* Quick date picker: localization, fix datetime overflows
* Properly localized 'last_months'
* Move quick_date_picker.dart to lib/presentation/widgets/search
* Wrap the quick date picker state into its own class, improve the interaction patterns
* Fix last9Months value
* Improve method naming
* Subtitle for "custom range" in quick date picker
* Fix style warnings
* Fix lint warning
* fix: mobile unawaited_futures lint (#21661)
* chore: add unawaited_futures lint as warning
* remove unused dcm lints
They will be added back later on a case by case basis
* fix warning
* auto gen file
* review changes
* conflict resolution
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* Quick date picker
* Wrap the quick date picker state into its own class, improve the interaction patterns
* chore: delete file from rebase
---------
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: bwees <brandonwees@gmail.com>
* 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'
* 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
* 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