Commit Graph
2137 Commits
Author SHA1 Message Date
immich-push-o-matic[bot]andJason Rasmussen f3abf9fa40 fix(server): person birthdate timezone bug (#31906)
fix(server): person birthdate timezone bug (#31901)

(cherry picked from commit 4b1b1f8c2ab70db165088d857906420b967a9241)

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2026-09-29 17:06:59 +00:00
immich-push-o-matic[bot]andDaniel Dietzler ceea058662 fix: person management ids validation and permissions (#31902)
fix: person management ids validation and permissions (#31898)

(cherry picked from commit 4408f49d15d5b38eb2fbfa40b68cf697a0e16ca8)

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2026-09-29 16:22:56 +00:00
Thomas DELORGEandDaniel Dietzler b35eeb3be2 feat(server): sync OAuth claims on login (#8073) (#29013)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Signed-off-by: Thomas DELORGE <thomas.delorge@orbeet.io>
2026-09-28 23:27:50 +02:00
Jonas StahlandDaniel Dietzler 7c0dc08041 feat: extract manufacturer and device for samsung videos (#29375)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-09-28 23:13:00 +02:00
Daniel Dietzler 42c45012d1 fix: email template (#31859) 2026-09-28 19:58:11 +00:00
76c08fa230 fix: library watcher should respect ignore patterns (#31418)
* fix: chokidar should respect ignore patterns

* fix: chokidar mock

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-09-28 15:51:19 -04:00
c12d5e6d35 feat: people management (#31620)
Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-09-28 21:29:15 +02:00
Valentin Agachi 0733cc10ee chore: log assets deletion in background job (#31770) 2026-09-28 14:36:49 -04:00
Mees Frensel 5f0c9a5996 fix(server): emit sidecarwrites and assetupdates consequently (#31777)
* fix(server): emit sidecarwrites and assetupdates consequently

* fix medium test
2026-09-28 14:36:05 -04:00
bo0tzzandDaniel Dietzler 8ede1d54d8 fix(server): exclude hidden assets from large files search (#31479)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-09-28 18:21:44 +02:00
Jordan BrockandDaniel Dietzler 54987c764a fix(server): write tag updates to exif table (#31425)
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2026-09-28 15:52:25 +00:00
Rufus UttleyandDaniel Dietzler aa02337847 fix(server): use GeoNames for reverse-geocoded country names (#30199)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-09-28 11:06:30 +00:00
fabxyz d1faeb8199 fix(server): incorrect scaling of rotated videos when transcoding (#31473) 2026-09-26 10:07:24 -04:00
Eliott Bourassa f8f4051a24 feat(server): add support for .jfif files (#31778)
* feat(server): add support for .jfif files

* fix: move .jfif to webSupportedImage object
2026-09-25 22:44:29 -04:00
Mert c0a9146023 feat(server): linear-light resampling (#31236) 2026-09-25 10:29:07 -04:00
Aashish Bhardwaj e598e10896 fix(server): attach error handler to accepted sockets to prevent crash on connection reset (#31079)
Signed-off-by: aashish00021 <aashishbhardwaj07@icloud.com>
2026-09-24 16:28:02 +02:00
renovate[bot]andDaniel Dietzler e66f2c7615 chore(deps): update dependency eslint-plugin-unicorn to v75 (#31721)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-09-23 18:19:03 +00:00
Aditya Raj Singh 351ddff320 fix(server): compare integrity paths independently of unicode normalization (#31102)
* fix(server): compare integrity paths independently of unicode normalization

The untracked-file check compared on-disk paths against the database
byte for byte. macOS writes decomposed (NFD) filenames while an upload
stores the composed (NFC) form, so every asset with a non-ASCII name
came back from getAssetPathsByPaths under a different byte sequence,
was never removed from the candidate set, and was reported as an
untracked file. One reporter saw 14k false positives on a 55k library.

Look the batch up under both normal forms and key the comparison on
NFC, so a path that differs only in normalization is recognised as
tracked.

* test(server): cover normalized integrity lookup
2026-09-23 06:42:31 -04:00
Alex d6d0947383 feat: birthday memories (#30831) 2026-09-22 04:30:43 -05:00
Makar Ivashko 64a2fc8259 perf: faster server cold start (#31630)
low hanging fruits for the speedup of immich startup
1. don't wait 1s if we actually got the lock
2. move full import from the top of the file to be imported lazily in the branch
2026-09-18 08:26:09 -04:00
Jason Rasmussen 54e7ffa4e6 feat: asset face v3 (#31591) 2026-09-16 16:27:01 -04:00
Daniel Dietzler e35aa718d9 fix: skip faces of other users when reassigning faces (#31580) 2026-09-15 17:27:46 +02:00
Jason Rasmussen 99fd561144 chore: transition to nullable user.oauthId (#31560) 2026-09-15 09:33:15 -04:00
Daniel Dietzler 7b51c50a96 feat: people merge improvements (#31456) 2026-09-14 19:10:25 +02:00
Daniel Dietzler a84de0188e fix: metadata extraction of faces (#31551) 2026-09-14 19:10:21 +02:00
shenlongandshenlong-tanwen db6a5b0d56 chore: reset shouldChangePassword on password change (#31276)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-09-14 21:04:42 +05:30
Daniel Dietzler ef9718e93d fix: feature face update ignores soft-deleted faces (#31533) 2026-09-14 09:47:02 -04:00
Daniel Dietzler 221ddd31c4 feat: server imports linting (#31537) 2026-09-14 14:51:31 +02:00
Alan Grainger 7abd625af3 docs(server): document the UTC timestamp format for timeBucket (#31421)
* docs(server): document the UTC timestamp format for timeBucket

* docs(server): wrap timeBucket description to satisfy prettier
2026-09-11 14:50:08 -04:00
Jason Rasmussen 9abb605b62 fix: sync client disconnect (#31461) 2026-09-11 14:48:55 -04:00
Jason Rasmussen f346fe1f94 refactor: error handling (#31455) 2026-09-11 14:11:06 -04:00
Mert e039168e4a fix(server): vacuum after migrations, concurrent reindex (#31424) 2026-09-11 10:27:04 -04:00
bo0tzz 72f1034c58 fix: only run version check in production env (#31443) 2026-09-11 10:19:45 -04:00
Daniel Dietzler 2a62622041 feat: NestJS 12 and ESM (#31237) 2026-09-10 13:22:29 +02:00
Jake Bybee 58fb1ed4a9 fix(server): live photo transcode visibility (#31319)
* allow live photos to be transcoded on queue trigger

* new gen sql

* add test to check hidden assets are returned
2026-09-07 15:32:42 -04:00
Daniel Dietzler 399217bf5f fix: face detection of edited assets (#31240) 2026-09-03 15:40:30 +02:00
Mees Frensel da8131d5c2 fix(web): album date range formatting (#28564) 2026-09-03 10:31:15 +02:00
Jason Rasmussen 2c53b76400 chore: require number format (#31222) 2026-09-02 12:33:22 -04:00
Aditya Raj Singh c1f2756f62 fix(server): never unlink an untracked-file path that an asset now references (#31074) 2026-09-01 15:50:07 +02:00
Ufuk 9e5dcc598f fix(server): allow an empty assetIds array when creating an album shared link (#31098) 2026-08-31 17:31:47 +02:00
Daniel Dietzler 0628f8b966 fix: do not move faces of users other than the current owner (#31145) 2026-08-31 16:11:04 +02:00
Timon 8b3d6b320b feat(server): new search API (#30179) 2026-08-27 20:39:55 +02:00
andy.mp3andDaniel Dietzler 1db4677cf8 feat: same-second photos now sub-sort by filename (#29528)
* Update sorting

Updates the sorting to sort
1. First by timeCreatedAt, but then
2. By filename.

* Push tsts

* Sync SQL

* Formatting fixes

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2026-08-27 13:46:10 -04:00
Mimi 91d362eb9f fix: external library statistics for excluded assets (#28462)
Fix external library statistics for excluded assets
2026-08-27 17:34:10 +00:00
Aditya Raj Singh dc3d6eeec4 fix(server): kill pg_dump when a backup fails so it stops holding table locks (#30851)
* fix(server): kill the child process when a spawned duplex stream is destroyed

A failed database backup left pg_dump running. The stream was destroyed but
the child was not, so the dump sat idle in transaction holding AccessShareLock
on every table until someone terminated it by hand. One report had it survive
five days and block DDL from another application on the same Postgres.

Destroying the duplex now kills the child, which also covers pipeline()
tearing every stream down when one of them fails.

The backup service additionally holds references to the streams it spawns so
the error path can destroy them. createWriteStream can throw before pipeline()
takes ownership, which is how the reported ENOENT on an unmounted backup volume
left nothing referencing the running pg_dump.

* chore(server): drop the explanatory comments from the backup teardown fix

Requested in review. The reasoning lives in the commit message and the PR
body, which is where it belongs.
2026-08-27 12:15:45 -04:00
Daniel Dietzler c7d24321bf feat: allow users to re-run facial recognition for their group (#30965) 2026-08-27 16:38:07 +02:00
Jason Rasmussen 13562d80a4 chore: bump sql-tools (#31000) 2026-08-26 14:59:47 +02:00
Daniel Dietzler 9e3d9a7770 fix: thumbnail generation for specific SVGs (#30908) 2026-08-25 19:57:48 +02:00
bo0tzz fbd5dc2c61 fix: don't swallow fetch errors (#30496) 2026-08-25 17:47:25 +02:00
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