Commit Graph
3606 Commits
Author SHA1 Message Date
renovate[bot]andCodex 3effae72a7 fix(deps): update dependency nestjs-cls to v7 (#31920)
* fix(deps): update dependency nestjs-cls to v7

* fix: pnpmfile checksum

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
(cherry picked from commit 93d376ac5119510b10f34945c0b04e4116266425)
2026-10-15 14:33:11 +03:00
renovate[bot]andCodex cd6421be4b chore(deps): update dependency @types/node to ^24.19.2 (#32129)
* chore(deps): update dependency @types/node to ^24.19.2

* fix: pnpmfile checksum

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
(cherry picked from commit 9bb78b30fbb374157146f3bede657d293cda508f)
2026-10-15 14:33:10 +03:00
renovate[bot]andCodex c36be7692c fix(deps): update dependency react-email to v6 (#32143)
* fix(deps): update dependency react-email to v6

* fix: move all react email imports to react-email

* fix: linting

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
(cherry picked from commit 9755f64684de63f1e9c5d14d31d00f599f8925b9)
2026-10-15 14:33:10 +03:00
Codex d25c946c29 test(local): cover shared link access and video readiness; fix lint dependency 2026-10-14 21:37:42 +03:00
Jason RasmussenandCodex c318714fdc feat: server feature level (#32178)
* feat: server feature level

* fix: correctly compute feature level

(cherry picked from commit cc1e2363651eaff63848baad2c7932923ca66554)
2026-10-14 21:24:14 +03:00
bo0tzzandCodex 4fe7d42cfc perf(server): stop aggregating every album asset when loading a shared link (#32412)
SharedLinkRepository.get (shared link page load, /shared-links/me, and the
OpenGraph tags rendered for /share/:key) json_agg'd every asset of the
album, with its full exif row, ordered by fileCreatedAt. The only things
used from it are the asset count and the first/last localDateTime.

Load the album without assets and fill assetCount/startDate/endDate from
getMetadataForIds, which is what GET /albums/:id already uses. The counts
now also respect the default visibility filter, and the dates are
formatted the same as on /albums/:id.

150k-asset album link, PG 14:

|                        | before          | after  |
|------------------------|-----------------|--------|
| query                  | 4.2-6.5 s       | ~0.26 s (metadata aggregate) |
| JSON built by postgres | 261 MB          | -      |
| GET /shared-links/me   | -               | 0.28 s, 961 B |

(cherry picked from commit ac453b5557e42ad45962d3079a4e4450671053e9)
2026-10-14 21:24:13 +03:00
bo0tzzandCodex 1978b77a40 perf(server): stop loading every album asset to build album responses (#32413)
* perf(server): stop loading every album asset to build album responses

Album create, update (rename, description, cover, sort order, activity
toggle) and add-users json_agg'd every asset of the album with its exif
row, only for mapAlbum to read the count and the first/last
localDateTime. Use getMetadataForIds for those fields, as GET /albums/:id
already does, and drop the now unused withAssets option from getById.

The responses now carry the same date format and lastModifiedAssetTimestamp
as GET /albums/:id.

PATCH /albums/:id on a 150k-asset album, PG 14 (response is ~900 B either
way): 3.4-3.6 s -> 0.13-0.16 s.

* refactor(server): share album metadata mapping

(cherry picked from commit 2a4e876ec990a4a8d5fdca00291cbeebd3d1bccf)
2026-10-14 21:24:13 +03:00
bo0tzzandCodex c7a5ac3d11 perf(server): check shared link asset access without scanning the album (#32411)
* perf(server): check shared link asset access without scanning the album

checkSharedLinkAccess runs on every thumbnail, preview, playback and asset
info request made through a shared link. It joined every asset of the
link's album and only then filtered on an array overlap across four
outer-joined columns, so each request cost O(album size).

Split it into two branches (link assets, album assets) that find the
requested ids through the asset pkey / livePhotoVideoId index and then
probe the album_asset pkey.

Median per request, PG 14, 1.36M-asset instance:

| album behind the link | before | after   |
|-----------------------|--------|---------|
| 290 assets            | 2.1 ms | 0.17 ms |
| 150k assets           | 296 ms | 0.19 ms |

* chore: clean up

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
(cherry picked from commit bb024c862609c9e2baffc08fef795cfa3418df16)
2026-10-14 21:24:13 +03:00
immich-push-o-matic[bot] d2dac658fe chore: version v3.3.3 2026-10-14 16:30:09 +00:00
ea1bfcf248 perf(server): improve people query performance (#32441)
perf(server): improve people query performance (#32405)

fix(server): slow people query

(cherry picked from commit 6b79a82800cb984a755b163bca0cf689b486ad9a)

Co-authored-by: Zack Pollard <zack@futo.org>
2026-10-14 16:27:32 +00:00
immich-push-o-matic[bot] 3dcaa05cd7 chore: version v3.3.2 2026-10-14 16:23:04 +00:00
immich-push-o-matic[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
f6b4699d29 chore(deps): update base-image to v202610131110 (#32414)
chore(deps): update base-image to v202610131110 (#32410)


(cherry picked from commit aec0dd1e6ba44d172b83cf6f3422211961aff99d)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-13 15:07:24 +00:00
immich-push-o-matic[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
4aca0ebdf1 chore(deps): update base-image to v202610061109 (#32407)
chore(deps): update base-image to v202610061109 (#32392)


(cherry picked from commit 8c76ef2adead8abb453b37cfa6d42d3ceb684df3)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-13 13:11:55 +00:00
immich-push-o-matic[bot] db6e11ecc8 chore: version v3.3.1 2026-10-08 21:21:16 +00:00
5b2a3a52be fix: run workflow steps in their configured order (#32241)
fix: run workflow steps in their configured order (#32240)



(cherry picked from commit 56319b76fc60d7e3bd57a2275ac908da42665e5f)

Co-authored-by: infocus13 <74890563+infocus13@users.noreply.github.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-10-08 19:48:52 +00:00
3b53f1b4bb fix: include unamed people in otherPeople (#32239)
fix: include unamed people in otherPeople (#32237)

(cherry picked from commit 9971dade1b2db76a5a79d287eb2d725152cb0323)

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2026-10-08 18:57:55 +00:00
5a7e65fac3 chore: mark people users endpoints as beta (#32233)
chore: mark people users endpoints as beta (#32232)

(cherry picked from commit 481a7bf3ae0d2c2613100d74b028463117e44a39)

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2026-10-08 17:02:27 +00:00
28bd3a550b fix: include partner shared assets for people even without showInTimeline (#32226)
fix: include partner shared assets for people even without showInTimeline (#32219)

(cherry picked from commit 5fa7789e2672350c76b9b026f2b8c2bc3ffdf7c4)

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2026-10-08 14:23:17 +00:00
c6c8e516d7 fix(server): read ISO values above 65535 (#32183)
fix(server): read ISO values above 65535 (#32182)

(cherry picked from commit 6962412c0be35bf21c87d6a5935035adc7ae94e2)

Co-authored-by: bo0tzz <git@bo0tzz.me>
2026-10-07 08:16:22 +00:00
immich-push-o-matic[bot] e3b1656091 chore: version v3.3.0 2026-10-06 14:57:27 +00:00
ed3073624b fix: memories mobile sync for older clients (#32167)
fix: memories mobile sync for older clients (#32150)


(cherry picked from commit 8d377bfef5a0c9d840bf2c19d155f9779387baeb)

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
Co-authored-by: Santo Shakil <shakil.mezbah@gmail.com>
2026-10-06 14:10:38 +00:00
1aede8d8c3 fix: memory upcoming query (#32166)
fix: memory upcoming query (#32164)

(cherry picked from commit e49a5bb8c99abbf9944ca3d84220427d340c6786)

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2026-10-06 13:56:17 +00:00
d806bc002c fix: person without assets (#32117)
fix: person without assets (#32114)

(cherry picked from commit c0506fe723995808f4effd8d40d0235fcaf104b5)

Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2026-10-06 08:38:24 +00:00
81de979a35 fix: people page search (#32108)
fix: people page search (#32094)

(cherry picked from commit 549a76cd35ec9f63a76174992de50095192afa11)

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2026-10-05 16:23:02 +00:00
immich-push-o-matic[bot]GitHubLin, Chiang-Yu <110763842+RxChi1d@users.noreply.github.com>Mert
d15972e722 fix(server): don't select an audio stream ffprobe could not identify (#32062)
fix(server): don't select an audio stream ffprobe could not identify (#30901)

iPhone videos recorded with Apple Spatial Audio carry two audio tracks: an
AAC track and an APAC track that ffmpeg has no decoder for. Both are marked
default, so `compareStreams` ties on disposition and falls through to
bitrate, where the APAC track wins because spatial audio is encoded at a
higher rate. `audioStreams[0]` is then persisted and mapped into the
transcode command, and ffmpeg fails before it starts encoding:

    [aist#0:2/none] Decoding requested, but no decoder found for: none
    Error opening output file .../out.mp4
    Error opening output files: Invalid argument

Drop audio streams ffprobe reported as `unknown` before the existing
disposition/bitrate ordering runs. A stream with no codec to decode is not a
usable audio stream, so an asset whose every audio track is unidentified is
treated as having no audio at all. The video pipeline is unchanged, since the
evidence here covers audio selection only.


(cherry picked from commit 69f06a29ca67613355348172480054ebd7e09f6c)

Co-authored-by: Lin, Chiang-Yu <110763842+RxChi1d@users.noreply.github.com>
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
2026-10-03 21:30:26 +00:00
immich-push-o-matic[bot] 20f103c4b9 chore: version v3.3.0-rc.2 2026-10-02 16:58:10 +00:00
immich-push-o-matic[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3d0e8e1b20 chore(deps): update base-image to v202610021601 (#32031)
chore(deps): update base-image to v202610021601 (#32030)

(cherry picked from commit ffa5bf428da586906fd6b66c49ab122e1cda9e8f)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-02 18:36:28 +02:00
6fbb4d9642 fix: improper filename sanitizing (#32028)
fix: improper filename sanitizing (#32009)

(cherry picked from commit f652f55ffda784e87c8f681f797f4b2cb708d96b)

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2026-10-02 16:02:39 +00:00
6e5a4fdf00 fix: assetTagFilter any matching (#32027)
fix: assetTagFilter any matching (#32008)

(cherry picked from commit 28e375c0585f8ee69f80257dc0be073a2b114cdf)

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2026-10-02 15:50:49 +00:00
immich-push-o-matic[bot]andGitHub 643e606a5b fix: metadata extraction for media streams with unknown profile (#32023) 2026-10-02 11:08:25 -04:00
843051f0f5 fix(server): include album owner for album shared links (#31990)
fix(server): include album owner for album shared links (#31837)

(cherry picked from commit fd97f3e5a62a4af1a8e17d2e766eb952eefae24a)

Co-authored-by: Mees Frensel <33722705+meesfrensel@users.noreply.github.com>
2026-10-01 17:06:45 +00:00
3af49d9b4f fix: storage usage display on virtiofs and alike (#31983)
fix: storage usage display on virtiofs and alike (#31982)

(cherry picked from commit 28d33b18eb1d081e408c1c1c4ffc9c19d8faa18c)

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2026-10-01 13:46:10 +00:00
84fb51a110 fix(server): make library exclusion matching consistently case-insensitive (#31973)
fix(server): make library exclusion matching consistently case-insensitive (#31970)

(cherry picked from commit de6dcf669c498192ce73b181ec6d5de5d844b03a)

Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
2026-10-01 10:26:56 +00:00
immich-push-o-matic[bot] eace8c2809 chore: version v3.3.0-rc.1 2026-09-30 21:42:17 +00:00
f32a891d40 feat: bulk person management (#31960)
Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-09-30 23:39:14 +02:00
7363c1446f fix(server): ignore Samsung Gallery rotation tag for HEIF orientation (#31938)
fix(server): ignore Samsung Gallery rotation tag for HEIF orientation (#31937)

(cherry picked from commit d66b590d04c294ba729a097814daedb5ae161db7)

Co-authored-by: bo0tzz <git@bo0tzz.me>
2026-09-30 10:33:57 +00:00
7c102be619 fix(server): dont queue unneeded jobs when no xmp file exists (#31936)
fix(server): dont queue unneeded jobs when no xmp file exists (#31927)

(cherry picked from commit 32e3239ba32f3f89b1b0b996c103333927b3324a)

Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
2026-09-30 09:44:01 +00:00
53d1584dd2 fix(server): make "limit" paramter use z.coerce (#31934)
fix(server): make "limit" paramter use z.coerce (#31899)

(cherry picked from commit c9a3248d714cb6e6f9aff068355c5a3611c3ba64)

Co-authored-by: aviv926 <51673860+aviv926@users.noreply.github.com>
2026-09-30 09:13:00 +00:00
b20bc5ed82 feat: auto-sync name changes to connected users (#31931)
feat: auto-sync name changes to connected users (#31923)

* feat: auto-sync name changes to connected users

* fix: rename to faceId

* fix: pr feedback

* fix: mobile build

(cherry picked from commit aec7c0d97bd6679b2b300e72e870b83c5ef13c85)

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2026-09-30 07:53:02 +00:00
d1a4c8bbe1 feat(server): create all for owner (#31930)
feat(server): create all for owner (#31924)

(cherry picked from commit f77847dda0a72f138653b980a52ed9307372e02a)

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2026-09-30 09:52:11 +02:00
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]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
0fd711f172 chore(deps): update base-image to v202609291109 (#31921)
chore(deps): update base-image to v202609291109 (#31908)

(cherry picked from commit a6aa9fc2535160b6ca6acd206c1614a9651b66f4)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-29 16:54:19 +00:00
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
immich-push-o-matic[bot] a9d102234b chore: version v3.3.0-rc.0 2026-09-28 21:54:03 +00:00
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
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 DietzlerandGitHub 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 AgachiandGitHub 0733cc10ee chore: log assets deletion in background job (#31770) 2026-09-28 14:36:49 -04:00