Commit Graph
11224 Commits
Author SHA1 Message Date
Jason RasmussenandCodex 2ebe288010 refactor: server endpoints (#32467) 2026-10-16 20:51:28 +03:00
Jason RasmussenandCodex 6adebeda0d refactor: system config endpoints (#32457)
* refactor(web): tanstack query

* refactor: use createQuery

* fix: pnpm lockfile
2026-10-16 20:51:28 +03:00
Dag StuanandCodex 92ab6e9c41 fix(mobile): Keep asset viewer controls hidden if they were hidden before zooming. (#31832) 2026-10-16 20:51:28 +03:00
Lee, Hyo junandCodex 9e89e65d23 fix(mobile): sort time zones by name within the same offset (#32087) 2026-10-16 20:51:28 +03:00
Santo ShakilandCodex 12196bef4f fix(mobile): save typed coordinates in the location picker (#32460) 2026-10-16 20:51:28 +03:00
renovate[bot]Codexrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Daniel Dietzler
6e89915bc5 fix(deps): update dependency intl-messageformat to v12 (#31918)
* fix(deps): update dependency intl-messageformat to v12

* fix: pnpmfile checksum

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-10-16 20:51:28 +03:00
Codex b1a0e38dba test(web): use typed JSON responses in updater checks 2026-10-15 15:09:20 +03:00
Codex 6665bb4796 feat: add verified Android and web update checks in settings 2026-10-15 14:54:44 +03:00
Codex 9c76f93015 chore(deps): resolve reviewed upgrades against the local release lockfile 2026-10-15 14:45:01 +03:00
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
Luis NachtigallandCodex 3ca0d0c7db fix(mobile): update share quality option text from "Thumbnail" to "Preview" (#32340)
fix(translations): update share preview text

Co-authored-by: Santo Shakil <santoshakil@users.noreply.github.com>
(cherry picked from commit 2a8f8324e43487f29fd475832107f279da1c39c3)
2026-10-15 14:32:48 +03:00
Lee, Hyo junandCodex 42c84fdb2c fix(mobile): render random widget images at the widget's display resolution (#32215)
* fix(mobile): render random widget images at the widget's display resolution

* fix(mobile): cap widget image decode size for panoramas

(cherry picked from commit 3d07c061a38275f8b0d406e1ecc67446497be0e2)
2026-10-15 14:32:48 +03:00
Codex 3b04c1c4dc test(mobile): mock wakelock binary transport for video regression checks 2026-10-14 21:42:22 +03:00
Codex d25c946c29 test(local): cover shared link access and video readiness; fix lint dependency 2026-10-14 21:37:42 +03:00
Codex a06a589936 fix(local): translate expanded mobile tags control 2026-10-14 21:25:19 +03:00
Luis NachtigallandCodex 57b2b007a8 fix(mobile): show play instead of replay button for unplayed videos (#32307)
* fix(mobile): show play instead of replay button for unplayed videos

* fix(video): clarify comment for playback status handling

(cherry picked from commit 0d1e1ffecd5df8793ee020f90ddb10d6252dd5d8)
2026-10-14 21:24:14 +03:00
Luis NachtigallandCodex 645f333d04 feat(mobile): limit max zoom by image pixel size (#32423)
* fix(mobile): limit max zoom by visible image pixels

* fix(mobile): limit max zoom by image pixel size

(cherry picked from commit b246fa7c8a458da2d89c0efa2b2a8db85182ea9c)
2026-10-14 21:24:14 +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
WillandCodex 1daf922555 feat(mobile): mobile tags (#30753)
* feat(mobile): mobile tags

* fix(mobile); refactoring, replaced hook

* tag provider through asset service

* make search use a tag set

* use tag action directly

* use notification listener

* untag action

* handle untag response

* fix tests and add untag action test

* fix material error from tag picker dialog

* fix(mobile): clip tag picker tiles and update tag overflow

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Santo Shakil <shakil.mezbah@gmail.com>
(cherry picked from commit 83c7ec50056bbefa10869c78457f8882c72275e2)
2026-10-14 21:24:13 +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
Codex 5d204f646f Merge tag 'v3.3.3' into codex/immich-release-20261014
# Conflicts:
#	mobile/pubspec.yaml
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
Codex 6f313cbef9 chore: prepare local.3 release and test event subscriptions 2026-10-13 21:59:09 +03:00
renovate[bot]andCodex 6bfd311ad4 chore(deps): update base-image to v202610131110 (#32410)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
(cherry picked from commit aec0dd1e6ba44d172b83cf6f3422211961aff99d)
2026-10-13 21:49:29 +03:00
DawidKrynskiandCodex 4d4a4622cd fix(web): update album start date when the album changes (#32242)
Co-authored-by: Dawid Krynski <188586034+DawidKrynski@users.noreply.github.com>
(cherry picked from commit d519140a6c4d9bc8c392e08a29679ddf3326d917)
2026-10-13 21:49:29 +03:00
Mees FrenselandCodex f1c02f1766 fix(web): event manager forgetting subscribed callbacks (#32217)
* fix(web): event manager forgetting subscribed callbacks

* fix: asset viewer manager

* fix PR feedback

(cherry picked from commit 60c5aa1f252c97d3d40cf21ee7e017072d005b32)
2026-10-13 21:49:29 +03:00
renovate[bot]andCodex 0d824e7826 chore(deps): update base-image to v202610061109 (#32392)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
(cherry picked from commit 8c76ef2adead8abb453b37cfa6d42d3ceb684df3)
2026-10-13 21:49:29 +03:00
bo0tzzandCodex 49cf2fdff2 chore: add compose textarea description to issue template (#32402)
Hopefully this stops people from just dropping "n/a" when they're using an unsupported deployment

(cherry picked from commit 5380498debd853191d46a8cf5322778d0c0d1b5c)
2026-10-13 21:49:29 +03:00
Santo ShakilandCodex def46cae2f chore(mobile): hide the database export in release builds (#32285)
(cherry picked from commit 024e8e769624c953982957d4886368dcae838a18)
2026-10-13 21:49:29 +03: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
Codex 4fdcfb7ed9 chore: prepare local web and Android release 3.3.1-local.2 2026-10-12 21:01:23 +03:00
Adi ČauševićandCodex 60327b2665 fix(web): don't swallow Escape in sidebar (#32364)
(cherry picked from commit cc7fd671973085baf2a0dfba4e2b0a86cab17e6c)
2026-10-12 20:39:12 +03:00
Luis NachtigallandCodex 142593b529 fix(i18n): remove unused load preview translations (#32343)
(cherry picked from commit 8cfee782bde77424c36a962511fe3450d05f4653)
2026-10-12 20:39:12 +03:00
sevtdyandCodex 00900cc902 fix(web): round top corners of queue status badge (#32360)
(cherry picked from commit c673a608d08e2aa798805c423eb4175759fab740)
2026-10-12 20:39:12 +03:00
Luis NachtigallandCodex d63fc2088f refactor(mobile): cleanup image providers (#31824)
* refactor(mobile): remove redundant cancellation checks in image providers

* refactor(mobile): extract request helpers in full image providers

(cherry picked from commit 795507cfec262f8a6a9bd3ddd6f5647781e605ca)
2026-10-12 20:39:12 +03:00
762748f9ea fix(mobile): show the memories date in every app language (#32262)
fix(mobile): show the memories date in every app language (#32259)

(cherry picked from commit 116a9436ad1f8164d9dee904551e5067d724be99)

Co-authored-by: Santo Shakil <santoshakil@users.noreply.github.com>
2026-10-09 09:04:03 +00:00
immich-push-o-matic[bot] db6e11ecc8 chore: version v3.3.1 2026-10-08 21:21:16 +00:00
fe8a3c4f23 docs: Add MACHINE_LEARNING_MODEL_REVISION variable to docs (#32247)
docs: Add MACHINE_LEARNING_MODEL_REVISION variable to docs (#32221)



(cherry picked from commit 96970cfba6c74773260ff44a9700fd863bc234df)

Co-authored-by: Shaquille_Oatmeal <github@shaq-oatmeal.dev>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-10-08 21:18:09 +00:00
+40 0f3ef0689c chore(web): update translations (#32246)
chore(web): update translations (#32029)

Translate-URL: https://hosted.weblate.org/projects/immich/immich/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/be/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/el/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/eo/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ga/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ka/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/yue_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hans/
Translation: Immich/immich
















































(cherry picked from commit 89069417448f1fded8ef54c4416c865a43348992)

Co-authored-by: Weblate (bot) <hosted@weblate.org>
Co-authored-by: Adam Havránek <adamhavra@seznam.cz>
Co-authored-by: Aidar Nizamov <aidar.nizamov141@gmail.com>
Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
Co-authored-by: Alessandro Mandelli <mandelli.alessandro@ngi.it>
Co-authored-by: Andrei “Talkerbox” Audzei <bigtalkerbox@gmail.com>
Co-authored-by: Arif Budiman <arifpedia@gmail.com>
Co-authored-by: Azharul Haque <haque@azharul.com>
Co-authored-by: BenWen <Benjamin.wensky@de.abb.com>
Co-authored-by: Céleste C. <clst04@proton.me>
Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: Eduard Ereza Martínez <eduard@ereza.cat>
Co-authored-by: Gabriel <jellyfin.sensitize624@passmail.net>
Co-authored-by: Gonçalo Guedes <goncalo.manuelguedes@gmail.com>
Co-authored-by: Hans Cats <hanscats@gmail.com>
Co-authored-by: Happy <59247878+happy2452354@users.noreply.github.com>
Co-authored-by: Haru Ijima <haruijimakun@gmail.com>
Co-authored-by: Hurricane_32 <rodrigorimo@hotmail.com>
Co-authored-by: Hồ Nhất Duy <axicenia@gmail.com>
Co-authored-by: Idan <idan062@gmail.com>
Co-authored-by: Indrek Haav <indrekhaav@users.noreply.hosted.weblate.org>
Co-authored-by: Ivan Dimitrov <idimitrov08@gmail.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: KecskeTech <teonyitas@gmail.com>
Co-authored-by: Lars Winkelmann <lars@winkelmaenner.com>
Co-authored-by: Levan Makaradze <levanluk77@gmail.com>
Co-authored-by: Luis Fernando Illapa <moxb@outlook.es>
Co-authored-by: MarcSerraPeralta <marcserraperalta@gmail.com>
Co-authored-by: Matjaž T. <matjaz@moj-svet.si>
Co-authored-by: Mees Frensel <meesfrensel@gmail.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Nagy Krisztián <nkgy17@gmail.com>
Co-authored-by: Nicola Bortoletto <translate@nicolabortoletto.com>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Co-authored-by: Rika <spurdl@users.noreply.hosted.weblate.org>
Co-authored-by: Spiros Vlachos <vitaspiros@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Tamás <sztom313@proton.me>
Co-authored-by: Tim Morley <weblate.3919org@timsk.org>
Co-authored-by: Télio R <telio_rq@proton.me>
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org>
Co-authored-by: Yoshi <yyyyyoshihoko@gmail.com>
Co-authored-by: aws <antonws2@gmail.com>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Co-authored-by: heizelnut <git@heiz.cc>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: ruflas <juan75555@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
2026-10-08 21:18:04 +00:00
f6fc530734 fix: show date on memories page (#32245)
fix: show date on memories page (#32206)

* fix: show date on memories page

* Clean up API

* Drop imports

---------


(cherry picked from commit 108a3cadbfe3b3e4305c04d8e4217aafb445f626)

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Adam Gastineau <adam@agg.im>
2026-10-08 20:38:58 +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
f607b886f0 feat: shared person indicator (#32238)
feat: shared person indicator (#32223)

* feat: shared person indicator

* fix: styles

---------


(cherry picked from commit a3c52d13962c1c404a58a1ace20107625a4be618)

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2026-10-08 18:59:47 +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