Commit graph

1759 commits

Author SHA1 Message Date
Nicholas
cc1cd299f3
feat(web): Download links and Obtainium link generator on Utilities page and onboarding (#20589) 2025-10-17 13:22:00 +02:00
Paul Larsen
3163afd24a
fix(web): render context overlays over the scrollbar (#23007) 2025-10-17 12:35:19 +02:00
Clement Martin
95889a69c9
feat(server): Option to configure SMTPS transport (#22833)
* feat(server): Option to configure SMTPS transport

This commit adds a boolean option in the SMTP transport configuration to
enable the so-called "secure" mode. What it does is use SMTP over TLS
instead of relying on the more common STARTTLS option over plain SMTP.

* Add missing field in dto

* Add missing field

* Use a switch instead of text field

* Add field in spec

* chore: regen open-api

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-10-17 10:21:27 +00:00
Jason Rasmussen
24bfdf3263
fix(web): immich-form-label usage (#23006) 2025-10-16 17:49:12 -04:00
Min Idzelis
2919ee4c65
fix: navigate to time action (#20928)
* fix: navigate to time action

* change-date -> DateSelectionModal; use luxon; use handle* for callback fn name

* refactor change-date dialogs

* Review comments

* chore: clean up

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-10-16 17:44:09 +00:00
Alex
d0eae97037
fix: unit overlapses value in server stats card (#22994) 2025-10-16 17:14:39 +00:00
Min Idzelis
b3055d2e94
refactor: TimelineManager is owned by Timeline.svelte (#22839)
feat: TimelineManager is owned by Timeline.svelte
2025-10-15 17:27:44 +00:00
Min Idzelis
f1e03d0022
fix(web): improve scrubber behavior on scroll-limited timelines (#22917)
Improves scroll indicator positioning when scrubbing through timelines with limited scrollable content (e.g., small albums). When a timeline's scrollable height is less than 50% of the viewport height, the scroll position is now properly distributed across the entire scrubber height, making the indicator more responsive and accurate.

Changes:
- Add `limitedScroll` state to detect scroll-constrained timelines (threshold: 50%)
- Introduce `ViewportTopMonth` type to handle lead-in/lead-out sections
- Calculate `totalViewerHeight` including top/bottom sections for accurate positioning
- Refactor scrubber to treat lead-in and lead-out as distinct scroll segments
- Update scroll position calculations to use relative percentages on constrained timelines
2025-10-15 13:13:05 -04:00
Saschl
9b5855f848
feat: add video auto play setting (#20416)
* 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>
2025-10-15 11:24:47 -04:00
Mees Frensel
72f5ca4420
fix(web): prevent photo-only memories showing mute button (#22802) 2025-10-15 12:15:29 +02:00
Alex
d778286777
feat: local album events notification (#22817)
* feat: local album events notification

* pr feedback

* show number of unread notification
2025-10-14 10:15:51 -05:00
Min Idzelis
146973b072
fix: re-add scroll compensation (efficiently) (#22848)
* fix: re-add scroll compensation (efficient)

* Rename showSkeleton to invisible. Adjust skeleton margins, invisible support.

* Fix faulty logic, simplify

* Calculate ratios and determine compensation strategy: height comp for above/partiality visible, month-scroll comp within a fully visible month.

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-10-14 02:16:05 +00:00
Min Idzelis
ce4e8fa6ba
feat: (perf) remove scroll compensation (#22837) 2025-10-10 15:48:29 -04:00
renovate[bot]
ea610760ee
fix(deps): update typescript-projects (#22809)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-10-10 00:50:48 +02:00
Sebastian Schneider
cf60f4cdcd
feat(web): Add upload to stack action (#19842)
* feat(web): Add upload to stack action

* Event handling and translation

* Update asset viewer instead

* lint, improve upload return type

* Add suggestions from code review

* Resolve merge conflicts

* Apply suggestions from code review
2025-10-08 13:22:33 -04:00
kaziu687
9838634067
feat(web): seconds and milliseconds in timestamps (#20337)
* fix(web): seconds in timestamps

* changed date-input step to provide millisecond precision
2025-10-08 16:30:54 +00:00
Min Idzelis
966ab22065
refactor(web): extract asset viewer logic from Timeline into TimelineAssetViewer component (#22268)
refactor(web): extract asset viewer logic from Timeline into TimelineAssetViewer component

- Extracted asset viewer navigation and action handling logic from Timeline.svelte into a dedicated TimelineAssetViewer component
- Reduces Timeline.svelte complexity by ~150 lines and improves separation of concerns
- No functional changes - purely a refactoring to improve code organization

## Changes
- Created new TimelineAssetViewer.svelte component containing all asset viewer-related logic
- Moved handlePrevious, handleNext, handleRandom, handleClose, handlePreAction, and handleAction methods
- Timeline.svelte now only passes required props to the new component
- Maintained all existing functionality including navigation, asset actions, and stack management
2025-10-07 14:01:06 +00:00
Min Idzelis
5862c454b7
refactor(web): extract timeline keyboard actions into separate component (#22266)
refactor(web): extract timeline keyboard actions into separate component

Extracts keyboard shortcuts and related functionality from Timeline component into a dedicated TimelineKeyboardActions component for better separation of concerns and maintainability.
2025-10-07 13:52:19 +00:00
Min Idzelis
83db851b00
refactor(web): Clarify property names in Timeline and Scrubber (#22265)
refactor(web): Clarify property names in Timeline and Scrubber

  Renamed properties across Timeline/Scrubber components for clarity:
  - scrubOverallPercent → timelineScrollPercent
  - scrubberMonthPercent → viewportTopMonthScrollPercent
  - scrubberMonth → viewportTopMonth
  - leadout → isInLeadOutSection

  Additional changes:
  - Updated ScrubberListener signature to accept object parameter
  - Added detailed JSDoc comments for all Scrubber props
  - Fixed callback invocations to use new object syntax
  - Aligned Timeline's local state variables with Scrubber prop names
2025-10-07 09:43:27 -04:00
Alex
25142bb6c6
fix: improve the selected sidebar item text color in dark mode (#22640) 2025-10-06 21:51:00 +00:00
grgergo
6973683ea7
fix: use full-size image for non-web-compatible panoramas (#20359)
* fix(web): use full-size image for non-web-compatible panoramas

* always generate full-size image for panoramas

* add unit test

* fix formatting

---------

Co-authored-by: gergo= <gergo@pitty.hu>
2025-10-06 12:38:41 -04:00
Min Idzelis
42f46b11f4
fix: missing responsive calculation in UserPageLayout (#22455) 2025-10-06 12:36:20 -04:00
gablilli
1086623457
chore: replace immich.app/docs with docs.immich.app globally (#22428)
* fix: es

* fix(readme): fix docs link

* fix(readme): fix main readme's docs link

* fix: main readme

* fix: replace immich.app/docs with docs.immich.app globally
2025-10-02 10:42:14 -05:00
Daniel Dietzler
b2f3bf7079
chore: bump svelte gestures (#22263) 2025-09-21 21:03:06 -05:00
Jason Rasmussen
0bbeb20595
fix(web): only copy images via canvas (#22225) 2025-09-21 14:34:10 -05:00
Alex
aaeac2ab73
fix(web): revert do not upscale small pictures (#22191) (#22233) 2025-09-20 09:25:27 -05:00
Jason Rasmussen
de57fecb69
fix(web): copy to clipboard on safari (#22217) 2025-09-19 17:44:18 -04:00
renovate[bot]
1e0b4fac04
fix(deps): update typescript-projects (#21510)
* fix(deps): update typescript-projects

* chore: downgrade dependencies

* chore: downgrade svelte-gestures

* fix: svelte/no-navigation-without-resolve

* fix: dumb test

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack Pollard <zack@futo.org>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-09-19 12:29:01 -04:00
Jason Rasmussen
34339ea69f
fix(web): show danger/warning when taken dates overlap (#22213) 2025-09-19 12:20:09 -04:00
Jason Rasmussen
3f2e0780d5
feat: availability checks (#22185) 2025-09-19 12:18:42 -04:00
Jason Rasmussen
de897f6069
fix(web): do not upscale small pictures (#22191) 2025-09-18 22:28:06 -04:00
Jason Rasmussen
dfa38ec3ef
fix(web): download panel (#22150) 2025-09-17 15:40:11 -05:00
Jason Rasmussen
98ea3847e5
refactor: server-about-modal (#22138)
* refactor: server-about-modal

* fix: bits-ui scroll lock cleanup
2025-09-17 16:23:23 +00:00
Jason Rasmussen
11e72a0f35
refactor: text-primary (#22141) 2025-09-17 12:12:51 -04:00
Jason Rasmussen
53a6724039
refactor: hot module reload component (#22135) 2025-09-17 12:12:37 -04:00
Jason Rasmussen
0b20d1df9f
feat(web): toggle theme shortcut (#22139) 2025-09-17 12:12:23 -04:00
Stewart Rand
26e0cb3eb4
fix: Refresh photo after updating featured photo (#21971)
fix: Refresh person photo after setting featured photo

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-09-17 10:22:26 -05:00
Jason Rasmussen
2012b07645
refactor: admin settings (#22109) 2025-09-16 17:15:57 -04:00
Jason Rasmussen
9693d07a8b
refactor: components (#22106) 2025-09-16 16:58:47 -04:00
Jason Rasmussen
c9daefccc4
refactor: loading spinner (#22103) 2025-09-16 16:22:13 -04:00
Jason Rasmussen
6ffd8e679e
refactor: use immich/ui PasswordInput (#22099)
refactor: password-input
2025-09-16 16:09:09 -04:00
Daniel Dietzler
7fe2f19258
chore: migrate to UI lib icon (#22096) 2025-09-16 21:40:43 +02:00
Jason Rasmussen
75322179fd
refactor: more elements (#22095) 2025-09-16 15:01:23 -04:00
Jason Rasmussen
3f4b6a8e7c
refactor: move more elements (#22093) 2025-09-16 14:47:38 -04:00
Jason Rasmussen
7ce1d73c20
refactor: move components/elements to elements/ (#22091) 2025-09-16 18:31:22 +00:00
Jason Rasmussen
2bf484c91c
refactor: timeline components (#22089) 2025-09-16 14:01:12 -04:00
Jason Rasmussen
c21860fb97
refactor: rename timeline actions (#22086) 2025-09-16 13:37:01 -04:00
Jason Rasmussen
31e098517d
chore: rename asset-grid to timeline (#22084) 2025-09-16 13:05:09 -04:00
Alex
8821c251c3
fix: navigate to time (#22078) 2025-09-16 11:40:31 -05:00
Stewart Rand
0f79e0c38e
fix: Use CSS for uppercase text (#22011) 2025-09-15 23:28:42 -04:00
Alex
3d883b27aa
fix: sidebar link hightlight (#22035)
* fix: sidebar link hightlight

* check if current route start with href
2025-09-15 22:19:55 -04:00
Stewart Rand
4059638151
fix: context menu jank (#21844)
* Fix issue with context menu jank by only applying overflow styling when transition is complete

* Remove comment

Co-authored-by: Alex <alex.tran1502@gmail.com>

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-09-12 22:43:22 -05:00
Stewart Rand
1823a28e59
chore: improve date text slide-in transition (#21879)
* Make date text slide-in transition smooth

* fix: lint

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-09-13 03:42:42 +00:00
Stewart Rand
b6bf1852cd
fix: keep adequate space around page title (#21881)
Keep space around page title
2025-09-12 22:42:25 -05:00
Stewart Rand
cdc26f2c7b
fix: z-index of top bar on show/hide people view (#21847)
Fix z-index of top bar on show/hide people view
2025-09-12 22:32:50 -05:00
Stewart Rand
994a770921
chore: improve context button accessibility (#21876)
Make context menu button filled on album list and faces page
2025-09-12 22:31:52 -05:00
Stewart Rand
04c9531624
fix: format point count numbers on map view (#21848)
Format numbers on map view
2025-09-12 07:20:05 +00:00
Jason Rasmussen
8529f92ebc
fix(web): map in album shared link (#21793) 2025-09-10 20:19:43 +00:00
Jason Rasmussen
761ac074c9
fix(web): asset refresh (#21788) 2025-09-10 20:08:15 +00:00
Yaros
027dab1487
fix(web): memory viewer arrow navigation (#19400)
* fix(web): memory viewer jumps down on arrow keys

* fix pnpm lockfile

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-09-10 09:47:38 -04:00
Jason Rasmussen
bee0ae430a
fix(web): map popup accessibility (#21759) 2025-09-10 08:17:58 -04:00
Jason Rasmussen
8e5d52abbb
fix(web): transparent background color (#21747) 2025-09-10 08:15:57 -04:00
Johann
7a1c45c364
feat(web): use timeline in geolocation manager (#21492) 2025-09-09 21:26:26 -04:00
Jason Rasmussen
5a7042364b
feat: add partner create endpoint (#21625) 2025-09-05 17:59:11 -04:00
Arthur Normand
37a79292c0
feat: view similar photos (#21108)
* Enable filteing by example

* Drop `@GenerateSql` for `getEmbedding`?

* Improve error message

* PR Feedback

* Sort en.json

* Add SQL

* Fix lint

* Drop test that is no longer valid

* Fix i18n file sorting

* Fix TS error

* Add a `requireAccess` before pulling the embedding

* Fix decorators

* Run `make open-api`

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-09-04 09:22:09 -05:00
Snowknight26
bbc1c8186c
fix(web): Show full date when hovering over photos date groups (#21462) 2025-08-31 16:30:35 -05:00
Dag Stuan
fd2b7a344c
fix(web): wait for image to load before playing memories. (#19757) 2025-08-31 08:50:33 -05:00
Snowknight26
225af973c1
fix(web): Prevent changing asset location triggering keyboard shortcuts (#21451)
fix(web): Prevent changing asset location triggering asset keyboard shortcuts
2025-08-30 13:39:25 -05:00
Brandon Wees
b3372064e0
fix: default zoom level when location is not set (#21428) 2025-08-30 13:33:11 -05:00
Johann
662d44536e
feat(web): add geolocation utility (#20758)
* feat(geolocation):  add geolocation utility

* feat(web): geolocation utility - fix code review - 1

* feat(web): geolocation utility - fix code review - 2

* chore: cleanup

* chore: feedback

* feat(web): add animation and text

animation on locations change and action text on thumbnail

* styling, messages and filtering

* selected color

* format i18n

* fix lint

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-28 16:54:11 +00:00
xCJPECKOVERx
80fa5ec198
fix(web): Slideshow fade occurs when not in slideshow (#21326)
- ensure slideshow transition only shows when both enabled and in a slideshow
2025-08-28 11:47:53 -05:00
Yaros
a3808c26ce
fix(web): middle click not working on videos (#21304)
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-27 21:43:39 -05:00
prajwal
ae104ad7cc
fix(web): add primary text color to file upload toast (#21340)
* fix:add primary text color to file upload toast

* fix:make progress bar visible in dark mode

* fix:make it text-primary

---------

Co-authored-by: prajwal <prajwal@hopbox.in>
2025-08-27 15:51:43 -04:00
Jason Rasmussen
0d0bb0e2d9
fix(web): suppress auto-play errors (#21282) 2025-08-25 23:51:56 -04:00
Jason Rasmussen
38a8a67be9
fix(web): allow numeric input fields to be zero (#21258) 2025-08-25 13:31:32 -04:00
Nicholas
3bfa8b7575
fix: border around dark theme button on onboarding page (#20846)
fix border around dark theme button
2025-08-23 15:28:00 -05:00
Alex
cda7249a6a
fix: add to multi album selection (#21061) 2025-08-19 09:21:18 -05:00
Thomas
47566c1a4a
chore(web): make search result loading behaviour more consistent (#20741)
The current behaviour will intersect if the page is scrolled about 90% down
which works okay for a small number of assets, but does not scale well with
large amounts of assets. Instead of relying in proportional values, it may be
more sensible to use a consistent measure for loading more pages. A simple and
sensible suggestion may be to load another page when there is only one more
viewport worth of assets to display. It can be refined and revisited in future,
but it seems to work relatively well in my testing and prevents the issues
which occur with large amounts of assets.

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-19 09:09:39 -05:00
Arthur Normand
d4f2b43f64
fix: improve duplicate utility text contrast (#21045) 2025-08-19 02:18:52 +00:00
Arthur Normand
f343b0e58f
fix: always show resolution in details panel (#21046)
Always show resolution in details panel
2025-08-19 02:17:45 +00:00
xCJPECKOVERx
9ff664ed36
feat(web): Add to Multiple Albums (#20072)
* Multi add to album picker:
- update modal for multi select
- Update add-to-album and add-to-album-action to work with new array return from AlbumPickerModal
- Add asset-utils.addAssetsToAlbums (incomplete)

* initial addToAlbums endpoint

* - fix endpoint
- add test

* - update return type
- make open-api

* - simplify return dto
- handle notification

* - fix returns
- clean up

* - update i18n
- format & check

* - checks

* - correct successId count
- fix assets_cannot_be_added language call

* tests

* foromat

* refactor

* - update successful add message to included total attempted

* - fix web test
- format i18n

* - fix open-api

* - fix imports to resolve checks

* - PR suggestions

* open-api

* refactor addAssetsToAlbums

* refactor it again

* - fix error returns and tests

* - swap icon for IconButton
- don't nest the buttons

* open-api

* - Cleanup multi-select button to match Thumbnail

* merge and openapi

* - remove onclick from icon element

* - fix double onClose call with keyboard shortcuts

* - spelling and formatting
- apply new api permission

* - open-api

* chore: styling

* translation

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-19 00:42:47 +00:00
xCJPECKOVERx
a313e4338e
feat(web): Skip duplicates (#20880)
* - add skip button to duplicates-compare-control

* - cleanup

* - change to next/previous
- move buttons to duplicates page, intead of compareControl
- add param based control/position

* - remove index param on keep/dedupe all

* - cleanup

* - cleanup index corrections

* - add left/right arrow keyboard shortcuts for previous/next
- cleanup

* - cleanup
2025-08-18 18:11:53 -05:00
Alex
54960157c0
chore: backup info card styling tweak (#20799)
* chore: backup info card styling tweak

* pr feedback
2025-08-12 16:08:31 +00:00
Mirek
5d2777a5c6
feat: format date and time in /admin/users/ -> Profile section (#20811)
Matches the format used in the user settings page.

Added a formatting function in utils.
2025-08-11 16:50:34 -05:00
Nicholas
d6d31c6695
fix: change all download icons to mdiDownload for clarity and consistency (#20821)
change all download icons to `mdiDownload` for clarity and consistency
2025-08-10 21:23:21 -05:00
Jason Rasmussen
538d5c81ea
feat: reset oauth ids (#20798) 2025-08-08 15:42:38 -04:00
Jason Rasmussen
cfbc24579d
feat(web): reset pin code (#20766) 2025-08-07 15:07:31 -04:00
mkuehne707
011a667314
feat: batch change date and time relatively (#17717)
Co-authored-by: marcel.kuehne <>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2025-08-07 13:42:33 +00:00
Ben McCann
af10c3bc2f
chore: upgrade SvelteKit (#20736) 2025-08-07 13:00:42 +01:00
Thomas
746252fe39
fix(web): limit max height of search results (#20727)
The height of the search results element was unrestricted, which meant that the
asset visibility calculations were completely incorrect. The consequence of
this is that assets which should not have been visible, were. In practical
terms, all assets below the viewport were rendered when they shouldn't have
been which is terrible for performance. Limiting the height of the viewport
fixes that calculation and assets are correctly hidden.

The consequence of limiting the height of the viewport is that the intersector
then incorrectly thought the scroll position was always at the end. This has
been fixed by calculating the position of sliding window against the calculated
asset layout container height.

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-06 17:05:23 -05:00
Thomas
f36efd128b
fix(web): prevent thumbhashes from covering search bar (#20720)
The thumbhash had a z-index setting which meant it would cover the search bar,
and would always cause weird animations when scrolling up in search results.

This is fixable by removing the z-index and moving it in front the other
elements to get a naturally higher higher z-index preference.
2025-08-06 16:57:51 -05:00
Thomas
1193a23282
feat(web): don't scroll to visible assets (#20729)
The timeline has been quite aggressive with scrolling to assets, even if they
were right in the middle of the page. If the asset is visible, then we
shouldn't scroll to it. It's really confusing when assets jump around after
being viewed.
2025-08-06 16:31:37 -05:00
Paweł Wojtaszko
990d9ba9a8
fix: adjust margin and gap for trailing elements in control app bar (#20645) 2025-08-04 17:24:19 -05:00
Paweł Wojtaszko
b56a272f64
fix: adjust search bar padding and visibility based on input state (#20598) 2025-08-04 17:46:46 +00:00
Alden Bansemer
e2c3c39597
chore: tweak photo sphere fov and zoom speed constants (#20595) 2025-08-04 01:07:11 -05:00
Alex
7391ea6ff9
chore: large file size grid view styling (#20472)
* chore: large file grid styles

* chore: large file grid styles
2025-07-31 12:52:19 -04:00
Jason Rasmussen
6b50d958f4
fix: incorrect next/previous action after folder view refresh (#20447) 2025-07-30 14:50:52 -05:00
Jason Rasmussen
d5a01c0310
fix(web): timeline time bucket issue (#20438) 2025-07-30 11:21:02 -05:00
Brandon Wees
07ed060c32
feat: 3-2-1 backup onboarding card (#20374)
* feat: 3-2-1 backup onboarding card

* chore: format i18n

* fix: lint

* Update onboarding-backup.svelte

* fix: e2e onboarding test
2025-07-29 21:55:21 -05:00
Alwin Lohrie
ae1d60e259
feat: find large files utility (#18040)
feat: large asset utility

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-07-28 18:48:39 -04:00
Jed-Giblin
9b3718120b
feat: shared links custom URL (#19999)
* feat: custom url for shared links

* feat: use a separate route and query param

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-07-28 14:16:55 -04:00
Dag Stuan
66ea75072d
feat(web): auto fit bounds for map modal (#20345) 2025-07-28 17:36:37 +01:00
Jason Rasmussen
153bb70f6e
feat(web): api key permission search (#20248) 2025-07-25 13:39:48 -04:00
Daniel Dietzler
edefed56ae
fix: optional number inputs (#20218) 2025-07-25 09:06:12 -04:00
Pablo Lluch
e34f46fa0d
fix: send correct includeArchived parameter to API when showing markers in map (#20117)
Co-authored-by: Pablo Lluch <pablo.lluch@gmail.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2025-07-24 22:34:06 +02:00
Daniel Dietzler
f27bdf7523
chore: migrate to UI modal manager (#20116) 2025-07-23 17:27:09 -04:00
Daniel Dietzler
c1c9f30ea4
chore: migrate to immich/ui confirm modal (#20114) 2025-07-23 22:56:56 +02:00
Daniel Dietzler
0e1c8c2b80
fix: ML recognition distance UI form validation (#20107) 2025-07-23 19:12:06 +02:00
xCJPECKOVERx
1a70896113
feat(web): Remove from Stack (#19703)
* - add component
- update server's StackCreateDto for merge parameter
- Update stackRepo to only merge stacks when merge=true (default)
- update web action handlers to show stack changes

* - make open-api

* lint & format

* - Add proper icon to 'remove from stack'
- change web unstack icon to image-off-outline

* - cleanup

* - format & lint

* - make open-api: StackCreateDto merge optional

* initial addition of new endpoint

* remove stack endpoint

* - fix up remove stack endpoint
- open-api

* - Undo stackCreate merge parameter

* - open-api typescript

* open-api dart

* Tests:
- add tests
- update assetStub.imageFrom2015 to have required stack attributes to include it with tests

* update event name

* Fix event name in test

* remove asset_update check

* - merge stack.removeAsset params into one object
- refactor asset existence check (no need for asset fetch)
- fix tests

* Don't return updated stack

* Create specialized stack id & primary asset fetch for asset removal checks

* Correct new permission names

* make sql

* - fix open-api

* - cleanup
2025-07-22 22:17:06 -04:00
renovate[bot]
250548dea6
fix(deps): update typescript-projects (#19939)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-07-22 17:42:07 +00:00
bo0tzz
826eaedae6
feat: play live photos on hover (#19962) 2025-07-21 16:59:42 -05:00
Hamish
daea57f7d2
feat(web): better coordinate parsing (#19832)
feat: better coordinate parsing
2025-07-15 08:32:43 -05:00
Lukas
ccd0c35ca1
fix(web): adjust button size in person side panel (#19924)
* fix(web): adjust button size in person side panel

* round edit button
2025-07-14 18:05:34 -04:00
Jason Rasmussen
47c0dc0d7e
feat: nightly tasks (#19879) 2025-07-11 17:32:10 -04:00
Léopold Koprivnik
f778adea92
feat: adds option to search only for untagged assets (#19730)
Co-authored-by: SkwalExe <skwal@skwal.net>
2025-07-10 16:28:20 +02:00
Hamish
4db76ddcf0
feat(web): update icons (#19831)
* fix: update password icon in user settings

* feat: add icons to more modals
2025-07-09 02:12:16 +00:00
matthieu-db
d5923241b5
fix: add quiet zone to QR code (#19771)
Add quiet zone to QR code

This is needed for the QR code to be readable by many QR readers. It is also a requirement for it to be a valid QR code.
2025-07-06 22:06:36 -05:00
Daniel Dietzler
4ce9bce414
feat: oauth role claim (#19758) 2025-07-06 18:45:32 -04:00
Daimolean
fb384fe90b
fix(web): viewing asset lock (#19499)
* fix(web): viewing asset lock

* fix: lint

* make mutex stateless

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-07-05 02:52:39 +00:00
Daimolean
4621ec5ea2
fix(web): load day group in asset viewer (#19523)
* fix(web): load day group in asset viewer

* fix: lint
2025-06-25 11:18:11 -05:00
Daimolean
ce14324c97
fix(web): oauth quota display (#19417)
* fix(web): oauth quota display

* fix(web): oauth quota display
2025-06-23 11:00:41 -04:00
Daniel Dietzler
ecc58a8971
chore: migrate version announcement modal (#19381) 2025-06-22 21:56:41 -05:00
Yaros
c705a7b280
fix(web): map broken after redirect from details (#19424)
* fix(web): map broken after redirect from details

* chore: use globalThis instead of window
2025-06-22 21:55:21 -05:00
Brandon Wees
ef278b4fb0
fix: storage template onboarding save (#19405)
* fix: storage template onboarding save

* no need for async/await
2025-06-22 21:54:29 -05:00
Daimolean
4cd633dc68
fix(web): download icon color (#19427) 2025-06-22 21:52:19 -05:00
Daimolean
90aa0dc14d
fix(web): map cluster (#19433) 2025-06-22 15:06:45 +00:00
Daniel Dietzler
fe4d6edbdc
refactor: album picker modal (#19383)
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-06-21 08:18:54 -04:00
Daniel Dietzler
373b654156
chore: migrate profile picture cropper modal (#19378) 2025-06-20 18:16:10 +00:00
Daniel Dietzler
1dc8fa2979
chore: rename edit album form modal (#19375) 2025-06-20 13:51:14 -04:00
Brandon Wees
1c50e19894
fix: use icons instead of toggles for admin user features view (#19369)
* fix: use icons instead of toggles for admin user features view

* fix: use red for X icon
2025-06-20 14:48:18 +00:00
Jason Rasmussen
dd8969cb7d
fix: container padding (#19316) 2025-06-19 21:33:12 -05:00
Jason Rasmussen
5cdbb65d28
feat: better contrast for checkmark indicator (#19312)
feat: better constrast
2025-06-19 13:20:57 -05:00
xCJPECKOVERx
08d1cf5bde
fix(web): Stack assets in asset-viewer cut off on the left (#19253)
* - move overflow and scrollbar to stack-slideshow inner div

* - format
2025-06-19 09:20:25 -05:00
Dag Stuan
38e68d16f9
fix(web): exit slideshow when exiting fullscreen. (#19247)
Exit slideshow when exiting fullscreen.

Browsers do not send a keyboard event when exiting fullscreen, so if
the user exits fullscreen with the escape key, the slideshow
remains open, requiring another escape key press to close it. Fix this
by listening for the fullscreenchange event and closing the slideshow
when exiting fullscreen.
2025-06-19 14:10:10 +00:00
Daniel Dietzler
caf11fbb96
fix: album asset viewer (#19252) 2025-06-19 09:09:23 -05:00
Paul Larsen
e29103b69f
fix album list CSS margins (#19262) 2025-06-19 14:03:14 +00:00
Daniel Dietzler
07aa51638c
fix: panning interrupted while moving around the map (#19276) 2025-06-19 11:28:53 +00:00
Zack Pollard
4c69511225
revert: "feat(web): wasm justified layout" (#19226) 2025-06-17 16:01:40 +00:00
Mert
bc062da11b
feat(web): wasm justified layout (#19150)
* wasm justified layout

* fix tests

* redundant layout generation

* raw position
2025-06-17 09:20:14 -05:00
xCJPECKOVERx
8038ae1e7a
fix(web): Asset viewer stack thumbnails overflow on top of asset (#19088)
* - create constants for thet asset-viewer stack thumbnail sizes
- use 2x selected thumbnail size to set the max-height of the stack-slideshow container.

* - increase the stack-slideshow max-height as it's scrolled

* Revert "- increase the stack-slideshow max-height as it's scrolled"

This reverts commit da4614547acfb8853258071c1b192c8162b86424.

* change asset stack veritcal scroll to horizontal scroll
2025-06-17 09:19:30 -05:00
Dag Stuan
bd70824961
fix(web): more refactoring and tweaking of the memory viewer. (#19214)
* Fix fade in for video-native-viewer.

The previous implementation never actually faded in the video element.
Fix this by ensuring the video element is only added to the DOM after
mounting, so Svelte can handle the fade-in transition correctly.

* Refactor asset viewing in memory page.

Split photo and video viewing into separate components to ensure they
work similarly to the assets viewer. The previous implementation faded
out the assets, while the assets-viewer only fades assets in. For
images, add a spinner while waiting for the image to load, before adding
the image to the DOM. For videos, add the video to the DOM after
mounting the component. In both cases, the assets fade in smoothly, like
the regular assets viewer.

* fix: styling

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-06-17 14:09:34 +00:00
Zack Pollard
864fe3d0d6
fix: disable map fly animation when switching between assets (#19223) 2025-06-17 12:45:48 +01:00
Mert
5fc448bc97
chore(web): passive events (#19179) 2025-06-16 11:03:23 -04:00
Brandon Wees
32b57bcbfc
chore: remove warning on storage template onboarding (#19200)
chore: remove warning on storage template
2025-06-15 16:43:34 -05:00
Dag Stuan
189442e9c4
fix(web): small issues with the memory viewer. (#19184)
* Match fade transition timing between photo-viewer and memory-viewer.

* Fix blank page after refreshing memory page.

If the user refreshed in the browser while on the memory page, the page
would show a blank page. This was caused by skipping initialization in
afterNavigate. Fix by always initializing the memory page in
afterNavigate.
2025-06-15 10:04:33 -05:00
Daniel Dietzler
523fe5bef7
refactor: album options modal (#19177) 2025-06-14 18:10:33 -04:00
Daimolean
004c2f2496
fix(web): OAuth quota size (#18526)
fix(server): oauth quota size
2025-06-13 10:57:29 -04:00
Zack Pollard
e2dfbd66c3
ci: browser compatibility linting (#19132) 2025-06-13 10:54:59 -04:00
Jason Rasmussen
8923d5b0a3
refactor: css variables (#19146) 2025-06-12 23:06:38 +00:00
Jason Rasmussen
2f3d4e15d2
refactor: duplicate button controls (#19143) 2025-06-12 17:48:53 -04:00