Commit graph

947 commits

Author SHA1 Message Date
Daniel Dietzler
9e3d9a7770
fix: thumbnail generation for specific SVGs (#30908) 2026-08-25 19:57:48 +02:00
Ben Beckford
351be95769
feat: memories view (#28675)
* wip web memories view

* paginate searchMemories

* improve memories ui

* feat(mobile): memories view

* improve memories web ui

* fix(web): avoid unnecessary memory refreshes

* refactor(web): move timline memory manager filter

* fix(web): memories infinitely loading on 0 results

* fix(web): memories resetting

* feat(web): animated memory previews

* feat(web): memory page dark styling

* chore(mobile): fix failing memory lane tests

* chore(mobile): remove old import

* chore(e2e): fix failing memory lane tests

* chore(server): revert searchMemories changes

* chore(server): lint

* chore(mobile): fix bad merge

* chore(e2e): fix memory ui tests

* chore(web): rename /memory to /memories

* chore(mobile): linting

* chore(web): linting

* fix(web): prevent duplicate memory page loading

* fix(web): lint

* fix(web): memories page improvements

* chore(mobile): lint

* fix(mobile): fix translations

* fix(mobile): build errors

* fix(web): prevent memories from infinitely loading

* chore(e2e)): fix failng memory viewer test

* chore(web): clean up types in memory manager

* chore(web): lint

* feat: update list and detail memory page layouts

* onlyFavorites through drift

* rename to get all

* mobile: use widgetWhen in memory list page

* remove redundant check

* fix: e2e

---------

Co-authored-by: Timon <mail@timonrieger.de>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-08-24 19:16:33 -05:00
shenlong
6b7b0fe3a6
fix: remove partner assets from existing memories (#28950)
* fix: remove partner assets from existing memories

* move tests to be medium tests

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-08-24 14:55:47 +00:00
Jordan Brock
79c4c00f70
feat(web): tag renaming v2 (#27909)
* implement updated rename tag feature

* Fix tag update handler

* Ensure toast displays updated tag name

* Ensure toast displays updated tag name

* Handle updates to tag closure table, prevent slash in API filename, test case updates

* delete child tags on parent delete

* Update frontend for better handling of nested tags

* pr checklist fixes

* fix unit test for tag controller

* Hide path for top-level tags

* regenerate SQL files

* name updates optional for tag update operations

* e2e tests for new tag api changes

* changes from code review, additional test coverage

* test fixes, web component refactor

* test assets

* test asset updates

* open-api rebuild

* update unit tests

* fix tag dto tests

* Update web/src/lib/modals/TagEditModal.svelte

Fix missing color bug

Co-authored-by: Ray <3608878+Pecacheu@users.noreply.github.com>

* fix tag e2e test

* remove closure table bug fixes

* remove nullish from tag name update schema

* regenerate openapi and sql

* fix test and e2e test

* simplify tag repository update process

* minor fix and sql regenerate

* fix tests, regen open-api, update dto

* Remove unused function

* Remove accidental test asset ref

* re-add test assets

* pin submodule to main branch commit

* Update test cases based on feedback

* Server fixes based on feedback

* regenerate sql

---------

Co-authored-by: Ray <3608878+Pecacheu@users.noreply.github.com>
2026-08-21 14:55:11 -04:00
Jason Rasmussen
caea849fee
feat: asset file apis (#25900)
* feat: asset file endpoints

* Update server/src/controllers/asset-file.controller.ts

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>

* Update server/src/controllers/asset-file.controller.ts

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2026-08-21 13:55:25 +00:00
Daniel Dietzler
8ae98f2a04
fix: quote database owner in restore (#30905) 2026-08-21 15:11:20 +02:00
Diogo Correia
c9776fb990
fix(web): download archives via html POST forms (#30021)
* fix: download archives via html POST forms

* refactor: fix css of download panel, add translations and toasts

* style: run lint, formatter, check

* chore: generate open-api specs

* refactor(web): simplify download manager, use SvelteMap

* refactor(server): parse fields from x-www-form-urlencoded request

* refactor: move content-disposition to ImmichReadStream

* Pass asset ids as a comma-separated string

This fixes a bug where the 1000 parameter limit is being hit when
downloading 1000+ assets.

* Add download controller test

* Fix lint warnings
2026-08-20 20:58:41 -04:00
Sacha Brouté
c7f6197e75
feat: add oauth account management url (#30873) 2026-08-20 21:31:34 +00:00
Jason Rasmussen
11b1aa5ecf
feat: cluster groups (#30739)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-20 20:03:00 +02:00
Jason Rasmussen
e529557160
feat: new config endpoints (#30881)
* refactor: config endpoints

* chore: pr feedback
2026-08-20 11:46:17 -04:00
Jason Rasmussen
47c5a3dbf6
refactor: api key response dto (#30887) 2026-08-20 11:23:12 -04:00
Chandan P
17d4e39af3
fix(server): do not throw on unparsable DB_URL when building backup arguments (#30759)
Closes #30331

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2026-08-18 17:17:47 -04:00
Brandon Wees
93d2d30fe0
feat: rotate an API key (#30801)
* feat: rotate an API key

* fix: test response

* chore: create new api key scope

* chore: code review
2026-08-18 16:07:39 -04:00
Daniel Dietzler
03da1ba108
chore: single line block comments (#30852) 2026-08-18 17:55:26 +02:00
enol5423
618dc0d397
fix(server): respect backpressure in the sync stream (#30764)
Co-authored-by: enol5423 <your-email@example.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-18 13:30:23 +00:00
renovate[bot]
11755e5a53
chore(deps): update dependency eslint-plugin-unicorn to v73 (#30844)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-18 12:00:16 +02:00
Jason Rasmussen
14241ac7bc
chore(server): remove unused code (#30772)
chore(server): remove unnused code
2026-08-14 16:58:14 -04:00
Ben Beckford
447cc40a50
feat: workflow logging (#29878)
* feat: workflow logging

* chore: update sql and openapi patch

* chore: include id in workflow log entries

* chore(server): update sql and lint

* chore(mobile): remove openapi files

* chore(web): lint

* chore: clean up workflow logging

* chore(server): add runId to workflow logs

* chore(server): store workflow results as enum
2026-08-13 19:18:24 -07:00
ihmcsm
af33a78d18
fix: typos in debug log messages (#30742) 2026-08-13 09:30:19 +00:00
Ben Beckford
a939561e70
feat: workflow asset tag trigger/filter/action (#29043)
* feat: workflow asset tag trigger and filter

* feat(web): show tag names in workflow editor

* fix(web): tag picker in schema config editor

* fix: invalid plugin manifest

* chore: update workflow method wrapper type

* chore: update tag filter method declaration

* feat: workflow action to add tags to assets
2026-08-12 16:26:03 -07:00
Daniel Dietzler
a55dc80a56
chore: enforce strict equality checks (#30718) 2026-08-11 13:15:51 -04:00
Jason Rasmussen
ee525f159b
refactor: queue in batches (#30698) 2026-08-11 10:01:42 -04:00
Jason Rasmussen
927b4d0ea2
refactor: find or fail (#30697) 2026-08-11 09:27:35 -04:00
Daniel Dietzler
5ad1e4e0f7
fix: medium tests dependencies (#30612) 2026-08-07 11:36:20 +02:00
Daniel Dietzler
0d7147dcec
fix: metadata extraction as LensModel can be a float (#30512) 2026-08-03 18:18:24 +02:00
Santo Shakil
cee08a2320
fix(server): remove the asset row when an upload fails after creating it (#30349) 2026-08-03 14:59:05 +02:00
Gueye Papa Djadji
04453b7206
fix(server): reject invalid or deleted user when creating a partner (#30431) 2026-08-03 12:56:00 +02:00
renovate[bot]
36cb86c886
fix(deps): update dependency js-yaml to v5 [security] (#30440)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-07-31 13:24:39 +02:00
Giacomo Pinato
6b6058c463
feat: store null instead of empty string for album.description (#30123)
Addresses the first column of issue #28832: album.description now stores
and returns null instead of an empty string.

Co-authored-by: Giacomo Pinato <giacomo.pinato@gmail.com>
2026-07-30 19:41:49 +00:00
bo0tzz
a316ba35ca
fix: shared check for server setup availability (#30311)
* fix: shared check for server setup availability

* chore: add medium test

* feat: require @Authenticated decorator everywhere

* fix: lints
2026-07-30 15:12:25 -04:00
bo0tzz
4a5f13d0e5
fix: don't skip person thumbnail generation if ML is disabled (#30194) 2026-07-24 10:06:32 -04:00
Jason Rasmussen
b9f6c4aaf2
feat: password invalidate sessions (#30125) 2026-07-22 12:09:05 -04:00
Aditya Raj Singh
a0c7b81142
fix(server): dissolve stack when its non-primary assets are deleted (#29354) 2026-07-22 13:00:52 +02:00
Imperator Ruscal
a560e08693
fix: re-evaluate OIDC role claim on every login and support array values (#29991)
* fix(server): re-evaluate OIDC role claim on every login and support array values

Previously the OIDC role claim (immich_role) was only read at user
auto-registration time and only accepted as a scalar string, so admin
status never updated after the first login and array-valued role/group
claims (common with Keycloak, Entra ID, etc.) were silently ignored.

Now the role claim is normalized from either a string or an array of
strings, and existing users have their isAdmin flag synced from the
claim on every login, keeping the IdP as the source of truth for
privileges while leaving isAdmin untouched when the claim is blank.

* fix(server): use .includes() instead of .some() for role claim check

Satisfies unicorn/prefer-includes lint rule flagged by CI.

* fix(server): resolve missing role claim to standard user and fix test mock

Default the OIDC role claim to 'user' when the IdP omits it so
auto-registration doesn't crash, and add the missing getAdmin mock in the
auth.service test so it correctly simulates an existing admin rather than
the first-user-registration path.

* fix: claim sync logic

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2026-07-21 17:21:19 -04:00
Daniel Dietzler
5d7283e44d
fix: album update event emitting (#30120) 2026-07-21 19:43:27 +00:00
Lorenzo Rota
73329a8ce8
fix(server): send id_token_hint on OIDC logout (#29720)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-07-21 19:19:13 +02:00
Timon
ee4bd3f833
feat: add album asset event handling (#29008)
* feat: add album asset event handling

* fix medium tests

* patch medium test

* collapse in AlbumUpdate
2026-07-21 10:55:46 -05:00
renovate[bot]
aa08dad1f5
chore(deps): update dependency eslint-plugin-unicorn to v72 (#30092)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-07-21 15:33:46 +02:00
Rust
1b4d41324e
fix(server): file uploads for files with extension only filenames (#30024)
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-07-21 11:57:28 +00:00
renovate[bot]
df970da59e
chore(deps): update dependency eslint-plugin-unicorn to v70 - abandoned (#29684)
* chore(deps): update dependency eslint-plugin-unicorn to v70

* fix: linting

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-07-20 23:47:14 -04:00
Daniel Dietzler
77091b0107
fix: search statistics locked folder permissions (#30063)
fix; search statistics locked folder permissions
2026-07-20 20:08:42 -04:00
Daniel Dietzler
4c754f2999
fix: timebuckets locked permissions (#30066) 2026-07-20 20:07:56 -04:00
cevdet
f73c53c563
chore(seo): remove redundant twitter metadata tags (#29801) 2026-07-16 12:29:38 +02:00
Andreas Heinz
e7f773197f
fix(server/workflow): add trigger for external libraries AssetCreate (#29597) 2026-07-15 19:30:33 +02:00
Mert
89b0d906e8
fix(server): set hvc1 tag when using hwa (#29908)
fix hvc1 check
2026-07-14 11:03:30 -04:00
Daniel Dietzler
35fcca6254
fix: locked visibility in search random endpoint (#29887) 2026-07-13 20:03:20 +00:00
Daniel Dietzler
84dff19ca9
fix: unauthorized album owner update (#29883) 2026-07-13 11:46:18 -05:00
Daniel Dietzler
fea0db02f3
fix: emit album update event when uploading assets through shared link (#29757) 2026-07-09 15:21:16 +02:00
Daniel Dietzler
66e30d5fa1
fix: missing files integrity checks (#29737) 2026-07-08 14:53:46 -05:00
Daniel Dietzler
655cd01d57
fix: search metadata for album shared links (#29742) 2026-07-08 20:32:20 +02:00