157 Commits

Author SHA1 Message Date
Jason Rasmussen
a16d233a0c
chore(web): sort imports (#27922)
* feat: sort imports

* fix: something?
2026-04-21 14:51:38 -04:00
Freddie Floydd
b9ca68f6e4
chore(web): rename components to PascalCase (#28013)
chore: rename components to PascalCase
2026-04-21 12:29:42 -04:00
Min Idzelis
c78b1d8ab4
fix(web): prevent interaction with detail panel behind person side panel (#27309) 2026-04-20 15:26:06 +02:00
Min Idzelis
9d33853544
fix(web): respect abort signal after timeline bucket fetches (#27563)
Change-Id: I4bf7c7458883b50bd21484b1029d62526a6a6964
2026-04-17 16:18:14 -04:00
Mees Frensel
8fbeb64c59
fix(web): use event for zooming out after opening face editor (#27789) 2026-04-17 12:14:24 +02:00
Jason Rasmussen
6aadb7b5bd
feat: dynamic languages (#27869)
Co-authored-by: xantin <github@xantin.be>
2026-04-16 12:37:37 -04:00
Min Idzelis
d5d2ebd9bf
fix(web): close edit faces panel on Escape key press (#27519)
Move `showEditFaces` state to `assetViewerManager` so the edit faces
panel open/close state is globally accessible. Add Escape key handling
to `PersonSidePanel` that closes the assign-face sub-panel first, then
the edit faces panel. Guard the asset viewer's global Escape-to-close
action so it doesn't fire while either face panel is open.

Change-Id: I0c947fe0758aef0eac473f4cc72f6a3b6a6a6964
2026-04-15 20:22:20 -05:00
Jason Rasmussen
4ffa26c969
feat: auth logout page (#27831)
* feat: auth logout page

* feat: skip login if already logged in
2026-04-15 16:33:52 -04:00
Jason Rasmussen
fed5cc1ae1
feat: upgrade immich/ui (#27792) 2026-04-14 16:18:12 +00:00
Jason Rasmussen
1ba0989e15
refactor: auth manager (#27638) 2026-04-14 08:49:24 -04:00
Andreas Heinz
bfcf34d8b5
feat(web): persist state of file path information in details panel (#27770)
feat(enhancement): persist state of file path info in details panel
2026-04-13 12:18:34 -05:00
renovate[bot]
921c8a8de3
chore(deps): update dependency typescript to v6 (#27577)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-04-07 17:15:55 +02:00
Min Idzelis
649d14822a
refactor(web): rename MonthGroup to TimelineMonth (#27447)
Rename MonthGroup class to TimelineMonth to better convey that it represents a single month within the timeline. Updates the file, class, and all references across 16 files.

Change-Id: Id50fd6d4b7d0e431571b67c0f81c0e316a6a6964
2026-04-03 13:27:12 -04:00
Min Idzelis
2166f07b1f
refactor(web): rename DayGroup to TimelineDay (#27446)
Rename DayGroup class to TimelineDay to better convey that it represents
a single day within the timeline. Updates the file, class, and all
references across 13 files.

Change-Id: I9faef9bad73cd5b11f40daaf5eb140dd6a6a6964
2026-04-01 19:30:54 -04:00
Michel Heusschen
4eb531197e
fix(web): prevent AssetUpdate from adding unrelated timeline assets (#27369) 2026-04-01 08:14:28 -04:00
Jason Rasmussen
17d4941089
refactor: asset select manager (#27330) 2026-03-30 15:45:57 +01:00
Jason Rasmussen
5889c42eb6
refactor: asset select manager (#27329) 2026-03-27 14:23:33 -04:00
Jason Rasmussen
14cce0cba3
refactor: asset select manager (#27327) 2026-03-27 13:48:51 -04:00
Jason Rasmussen
9b80ffd9c6
refactor: selection mananger (#27325) 2026-03-27 12:41:52 -04:00
Min Idzelis
2d950db940
refactor(web): replace intersection booleans with enum (#27306)
Change-Id: I0c9703d5960031142ae47fef23805e0a6a6a6964
2026-03-27 08:37:12 -04:00
Min Idzelis
4b9ebc2cff
refactor(web): migrate isFaceEditMode from standalone store to assetViewerManager (#27307) 2026-03-27 13:20:15 +01:00
Jason Rasmussen
7d58d5be12
refactor: memory manager (#27206) 2026-03-26 17:36:25 +00:00
Jason Rasmussen
7877097b3f
refactor: asset viewing store (#27204) 2026-03-26 13:22:40 -04:00
Jason Rasmussen
940a1d4ab8
refactor: change location (#27201) 2026-03-26 13:22:14 -04:00
Jason Rasmussen
f2445ecab1
fix(web): stop in-progress uploads on logout (#27021) 2026-03-19 13:05:11 -04:00
Jason Rasmussen
48e6e17829
feat: primary notifications (#26988) 2026-03-17 17:54:11 -04:00
rthrth-svg
2c6d4f3fe1
fix(web): copy yearMonth in MonthGroup to avoid shared object reference with asset (#26890)
Co-authored-by: Min Idzelis <min123@gmail.com>
2026-03-13 22:27:08 +01:00
Mees Frensel
9996ee12d0
refactor(web): crop area tool (#26843) 2026-03-11 18:58:26 +01:00
Min Idzelis
8764a1894b
feat: adaptive progressive image loading for photo viewer (#26636)
* feat(web): adaptive progressive image loading for photo viewer

Replace ImageManager with a new AdaptiveImageLoader that progressively
loads images through quality tiers (thumbnail → preview → original).

New components and utilities:
- AdaptiveImage: layered image renderer with thumbhash, thumbnail,
  preview, and original layers with visibility managed by load state
- AdaptiveImageLoader: state machine driving the quality progression
  with per-quality callbacks and error handling
- ImageLayer/Image: low-level image elements with load/error lifecycle
- PreloadManager: preloads adjacent assets for instant navigation
- AlphaBackground/DelayedLoadingSpinner: loading state UI

Zoom is handled via a derived CSS transform applied to the content
wrapper in AdaptiveImage, with the zoom library (zoomTarget: null)
only tracking state without manipulating the DOM directly.

Also adds scaleToCover to container-utils and getAssetUrls to utils.

* fix: don't partially render images in firefox

* add passive loading indicator to asset-viewer

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2026-03-11 09:48:46 -05:00
Michel Heusschen
45eff1c663
fix(web): prevent unrelated assets from appearing in tag view (#26816) 2026-03-10 17:43:30 +01:00
Min Idzelis
8e50d25f45
feat(web): animate zoom toggle with cubicOut easing (#26731) 2026-03-10 10:42:02 -05:00
Snowknight26
4791d9c0c3
fix(web): show the correct cursor at crop bounds when editing an asset (#26748) 2026-03-09 19:39:01 +01:00
Michel Heusschen
a47b232235
fix(web): refresh recent albums sidebar after album changes (#26757) 2026-03-09 17:11:32 +01:00
Timon
011ecbb43d
refactor(web): remove replaceAsset action (#26444) 2026-03-04 09:05:44 -06:00
Paul Makles
f94e0fbc39
fix(maintenance mode): wait for valid server config on restart (#26456)
Signed-off-by: izzy <me@insrt.uk>
2026-03-04 11:16:21 +00:00
Mees Frensel
a284e38890
fix(web): timeline and asset viewer RTL support (#26513) 2026-03-03 09:01:54 +01:00
Min Idzelis
062546c168
refactor: rename image cancel method (#26381) 2026-03-02 09:23:20 -05:00
Michel Heusschen
771816f601
feat(web): map timeline sidepanel (#26532)
* feat(web): map timeline panel

* update openapi

* remove #key

* add index on lat/lng
2026-02-26 12:03:23 -05:00
Daniel Dietzler
55ee9f76da
chore: eslint 10 (#26490) 2026-02-24 08:24:18 -05:00
Brandon Wees
e5722c525b
feat: getAssetEdits respond with edit IDs (#26445)
* feat: getAssetEdits respond with edit IDs

* chore: cleanup typings for edit API

* chore: cleanup types with jason

* fix: openapi sync

* fix: factory
2026-02-23 20:57:57 +00:00
Jason Rasmussen
1d11106dd0
refactor: add to album (#26366) 2026-02-19 15:27:30 -05:00
Michel Heusschen
ceef65154d
fix(web): clear cache when asset changes (#26257)
* fix(web): clear cache when asset changes

* formatting
2026-02-17 11:43:08 +01:00
Michel Heusschen
9ab887d5d2
perf(web): speed up multi asset operations (#26217) 2026-02-14 15:24:47 -05:00
Jason Rasmussen
5bf4e9595c
refactor: purchase store (#25734) 2026-02-12 13:32:17 -05:00
dolfje
5f18110e97
fix(web): removing a person in an asset, doesn't remove the asset in … (#26068)
* fix(web): removing a person in an asset, doesn't remove the asset in the persons view (without refresh)

* prettier

---------

Co-authored-by: Nikos Verschore <nikos@uwsoftware.be>
2026-02-09 11:51:02 -06:00
Michel Heusschen
211dc3c056
fix: add missing translations for image editor (#25957) 2026-02-06 13:08:24 +01:00
Michel Heusschen
57e0835b46
fix: ensure theme stays in sync with @immich/ui (#25922) 2026-02-05 08:36:20 -05:00
Michel Heusschen
fdf06a91cc
fix: improve asset editor exit handling (#25917) 2026-02-05 12:01:54 +01:00
Michel Heusschen
5212bca3d0 fix: reset zoom when navigating between assets (#25863) 2026-02-03 11:07:06 -06:00
Daniel Dietzler
94965f6d66
chore: rework tags sidebar (#25855) 2026-02-03 16:06:26 +00:00