bo0tzz
9ba71d908d
chore(ci): drop setup-java and setup-uv in favour of mise ( #32400 )
2026-10-14 00:06:10 -04:00
bo0tzz
ac453b5557
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 |
2026-10-13 18:39:08 -04:00
bo0tzz
2a4e876ec9
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
2026-10-13 18:36:20 -04:00
bo0tzz
bb024c8626
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 >
2026-10-13 18:33:29 -04:00
renovate[bot]
aec0dd1e6b
chore(deps): update base-image to v202610131110 ( #32410 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-13 16:57:07 +02:00
DawidKrynski
d519140a6c
fix(web): update album start date when the album changes ( #32242 )
...
Co-authored-by: Dawid Krynski <188586034+DawidKrynski@users.noreply.github.com >
2026-10-13 09:41:19 -04:00
Mees Frensel
60c5aa1f25
fix(web): event manager forgetting subscribed callbacks ( #32217 )
...
* fix(web): event manager forgetting subscribed callbacks
* fix: asset viewer manager
* fix PR feedback
2026-10-13 09:40:09 -04:00
renovate[bot]
8c76ef2ade
chore(deps): update base-image to v202610061109 ( #32392 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-13 14:57:40 +02:00
bo0tzz
5380498deb
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
2026-10-13 10:02:04 +02:00
Santo Shakil
024e8e7696
chore(mobile): hide the database export in release builds ( #32285 )
2026-10-13 13:11:22 +06:00
Adi Čaušević
cc7fd67197
fix(web): don't swallow Escape in sidebar ( #32364 )
2026-10-12 11:22:05 +02:00
Luis Nachtigall
8cfee782bd
fix(i18n): remove unused load preview translations ( #32343 )
2026-10-11 21:33:33 -05:00
sevtdy
c673a608d0
fix(web): round top corners of queue status badge ( #32360 )
2026-10-12 02:33:29 +00:00
Luis Nachtigall
795507cfec
refactor(mobile): cleanup image providers ( #31824 )
...
* refactor(mobile): remove redundant cancellation checks in image providers
* refactor(mobile): extract request helpers in full image providers
2026-10-11 11:49:29 -07:00
bo0tzz
2685234ed3
chore: set ml revision in default compose ( #32289 )
2026-10-09 21:16:30 -04:00
Ștefan Muraru
b4f35cb43d
fix(ml): Round OCR max resolution up to a multiple of 32 ( #32263 )
...
fix(ml): round ocr max resolution up to a multiple of 32
2026-10-09 11:05:02 -04:00
Brandon Richardson
d8454261cd
fix(logging): avoid multiline logging of feature flags in server service ( #32275 )
...
When logging feature flags at startup, avoid stringifying the features
in pretty format. Multiline log messages clutter logs and make it harder
to ingest and parse in log aggregation systems like loki, graylog or
logz.io.
2026-10-09 09:46:16 -04:00
Santo Shakil
116a9436ad
fix(mobile): show the memories date in every app language ( #32259 )
2026-10-09 14:47:44 +06:00
Weblate (bot)
8906941744
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
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:01:50 +00:00
Alex
108a3cadbf
fix: show date on memories page ( #32206 )
...
* fix: show date on memories page
* Clean up API
* Drop imports
---------
Co-authored-by: Adam Gastineau <adam@agg.im >
2026-10-08 20:26:36 +00:00
infocus13
56319b76fc
fix: run workflow steps in their configured order ( #32240 )
...
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com >
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-10-08 21:39:38 +02:00
Jason Rasmussen
9971dade1b
fix: include unamed people in otherPeople ( #32237 )
2026-10-08 14:47:51 -04:00
Daniel Dietzler
a3c52d1396
feat: shared person indicator ( #32223 )
...
* feat: shared person indicator
* fix: styles
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-10-08 14:47:33 -04:00
Adam Gastineau
9640d9f5d2
fix(mobile): prevent rapid toggling and rerendering of cells ( #32200 )
...
* fix(mobile): prevent rapid toggling and rerendering of cells
* Apply Shakil's fix
2026-10-08 11:01:00 -07:00
Santo Shakil
0e63715394
chore(mobile): rename the native core crates and package ( #31986 )
2026-10-08 23:10:59 +06:00
Santo Shakil
135aba5d82
fix(mobile): stop long images squishing on android ( #32213 )
2026-10-08 23:10:40 +06:00
Shaquille_Oatmeal
96970cfba6
docs: Add MACHINE_LEARNING_MODEL_REVISION variable to docs ( #32221 )
...
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 19:05:58 +02:00
Jason Rasmussen
ce2cf6612d
fix: clarify people sharing does not share assets ( #32231 )
2026-10-08 18:41:52 +02:00
Daniel Dietzler
481a7bf3ae
chore: mark people users endpoints as beta ( #32232 )
2026-10-08 15:58:16 +00:00
Mees Frensel
383f23ef19
fix(i18n): remove unused translation ( #32184 )
2026-10-08 10:58:08 -04:00
yuhuan417
4444ca7e3f
docs: document persistent QNAP database storage ( #32222 )
2026-10-08 10:56:19 -04:00
bo0tzz
655bfdb34f
fix(ml): move logging config to code ( #32220 )
...
This lets it be applied earlier on, so the initializing [version] log
line actually works.
2026-10-08 14:41:09 +00:00
Daniel Dietzler
5fa7789e26
fix: include partner shared assets for people even without showInTimeline ( #32219 )
2026-10-08 16:13:16 +02:00
Lee, Hyo jun
02481deb14
fix(mobile): format year filter chip without thousands separator ( #32159 )
2026-10-08 16:03:38 +05:30
Peter Ombodi
6f042bad92
fix(mobile): prevent timeline bucket selection provider leak ( #32100 )
...
Co-authored-by: Peter Ombodi <peter.ombodi@gmail.com >
2026-10-08 16:01:42 +05:30
Santo Shakil
c0d1dc923e
chore(mobile): one thumbhash decoder in the native core ( #31367 )
...
* chore(mobile): rust native core
* chore(mobile): move the android byte buffer into the native core
* chore(mobile): move the raw photo rotation into the native core
* move the rotation into immich_core, the jni side only wraps it
* use the pointer loop in rotate again, the bounds checked writes were slower on a pixel 5
* chore(mobile): move the 10 bit conversion into the native core
* move the 10 bit conversion into immich_core, neon for 32 bit arm
* chore(mobile): one thumbhash decoder in the native core
* decode the thumbhash straight into the returned buffer, its jni entry sits next to the c export
* chore(mobile): move the 10 bit conversion into the native core
* move the 10 bit conversion into immich_core, neon for 32 bit arm
2026-10-08 12:02:39 +06:00
Santo Shakil
b08a8fb56c
chore(mobile): move the 10 bit conversion into the native core ( #31363 )
...
* chore(mobile): move the 10 bit conversion into the native core
* move the 10 bit conversion into immich_core, neon for 32 bit arm
* move the android rust flags into native/.cargo/config.toml
2026-10-08 04:53:04 +06:00
Santo Shakil
003670d013
chore(mobile): move the raw photo rotation into the native core ( #31362 )
...
* chore(mobile): move the raw photo rotation into the native core
* move the rotation into immich_core, the jni side only wraps it
* use the pointer loop in rotate again, the bounds checked writes were slower on a pixel 5
2026-10-08 03:31:37 +06:00
Santo Shakil
4c51bfed1d
chore(mobile): move the android byte buffer into the native core ( #31361 )
2026-10-08 03:08:36 +06:00
Santo Shakil
8a02a91ee9
chore(mobile): rust native core ( #31254 )
2026-10-08 02:42:15 +06:00
Daniel Dietzler
7e7a1de3fd
refactor: migrate to native set operations ( #32186 )
2026-10-07 19:33:21 +02:00
Jason Rasmussen
b620efba38
feat: custom release notes ( #32172 )
2026-10-07 13:27:29 -04:00
Santo Shakil
26b8e3d400
fix(mobile): start the session when a link opens the app ( #32181 )
2026-10-07 19:00:19 +06:00
Peter Ombodi
b94afdb468
fix(mobile): decouple delete action messages from context ( #31093 )
...
* fix(mobile): decouple delete action messages from context
* fix(mobile): finish local cleanup after action disposal
* fix(mobile): revert redundant changes
* fix(mobile): revert rest of redundant changes
---------
Co-authored-by: Peter Ombodi <peter.ombodi@gmail.com >
2026-10-07 16:06:09 +05:30
bo0tzz
6962412c0b
fix(server): read ISO values above 65535 ( #32182 )
2026-10-07 10:03:07 +02:00
Santo Shakil
86fed468a7
fix(mobile): keep memories full screen while swiping ( #32171 )
2026-10-06 18:17:51 +00:00
renovate[bot]
461d038abe
chore(deps): update github-actions ( #32126 )
2026-10-06 18:09:59 +00:00
Joep Admiraal
3f8cfe0b70
fix(web): show face name label above box when it would be hidden ( #32088 )
2026-10-06 14:25:24 +00:00
Daniel Dietzler
8d377bfef5
fix: memories mobile sync for older clients ( #32150 )
...
Co-authored-by: Santo Shakil <shakil.mezbah@gmail.com >
2026-10-06 15:48:29 +02:00
Jason Rasmussen
e49a5bb8c9
fix: memory upcoming query ( #32164 )
2026-10-06 09:46:16 -04:00