Commit Graph
138 Commits
Author SHA1 Message Date
Daniel Dietzler 50cb08f35d chore: migrate server import sorting back to prettier (#32994) 2026-11-05 20:34:42 +03:00
Zack Pollard f5f154f2d8 fix(server): single library exclusion matcher (#32081)
(cherry picked from commit c3dee6f98b7a231adc3d0716a287c4b47bc69d3e)
2026-10-31 07:23:13 +03:00
Paul Makles 925aaed54c feat: backups (#32268)
Signed-off-by: izzy <me@insrt.uk>
Co-authored-by: Zack Pollard <zack@futo.org>
(cherry picked from commit 177b57b689be293bad96b8092e473dc03e068e9c)
2026-10-31 07:21:01 +03:00
Valentin Agachi c3933169de feat(server): add OCR extraction workflow filter (#32464)
feat(server): add OCR workflow filter

(cherry picked from commit 2e0eb35e93dcf8468398d7015daa5ab231c7dd9c)
2026-10-29 20:41:01 +03:00
bo0tzz 8f2bfa099e fix(server): scope duplicate group resolution to the caller's assets (#32603)
(cherry picked from commit 7bb91afbe15e82502f8f6c92b61edb3865ce76f3)
2026-10-28 20:41:28 +03:00
renovate[bot] 7fb7699c06 chore(deps): update dependency eslint-plugin-unicorn to v78 (#32588)
Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
(cherry picked from commit 72e2bc8b0bc4a7e0a84ac16c0bde7f5e538729fb)
2026-10-28 20:41:28 +03:00
bo0tzz 9669f7cc6e perf(server): use a createdAt range for "recently added" time buckets (#32434)
(cherry picked from commit cf719e733e6250e0fcd8f45d2e2c46f166d3557d)
2026-10-25 16:23:45 +03:00
bo0tzz b3bd5d1fd1 feat(server): remove deprecated password field from update-me (#32623)
* feat(server): remove deprecated password field from update-me

* fix: tests for removed password field

(cherry picked from commit 3f6a071203187681b6c06b977665dc624c431336)
2026-10-22 05:25:45 +03:00
bo0tzz ad9b368cb8 fix(server): exclude partners' locked assets from legacy search (#32604)
(cherry picked from commit 8dab52c7491c79cba742315dea8d7f5212915875)
2026-10-22 05:25:45 +03:00
Jason Rasmussen b12be9119f feat: passkeys (#32194)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
(cherry picked from commit 6233a79bf7e4cec11e9ea1094908ff3b228fcbe0)
2026-10-22 05:23:22 +03:00
bo0tzz f80be1030b fix(server): restrict partner timeline requests to timeline assets (#32565)
* fix(server): restrict partner timeline requests to timeline assets

* test(server): update medium timeline tests for consolidated check

(cherry picked from commit e9fb180f466a687cebda9b7e17cef403de4b81fa)
2026-10-22 05:21:00 +03:00
Mert 4c89b0f7df perf(server): more efficient person queries (#32523)
(cherry picked from commit 38a2ce4daa678615561d2b87a8f2bb30f70fdc53)
2026-10-22 05:20:19 +03:00
renovate[bot]andDaniel Dietzler 743e555a1b fix(deps): update dependency bullmq to v6 (#31914)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-10-19 20:31:26 +03:00
renovate[bot]andDaniel Dietzler 0207d48035 chore(deps): update vitest monorepo to v5 (#31912)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-10-19 20:27:42 +03:00
bo0tzz 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
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
immich-push-o-matic[bot]andMees Frensel 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
immich-push-o-matic[bot]andJonathan Jogenfors 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
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
immich-push-o-matic[bot]andJason Rasmussen 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
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
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
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
Alex d6d0947383 feat: birthday memories (#30831) 2026-09-22 04:30:43 -05: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 221ddd31c4 feat: server imports linting (#31537) 2026-09-14 14:51:31 +02:00
Daniel Dietzler 2a62622041 feat: NestJS 12 and ESM (#31237) 2026-09-10 13:22:29 +02:00
Daniel Dietzler 399217bf5f fix: face detection of edited assets (#31240) 2026-09-03 15:40:30 +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
Daniel Dietzler c7d24321bf feat: allow users to re-run facial recognition for their group (#30965) 2026-08-27 16:38:07 +02:00
shenlongandshenlong-tanwen 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
Jason Rasmussen 2f48a8aab4 refactor: memory e2e (#30906) 2026-08-21 12:15:17 -04:00
HolegotsandDaniel Dietzler 57ce9b2221 fix(server): correct asset dimensions from exif metadata (#29244)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-21 13:32:17 +02:00
Jason Rasmussen 4c26a7ca76 refactor: activity e2e (#30896) 2026-08-21 12:57:50 +02:00
Jason Rasmussen c7531a36f9 refactor: partner e2e (#30895) 2026-08-20 17:32:51 -04:00
Jason RasmussenandDaniel Dietzler 11b1aa5ecf feat: cluster groups (#30739)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-20 20:03:00 +02:00
Jason Rasmussen 7cd0a7d30c refactor: e2e tests (#30870) 2026-08-19 14:31:57 -04:00
Jason Rasmussen c63824bcea refactor: library e2e (#30867) 2026-08-19 11:49:41 -04:00
Jason Rasmussen d2759ec41e refactor: library e2e (#30865) 2026-08-19 10:36:35 -04:00
Jonathan JogenforsandJason Rasmussen 2018e4f8c4 chore(server): migrate library e2e tests (#27277)
* migrate library e2e tests

* fix: real storage repo

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2026-08-19 13:14:40 +00: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
YarosandDaniel Dietzler 80a90fabf3 fix(server): update ocr & faces after asset edit (#29303)
* fix: update ocr & faces after asset edit

* chore: remove client-side refresh

* fix(server): sync asset OCR visibility changes

* chore: prettier format

* test: missing updatedAt

* chore: remove comment

* chore: fix test

* chore: update migration timestamp

* chore(server): AssetOcrSyncReset

* chore: migration timestamps

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-18 14:32:21 +00:00
Jason Rasmussen 342a9472c4 refactor: duplicate e2e (#30773) 2026-08-14 21:00:13 +00:00
Daniel Dietzler 199723261c fix: owner cascade delete album (#30692) 2026-08-11 23:05:18 +02:00
Jason Rasmussen 00d10dab63 refactor: e2e user tests (#30716) 2026-08-11 12:39:25 -04:00
Daniel Dietzler 0d7147dcec fix: metadata extraction as LensModel can be a float (#30512) 2026-08-03 18:18:24 +02:00