Alex
8682be4774
feat: workflow template ( #28553 )
...
* wip: confirm before existing and disable/enable save button condition
* fix: get correct workflow detail
* wip: add back workflow summary
* wip: add back json editor
* wip: step property badge
* wip: redesign card flow
* wip: redesign card flow
* redesign workflow summary
* wworkflow summary styling
* wip
* drag and drop
* list redesign
* refactor
* refactor
* remove deadcode
* refactor
* insert steps
* push down when dropped
* feat: workflow template
* simplify
* move template to manifest
* feat: hash manifest file
* fix: template column
* fix: migration
* fix: workflow lookup
* chore: clean up
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-05-26 16:47:05 -04:00
Brandon Wees
dc66892ca1
fix: await sync asset v2 ( #28569 )
...
* fix: await sync asset v2
* fix: support previous server versions for edit ready events
2026-05-26 15:43:12 -04:00
Ben Beckford
9733fa4872
fix(web): timeline stuttering with many assets in 1 day ( #28509 )
...
* fix(web): timeline stuttering with many assets in 1 day
* cache isInOrNearViewport per day
* skip inOrNearViewport check on first run
2026-05-24 16:03:46 -05:00
Jason Rasmussen
3d075f2bf8
feat: workflows & plugins ( #26727 )
...
feat: plugins
chore: better types
feat: plugins
2026-05-18 11:09:33 -04:00
Ben Beckford
e142e3aca7
feat: recently added assets page ( #28272 )
...
* feat(server): add ordering date option to time buckets
* feat(web): add recently added page
* feat(server): recently created assets in explore data
* feat(web): recently added in explore tab
* fix: recently added assets ordering
* fix(server): failing bucket test
* feat(web): improve recently added preview
* chore: update e2e explore/timeline tests
* chore: rename and refactor timeline ordering dates
* fix(web): invalid timeline option
* feat(mobile): recently added page
* fix(server): sync tests
* fix(mobile): resync assets to get uploadedAt column
* chore: rename assetorderby enum
* chore(mobile): formatting
* minor fixes
* stylings
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-05-11 21:35:10 +00:00
Brandon Wees
38438c8d9a
refactor!: remove asset faces from AssetResponseDto ( #27779 )
...
* refactor!: remove faces from `people` in AssetResposnseDto
* chore: tests
* chore: e2e generator
* chore: code review readonly
* chore: code review changes
* chore: cleanup
* fix: openapi
* chore: format
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-05-11 17:05:40 -04:00
Daniel Dietzler
2039c129f2
refactor: settings accordion reactivity ( #28281 )
2026-05-07 19:00:23 +00:00
Mert
b554664791
chore!: duration in milliseconds ( #28003 )
...
* server changes
* openapi
* web changes
* mobile changes
* assume 3.0 client
* deprecate
* review feedback
* update medium tests
* linting
2026-04-30 09:44:27 -04:00
Mees Frensel
081c75bb21
fix(web): refresh memories hourly ( #28114 )
2026-04-28 11:18:51 -04:00
Min Idzelis
45ccdb37fb
refactor(web): replace asset-viewer listener based face hover with overlay elements ( #27400 )
2026-04-27 12:08:34 +02:00
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