* Use custom caches in all modules
* Cache Settings
* Fix wrong key
* Create custom cache repository based on hive
* Show cache usage in settings
* Show cache sizes
* Change settings ranges and default value
* Handle cache clear by operating system
* Resolve review comments
* show notifications on background backup errors
* settings page to configure (background backup error) notifications
* persist time since failed background backup
* fix darkmode slider color
* Add settings options for number of assets per row and storage indicator
* Add attributes to enum to avoid duplicate code
* Also apply customizations to albums
* Minor Refactorings
* Three stage loading i18n fix
* properly done background backup service
* new concurrency/locking management with heartbeat
fix communication erros with Kotlin plugin on start/stop service methods
better error handling for BackgroundService public methods
Add default notification message when service is running
* configurable WiFi & charging requirement for service
* use translations in background service
* styling light and dark theme
* Icon topbar
* Fixed app bar title dark theme
* Fixed issue with getting thumbnail for things
* Refactor sharing page
* Refactor scroll thumb
* Refactor chip in auto backup indiation button
* Refactor sharing page
* Added theme toggle
* Up version for testflight build
* Refactor backup controller page
* Refactor album selection page
* refactor album pages
* Refactor gradient color profile header
* Added theme switcher
* Register app theme correctly
* Added locale to the app
* Added translation key
* Styling for bottomsheet colors
* up server version
* Fixed font size
* Fixed overlapsed sliverappbar on photos screen
* Refactor profile drawer to sub component
* Added setting page, routing with some options
* Added setting service
* Implement three stage settings
* get app setting for three stage loading
* Change API to return assets count and change web behavior accordingly
* Refactor assets.length
* Explicitly declare type of assetCount so Dart SDK understand it
* Finished refactoring on mobile
* First performance tweaks (caching and rendering improvemetns)
* Revert asset response caching
* 3-step image loading in asset viewer
* Prevent panning and zooming until full-scale version is loaded
* Loading indicator
* Adapt to gallery PR
* Cleanup
* Dart format
* Fix exif sheet
* Disable three stage loading until settings are available
* Refactor sharing to album
* Added library page in the bottom navigation bar
* Refactor SharedAlbumService to album service
* Refactor apiProvider to its file
* Added image grid
* render album thumbnail
* Using the wrap to render thumbnail and album info better
* Navigate to album viewer
* After deletion, navigate to the respective page of the shared and non-shared album
* Correctly remove album in local state
* Refactor create album page
* Implemented create non-shared album
* Added context menu for album opionts
* choose asset for album thumbnail
* Refactor UpdateAlbumDto to accept albumThumbnailAssetId
* implemented changing album cover on web
* Fixed api change on mobile app
* Added album page
* Refactor sidebar
* Added album assets count info
* Added album viewer page
* Refactor album sorting
* Fixed incorrectly showing selected asset in album selection
* Improve fetching speed with prefetch
* Refactor to use ImmichThubmnail component for all
* Update to the latest version of Svelte
* Implement fixed app bar in album viewer
* Added shared user avatar
* Correctly get all owned albums, including shared
* feat(mobile) added french translations
* fix(mobile) added missing translation tag for search_no_objects (EN,DE,FR)
* fix(mobile) renamed search_no_objects to search_page_no_objects
* Add i18n framework to mobile app and write simple translation generator
* Replace all texts in login_form with i18n keys
* Localization of sharing section
* Localization of asset viewer section
* Use JSON as base translation format
* Add check for missing/unused translation keys
* Add localizely
* Remove i18n directory in favour of localizely
* Backup Translation
* More translations
* Translate home page
* Translation of search page
* Translate new server version announcement
* Reformat code
* Fix typo in german translation
* Update englisch translations
* Change translation keys to match dart filenames
* Add /api to translated endpoint_urls
* Update localizely.yml
* Add languages to ios plist
* Remove unused keys
* Added script to check outdated key in other translations
* Add download key to localizely.yml
Co-authored-by: Alex <alex.tran1502@gmail.com>
* Remove thumbnail generation on mobile
* Remove tconditions for missing thumbnail on the backend
* Remove console.log
* Refactor queue systems
* Convert queue and processor name to constant
* Added corresponding interface to job queue
* Deprecate login scenarios that support pre-web era
* refactor and simplify setup
* Added user info to change password form
* change isFistLogin column to shouldChangePassword
* Implemented change user password
* Implement the change password page for mobile
* Change label
* Added changes log and up minor version
* Fixed typo in the release note
* Up server version
* Fixed app not resuming backup after closing and reopening the app
* Fixed cosmetic effect of backup button doesn't change state right away after pressing start backup
* Fixed grammar
* Fixed deep copy problem that cause incorrect asset count when backing up
* Format code
* chore: remove UPLOAD_LOCATION as it isn't used in the server
* docker: remove network in docker compose as docker creates one by default
* nginx: update reverse proxy to put web at root and api at /api
* docker: remove unneeded exposed ports and docker network
Align dev setup with prod, but with ports exposed for direct connection
Most communication between services happens on the internal network, so we don't need to expose all these services.
With the nginx changes, the api and web panel are both server through the reverse proxy on / for web and /api for the API.
The only service that should expose ports is nginx as that is the entrypoint to the application.
* chore: remove CORS now we serve the api on /api in the default setup
* docs: update README.md to include /api
* Fixed docket-compose file for dev environment and websocket on web and mobile
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* Allow zooming in image viewer
* Use thumbnailProvider as initial provider
* Set maximum zoom level to 100%
* Implement custom swipe listener in remote_photo_view
* Dart format
* Disable swipe gestures when zoomed in (prevents panning)