* remove import and referenced file
* first pass at replacing all CircleIconButtons
* fix linting issues
* fix combobox formatting issues
* fix button context menu coloring
* remove circle icon button from search history box
* use theme switcher from UI lib
* dark mode force the asset viewer icons
* fix forced dark mode icons
* dark mode memory viewer icons
* fix: back button in memory viewer
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* Add a new setting to toggle autoplay when showing the slideshow.
* Fix an issue where the slideshow would restart automatically when
navigating after it was paused.
* Add a keyboard shortcut 's' to start the slideshow from the asset
viewer.
* Add a keyboard shortcut ' ' to toggle the slideshow play/paused.
* Change the timeout for hiding the slideshow controls from 10 to 2.5
seconds.
* Add English translation for the 'autoplay_slideshow' setting.
Co-authored-by: Alex <alex.tran1502@gmail.com>
* Fix an issue where clicking the zoom-button after having zoomed in
would not zoom completely out, but leave the image in the zoomed-in
state. The new behavior properly zoomes the image completely out after
clicking the zoom-button.
* Revert to the default setting for `wheelZoomRatio` as the previous
setting of 0.2 was borderline unusable on a trackpad. This could
probably be moved to a user setting if needed.
* Add a keyboard shortcut 'z' to toggle image zoom.
* Add automatic OpenID Connect login by using parameter `autoLaunch=1`
By launching Immich with `/auth/login?autoLaunch=1` an OpenID Connect login attempt is directly initated on installations where OAuth Auto Launch is not enabled. The intended use for this parameter is to enable Immich to be launched from e.g. Nextcloud using the _External sites_ app and the _oids_ OpenID Connect provider app so as to enable the user to directly interact with Immich without the need to press the `Login with ...` button.
* Add documentation for autolaunch by navigating to `/auth/login?autoLaunch=1`
* Look ma, no braces!
_This could be a single line_
And now it is, as is its predecessor.
* Change formatting to satisfy _prettier_
* if (condition) return true -> return condition
* More _prettier_ reformatting
* Look ma, braces!
* Update locked folder text and remove unused translations
* uppercase Locked folder in Menu
* convert some translates to icu and improve
* add iOS debug info translations for background processes
* fix lint
---------
Co-authored-by: dvbthien <dvbthien@gmail.com>
* add setting switch
this isnt bound to anything yet
* make google casting opt-in
* doc updates
* lint docs
* remove unneeded translation items
* update mobile openai defs
* fix failing test
we need to mock user prefs since CastButton uses it
* feat: api access control
* feat(web): granular api access controls
* fix test
* fix e2e test
* fix: lint
* pr feedback
* merge main + new design
* finalize styling
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* move support & feedback button to user modal
* cleanup styling of link
* update sign out button to use immich/ui
* revise sign out button to match design from @alextran1502
* more margin on support/feedback
* recreate #13966
* gcast button works
* rewrote gcast-player to be GCastDestination and CastManager manages the interface between UI and casting destinations
* remove unneeded imports
* add "Connected to" translation
* Remove css for cast launcher
* fix tests
* fix doc tests
* fix the receiver application ID
* remove casting app ID
* remove cast button from nav bar
It is now present at the following locations:
- shared link album and single asset views
- asset viewer (normal user)
- album view (normal user)
* part 1 of fixes from @danieldietzler code review
* part 2 of code review changes from @danieldietzler and @jsram91
* cleanup documentation
* onVideoStarted missing callback
* add token expiry validation
* cleanup logic and logging
* small cleanup
* rename to ICastDestination
* cast button changes
* feat: private view
* pr feedback
* sql generation
* feat: visibility column
* fix: set visibility value as the same as the still part after unlinked live photos
* fix: test
* pr feedback
* add btn, map and marker
* Fix bug in navigation assetviewer
* Correct bug on main Viewer
* Add to user album the map of his pictures
* change icon to outline
* lint & format
* with manager instead of variable
* remove duplicate
* chore: minor styling change
* formatting
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* feat: responsive date group header height
* update tests
* feat(web): improve perf when changing mobile orientation (#17945)
fix: improve perf when changing mobile orientation
* feat: Service Worker to preload/cancel images and other resources
* Remove caddy configuration, localhost is secure if port-forwarded
* fix e2e tests
* Cache/return the app.html for all web entry points
* Only handle preload/cancel
* fix e2e
* fix e2e
* e2e-2
* that'll do it
* format
* fix test
* lint
* refactor common code to conditionals
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* fixed missing $locale parameter to .toLocaleString
* Remove unused types and functions in timeline-util
* remove unused export
* re-enable export because it is needed for tests
* format
* fix(web): search bar deactivates when focus exits
* fix: disable search bar on destroy
For example, on the search page. If the escape key is pressed while the advanced filters button is focused, the search page will close but the search bar will remain activated.
* use original image if web compatible
* add e2e
* fix shared link handling
* handle redirect in e2e
* fix size not being passed to thumbnail url
* test fullsize in e2e
* fix(web): don't show a scrollbar when hovering over the last row of images on the search page
* Format code
* Fix asset selection z-index
* Remove anchor overlay on mouseover
* Fix a test
* Fix merge
* Fix overlays
* fix merge
* fix stack thumbs in asset viewer
* fix dimmed bounds, animation
* lint
---------
Co-authored-by: Min Idzelis <min123@gmail.com>
* feat: expand/collapse sidebar
* fix: general PR cleanup
- add skip link unit test
- remove unused tailwind styles
- adjust asset grid spacing
- fix event propogation
* fix: cleaning up event listeners
* fix: purchase modal and button on small screens
* fix: explicit tailwind classes
* fix: no animation on initial page load
* fix: sidebar spacing and reactivity
* chore: reverting changes to icons in nav and account info panel
* fix: remove left margin from the asset grid after merging in new timeline
* chore: extract search-bar changes for a separate PR
* fix: add margin to memories
* feat(server): extract full-size previews from RAW images
* feat(web): load fullsize preview for RAW images when zoomed in
* refactor: tweaks for code review
* refactor: rename "converted" preview/assets to "fullsize"
* feat(web/server): fullsize preview for non-web-friendly images
* feat: tweaks for code review
* feat(server): require ASSET_DOWNLOAD premission for fullsize previews
* test: fix types and interfaces
* chore: gen open-api
* feat(server): keep only essential exif in fullsize preview
* chore: regen openapi
* test: revert unnecessary timeout
* feat: move full-size preview config to standalone entry
* feat(i18n): update en texts
* fix: don't return fullsizePath when disabled
* test: full-size previews
* test(web): full-size previews
* chore: make open-api
* feat(server): redirect to preview/original URL when fullsize thumbnail not available
* fix(server): delete fullsize preview image on thumbnail regen after fullsize preview turned off
* refactor(server): AssetRepository.deleteFiles with Kysely
* fix(server): type of MediaRepository.writeExif
* minor simplification
* minor styling changes and condensed wording
* simplify
* chore: reuild open-api
* test(server): fix media.service tests
* test(web): fix photo-viewer test
* fix(server): use fullsize image when requested
* fix file path extension
* formatting
* use fullsize when zooming back out or when "display original photos" is enabled
* simplify condition
---------
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
* chore: upgrade svelte-maplibre and enforce runes
* feat: maplibre-gl 5, globe view, style hot reloading, fast map markers
* fix: remove location-pin class that wasn't being used
---------
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
* feat(web): max grid row height responsive
* also gallery-viewer
* lint
* feat(web): support long-press selection on mobile web
* use svelte-gestures
* fix test
* Bug fix
* globalThis
* format
* revert generator
* Testing
* bad merge
* Fix typo/tap on thumbnail
* feat: shrink header on small screens (#16909)
* feat(web): shrink header on small screens
* fix test
* test
* Fix test
* Revert user-page-layout chagne
* Restore icons sizes, make consistent, improve logo responsiveness
* remove 4 more pix, lint
* lint
* chore
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* Revert "Testing"
This reverts commit 442f11c9e1538809f9208abcdff71a58b510ca98.
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* fix(web): update stack state in timeline
* js docs
* fix: handle state update from unstack action from gallery viewer
* use navigate in View Stack notification
---------
Co-authored-by: Snowknight26 <Snowknight26@users.noreply.github.com>
* fix(web): fix asset grid showing nothing with an invalid asset target
* Deduplicate
* Scroll to position where appropriate
* a bit cleaner
* fix: lint
---------
Co-authored-by: Min Idzelis <min123@gmail.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
* fix(web): timeline renders nothing after archiving in asset viewer
* fix(web): timeline renders nothing after archiving in asset viewer
* fix: ensure geometry updated when performing bulk action on all
* fix: album assets selection
* 16712: Proper intialisation of the memory store to avoid loading up duplicate object refs of the same asset.
* 16712: Add auth to memory mapping so isFavorite is actually return correctly from the server.
* 16712: Move logic that belongs in the store into the store.
* 16712: Cleanup.
* 16712: Fix init behaviour.
* 16712: Add comment.
* 16712: Make method private.
* 16712: Fix import.
* 16712: Fix format.
* 16712: Cleaner if/else and fix typo.
* fix: icon size mismatch
* 16712: Fixed up state machine managing memory playback:
* Updated to `Tween` (`tweened` was deprecated)
* Removed `resetPromise`. Setting progressController to 0 had the same effect, so not really sure why it was there?
* Removed the many duplicate places the `handleAction` method was called. Now we just called it on `afterNavigate` as well as when `galleryInView` or `$isViewing` state changes.
* 16712: Add aria tag.
* 16712: Fix memory player duplicate invocation bugs. Now we should only call 'reset' and 'play' once, after navigate/page load. This should hopefully fix all the various bugs around playback.
* 16712: Cleanup
* 16712: Cleanup
* 16712: Cleanup
* 16712: Cleanup
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>