github-actions
05d838b560
chore: version v3.0.0
2026-06-30 20:03:47 +00:00
Weblate (bot)
82b70c1ab6
chore(web): update translations ( #29347 )
...
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
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/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/es/
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/gl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/gu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
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/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sq/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translation: Immich/immich
Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com >
Co-authored-by: Charles IdB <charles.issert2braux@gmail.com >
Co-authored-by: Dmitry Banny <dj.icecore@gmail.com >
Co-authored-by: Enric Pagès i Gassull <enricpages@hotmail.com >
Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org >
Co-authored-by: HackingAll <hacking.all.YT@gmail.com >
Co-authored-by: Harsh Kevadia <kevadiyaharsh@gmail.com >
Co-authored-by: Hosted Weblate user 156232 <53017937+parol100@users.noreply.github.com >
Co-authored-by: Hurricane_32 <rodrigorimo@hotmail.com >
Co-authored-by: Hồ Nhất Duy <axicenia@gmail.com >
Co-authored-by: Ivan Dimitrov <idimitrov08@gmail.com >
Co-authored-by: Jeppe Nellemann <jepnel@proton.me >
Co-authored-by: Mahmoud Dwidar <modydodo2055@gmail.com >
Co-authored-by: Nicola Bortoletto <nicola.bortoletto@live.com >
Co-authored-by: Pavel Miniutka <pavel.miniutka@gmail.com >
Co-authored-by: Yago Raña Gayoso <yago.rana.gayoso@gmail.com >
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl >
Co-authored-by: ikeno-web <ikeno@nextcore-consulting.com >
Co-authored-by: rubes <mail@armd.one >
2026-06-30 20:01:21 +00:00
Daniel Dietzler
02506424a7
feat: integrity checks admin settings ( #29406 )
2026-06-30 14:58:51 -05:00
Ben Beckford
6a7a34d294
chore: make webhooks workflow-agnostic ( #29404 )
2026-06-30 15:27:30 -04:00
Alex
165bca4b0a
feat: new feature message ( #29388 )
...
* feat: new feature board
* wip
* wip
* wip
* lint
* lint
* pr feedback
* pr feedback
* i18n
* i18n
2026-06-30 13:53:13 -05:00
Brandon Wees
d4b994301f
fix: version compatability check ( #29405 )
2026-06-30 18:44:53 +00:00
Daniel Dietzler
deeb042a9e
feat: honor album access permissions in search endpoints ( #29352 )
2026-06-29 22:27:22 +02:00
Daniel Dietzler
b4cc406a3f
fix!: search endpoints visibility can be omitted ( #29385 )
2026-06-29 22:00:02 +02:00
Padhai_Kaneer
df383c1ead
fix(server): face region coordinates parsing ( #29333 )
2026-06-29 17:05:20 +02:00
Santo Shakil
af2efda310
fix(mobile): apply exif orientation to android raw photos ( #29337 )
2026-06-29 10:59:09 -04:00
shenlong
5164feb5b4
chore: disable logs in tests ( #29360 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-29 09:43:51 -04:00
shenlong
56eb69b328
chore: cleanup unit tests ( #29357 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-29 09:38:00 -04:00
github-actions
ac74bca18b
chore: version v3.0.0-rc.4
2026-06-27 13:14:47 +00:00
shenlong
e9d1951858
fix: dispatch menu onPressed manually ( #29353 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-27 08:10:47 -05:00
Santo Shakil
6e1143e799
fix(mobile): hide video thumbnail when video is ready ( #29012 )
2026-06-26 22:20:40 -05:00
github-actions
09d4a6815f
chore: version v3.0.0-rc.3
2026-06-26 16:49:02 +00:00
Weblate (bot)
23d1dbcb23
chore(web): update translations ( #29290 )
...
Translate-URL: https://hosted.weblate.org/projects/immich/immich/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
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/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_GB/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/eo/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/eu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
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/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/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
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_Hant/
Translation: Immich/immich
Co-authored-by: Abel Mislovic <mislovica@gmail.com >
Co-authored-by: Adjenz <adjenz@proton.me >
Co-authored-by: Andrea <ghosts.adm@gmail.com >
Co-authored-by: Conrad Menz <weblate@spamstopover.de >
Co-authored-by: Dan Bishop <d@nbishop.uk >
Co-authored-by: DevServs <bonov@mail.ru >
Co-authored-by: Dinesh R <dinodinu@gmail.com >
Co-authored-by: Enric Pagès i Gassull <enricpages@hotmail.com >
Co-authored-by: Happy <59247878+happy2452354@users.noreply.github.com >
Co-authored-by: Hồ Nhất Duy <axicenia@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: KZeliop <kzeliop@gmail.com >
Co-authored-by: Kong <cptkong1@gmail.com >
Co-authored-by: Maj Mohar <maj.mohar4@gmail.com >
Co-authored-by: Matjaž T. <matjaz@moj-svet.si >
Co-authored-by: Muxutruk <156070698+Muxutruk2@users.noreply.github.com >
Co-authored-by: Nagy Krisztián <nkgy17@gmail.com >
Co-authored-by: Oleksandr Yurov <oyurov@icloud.com >
Co-authored-by: Sean Young <assanges@users.noreply.hosted.weblate.org >
Co-authored-by: Sylvain Pichon <service@spichon.fr >
Co-authored-by: Tijs-B <tijs.bergmans@telenet.be >
Co-authored-by: Tim Morley <weblate.3919org@timsk.org >
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org >
Co-authored-by: Vincent Halman <vincent_halman@hotmail.com >
Co-authored-by: waclaw66 <waclaw66@seznam.cz >
2026-06-26 16:46:30 +00:00
Jason Rasmussen
6507b1f94c
feat: pump doc references ( #29331 )
2026-06-26 16:45:06 +00:00
Santo Shakil
29949bebe4
fix(mobile): only toggle backup from the switch, not the whole row ( #29236 )
...
tapping anywhere on the enable backup row flipped backup on or off, so it was easy to toggle by accident. now only the switch does it.
2026-06-26 20:00:08 +05:30
Daniel Dietzler
d85e599ad9
feat: ultimate plugin type safety ( #29340 )
2026-06-26 16:27:19 +02:00
jameskimmel
b16cc496b2
docs: MS smtp guide ( #29289 )
...
Signed-off-by: jameskimmel <17176225+jameskimmel@users.noreply.github.com >
2026-06-26 16:16:38 +02:00
Ben Beckford
953ef5c047
feat: webhook workflow action ( #29258 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-06-26 16:08:45 +02:00
jullang
a876d4a9f1
fix: small typo in openapi-spec ( #29308 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-06-26 10:28:52 +00:00
Daniel Dietzler
688241a462
feat: plugin-sdk safety all around ( #29323 )
2026-06-25 18:23:55 -04:00
shenlong
cb1af3a8ec
feat: favorite bottom sheet action ( #29320 )
...
* chore: cleanup partner action test
* feat: favorite bottom sheet action
* review suggestions
* implicit favorite handling
* feat: viewer favorite icon to action (#29321 )
* feat: viewer favorite icon to action
* feat: advance info action
* implicit favorite handling
* feat: viewer favorite icon to action
# Conflicts:
# mobile/lib/presentation/widgets/asset_viewer/viewer_top_app_bar.widget.dart
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
* chore: timeline action test (#29324 )
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
* clear selection only on success
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-25 16:55:06 -04:00
shenlong
49a821b0d0
chore: fix mobile test flakiness ( #29325 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-25 22:56:59 +05:30
shenlong
3a7034d25e
chore: cleanup partner action test ( #29296 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-25 10:49:34 -04:00
Yaros
4099fa6b4a
fix(mobile): app doesn't exit full-screen mode ( #29301 )
...
* fix(mobile): app doesn't exit full-screen mode
* chore: rename restoreSystemUI to restoreEdgeToEdge
2026-06-24 20:48:01 -05:00
Daniel Dietzler
9751530af8
feat: plugin wrapper type safety ( #29300 )
2026-06-24 15:22:35 -04:00
Daniel Dietzler
0931a19c5c
fix: run test suite for plugin changes ( #29311 )
2026-06-24 16:29:46 +00:00
Alex
08b2e2c0b5
fix(docs): Revert v3 bump ( #29310 )
...
Revert "fix(docsc): v3 bump (#29246 )"
This reverts commit dc7d57ff9a .
2026-06-24 11:18:37 -05:00
Santo Shakil
e5b50a55a4
fix(mobile): blank notifications page after enabling notifications ( #29232 )
...
the old notification toggles were removed in a cleanup, so once notifications were enabled the page had nothing left and went blank. show a "notifications enabled" status tile with a shortcut to the system notification settings instead.
2026-06-24 09:15:28 -05:00
shenlong
9d6c219276
fix: current viewer asset reactivity ( #29282 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-23 18:40:24 +00:00
shenlong
f29f86542c
feat: partner actions ( #29281 )
...
* feat: partner actions
# Conflicts:
# i18n/en.json
* cleanup
* fix tests
* ci fix
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-23 23:50:59 +05:30
okxint
5165cf1d2f
fix(mobile): force AssetViewerPage recreation on repeated view intents ( #29235 )
...
* fix(mobile): force AssetViewerPage recreation on repeated view intents
When View in Immich is triggered a second time while the viewer is
already open, auto_route's replaceAll reuses the existing route (same
type, null key) and Flutter keeps the old ConsumerState alive. The
PageController and preloader inside _AssetViewerState are late final,
so they never reset — the viewer stays frozen on the previous asset.
Passing UniqueKey() to AssetViewerRoute ensures each view intent
creates a fresh widget element, so initState runs, the PageController
is initialised from scratch, and the new TimelineService from the
updated ProviderScope override is picked up correctly.
Fixes #29230
* clean up
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com >
2026-06-23 17:43:56 +00:00
shenlong
f4c8459484
feat: mobile actions ( #29280 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-23 16:50:57 +00:00
Mees Frensel
22ec449e43
chore: remove unused i18n strings ( #29288 )
2026-06-23 18:02:29 +02:00
Weblate (bot)
0b1019c344
chore(web): update translations ( #29204 )
...
Translate-URL: https://hosted.weblate.org/projects/immich/immich/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
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/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de_CH/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_GB/
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/eu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fil/
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/gsw/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ne/
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_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
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/ur/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/yue_Hant/
Translation: Immich/immich
Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com >
Co-authored-by: AntonPalmqvist <apq@users.noreply.hosted.weblate.org >
Co-authored-by: Benjamin Kunz <benjamin.kunz.ch@gmail.com >
Co-authored-by: Cohinem <twitch9ofe@gmail.com >
Co-authored-by: Conrad Menz <weblate@spamstopover.de >
Co-authored-by: Damian Krysta <damian@krysta.dev >
Co-authored-by: DevServs <bonov@mail.ru >
Co-authored-by: Edmundas <edmius@gmail.com >
Co-authored-by: Enric Pagès i Gassull <enricpages@hotmail.com >
Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org >
Co-authored-by: Hồ Nhất Duy <axicenia@gmail.com >
Co-authored-by: Indrek Haav <indrekhaav@users.noreply.hosted.weblate.org >
Co-authored-by: Insoo Seok <tocoyo@gmail.com >
Co-authored-by: Jayden Lo <jaydenlo08@gmail.com >
Co-authored-by: Leo Bottaro <github@leobottaro.com >
Co-authored-by: Luis Fernando Illapa <moxb@outlook.es >
Co-authored-by: Manar Aldroubi <droubi@gmail.com >
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: Melih Ozkan <malihozkan156@gmail.com >
Co-authored-by: Mr.Biswas <kallan.biswas001@gmail.com >
Co-authored-by: Muxutruk <156070698+Muxutruk2@users.noreply.github.com >
Co-authored-by: Nagy Krisztián <nkgy17@gmail.com >
Co-authored-by: Nicolas Ceballos <nicoshafes@gmail.com >
Co-authored-by: Para <ahh-produktivitet@tutanota.com >
Co-authored-by: Piero B. <biagini93@gmail.com >
Co-authored-by: PierreLapolla <plapolla9@gmail.com >
Co-authored-by: Ronnel <misc.woe@outlook.ph >
Co-authored-by: Sakib Iqbal <sakib.iqbal@gmail.com >
Co-authored-by: Saugat Tripathi <saugat.tripathi76@gmail.com >
Co-authored-by: Tim Morley <weblate.3919org@timsk.org >
Co-authored-by: Umair Jibran <wablate@umairjibran.com >
Co-authored-by: Unimpeded Lemur <yg7lh0fz3@mozmail.com >
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org >
Co-authored-by: Vitor Coelho <vitorc195@gmail.com >
Co-authored-by: grgergo <gergo_g@proton.me >
Co-authored-by: muysup <79565421+MuySup@users.noreply.github.com >
Co-authored-by: Òscar Casajuana <elboletaire@underave.net >
2026-06-23 15:50:30 +00:00
Mees Frensel
06f3b4f259
refactor(web): simple actions ( #29257 )
2026-06-23 17:08:46 +02:00
Ben Beckford
99f94a363d
chore(web): workflow property ordering ( #29261 )
...
* chore(web): workflow property ordering
* chore(web): extract schema property sorting to method
2026-06-23 13:03:33 +00:00
Daniel Dietzler
c3092b1c2c
chore: basque was missing on mobile ( #29284 )
2026-06-23 08:57:05 -04:00
renovate[bot]
0656e7e231
chore(deps): update dependency typescript to v6 ( #28772 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-06-23 14:01:09 +02:00
renovate[bot]
1692b81b7c
chore(deps): lock file maintenance (pub) ( #28733 )
2026-06-23 12:43:35 +02:00
renovate[bot]
ff2028c4c8
chore(deps): update prom/prometheus docker digest to a75c5a3 ( #29271 )
2026-06-23 12:43:16 +02:00
Timon
f22836e1bf
refactor(server): describe check upload id as string ( #29274 )
2026-06-23 12:42:42 +02:00
renovate[bot]
7dd02ffbad
chore(deps): update github-actions ( #29272 )
...
Co-authored-by: bo0tzz <git@bo0tzz.me >
2026-06-23 08:49:21 +00:00
shenlong
e51c4cb355
feat: column button ( #29265 )
...
* refactor: icon buttons implicit loading
* chore: cleanup
* feat: ui color override
* feat: column button
* feat: ui menu item (#29266 )
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-22 20:56:00 -05:00
shenlong
d4102c0489
refactor: ui icon buttons implicit loading ( #29263 )
...
* refactor: icon buttons implicit loading
* chore: cleanup
* feat: ui color override (#29264 )
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-22 16:24:52 -04:00
shenlong
30a73c1105
feat: mobile-ui snackbar ( #29260 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-22 16:22:26 -04:00
Jason Rasmussen
ec7c0f9ec8
fix: sync backfill ( #29267 )
2026-06-22 16:19:01 -04:00
Brandon Wees
a5198e23a8
refactor: use SemVer classes for version compatability message ( #29056 )
...
* refactor: use SemVer classes for version compatability message
* chore: readd major version compatabilty messages
* fix: remove 1.106.0 check
(we dont support v1 servers anymore)
2026-06-22 11:28:56 -04:00
Mees Frensel
51f2905fcc
fix(web): remove map's fullscreen button ( #29192 )
2026-06-22 16:58:07 +02:00
Vogeluff
3b7d75c18a
feat(web): Add text-white-shadow to elements and increase the shadows effect ( #29165 )
...
* fix(web): increase text shadow strength for white text on thumbnails
* fix(web): fix class order for text-white-shadow
* fixup: format fix
2026-06-22 09:43:15 -05:00
Daniel Dietzler
c484bd99b6
fix: ignore external libraries for integrity report checksum check ( #29248 )
2026-06-22 13:56:24 +00:00
Anthony Clerici
c0bf5a4c56
fix(server): use VBR for QSV so the max bitrate is respected ( #29240 )
...
* fix(server): use VBR for QSV so the max bitrate is respected
* update test
2026-06-22 09:56:20 -04:00
MuySup
d9d50d2848
fix: turkish readme translation ( #29234 )
...
* Translation completed
3-2-1 rule translated
* Fix formatting of warning message in Turkish README
2026-06-22 09:55:58 -04:00
Daniel Dietzler
c7453a67fd
fix: detail panel people reactivity and iterator consumption ( #29250 )
2026-06-22 15:47:09 +02:00
Daniel Dietzler
e918e3a313
feat: keyboard seeking for new video player ( #29208 )
2026-06-22 09:42:59 -04:00
Matthew Momjian
dc7d57ff9a
fix(docsc): v3 bump ( #29246 )
...
v3 bump in docs
2026-06-21 20:44:58 -05:00
Alex
b24a617142
chore: bump mobile build ( #29215 )
2026-06-19 12:50:20 -05:00
Mees Frensel
62b00a1f26
refactor: slideshow and setalbumcover actions ( #29211 )
...
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-19 13:54:33 +00:00
Timon
95fc5e9682
docs: clarify duplicate exif merging intent ( #29203 )
2026-06-19 10:57:35 +02:00
github-actions
38920fc4ca
chore: version v3.0.0-rc.2
2026-06-18 23:20:14 +00:00
Weblate (bot)
3abeb4df92
chore(web): update translations ( #29162 )
...
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/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
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/eu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/gl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
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/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/yue_Hant/
Translation: Immich/immich
Co-authored-by: Erik Sikander <erik.sikander@gmail.com >
Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org >
Co-authored-by: Frank Paul Silye <frankps@gmail.com >
Co-authored-by: HackingAll <hacking.all.YT@gmail.com >
Co-authored-by: Hurricane_32 <rodrigorimo@hotmail.com >
Co-authored-by: Ivan Dimitrov <idimitrov08@gmail.com >
Co-authored-by: Jayden Lo <jaydenlo08@gmail.com >
Co-authored-by: Jozef Gaal <preklady@mayday.sk >
Co-authored-by: Matjaž T. <matjaz@moj-svet.si >
Co-authored-by: Muxutruk <156070698+Muxutruk2@users.noreply.github.com >
Co-authored-by: Muxutruk <benat.eigurenzu@elorrieta-errekamari.com >
Co-authored-by: Nagy Krisztián <nkgy17@gmail.com >
Co-authored-by: Nicola Bortoletto <nicola.bortoletto@live.com >
Co-authored-by: PPNplus <ppnplus@protonmail.com >
Co-authored-by: Pavel Miniutka <pavel.miniutka@gmail.com >
Co-authored-by: Tim Morley <weblate.3919org@timsk.org >
Co-authored-by: Zekai Şahin <zekainihas@gmail.com >
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl >
Co-authored-by: bones78 <jens@mueller-starck.de >
Co-authored-by: 김도윤 <wezardnote@gmail.com >
2026-06-18 23:17:29 +00:00
Daniel Dietzler
805bb84877
fix: defensive album owner migration ( #29200 )
2026-06-18 23:51:38 +02:00
Daniel Dietzler
a719552243
fix: rc version check ( #29194 )
2026-06-18 21:00:12 +00:00
Santo Shakil
9a5e7a8e47
fix(mobile): endless spinner on album selection when device has no albums ( #28994 )
...
* fix(mobile): endless spinner on album selection when device has no albums
* use a page scoped future provider for the loading state
* refactor(mobile): decide album selection empty state in the parent
2026-06-18 21:38:15 +05:30
Daniel Dietzler
62c6bb27e3
fix: workflow asset type filter required ( #29196 )
2026-06-18 16:04:28 +00:00
renovate[bot]
f3cb3cf98d
fix(deps): update dependency nodemailer to v9 [security] ( #29195 )
2026-06-18 17:45:15 +02:00
Santo Shakil
c35abb2f66
fix(mobile): re-lock locked folder when the app is backgrounded ( #29089 )
...
* fix(mobile): re-lock locked folder when the app is backgrounded
* fix(mobile): simplify locked folder overlay condition
* fix(mobile): lock locked folder on pause instead of resume
2026-06-18 21:10:18 +05:30
Santo Shakil
793487e52c
fix(mobile): refresh memories on resume and day change ( #28983 )
...
* fix(mobile): refresh memories on resume and day change
* fix(mobile): invalidate memories once after the resume sync
2026-06-18 20:46:20 +05:30
Ebin Santhosh
769c4015d3
fix(mobile): prevent duplicate login pages for unauthenticated share intent warm start ( #29054 )
2026-06-18 20:45:35 +05:30
renovate[bot]
c07cbe7ca8
chore(deps): update dependency multer to v2.2.0 [security] ( #29183 )
2026-06-18 16:31:10 +02:00
Timon
6d73bf4e36
refactor(web): move keyboard state into a store ( #29181 )
2026-06-18 16:29:26 +02:00
renovate[bot]
735f52a321
fix(deps): update typescript-projects ( #29130 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-06-18 16:21:35 +02:00
Daniel Dietzler
53fe26593c
fix: asset type filter ( #29190 )
2026-06-18 15:30:34 +02:00
Daniel Dietzler
40cffcd414
fix: remove local-only step ids from workflow json ( #29188 )
2026-06-18 08:54:35 -04:00
Timon
48861b085e
chore(server): organize integrity dtos ( #29191 )
2026-06-18 14:44:28 +02:00
Timon
09d0380804
refactor(server): use zod time validation ( #29189 )
2026-06-18 11:56:02 +00:00
Timon
83091d2834
fix(server): allow non-utc datetime offsets ( #29186 )
2026-06-18 11:27:11 +00:00
renovate[bot]
9a3071ae5c
chore(deps): lock file maintenance machine-learning (mise) ( #29152 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-17 19:34:45 -04:00
Mert
7ef2de6b53
feat(server): add hls playlist hint ( #29150 )
...
* add playlist hint
* update api
* unused import
* update crf in tests
2026-06-17 19:02:10 -04:00
Timon
cbe34d7931
fix(web): shift+click on GPS asset extends range selection in geolocation utility ( #29022 )
2026-06-17 18:53:23 +02:00
Rizwan
06c8d5a183
fix(web): use deterministic version name in svelte config ( #29172 )
2026-06-17 16:42:26 +00:00
Daniel Dietzler
ad9817c582
fix: web i18n ( #29175 )
2026-06-17 11:36:48 -05:00
Mees Frensel
14f6f2c04f
refactor(web): simplify places page controls and use ui's Select ( #29102 )
2026-06-17 10:31:49 -04:00
Adam Gastineau
327521fa27
docs(mobile): point users towards shared setup docs ( #29078 )
2026-06-17 10:22:45 -04:00
Tom Vincent
3be803d0c0
docs(mobile-app): add Play App Signing certificate hash ( #29168 )
2026-06-17 14:19:04 +00:00
Jeevan Mohan Pawar
a364b56b1c
fix(server): skip existing users when sharing albums ( #28884 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-06-17 15:54:20 +02:00
renovate[bot]
f9db76433e
chore(deps): update github-actions to v1.313.0 ( #29154 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-17 09:54:19 -04:00
Timon
3f2e51c5d4
refactor(server): use uuids in schemas ( #29140 )
2026-06-17 14:50:17 +02:00
Mees Frensel
430a2bbfd3
chore(server): add switch case exhaustiveness lint ( #29029 )
2026-06-17 12:04:41 +02:00
renovate[bot]
fbb0bc6e39
chore(deps): update ghcr.io/jdx/mise docker tag to v2026.6.10 ( #29153 )
2026-06-17 09:17:25 +00:00
Savely Krasovsky
8d30cfa2ce
chore(ml): update intel graphics compiler and compute runtime ( #29163 )
...
chore(ml): update Intel graphics compiler and compute runtime to latest versions
2026-06-16 23:09:53 +00:00
github-actions
c9aa9ba711
chore: version v3.0.0-rc.1
2026-06-16 19:50:41 +00:00
Weblate (bot)
7cf904acbe
chore(web): update translations ( #29036 )
...
Translate-URL: https://hosted.weblate.org/projects/immich/immich/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
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/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/en_GB/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
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/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/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ms/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
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/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sq/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/yue_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translation: Immich/immich
Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com >
Co-authored-by: Arif Budiman <arifpedia@gmail.com >
Co-authored-by: Bananenbrot <keram2810@outlook.de >
Co-authored-by: Charles Chase <cbs.chase927@passfwd.com >
Co-authored-by: Dan Bishop <d@nbishop.uk >
Co-authored-by: Dennis <dennis.kempel@hotmail.com >
Co-authored-by: DevServs <bonov@mail.ru >
Co-authored-by: Dániel Gál <galdaniel.school@gmail.com >
Co-authored-by: Enrico Jaupi <78313537@itiscastelli.onmicrosoft.com >
Co-authored-by: Erison Silva <hey@erison.work >
Co-authored-by: Fatah Rokbi <fatahrokbi@gmail.com >
Co-authored-by: Felipe Cabrera <me@felieppe.com >
Co-authored-by: Hurricane_32 <rodrigorimo@hotmail.com >
Co-authored-by: Jayden Lo <jaydenlo08@gmail.com >
Co-authored-by: Jozef Gaal <preklady@mayday.sk >
Co-authored-by: Mees Frensel <meesfrensel@gmail.com >
Co-authored-by: MrKoby07 <hirmerkorbinian122@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 <nicola.bortoletto@live.com >
Co-authored-by: Nicolas Ceballos <nicoshafes@gmail.com >
Co-authored-by: Paul Comte <paulcomte1@gmail.com >
Co-authored-by: Pavel Miniutka <pavel.miniutka@gmail.com >
Co-authored-by: Popa <spammailsfuermich@gmail.com >
Co-authored-by: SAHOON KIM <sahuni@gmail.com >
Co-authored-by: Sylvain Pichon <service@spichon.fr >
Co-authored-by: Unimpeded Lemur <yg7lh0fz3@mozmail.com >
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org >
Co-authored-by: Vegard Fladby <vegard@fladby.org >
Co-authored-by: anton garcias <isaga.percompartir@gmail.com >
Co-authored-by: azuziii <azuzii@proton.me >
Co-authored-by: dimetrius <dmitrytashin@gmail.com >
Co-authored-by: muziqaz <muziqaz@users.noreply.hosted.weblate.org >
Co-authored-by: rubes <mail@armd.one >
Co-authored-by: waclaw66 <waclaw66@seznam.cz >
2026-06-16 19:48:06 +00:00
renovate[bot]
983a005709
chore(deps): update github-actions to v3 ( #29147 )
2026-06-16 19:18:01 +00:00
Santo Shakil
cda499f2b5
fix(mobile): keep toasts off the dynamic island when keyboard is open ( #29159 )
2026-06-16 18:51:29 +00:00
Santo Shakil
12b7cd066b
fix(mobile): show memories with no showAt/hideAt in the timeline lane ( #29158 )
2026-06-16 18:46:52 +00:00
shenlong
83b4dc1733
fix: scrolling state update after unmounted ( #29149 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-16 13:14:09 -05:00
Daniel Dietzler
a9d64b30ad
chore: update multi-runner-build ( #29148 )
2026-06-16 19:37:12 +02:00
renovate[bot]
3927eb6755
chore(deps): update base-image to v202606161235 ( #29151 )
2026-06-16 17:29:17 +00:00
renovate[bot]
27cfa0e788
chore(deps): update github-actions ( #29146 )
2026-06-16 19:22:40 +02:00
renovate[bot]
76c042abc7
chore(deps): lock file maintenance (mise) ( #29091 )
2026-06-16 19:08:09 +02:00
shenlong
0f49bcbd27
chore: do not optimize on cleanup ( #29118 )
2026-06-16 12:42:12 -04:00
Mees Frensel
df4a708aed
chore(e2e): remove vite-tsconfig-paths ( #29145 )
2026-06-16 18:21:24 +02:00
renovate[bot]
34f78e3fd4
chore(deps): update github-actions ( #29124 )
2026-06-16 17:53:55 +02:00
Mees Frensel
3c2296b818
chore(web): use ui's Badge ( #29143 )
2026-06-16 17:12:25 +02:00
Daniel Dietzler
805ca1a2bf
chore: maintenance page design tweaks ( #29087 )
2026-06-16 09:15:54 -05:00
Santo Shakil
9ee412110f
fix(mobile): stop sync albums crashing on the main isolate ( #29133 )
...
the album sync provider read cancellationProvider, which only exists in the background isolate and throws on the main one. moved the cancel signal onto the isolate call path.
fixes #29125
fixes #29119
2026-06-16 09:14:33 -05:00
Brandon Wees
010220d588
fix: video thumbnail quality sharing ( #29104 )
2026-06-16 09:13:31 -05:00
shenlong
10fddf2d51
fix: resize map after scroll ( #29112 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-16 09:13:28 -05:00
Mees Frensel
d307ab60ca
fix: update datetimeRelative description to minutes instead of seconds ( #29137 )
2026-06-16 16:09:45 +02:00
Timon
ce59cc9241
docs(server): clarify AssetBulkUploadCheckItem.id is a correlation token ( #29141 )
2026-06-16 14:07:36 +00:00
Mees Frensel
1fa034125c
fix(web): language selector ( #29065 )
2026-06-16 15:49:47 +02:00
okxint
8036dc4b8c
fix(web): respect local timezone when building date range for search ( #29128 )
2026-06-16 13:45:49 +00:00
renovate[bot]
54895fb10e
chore(deps): update node to ^24.13.2 ( #29129 )
2026-06-16 13:43:22 +00:00
Daniel Dietzler
e70a1163f3
fix: too strict cron expression validation ( #29138 )
2026-06-16 13:20:40 +00:00
Daniel Dietzler
a23a7c69ae
fix: map settings ( #29134 )
2026-06-16 15:18:57 +02:00
Daniel Dietzler
f21a753aff
fix: integrity report checksum query ( #29136 )
2026-06-16 15:11:20 +02:00
Timon
cc8d3b4107
fix(server): do not merge metadata when multiple duplicates are kept ( #29035 )
...
* fix(server): do not merge metadata when multiple duplicates are kept
* Update server/src/services/duplicate.service.spec.ts
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com >
---------
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com >
2026-06-15 16:05:04 -04:00
Alex
622a330d82
chore: slideshow transition improvement ( #29079 )
...
* chore: better slideshow transition
* chore: tune
* simplify setup
* better default
* fix: correctly zoom alternatively
* lint
2026-06-15 10:10:05 -05:00
Timon
5e8744a568
fix: lock transcoding options ( #29076 )
2026-06-15 10:50:00 -04:00
Timon
b633cc4f04
fix(server): hide partner archived asset locations from map ( #29028 )
2026-06-15 16:30:52 +02:00
Timon
a9ee6a7ce9
fix(web): show asset arrows ( #29010 )
...
* fix(web): show asset arrows
* lint
2026-06-15 10:22:59 -04:00
Daniel Dietzler
c273ccf2e2
feat: languages ( #29088 )
2026-06-15 16:01:09 +02:00
Mees Frensel
5f1a180d1a
chore(web): remove dead code ( #29092 )
2026-06-15 14:54:51 +02:00
Brandon Wees
cc54de87aa
fix(web): error loading image state ( #29058 )
2026-06-15 13:38:52 +02:00
Mees Frensel
a97e5999e4
chore(web): make login page email and password required ( #29068 )
2026-06-15 13:34:49 +02:00
okxint
46631b3786
fix(web): prevent upload status panel from overlapping album action bar ( #29044 )
2026-06-15 13:21:02 +02:00
Mees Frensel
5a3be158b9
fix(web): show album names in duplicate review ( #29080 )
2026-06-15 12:47:17 +02:00
maxinegardenas
b21af78454
fix(web): correctly handle person search with more than 100 results ( #29002 )
2026-06-12 20:04:52 +00:00
Santo Shakil
abd62d9295
fix(mobile): show like and comment options on album photo deep links ( #29020 )
2026-06-12 14:55:26 -05:00
Jason Rasmussen
e31d4aa909
fix: prerelease draft ( #29034 )
2026-06-12 12:43:19 -04:00
Daniel Dietzler
43b2d04e2c
fix: version tests ( #29032 )
2026-06-12 15:54:42 +00:00
github-actions
e4dbe777a0
chore: version v3.0.0-rc.0
2026-06-12 14:55:39 +00:00
Weblate (bot)
d36aed4c5b
chore: update translations ( #27764 )
...
chore(web): update translations
Translate-URL: https://hosted.weblate.org/projects/immich/immich/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/af/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/az/
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/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/de_CH/
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/eu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fil/
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/gl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/gsw/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/gu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hr/
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/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/mn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/mr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ms/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
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/sq/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/te/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uz/
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/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translation: Immich/immich
Co-authored-by: -J- <heyj0e@tuta.io >
Co-authored-by: 12LuA <Luca.strack@gmx.de >
Co-authored-by: AM <alex2539rulez@yahoo.com >
Co-authored-by: Abdel rahman Abdaldeen <abd.abdaldeen@gmail.com >
Co-authored-by: Abhijeet Bonde <abhijeetbonde19@gmail.com >
Co-authored-by: Adam <adammarzec2@protonmail.com >
Co-authored-by: Adam Havránek <adamhavra@seznam.cz >
Co-authored-by: Ah Tui <kit719@gmail.com >
Co-authored-by: Ahmed Khaleel Shihab <ahmed91shihab@gmail.com >
Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com >
Co-authored-by: Alessandro Mandelli <mandelli.alessandro@ngi.it >
Co-authored-by: Alex <darkstylo@gmail.com >
Co-authored-by: Alvaro Samudio <alvarosamudio1@gmail.com >
Co-authored-by: Andreas Fjetland <andreas@fjet.no >
Co-authored-by: Andreas W. Pross <andreas.pross@styletronix.net >
Co-authored-by: Andrii Solianyk <asolianik2015@gmail.com >
Co-authored-by: Andrius <sndriuss@gmail.com >
Co-authored-by: AntonPalmqvist <apq@users.noreply.hosted.weblate.org >
Co-authored-by: Antonio Labate <antoniolabate19@gmail.com >
Co-authored-by: Arif Budiman <arifpedia@gmail.com >
Co-authored-by: Avihai Zarouk <myaulamyau@gmail.com >
Co-authored-by: Bartłomiej <20731216+Jarsey45@users.noreply.github.com >
Co-authored-by: Bas Wevers <baswevers@gmail.com >
Co-authored-by: Bat-Uyanga Batdelger <batuyanga@gmail.com >
Co-authored-by: Benjamin Serec <serec.benjamin@gmail.com >
Co-authored-by: Bonnie 20402 <darioperreira2013@gmail.com >
Co-authored-by: Bora Atıcı <boratici.acc@gmail.com >
Co-authored-by: BrekkeLiten <david@brek.ke >
Co-authored-by: Calvin Erfmann <calvin.erfmann@pm.me >
Co-authored-by: Carlo Beltrame <weblate@pendantmusic.ch >
Co-authored-by: Carlos de Freitas <cjcfreitas@gmail.com >
Co-authored-by: Charles Frégeau <fregeauc@outlook.com >
Co-authored-by: Climent Fernández Andújar <climentfean@gmail.com >
Co-authored-by: Clément Pingliez <pingliezclement@gmail.com >
Co-authored-by: Cédric <cedric@laubacher.io >
Co-authored-by: D S <weblate.2w8z9@slmail.me >
Co-authored-by: Dan <rattly@duck.com >
Co-authored-by: David Bono <dbono2454@gmail.com >
Co-authored-by: David Maneiro <david.maneiro8@gmail.com >
Co-authored-by: David Miguel Rodrigues Rosa <dmr.rosa@gmail.com >
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com >
Co-authored-by: DevServs <bonov@mail.ru >
Co-authored-by: Dmitry Banny <dj.icecore@gmail.com >
Co-authored-by: Dmytro Sergienko <dima.sergienko@gmail.com >
Co-authored-by: Don't use my name <maxabmeyer@gmail.com >
Co-authored-by: Dusan Hlavaty <dhlavaty@gmail.com >
Co-authored-by: Dániel Gál <galdaniel.school@gmail.com >
Co-authored-by: Elyas Sindi <elyassindi@proton.me >
Co-authored-by: Enric Pagès i Gassull <enricpages@hotmail.com >
Co-authored-by: Felix Noren <fnoren17@gmail.com >
Co-authored-by: Filipe Monteiro <pimonteiro@protonmail.com >
Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org >
Co-authored-by: Focron <eliaelmas55@gmail.com >
Co-authored-by: Frank Paul Silye <frankps@gmail.com >
Co-authored-by: Gabriel <jellyfin.sensitize624@passmail.net >
Co-authored-by: Gnubblz <philipp@phild.de >
Co-authored-by: HackingAll <hacking.all.YT@gmail.com >
Co-authored-by: Hamza Foziljonov <hamza.uztranslator@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: Indrek Haav <indrekhaav@users.noreply.hosted.weblate.org >
Co-authored-by: Iren <iren.biggel@gmail.com >
Co-authored-by: Ivan Dimitrov <idimitrov08@gmail.com >
Co-authored-by: JPar99 <github.wad969@passmail.com >
Co-authored-by: Jarle K. Hopland <jarlekh@gmail.com >
Co-authored-by: Jayson <mrjaysonbulugagao@gmail.com >
Co-authored-by: Jeanré du Plessis <jeanreduplessis2000@gmail.com >
Co-authored-by: Jedediah Russell <john17three@protonmail.com >
Co-authored-by: Jeppe Nellemann <jepnel@proton.me >
Co-authored-by: Joel Molina Navarro <joelmolinanavarro21@gmail.com >
Co-authored-by: Jozef Gaal <preklady@mayday.sk >
Co-authored-by: João M. Gabaldi <opera-hidras-0r@icloud.com >
Co-authored-by: Juan Casimiro <jc7946033@gmail.com >
Co-authored-by: Julius Lehmann <julius.lehmann.privat@gmail.com >
Co-authored-by: KecskeTech <teonyitas@gmail.com >
Co-authored-by: Kristian Franceschini <kristian@kmsfhost.com >
Co-authored-by: Leo Bottaro <github@leobottaro.com >
Co-authored-by: Loonatiq <Loona9422@pm.me >
Co-authored-by: Lorenz Schmid <schmidlorenz@gmx.ch >
Co-authored-by: MSDNicrosoft <i@msdnicrosoft.work >
Co-authored-by: Manfred Bjørlin <manfred.bjorlin@gmail.com >
Co-authored-by: MarcSerraPeralta <marcserraperalta@gmail.com >
Co-authored-by: Marco Janssen <Marco@neverminds.net >
Co-authored-by: Marco Mertel <mertel.marco@gmail.com >
Co-authored-by: Marian Wolf <marian.wolf2008@gmail.com >
Co-authored-by: Martin <weblate.recoil725@passmail.net >
Co-authored-by: Matjaž T. <matjaz@moj-svet.si >
Co-authored-by: Matteo Morari <matteo.morari04@gmail.com >
Co-authored-by: Matthias Cramer <matthias.cramer@iway.ch >
Co-authored-by: Maxi Herczegh <maxiherczegh@outlook.com >
Co-authored-by: Maćvej Pažytnykh <ma.pazhitnykh@gmail.com >
Co-authored-by: Mees Frensel <meesfrensel@gmail.com >
Co-authored-by: Melih Ozkan <malihozkan156@gmail.com >
Co-authored-by: Mike Moolenaar <mike.moolenaar@posteo.nl >
Co-authored-by: Milos <milos@milic.in >
Co-authored-by: Molnár Bence Attila <it@bence0327.hu >
Co-authored-by: Mona Lisa <monalisa@users.noreply.hosted.weblate.org >
Co-authored-by: Mona Lisa <nickwick@users.noreply.hosted.weblate.org >
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com >
Co-authored-by: NAL <niko.a.leinonen@gmail.com >
Co-authored-by: Nagy Krisztián <nkgy17@gmail.com >
Co-authored-by: Nandhakumar Subramanian <nandha.kumar790@gmail.com >
Co-authored-by: Nicholas Amadori <nico282@gmail.com >
Co-authored-by: Nicola Bortoletto <nicola.bortoletto@live.com >
Co-authored-by: Nuno Aparicio <nunoxyz@gmail.com >
Co-authored-by: OffsetMonkey538 <offsetmonkey538@gmail.com >
Co-authored-by: Olaf Nielsen <solluh@mail.de >
Co-authored-by: Oleksandr Yurov <oyurov@icloud.com >
Co-authored-by: Osama <laptooxz@proton.me >
Co-authored-by: PPNplus <ppnplus@protonmail.com >
Co-authored-by: Patrick Raths <piroh1990@gmail.com >
Co-authored-by: Pavel Miniutka <pavel.miniutka@gmail.com >
Co-authored-by: Pavlo Sydoriuk <sidopas@gmail.com >
Co-authored-by: Pazystamas <pazystamas@gmail.com >
Co-authored-by: Petri Hämäläinen <petri.hamalainen@mailbox.org >
Co-authored-by: Phillip Kang <phillipxkang@gmail.com >
Co-authored-by: Piero B. <biagini93@gmail.com >
Co-authored-by: Piero Bi <biagini93@ik.me >
Co-authored-by: PilgrimToHyperion <pilgrimtohyperion@gmail.com >
Co-authored-by: Piotr Pazhytnykh <pazhitnykhpetr@gmail.com >
Co-authored-by: PontusÖsterlindh <pontus@osterlindh.com >
Co-authored-by: Rafael Henrique <rafaelmobile124@gmail.com >
Co-authored-by: Raul <raul.plesa@gmail.com >
Co-authored-by: Ravuru Umesh <umeshravuru@gmail.com >
Co-authored-by: Remco <remco@pander.io >
Co-authored-by: Ricardo Tomazela do Prado <kao.prado@gmail.com >
Co-authored-by: Richiondrugs <riccardocastellano07@gmail.com >
Co-authored-by: Robert Virkus <robert.virkus@enough.de >
Co-authored-by: Robin Schanbacher <robin@schanbros.de >
Co-authored-by: Roger Pueyo Centelles <roger.pueyo@guifi.net >
Co-authored-by: Sebastian <sebastiankiwidk@gmail.com >
Co-authored-by: Seungbeom Ha <tmdqja75@gmail.com >
Co-authored-by: Shaw <shawyunz@gmail.com >
Co-authored-by: Simone Ognibene <ognibene2001@gmail.com >
Co-authored-by: Steffen Seubert <seubert.steffen@gmail.com >
Co-authored-by: Sven Kortekaas <github@skortekaas.nl >
Co-authored-by: Sylvain Pichon <service@spichon.fr >
Co-authored-by: TA <tobi@warsnich.de >
Co-authored-by: TLuce <thomas.luce@ik.me >
Co-authored-by: Taleh Rzayev <talehji@gmail.com >
Co-authored-by: Thomas van Gemert <dendolla@users.noreply.hosted.weblate.org >
Co-authored-by: Thế Anh Hoàng <the.anh.ls@gmail.com >
Co-authored-by: Tijs-B <tijs.bergmans@telenet.be >
Co-authored-by: Tim Morley <weblate.3919org@timsk.org >
Co-authored-by: Tom Mueller <muellertomgabsnichtmehr@gmail.com >
Co-authored-by: Tomislav Renić <trenic@gmail.com >
Co-authored-by: UDP <udp@users.noreply.hosted.weblate.org >
Co-authored-by: Ulices <hasecilu@tuta.io >
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org >
Co-authored-by: VRADDB <dimitri.debruyne@vanroey.be >
Co-authored-by: Vegard Fladby <vegard@fladby.org >
Co-authored-by: Vishal Ghelani <vishal.ghelani@gmail.com >
Co-authored-by: WellsTsai <dan50907@gmail.com >
Co-authored-by: Yago Raña Gayoso <yago.rana.gayoso@gmail.com >
Co-authored-by: Yohsi <yohan.simard@proton.me >
Co-authored-by: Yolopix <13918281+y0lopix@users.noreply.github.com >
Co-authored-by: Yusuf Soyipek <yusuf@soyipek.com >
Co-authored-by: Zhigang Wu <wu.zhigang@xuan-ming.net >
Co-authored-by: Zillazapdos <harald.vagle.undheim@icloud.com >
Co-authored-by: adun <github.scariness216@passinbox.com >
Co-authored-by: anton garcias <isaga.percompartir@gmail.com >
Co-authored-by: arvissidorovs <arvis.sidorovs@gmail.com >
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl >
Co-authored-by: bosund <bosund@gmail.com >
Co-authored-by: chamdim <chamdim@protonmail.com >
Co-authored-by: daniqss <danielqueijo14@gmail.com >
Co-authored-by: david7xw <davdavid7xw@gmail.com >
Co-authored-by: dkorecko <github@david.korecko.com >
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org >
Co-authored-by: fascinate722 <fascinate722@gmail.com >
Co-authored-by: guillermo <guillermoremesa@gmail.com >
Co-authored-by: h1nnak <gerlich@mailbox.org >
Co-authored-by: hanlie <Hanlie@users.noreply.hosted.weblate.org >
Co-authored-by: iwonder <iwonder@users.noreply.hosted.weblate.org >
Co-authored-by: jasoisjaso <jaso.bih@gmail.com >
Co-authored-by: jicetus. <jicetus@users.noreply.hosted.weblate.org >
Co-authored-by: jmilovic <krunazajecar@gmail.com >
Co-authored-by: josuloo99 <josuloidi1999@gmail.com >
Co-authored-by: jw2122 <johwol25@gmail.com >
Co-authored-by: kylo32 <kylo32@gmail.com >
Co-authored-by: miiyuh <itsazripp2@gmail.com >
Co-authored-by: millallo <millallo@tiscali.it >
Co-authored-by: muziqaz <muziqaz@users.noreply.hosted.weblate.org >
Co-authored-by: oliwia <mroskarez@gmail.com >
Co-authored-by: on9686 <on9686@gmail.com >
Co-authored-by: outsider-tabby-pox <outsider-tabby-pox@duck.com >
Co-authored-by: pneuly <pneuly@gmail.com >
Co-authored-by: pyccl <changcongliang@163.com >
Co-authored-by: rubes <mail@armd.one >
Co-authored-by: s0nprem0 <s0nprem0@proton.me >
Co-authored-by: scudo <whiteshield.tg@protonmail.com >
Co-authored-by: slick-daddy <129640104+slick-daddy@users.noreply.github.com >
Co-authored-by: tct123 <tct1234@protonmail.com >
Co-authored-by: traumanndylan <traumanndylan@gmail.com >
Co-authored-by: tvirolai <tuomo.virolainen@rebase.fi >
Co-authored-by: veiskiboi <vesahok@gmail.com >
Co-authored-by: waclaw66 <waclaw66@seznam.cz >
Co-authored-by: x0x0b <42596409+x0x0b@users.noreply.github.com >
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com >
Co-authored-by: Сергій Савчук <serge.savchuk@gmail.com >
Co-authored-by: 星 <seirun124@gmail.com >
Co-authored-by: 정동걸 <i.jdk.dev@gmail.com >
2026-06-12 14:52:03 +00:00
Alex
f1da9d2429
chore: update perm for build mobile in release gha ( #29027 )
2026-06-12 14:34:11 +00:00
Mees Frensel
232ca3cf3f
chore(web): clarify workflow triggers ( #29026 )
2026-06-12 19:43:57 +05:30
Matthew Momjian
50f1121459
fix(docs): v3 bumps ( #29007 )
...
* v3 bumps
* format
2026-06-12 09:34:35 -04:00
Mees Frensel
892397807c
chore(web): add switch case exhaustiveness lint ( #29015 )
2026-06-12 09:30:19 -04:00
Timon
714c647937
fix(web): focus on scrollable element on load ( #29004 )
...
fix(web): focus on scrollable element on load
2026-06-12 12:59:16 +02:00
Spencer Stingley
c56f477a0f
fix: Improving scroll behavior on image stacks that overflow the screen ( #28885 )
...
Co-authored-by: Spencer Stingley <accounts@blankcanvas.io >
Co-authored-by: Mees Frensel <33722705+meesfrensel@users.noreply.github.com >
2026-06-12 11:50:10 +02:00
shenlong
296cd40da9
refactor: nullable settings key ( #28988 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-11 18:05:50 -05:00
Alex
a17276fd1e
chore: remove incompatibility message warning ( #28993 )
...
* chore: remove incompatibility message warning
* lint
2026-06-11 18:05:19 -05:00
Jason Rasmussen
c3e23a6b3a
fix: schema configuration ( #29000 )
2026-06-11 18:05:07 -05:00
Jason Rasmussen
13a7b4a276
fix: pump script ( #28998 )
2026-06-11 18:04:42 -05:00
renovate[bot]
563cff26bf
chore(deps): update machine-learning ( #28934 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-11 14:40:20 -04:00
Daniel Dietzler
e81b6778ca
fix: workflow page reactivity issues ( #28996 )
2026-06-11 13:13:25 -05:00
Alex
aa6af7ce36
chore: workflow trigger i18n ( #28992 )
2026-06-11 10:55:18 -05:00
Santo Shakil
59d036a2ed
fix(mobile): give android notification channels proper names ( #28986 )
2026-06-11 15:07:37 +00:00
renovate[bot]
7a5c014558
fix(deps): update typescript-projects ( #28627 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-06-11 17:02:54 +02:00
Santo Shakil
e2954b6411
fix(mobile): show albums whose assets are all trashed ( #28985 )
2026-06-11 09:41:02 -05:00
renovate[bot]
0fb18ed241
chore(deps): update dependency commander to v15 ( #28936 )
2026-06-11 12:18:25 +02:00
renovate[bot]
c0b3b08ce6
chore(deps): update exiftool to v35.21.0 ( #28933 )
2026-06-11 12:16:13 +02:00
Mees Frensel
e8a1084e5b
fix(web): heatmap layout and date formatting ( #28976 )
...
* fix(web): heatmap layout and date formatting
* chore
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com >
2026-06-11 08:36:34 +00:00
Santo Shakil
d227ba2d51
fix(mobile): stale details after editing asset date ( #28977 )
2026-06-10 21:32:02 -05:00
Santo Shakil
9cb94343d1
fix(mobile): keep timezone when editing asset date time ( #28978 )
...
* fix(mobile): keep timezone when editing asset date time
* fix(mobile): negative utc offsets with minutes off by an hour
2026-06-10 21:31:31 -05:00
Mert
aa126e377c
fix(server): add hint header for segment after init.mp4 ( #28867 )
...
* add hint header for segment after init.mp4
* use zod
* actually validate
* update openapi
* linting
2026-06-10 19:18:36 -04:00
Paul Makles
74878628c8
feat: integrity check jobs (missing files, untracked files, checksums) ( #24205 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
Signed-off-by: izzy <me@insrt.uk >
2026-06-10 21:02:27 +02:00
Mees Frensel
4ead3e697d
chore(server): update asset not ready error messages ( #28968 )
2026-06-10 20:23:17 +02:00
Daniel Dietzler
fb798a8f29
chore: remove person workflow elements ( #28974 )
2026-06-10 18:49:33 +02:00
Santo Shakil
07813135b5
fix(mobile): deduplicate people in asset details panel ( #28972 )
2026-06-10 14:37:45 +00:00
Daniel Dietzler
92a75b0cd3
fix(web): person that is in the same asset multiple times ( #28971 )
2026-06-10 09:32:29 -05:00
Alex
8132e8a38c
feat: image quality option in sharing ( #28918 )
...
* feat: share with quality options
* merge main
* clean up
* refactor
* translation
* translation
* add settings and default behavior
* fix: lint
* cleanup
* merge main
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-10 09:26:09 -05:00
Yaros
43f2f56530
fix(mobile): map timeline layout crash ( #28878 )
2026-06-10 14:02:36 +00:00
renovate[bot]
e580bb5d0a
chore(deps): update github-actions ( #28930 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-10 09:45:02 -04:00
bo0tzz
d3680871ef
feat: warn if microservices worker is missing ( #28869 )
...
* feat: warn if microservices worker is missing
* fix: ci
2026-06-10 09:31:32 -04:00
Stefan Yoshovski
b9b1cc2f65
feat(web): warn before overwriting existing locations in geolocation utility ( #28840 )
2026-06-10 11:09:12 +00:00
Pedro Vieira
7d198956a6
fix(web): Prevent face editor from closing when dismissing tag confirmation ( #28900 )
2026-06-10 12:31:52 +02:00
Pedro Vieira
a7b5f81701
fix: normalize diacritics in person name search in Web & Mobile ( #28887 )
2026-06-10 12:05:07 +02:00
Timon
5c38373808
refactor(server): allow -1 rating again ( #28886 )
2026-06-10 10:55:51 +02:00
Ben Beckford
1ce961fbb3
feat: geolocation workflow filter ( #28961 )
...
* feat: geolocation workflow filter
* refactor: geolocation workflow filter
* feat: location filter workflow example
2026-06-10 05:05:01 +00:00
shenlong
4bc411b7c7
revert: clear album description sends null instead of empty string ( #28956 )
...
Revert "fix(mobile): clear album description sends null instead of empty string (#28817 )"
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-09 22:05:37 -05:00
Santo Shakil
11c1025271
fix(mobile): add album picker to archive bottom sheet ( #28953 )
2026-06-09 14:45:32 -05:00
Jason Rasmussen
8b5385f94b
feat: add prerelease support to pump version ( #28922 )
...
refactor: pump script
2026-06-09 14:42:10 -04:00
Alex
d3438cf4a7
chore: improve OCR button and display on mobile ( #28926 )
...
* chore: improve OCR button and display on mobile
* Refactor
* format
* simplify ocr toggle button
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-09 13:20:18 -05:00
Alex
6c5c6a1035
fix: realign badge icon ( #28951 )
2026-06-09 11:44:29 -05:00
Santo Shakil
c928787b3e
fix(mobile): show error when creating an album fails ( #28942 )
...
it failed silently when the server was down. also disable create for blank titles.
2026-06-09 16:41:32 +00:00
Santo Shakil
fe9ca4f40a
fix(mobile): show memory and folder dates in local time ( #28941 )
2026-06-09 10:55:43 -05:00
Savely Krasovsky
a665cec920
feat(ml): update Intel graphics compiler and compute runtime ( #28924 )
...
feat(ml): update Intel graphics compiler and compute runtime to latest versions
2026-06-09 11:08:03 -04:00
Alex
568283a8eb
fix: stale translation generation ( #28949 )
2026-06-09 14:28:48 +00:00
renovate[bot]
f382624e68
fix(deps): update @immich/ui to ^0.80.0 ( #28935 )
2026-06-09 11:19:41 +02:00
renovate[bot]
24dad15636
chore(deps): update grafana monorepo to v12.4.4 ( #28931 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-09 00:05:01 -04:00
renovate[bot]
7ab533b57b
chore(deps): update dependency vitest to v3.2.6 [security] ( #28915 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-09 00:03:56 -04:00
Timon
d10153bbc7
fix(server): hide isFavorite from album asset sync stream ( #28923 )
...
* fix(server): hide isFavorite from album asset sync stream
* some tests
* Revert "some tests"
This reverts commit 3242e6961c .
* alter existing test to clear test's intent
* Reapply "some tests"
This reverts commit f1d4c47f5f .
* drop one
* sql
2026-06-09 00:03:03 -04:00
Timon
b846afeb08
chore(server): tests for hide isFavorite for partner assets ( #28927 )
2026-06-09 00:01:39 -04:00
shenlong
e222b19576
fix: do not handle drag without enough scrub area ( #28921 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-08 16:47:08 -05:00
shenlong
1fee99cd2a
ci: verify pigeon autogen output during static analysis ( #28920 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-08 16:46:51 -05:00
bo0tzz
70bb7e4b7e
fix: step name reference in fix-format.yml ( #28912 )
2026-06-08 14:32:34 -04:00
Yaros
f973927c68
docs: replace make for mise ( #28913 )
...
* docs: replace make for mise
* chore: remove makefile comment
2026-06-08 14:31:23 -04:00
Daniel Dietzler
e29267359e
fix: detail panel faces reactivity issues ( #28910 )
2026-06-08 18:07:57 +02:00
joojoooo
164cda87a3
fix(web): use irot/imir tags for HEIF Orientation ( #27820 )
...
* fix(web): use irot/imir tags for HEIF Orientation
* ignore Exif Orientation for HEIF images per MIAF standard compliance
* add Rotation and Mirroring to exiftool numericTags
* add isHeifBasedImage function to detect HEIF-based image extensions
* add getHeifBasedOrientation method to map irot/imir tags to ExifOrientation
* removed mirroring, simplified code
* Removed "Based" in "heifBased"
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-06-08 09:33:28 -04:00
renovate[bot]
12d344efe0
chore(deps): update pnpm to v11 ( #28773 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-06-08 14:44:45 +02:00
Timon
474efd39f8
refactor(server): prevent sharing album with owner by filtering out user from albumUsers ( #28891 )
...
fix(server): prevent sharing album with owner by filtering out user from albumUsers
2026-06-07 17:46:26 -04:00
Timon
9e453440e6
refactor(server): deprecate PUT routes in favor of PATCH ( #28859 )
...
* add patch routes and deprecate put
* gen client
2026-06-07 09:40:01 -04:00
Timon
8860817c76
chore: global Java ( #28874 )
2026-06-07 09:36:28 -04:00
shenlong
3c108a8d22
fix: reload timeline on group by setting change ( #28864 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-05 19:08:39 +00:00
Santo Shakil
8d553d6e9c
chore: add santo to mobile codeowners ( #28863 )
2026-06-05 17:24:07 +00:00
Yaros
346b98ed4f
feat(mobile): min face count per-user ( #28805 )
2026-06-05 13:16:07 -04:00
shenlong
60683bd91e
fix: cross isolate drift watchers ( #28862 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-05 12:15:41 -05:00
Daniel Dietzler
b6938614b2
feat: latest language requests ( #28858 )
2026-06-05 18:01:27 +02:00
bo0tzz
98961a1d36
fix: filter close-duplicates for org members ( #28856 )
2026-06-05 10:34:29 -05:00
Daniel Dietzler
5ae95102b4
chore: workflow drag and drop improvements ( #28838 )
2026-06-04 21:45:31 -05:00
shenlong
216d0ba365
fix: notify timeline updates after sync ( #28846 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-04 18:17:04 -05:00
Timon
28e42f7e29
refactor(mobile): use Optional only on API boundary ( #28845 )
2026-06-05 04:29:13 +05:30
Yaros
733373c0ca
feat(mobile): ocr support ( #26523 )
2026-06-05 04:29:03 +05:30
shenlong
5617d6ca7c
ci: ios builds ( #28847 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-05 03:50:39 +05:30
Brandon Wees
875dd2dead
fix: check continue origins with URL constructor ( #28835 )
...
* fix: check origins with URL constructor
* fix: fallback
* chore: tests
2026-06-04 16:20:05 -04:00
Jason Rasmussen
9043bc8435
fix: error handling ( #28843 )
2026-06-04 16:19:16 -04:00
Abhijeet Sanjiv Bonde
b3d49045de
feat: user upload heatmap ( #28593 )
...
* Feat - Heatmap
* Implemented Comments to prettify and code cleanup
* fixing code to pass cases.
* fixing errors for OpenAPI Clients
* Improving the code.
* Fix code
* Rerun generated client check
* Rerun generated client
* feat: command for user pages (#28554 )
* fix(web): timeline stuttering with many assets in 1 day (#28509 )
* fix(web): timeline stuttering with many assets in 1 day
* cache isInOrNearViewport per day
* skip inOrNearViewport check on first run
* chore(ml): allow insightface 1.x (#28595 )
* chore(ml): allow insightface 1.x
The new insightface 1.0 release appears to have no breaking code changes nor relevant license changes ([before](https://github.com/deepinsight/insightface/blob/2a78baec428354883e0cda39c54b555a5ed8358a/README.md ), [after](https://github.com/deepinsight/insightface/blob/70f3269ea628d0658c5723976944c9de414e96f8/README.md ), c.f. https://github.com/immich-app/immich/blob/fd7ddfef54cdf2b6256c4fc08bc5ff3f86176775/machine-learning/README.md ), and it works on my machine.
* Update uv.lock
* please excuse my incompetence
* Triggering the actions.
* bad merge
* Fix code
* Code clear
* Resolve conflict
* Resolve conflict
* Resolve conflict
* Resolve errors
* Resolve errors
* Resolve errors more
* chore: clean up
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
Co-authored-by: Ben Beckford <ben@benjaminbeckford.com >
Co-authored-by: Aaron Liu <aaronliu0130@gmail.com >
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-06-04 15:36:09 -04:00
shenlong
58528cad08
refactor: replace drift_flutter with drift_sqlite_async ( #28440 )
...
replace drift_flutter with drift_sqlite_async
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-05 00:01:50 +05:30
Mees Frensel
99281de6ab
refactor!: disallow star rating < 1 ( #27896 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
Co-authored-by: timonrieger <mail@timonrieger.de >
2026-06-04 17:06:28 +00:00
Daniel Dietzler
6268d23d12
fix: restore video play/plause shortcut ( #28837 )
2026-06-04 18:51:16 +02:00
Daniel Dietzler
d7999ce1d1
feat: workflows drag and drop enhancements ( #28764 )
2026-06-04 10:46:51 -05:00
shenlong
6b0fd89cd2
refactor: partner-page ( #28783 )
...
* refactor: partner-page
* cleanup
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-04 09:05:45 -04:00
Daniel Dietzler
4b0adb7a1e
fix: stack arrow navigation when not directly navigating to an asset ( #28828 )
2026-06-04 14:49:12 +02:00
shenlong
de70d19d20
feat: show notification and battery optimization warning ( #26610 )
...
* feat: show notification and battery optimization warning
* cleanup
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-04 12:24:39 +00:00
bo0tzz
7155bb1e80
chore: fix up docs placeholders ( #28814 )
2026-06-04 08:19:40 -04:00
Alex
fa08e72d30
chore: scope flutter install from mise ( #28820 )
...
* chore: scope flutter install from mise
* ci: scope use-mise to mobile directory
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-04 17:24:38 +05:30
Timon
e2de8c7c53
refactor(server)!: remove changeExpiryTime ( #28816 )
...
* fix(mobile): clear shared link password
* fix(mobile): clear shared link description
* fix(mobile): clear shared link expiry
* refactor(server)!: remove changeExpiryTime
* fix(mobile): clear shared link expiry
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-06-04 08:35:45 +00:00
Santo Shakil
429e181c8f
fix(mobile): run iOS bg task phases in parallel ( #28293 )
...
onIosUpload runs sync local, sync remote, hash and handle backup
sequentially. on the bg refresh task path that's a 20s budget from
iOS, and sync + hash usually eat all of it before backup gets a turn
to enqueue any candidates.
these phases don't actually depend on each other. local + remote sync
touch different tables. hash works off whatever's already in drift.
handle backup reads candidates and just enqueues to URLSession bg.
anything one phase produces in this fire shows up to the others on
the next fire, and server-side dedup catches the rare race where
backup enqueues something sync remote was about to mark as already
uploaded.
so this runs all four concurrently via Future.wait, with hash getting
the full maxSeconds-1 budget instead of a fixed 5s. outer budget
timeout still caps everything before iOS expires.
second small change: getAssetsToHash orders by createdAt DESC instead
of id ASC to match getCandidates. when hash runs inside a refresh
fire it processes recent photos first.
2026-06-03 20:13:52 -05:00
winston
7f611d9031
test: fix tests when OpenVINO provider is available ( #28802 )
...
mocking `onnxruntime.get_available_providers()` to always use the CPU EP.
2026-06-03 20:52:08 -04:00
Timon
e94e22f3f8
fix(server): respect timezone in iso date string encoding ( #28810 )
2026-06-03 19:00:10 -04:00
Timon
4a8c3b60be
fix(mobile): clear album description sends null instead of empty string ( #28817 )
2026-06-03 18:22:19 -04:00
Timon
2190aa72a8
refactor(server): zod int validation ( #28804 )
2026-06-03 18:21:07 -04:00
Timon
d21cb28526
fix(mobile): shared link edit sends explicit null instead of empty string ( #28812 )
...
* fix(mobile): clear shared link password
* fix(mobile): clear shared link description
* fix(mobile): clear shared link expiry
2026-06-03 18:19:35 -04:00
Timon
5c33eb3204
refactor(server)!: drop empty string to null conversion ( #28808 )
...
refactor(server): drop empty string to null conversion
2026-06-03 18:16:53 -04:00
Mert
137687bc0f
fix(web): set src for progressive video player ( #28813 )
...
set src
2026-06-03 17:07:23 -04:00
Peter Ombodi
9d4a6614b1
feat(mobile): Android. Immich as a gallery / image viewer app ( #26109 )
...
* feat(mobile): handle Android ACTION_VIEW intent
- add ViewIntent Pigeon API and generated bindings
- implement Android ViewIntentPlugin + iOS no-op host
- route ExternalMediaViewer by ViewIntentAttachment
- buffer pending view intents and flush on user ready/resume
* feat(mobile): fallback to computed checksum for timeline match
- hash local asset on-demand when checksum missing
- search main timeline by localId or checksum before standalone viewer
- persist computed hash into local_asset_entity
* fix(mobile): proper handling is user authenticated
* feat(mobile): open ACTION_VIEW fallback in AssetViewer
drop ExternalMediaViewer route
* feat(mobile): add logger
* test(mobile): add unit tests for view intent pending/flush flow
* fix(mobile): fix format
* fix(mobile): remove redundant iOS code
update code related to LocalAsset model and asset viewer
* refactor(mobile): simplify view intent flow and support file-backed ACTION_VIEW assets
remove redundant view intent model/repository layer
handle transient ACTION_VIEW files in viewer/upload flow
clean up managed temp files for fallback assets
* refactor(mobile): extract MediaStore utils and resolve view intents via merged assets
* refactor(mobile): move deferred view intents into providers, split view-intent providers, and clean up ACTION_VIEW handling
* refactor(mobile): resolve merge conflicts
use NativeSyncApi for hash files instead method from removed BackgroundServicePlugin.kt
* style(mobile): format files
* style(mobile): format files #2
* refactor(mobile): lazily materialize view-intent files and clean up temp-file handling
* fix(mobile): flush pending view intents after login navigation
* refactor(mobile): split view intent handler by platform and trigger it from app events
* refactor(mobile): move view intent handling behind platform-specific factories
* refactor(mobile): simplify code
* fix(mobile): hand off deep-link viewer to main timeline after upload
Add MainTimelineHandoffCoordinator to switch the asset viewer to the main timeline once a view-intent asset is uploaded and becomes available, and guard viewer reload/navigation transitions to avoid race conditions and crashes.
* refactor(mobile): use remote asset ids for view intent handoff and simplify resolver
* refactor(mobile): resolve merge conflicts
* style(mobile): reformat code
* style(mobile): reformat code #2
* fix(mobile): stabilize Android view intent asset resolution and fallback viewer
* refactor(mobile): share AssetViewer pre-navigation state preparation
* fix(mobile): wait for main timeline before deferred view intent handoff
* refactor(mobile): decouple view intent asset resolver from providers
* fix(mobile): avoid double pop when canceling upload dialog
* fix(mobile): resolve view intent MIME type with fallbacks
* docs(mobile): clarify view intent fallback asset TODO
* fix(mobile): resolve merge conflicts
* cleanup
* lint
---------
Co-authored-by: Peter Ombodi <peter.ombodi@gmail.com >
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex Tran <alex.tran1502@gmail.com >
2026-06-03 12:05:52 -05:00
Jason Rasmussen
e4352a7817
fix: error log on aborted uploads ( #28806 )
2026-06-03 12:47:38 -04:00
shenlong
911dde39c9
ci: verify mobile backward compatibility ( #28786 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-03 15:21:23 +00:00
moversity
afa836181c
fix(cli): prevent out-of-memory on file upload due to undici storing the request body ( #28723 )
...
fix(cli): add fetch param to prevent OOM of upload
Issue due to undici storing the entire request body in memory.
Related undici bug report: https://github.com/nodejs/undici/issues/4058
Fixes https://github.com/immich-app/immich/issues/28720
Signed-off-by: moversity <148445403+moversity@users.noreply.github.com >
2026-06-03 15:19:35 +00:00
Mert
963862b1b9
fix(mobile): proper background task cleanup ( #28694 )
...
* event-based cancellation
wire hash cancellation
await cleanup
remove forced kill
add regression tests
abort sync requests
fix cleanup ordering in teardown
exit isolate
test background sync
test sigabrt crash
cleanup
* abort local sync
2026-06-03 08:16:19 -04:00
Timon
96d521e149
feat(mobile): add three-state field serialization ( #27231 )
...
* bump to v7.22.0 and update patching
* gen client
* migrate mobile call sites
2026-06-03 08:13:17 -04:00
shenlong
1bb7517da0
chore: pump flutter to 3.44.1 ( #28785 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-02 23:45:31 -05:00
shenlong
814c2e32e4
chore: patch minFaces and realtimeTranscoding ( #28784 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-03 09:15:31 +05:30
immich-tofu[bot]
92841f311f
Added Code of conduct
2026-06-02 21:57:50 +00:00
immich-tofu[bot]
9d2e576630
chore: modify .github/FUNDING.yml
2026-06-02 21:57:47 +00:00
immich-tofu[bot]
936418a464
chore: use immich.app email for security reports ( #10594 )
...
chore: use immich.app email for security reports
2026-06-02 21:57:45 +00:00
Daniel Dietzler
84c75d95c7
fix: migration order ( #28779 )
2026-06-02 21:33:13 +00:00
shenlong
9287fa08c6
fix!: unauthorized face creation ( #28561 )
...
* fix: unauthorized face creation
* review changes
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-02 22:44:11 +05:30
renovate[bot]
408e1180ca
chore(deps): update machine-learning ( #28239 )
...
* chore(deps): update machine-learning
* fix typing
* fix deprecation log
* no control socket
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com >
2026-06-02 16:44:50 +00:00
renovate[bot]
07f19d2caa
chore(deps): update base-image to v202606021219 ( #28771 )
2026-06-02 18:31:52 +02:00
Tim Jones
368cb7a4ad
feat: minimum face count per user ( #27452 )
...
* add user metadata table and use to filter persons in person.getAllForUser query
* update PersonRepository.getAllForUser query
* remove minFaces from PersonSearchOptions interface
* fix person.getAllForUser query
* update types and openapi specs
* add minFaces field to user settings page
* remove old arg from tests
* add e2e test to verify minimumFace user preference
* add i18n label and description for english
* update default min faces
* fetch minFaces ML default and use as per-user default in frontend
* update e2e tests
* fix bugs in people getAllForUser query
* update person getNumberOfPeople query to reflect correct number of people according to minFaces threshold
* updated mobile openapi specs?
* use subquery in coalesce instead of join
* remove out of scope query update
2026-06-02 18:05:55 +02:00
Timon
109e0a7ad0
fix(mobile): invisible ink splashes in asset sheet ( #28756 )
2026-06-02 10:37:20 -05:00
Timon
59750dad7d
feat: places in context search ( #28768 )
2026-06-02 17:19:59 +02:00
okxint
13ecfc8876
fix(web): prevent partner assets from being selected in geolocation utility ( #28737 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-06-02 15:05:15 +00:00
Min Idzelis
65d8b35f8b
refactor(web): align gallery-viewer viewport naming and tunables ( #28743 )
2026-06-02 14:54:44 +02:00
renovate[bot]
942d3c648c
chore(deps): lock file maintenance (npm) ( #28729 )
2026-06-02 14:51:55 +02:00
renovate[bot]
82db8be5ff
chore(deps): update dependency testcontainers to v12 ( #28763 )
2026-06-02 12:05:42 +00:00
Min Idzelis
03554b24ad
fix(web): skip thumbhash fade for offscreen thumbnails ( #27335 )
2026-06-02 13:42:33 +02:00
renovate[bot]
c5fb67c004
chore(deps): update dependency prettier-plugin-svelte to v4 ( #28762 )
2026-06-02 13:38:57 +02:00
renovate[bot]
40983b46c8
chore(deps): update dependency @vitest/coverage-v8 to v4 ( #28761 )
2026-06-02 13:37:34 +02:00
renovate[bot]
5dcdbf04ea
chore(deps): update base-image to v202605121138 ( #28760 )
2026-06-02 11:47:20 +02:00
renovate[bot]
da8ed3eceb
chore(deps): update docker.io/valkey/valkey:9 docker digest to 4963247 ( #28622 )
2026-06-02 08:09:27 +00:00
renovate[bot]
2afde23a5d
chore(deps): update github-actions ( #28750 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-02 00:39:19 -04:00
renovate[bot]
d57a152040
chore(deps): update prom/prometheus docker digest to 69f5241 ( #28757 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-02 00:37:42 -04:00
renovate[bot]
728e92ea33
chore(deps): update dependency @immich/ui to v0.79.3 ( #28758 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-02 00:37:10 -04:00
Mert
138e2d9158
feat(web): hls player ( #28312 )
...
* update e2e
* hls player
* fix transcoding restart on explicit quality selection
* move level filtering to manager
* move init to manager declaration
* refactor commit on release
* these lints...
* fix seek sometimes being ignored
* fix panic downswitch
2026-06-01 15:49:57 -04:00
Mert
7eabac6702
feat(server): hls with real-time transcoding ( #28230 )
...
* hls implementation
* fix stale state after ffmpeg exit
2026-06-01 18:52:29 +00:00
renovate[bot]
cf4789e008
chore(deps): update github-actions (major) ( #28752 )
2026-06-01 18:35:36 +00:00
renovate[bot]
412884fce3
chore(deps): update ghcr.io/jdx/mise docker tag to v2026.5.18 ( #28749 )
2026-06-01 19:47:53 +02:00
Jason Rasmussen
16aee2b869
fix: album name ( #28751 )
2026-06-01 19:45:24 +02:00
Daniel Dietzler
3f7af51531
fix: version check ( #28746 )
2026-06-01 13:41:08 -04:00
Brandon Wees
4eb100327e
fix: disallow cross origin/non http protocols for continueUrl on login ( #28706 )
...
* fix: disallow cross origin/non http protocols for continueUrl on login
* chore: use Route helper
* fix: also use Route.continue in pin code prompt
* fix: typecheck
2026-06-01 13:38:26 -04:00
bo0tzz
69b1946484
feat: handle prereleases in publish workflows ( #28701 )
2026-06-01 17:11:45 +02:00
bo0tzz
61cd69a286
fix: strip rc suffix from iOS marketing version ( #28741 )
2026-06-01 09:56:43 -05:00
Daniel Dietzler
c8a1d0e400
feat: release candidate support ( #28665 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-06-01 16:10:07 +02:00
Paul Makles
d120444a87
fix(devcontainer): update build cache volume ( #28736 )
2026-06-01 12:41:53 +00:00
shenlong
2382894fa2
fix: auto route rebuild on settings change ( #28717 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-31 09:00:37 -05:00
Alex
a52e7dc11a
chore: feat iOS run debug build ( #28712 )
...
# Conflicts:
# mobile/ios/Runner.xcodeproj/project.pbxproj
2026-05-31 04:10:03 +00:00
Alex
206992605e
feat: upload local assets to album from bottom sheet ( #28531 )
...
* feat: upload local assets to album from bottom sheet
* Cancel token
* refactor
* refactor
* Update mobile/lib/domain/services/remote_album.service.dart
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com >
---------
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com >
2026-05-30 13:14:49 -05:00
Mert
65611bb860
chore(mobile): make openapi requests abortable ( #28692 )
...
make open-api requests abortable
2026-05-30 10:31:17 -05:00
shenlong
14aff51da9
refactor: rename metadata to settings ( #28691 )
...
rename metadata to settings
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-30 10:27:55 -05:00
shenlong
c42cea5ca9
refactor: use widget previews for ui showcase ( #28548 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-29 20:22:47 +00:00
Jason Rasmussen
da8505f61d
feat: more plugin triggers and methods ( #28690 )
2026-05-29 14:02:07 -04:00
Alex
58586483dc
feat: render album's name in workflow step card ( #28680 )
...
* feat: render album name in step card body
* clean up
* i18n
2026-05-29 10:37:37 -05:00
pneuly
a838167f11
fix(ml): pass model_root_dir to OcrOptions for RapidOCR compatibility ( #28610 )
...
* fix(ml): pass model_root_dir to OcrOptions for RapidOCR compatibility
Fix a TypeError (Path(None)) when the OCR model is invoked, caused by an upstream change in RapidOCR v3.8.1 (RapidAI/RapidOCR@8ea9626 ).
RapidOCR now internally calls `Path(cfg.get("model_root_dir"))`. Since `model_root_dir` was missing from `OcrOptions`, it evaluated to `None` and triggered a `TypeError: argument should be a str or an os.PathLike`.
This fix adds the missing `model_root_dir` argument to prevent the error.
Ref: #28331
* fix(ml-test): update OCR tests for RapidOCR schema change
* chore(ml-test): remove unused `cache_dir` parameter from `TextRecognizer`
* Revert "chore(ml-test): remove unused `cache_dir` parameter from `TextRecognizer`"
This reverts commit 007ad7b3f2 .
* fix(ml): use self.cache_dir for model_root_dir in OcrOptions
2026-05-28 22:54:04 -04:00
Mert
b189fc571c
fix: make ts a peer dependency for swagger ( #28677 )
...
make ts a peer dependency
2026-05-28 22:04:25 +00:00
Jason Rasmussen
96923f6115
refactor: plugin sdk types ( #28674 )
2026-05-28 22:04:15 +00:00
shenlong
0d6cce4a5b
fix: api repositories using stale endpoint ( #28667 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-28 16:44:11 -05:00
shenlong
55947cb227
refactor: drop metadata scope ( #28668 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-28 16:42:59 -05:00
Jason Rasmussen
8783180cf3
refactor: plugin manifest ( #28673 )
2026-05-28 17:23:49 -04:00
Jason Rasmussen
134c0d4dfb
feat: search by album name and id ( #28672 )
2026-05-28 17:01:47 -04:00
Alex
aecf8ec88b
fix: timeline scroll flicker ( #28653 )
...
* test: fix scroll flicker
* lint
2026-05-28 08:20:54 -05:00
Daniel Dietzler
bcff1d42b0
chore: migrate more make targets ( #28663 )
2026-05-28 08:33:57 -04:00
Min Idzelis
1bd367bd51
refactor(web): replace per-asset viewport proximity with day-tier active indices ( #28597 )
2026-05-28 11:44:18 +02:00
Daniel Dietzler
725f266b81
chore: migrate more make targets to mise ( #28651 )
2026-05-28 11:31:02 +02:00
Daniel Dietzler
d08e3de207
fix: e2e linting ( #28659 )
2026-05-28 11:12:26 +02:00
Timon
26714f6bfe
fix(server): prevent locked assets from leaking to partners ( #28652 )
...
* fix(server): prevent locked assets from leaking to partners
* fix tests
2026-05-27 17:33:49 -04:00
Lauritz Tieste
a5ce3fc927
fix: Refresh local album overview page after asset deletion ( #28586 )
...
fix: invalidate local album provider on asset delete
2026-05-28 01:20:32 +05:30
shenlong
3b23f71a3f
refactor: cleanup metadata ( #28485 )
...
jason-ify metadata
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-28 01:19:25 +05:30
shenlong
dec33cadd9
fix: verify form disposal before notifyListeners ( #28578 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-27 19:45:48 +00:00
Daniel Dietzler
80c15a5e27
fix: workflow drag and drop ( #28650 )
2026-05-27 14:05:38 -05:00
Yaros
936c28a40b
feat(mobile): improve downloading algorithm for sharing ( #27312 )
...
* feat(mobile): better downloading while sharing
* chore: separate download group
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-27 17:00:49 +00:00
Spencer Stingley
1a837a28ac
fix: dev container properly builds @immich/plugin-sdk for import ( #28620 )
...
Co-authored-by: Spencer Stingley <accounts@blankcanvas.io >
2026-05-27 12:41:35 -04:00
shenlong
8d5d12b108
chore: upgrade flutter to 3.44.0 ( #28537 )
...
* chore: upgrade flutter to 3.44.0
# Conflicts:
# mise.lock
* static analysis fix
* fix ios ci
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-27 11:14:44 -05:00
Daniel Dietzler
dd7a94135f
refactor: workflow components ( #28648 )
2026-05-27 18:08:12 +02:00
Jason Rasmussen
1acc511b5c
chore: install mise in Dockerfile.dev ( #28649 )
2026-05-27 11:43:17 -04:00
Daniel Dietzler
452e88267a
fix: strip metadata from timeline responses for shared links without exif sharing ( #28644 )
2026-05-27 17:29:37 +02:00
Timon
b941108cbd
chore: update documentation to use mise commands ( #28515 )
2026-05-27 10:33:23 -04:00
Jason Rasmussen
e46f2843f7
refactor: asset create event ( #28647 )
2026-05-27 10:28:02 -04:00
Jason Rasmussen
cf991e7b1b
feat: workflow actions ( #28639 )
2026-05-27 10:24:31 -04:00
Thomas van Gemert
748a13104a
chore(docs): update FAQ with profile picture change instructions ( #28634 )
...
Update FAQ with profile picture change instructions
Based on this discussion (https://github.com/immich-app/immich/discussions/27168 ) it seems I am not the only one confused by how Immich lets you change your profile picture. An addition to the FAQ will help. I also added another horizontal separator to be consistent with the rest of the document.
2026-05-27 09:17:12 -05:00
Brandon Wees
2dd6b47714
fix: OCR bounding box positioning ( #28568 )
2026-05-27 12:01:30 +02:00
Alex
8682be4774
feat: workflow template ( #28553 )
...
* wip: confirm before existing and disable/enable save button condition
* fix: get correct workflow detail
* wip: add back workflow summary
* wip: add back json editor
* wip: step property badge
* wip: redesign card flow
* wip: redesign card flow
* redesign workflow summary
* wworkflow summary styling
* wip
* drag and drop
* list redesign
* refactor
* refactor
* remove deadcode
* refactor
* insert steps
* push down when dropped
* feat: workflow template
* simplify
* move template to manifest
* feat: hash manifest file
* fix: template column
* fix: migration
* fix: workflow lookup
* chore: clean up
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-05-26 16:47:05 -04:00
Brandon Wees
dc66892ca1
fix: await sync asset v2 ( #28569 )
...
* fix: await sync asset v2
* fix: support previous server versions for edit ready events
2026-05-26 15:43:12 -04:00
Fabian Wimberger
53a24783f5
fix(ml): stabilize MIGraphX inference ( #28444 )
...
* fix: stabilize ROCm MIGraphX inference
Serialize MIGraphX session runs so lazy compiles cannot overlap within a worker.
Use a fixed face-recognition batch size for MIGraphX to avoid compiling a new program for each detected face count.
* fix(ml): increase ROCm worker timeout
* fix(ml): narrow MIGraphX compile locking
* docs: format environment variables table
* docs: apply prettier to environment variables table
2026-05-26 18:41:56 +00:00
Alex
0546bc900c
chore: workflow UI ( #28536 )
...
* wip: confirm before existing and disable/enable save button condition
* fix: get correct workflow detail
* wip: add back workflow summary
* wip: add back json editor
* wip: step property badge
* wip: redesign card flow
* wip: redesign card flow
* redesign workflow summary
* wworkflow summary styling
* wip
* drag and drop
* list redesign
* refactor
* refactor
* remove deadcode
* refactor
* insert steps
* push down when dropped
* fix: query by workflow id
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-05-26 14:06:20 -04:00
Brandon Wees
7c25bcc0a7
refactor: use ControlBar UI Library component ( #28567 )
...
* refactor: use ControlBar UI Library component
* chore: ci fix
* fix: memory viewer bar
* chore: rework e2e test
* chore: more ci fixes
2026-05-26 12:03:37 -04:00
Luis Nachtigall
7905853639
fix(mobile): preserve zoom level during image loading and live photo playback ( #27960 )
...
* fix(mobile): preserve zoom level when new images load in asset viewer
* fix(mobile): use actual child size for live photo
* revert fixes
* fix(mobile): keep zoom consistent when scale boundaries change
* fix(mobile): simplify scale handling in photo_view_core.dart
2026-05-26 21:10:02 +05:30
Mees Frensel
073dcc1fbe
chore(server): deprecate total field of asset search response ( #28551 )
2026-05-26 16:20:24 +02:00
renovate[bot]
ccdaa4223c
chore(deps): update github-actions ( #28623 )
2026-05-26 15:04:51 +02:00
Aaron Liu
5386b62dc4
chore(ml): allow insightface 1.x ( #28595 )
...
* chore(ml): allow insightface 1.x
The new insightface 1.0 release appears to have no breaking code changes nor relevant license changes ([before](https://github.com/deepinsight/insightface/blob/2a78baec428354883e0cda39c54b555a5ed8358a/README.md ), [after](https://github.com/deepinsight/insightface/blob/70f3269ea628d0658c5723976944c9de414e96f8/README.md ), c.f. https://github.com/immich-app/immich/blob/fd7ddfef54cdf2b6256c4fc08bc5ff3f86176775/machine-learning/README.md ), and it works on my machine.
* Update uv.lock
* please excuse my incompetence
2026-05-25 12:32:50 -04:00
Ben Beckford
9733fa4872
fix(web): timeline stuttering with many assets in 1 day ( #28509 )
...
* fix(web): timeline stuttering with many assets in 1 day
* cache isInOrNearViewport per day
* skip inOrNearViewport check on first run
2026-05-24 16:03:46 -05:00
Alex
3b34c53092
feat: command for user pages ( #28554 )
2026-05-24 16:03:12 -05:00
Alex
fd7ddfef54
fix: plugin prod build typo ( #28566 )
2026-05-22 11:01:18 -05:00
Daniel Dietzler
0975b1599c
fix: remove stray migration ( #28565 )
2026-05-22 15:20:47 +00:00
Peter Ombodi
78ac0ade01
feat(mobile): add manage media APIs to NativeSyncApi ( #28441 )
...
* feat(mobile): add manage media APIs to NativeSyncApi
* fix(mobile): remove legacy local file manager from trash sync
* refactor(mobile): move media permission methods to PermissionApi
* cleanup
---------
Co-authored-by: Peter Ombodi <peter.ombodi@gmail.com >
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-22 17:40:11 +05:30
Mert
7b9dab872b
fix(mobile): separate group ids for separate app installs ( #28448 )
...
* separate group ids
* remove pigeon method
* Revert "remove pigeon method"
This reverts commit d699ff2094 .
2026-05-21 12:25:20 -05:00
Daniel Dietzler
6413495fb8
fix: mise lockfile ( #28541 )
2026-05-21 13:13:37 +02:00
Caltsic
b414b3d32b
fix: improve form control focus visibility ( #28512 )
...
* Improve form control focus visibility
* fix: align form input focus styles
2026-05-20 15:33:56 -05:00
renovate[bot]
20da7c4267
chore(deps): lock file maintenance (terragrunt) ( #28488 )
2026-05-20 17:20:50 +02:00
renovate[bot]
92b6778d2d
fix(deps): update typescript-projects ( #28371 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-05-20 16:56:27 +02:00
Daniel Dietzler
5a61e589e8
chore: always run ci when mise.toml changes and install flutter from aqua ( #28521 )
2026-05-20 14:43:30 +00:00
renovate[bot]
85192bb110
chore(deps): update ghcr.io/jdx/mise docker tag to v2026.5.11 ( #28522 )
2026-05-20 14:29:17 +00:00
Timon
c7ae97fa2b
chore: handle docusaurus deprecation warning ( #28516 )
2026-05-20 15:27:33 +02:00
Timon
8d02f3625d
chore: update mobile makefile command usage instructions ( #28514 )
2026-05-20 15:26:24 +02:00
bo0tzz
a5a7380a26
feat: use lockfile for mise tools ( #28503 )
2026-05-20 11:37:33 +00:00
renovate[bot]
d9ce3d2046
chore(deps): update dependency @types/node to ^24.12.4 ( #28490 )
2026-05-20 12:41:17 +02:00
renovate[bot]
815ff677fc
chore(deps): update github-actions ( #28493 )
2026-05-19 22:22:44 +00:00
bo0tzz
915d865ce2
chore: use custom sticky-comment action ( #28505 )
2026-05-19 20:25:46 +00:00
immich-tofu[bot]
c28e5f90b6
chore: modify .github/workflows/org-zizmor.yml
2026-05-19 10:45:23 +00:00
Timon
4383473ed6
fix: cleanup nestjs-zod properties ( #28447 )
...
* fix: cleanup nestjs-zod properties
* lint
2026-05-18 15:31:08 -04:00
shenlong
77701dd5a3
refactor: migrate backup config ( #28483 )
2026-05-19 00:40:10 +05:30
shenlong
d4808fdc4d
refactor: migrate album config ( #28482 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-18 23:28:59 +05:30
renovate[bot]
7fa967a98e
chore(deps): update dependency svelte to v5.55.7 [security] ( #28434 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-05-18 17:42:01 +00:00
shenlong
9cffcc9f4e
refactor: migrate network config ( #28471 )
2026-05-18 16:22:42 +00:00
shenlong
40925f0a06
refactor: immich form and text input ( #28479 )
...
refacotr: immich form
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-18 16:21:36 +00:00
Oliver Roed Schøler
0544d22902
feat: Selectable metadata in duplicates utility with diffing ( #26328 )
2026-05-18 17:49:51 +02:00
Jason Rasmussen
3d075f2bf8
feat: workflows & plugins ( #26727 )
...
feat: plugins
chore: better types
feat: plugins
2026-05-18 11:09:33 -04:00
Luis Nachtigall
7384799f19
fix(mobile): asset viewer stuck on spinner after rotation ( #28019 )
2026-05-18 20:32:51 +05:30
Alex
4a7f06e8fd
feat: upload and add local asset directly to album ( #28123 )
...
* feat: manually upload local assets to album
* feat: manually upload local assets to album
* refactor
* Upload status
* pr feedback
2026-05-18 20:31:22 +05:30
Lauritz Tieste
8f662fc459
refactor: enhance shared link UI and functionality ( #26464 )
...
* feat(shared-link): enhance shared link UI and functionality with new expiry options and improved layout
* rebase & cleanup
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-18 20:29:56 +05:30
Benjamin Nguyen
24b1dae9f2
feat(mobile): "Add Tags" asset multiselect option ( #26269 )
...
* add bulk_tag_assets_action_button to general_bottom_sheet.widget
include create tag tile in 'Add Tags' action modal
* follow provider -> svc -> repo pattern for tags
* rebase and cleanup
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-18 20:29:09 +05:30
Lauritz Tieste
3a3469a5f9
feat(ui): add ImmichURLInput ( #27105 )
...
feat(ui): implement shared URL input configuration and update input fields
2026-05-18 20:28:57 +05:30
Adam Gastineau
7993619ed2
fix(ios): respect status bar scroll to top in timeline views ( #28469 )
...
* fix(ios): respect status bar scroll to top in library views
* Make sure to wrap all loading states in Scaffold
2026-05-18 20:28:01 +05:30
shenlong
4d1f6f869b
chore: cleanup mobile mise config ( #28473 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-18 19:18:52 +05:30
Yaros
3eb03f7934
chore: update readmes to match main ( #28458 )
2026-05-17 13:08:27 -05:00
Alex
03ed3daa31
chore: improve mobile slideshow ( #28460 )
2026-05-17 10:54:21 -05:00
Min Idzelis
02581e81a7
fix(web): work around Chrome HDR image seam lines during zoom ( #27715 )
...
Change-Id: Ic5a5b1a476c2af93b465ef23dabc601a6a6a6964
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-05-16 02:15:24 +00:00
Santo Shakil
3ab3d5cf43
fix(mobile): don't force-unwrap nil localizedTitle in ios getAlbums ( #28452 )
...
crashes on ios 26 when a PHAssetCollection returns nil for
localizedTitle. fall back to localIdentifier. ref #28428
2026-05-15 18:12:28 -05:00
Ben Beckford
0ef04d9baa
feat(mobile): slideshow view ( #28421 )
...
* feat(mobile): slideshow view
* move slideshow settings to metadata store
* remove watch in initState
* wrap progress bar in safearea
* show slideshow button on remote albums
* fix crash on unknown assets
* always show slideshow option
* add zoom effect
* add padding to slideshow settings
* chore: styling tweak
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-05-15 18:12:04 -05:00
Santo Shakil
df016f9228
fix(mobile): mounted check in ThumbnailTile hero flight listener ( #28451 )
...
When the user pops back from the asset viewer mid-flight, the hero
animation can fire its status listener after _ThumbnailTileState has
been disposed. setState then throws a null check on State._element.
Guard the listener with `if (!mounted) return;` — same pattern as
#28300 in the album sync action.
2026-05-15 21:41:04 +00:00
Santo Shakil
17779c1e74
fix(mobile): cronet thumbnail buffer overflow regression from #28439 ( #28450 )
...
The hybrid added in onReadCompleted reuses Cronet's ByteBuffer between
reads to save a JNI wrap call when no grow is needed. That reuse breaks
advance() — Cronet's position() is cumulative across reads, so the same
K bytes get counted on every subsequent iteration. b.offset overshoots
b.capacity, the reuse branch keeps firing on a now-empty buffer, and
request.read() throws the original IllegalArgumentException again.
Always pass a fresh wrap from wrapRemaining() so byteBuffer.position()
reflects only this iteration's bytes. Same shape as the original PR
had before the broken optimization was layered on top.
2026-05-15 17:25:31 -04:00
Santo Shakil
01d6a244d8
fix(mobile): cronet buffer overflow on compressed thumbnails ( #28439 )
...
CronetImageFetcher sized the response buffer from Content-Length, which is
the compressed wire size. Cronet auto-decompresses gzip/br responses and
writes decompressed bytes into the buffer, exceeding it and throwing
IllegalArgumentException: ByteBuffer is already full on the next read. Use
the growable path; Content-Length becomes an initial alloc hint only,
capped at 128 MB so an untrusted server can't overflow Int.MAX_VALUE or
OOM us upfront. Reuse Cronet's ByteBuffer between reads when no grow is
needed.
2026-05-15 14:48:23 -04:00
Ben Beckford
21d6755f39
fix(web): recently added ux ( #28435 )
2026-05-14 22:22:23 -05:00
Robert Deaton
e91c017dd0
fix(server): dedupe database backup jobs ( #28341 )
...
* fix(server): dedupe database backup jobs via jobId
#27268 shows backup jobs piling up in the queue across upgrades; one pending
backup is always enough.
* fix(tests): Avoid stale backup files from previous test runs being erroneously returned from createBackup
* fix(jobs): Use bullmq's deduplication over jobId to avoid failed jobs from blocking future executions.
---------
Co-authored-by: Robert Deaton <immich@rdeaton.space >
2026-05-14 20:59:15 -04:00
Alex
43687cd8b4
fix: kebab menu icon colors and actions ( #28433 )
2026-05-14 22:23:50 +00:00
shenlong
06729ee5a5
chore: cleanup unused store keys ( #28415 )
...
cleanup unused store keys
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-14 16:21:06 -05:00
Nojus Gudinavičius
b0c9743d9a
feat(server): allow subpaths for machine learning URL ( #28427 )
...
This allows to use a machine learning server URL under a subpath,
such as "http://example.com/ml-server/ ".
2026-05-14 12:46:31 +00:00
Marius
37cc028868
fix(mobile): use correct delete action ( #26575 )
...
fix(mobile): use correct delete for trashed assets
When viewing a trashed asset, the viewer bottom bar now shows the permanent delete button instead of the trash button, which had no effect on already-trashed assets.
2026-05-14 11:57:19 +00:00
Inês Costa
84a2b7a3c8
fix(mobile): add restore option to trashed assets ( #27442 )
2026-05-14 07:19:00 +00:00
racehd
89b3433346
feat(docs): add fixed subnet guide for Synology to prevent firewall issues ( #26554 )
...
* - Add Set Fixed Subnet section
- Add newline after details summary to properly render summary with mdx
* pnpm run format --write
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-05-13 23:54:13 +00:00
shenlong
3ff0d47ee3
chore: do not cache dart_tool ( #28409 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-13 19:46:24 -04:00
shenlong
aeaf846482
chore: cleanup unused store keys ( #28415 )
...
cleanup unused store keys
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-13 18:03:57 -05:00
Santo Shakil
b031548791
fix(mobile): don't block app open on slow validateAccessToken ( #28405 )
...
* fix(mobile): don't block app open on slow validateAccessToken
AuthGuard.onNavigation was async so auto_route awaited the body through validateAccessToken's OS timeout. now it's sync and the validate runs in bg. kicks to login on 401.
* fix(mobile): handle re-login race in AuthGuard validate
if user logs out + logs back in during a slow validate, the old 401 was logging them out again. now we check the token hasn't changed before redirecting, and dedupe in-flight calls.
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-05-13 11:52:43 -05:00
Jason Rasmussen
fcea617313
fix: ignore icc profile make and model ( #28412 )
2026-05-13 12:07:35 -04:00
Mees Frensel
024f20ea26
chore(web): use DatePicker component from UI lib ( #28406 )
2026-05-13 09:37:07 -05:00
shenlong
0a4ed6fd71
refactor: migrate viewer config to metadata table ( #28396 )
...
* refactor: app metadata
* refactor to per row store
* cleanup
* more test
* review changes
* more refactor
* refactor
* migrate primary color
* migrate dynamic theme
* migrate colorfulInterface
* cleanup providers
* migrate cleanup
* migrate mapconfig
* remove unused keys
* migrate timeline config
* migrate image config
* migrate viewer config
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-13 09:36:19 -05:00
Alex
b6e2ce1f35
fix(mobile): revert drop deprecated deviceAssetId / deviceId from upload fields ( #28384 ) ( #28400 )
...
* Revert "chore(mobile): drop deprecated deviceAssetId / deviceId from upload fields (#28384 )"
This reverts commit 571e6a8560 .
* chore(mobile): add note on kept deprecated upload fields
---------
Co-authored-by: Santo Shakil <shakil.mezbah@gmail.com >
2026-05-13 09:36:16 -05:00
bo0tzz
e323e778cd
fix: update server-commands subcommand list ( #28402 )
2026-05-13 09:27:25 -04:00
renovate[bot]
6a87797649
chore(deps): update terraform cloudflare to v4.52.7 ( #28370 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-12 23:50:23 -04:00
renovate[bot]
f4a4649bbc
chore(deps): update dependency canvas to v3 ( #28376 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-12 23:49:22 -04:00
Alex
6ca54ee722
feat: display more info in asset viewer ( #24630 )
...
* feat(mobile): more info for asset viewer
* feat(mobile): more info for asset viewer
2026-05-13 02:07:23 +00:00
shenlong
8e3035f783
chore: run mobile tests in parallel ( #28393 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-12 17:17:07 -05:00
shenlong
79801595db
refactor: move image config to metadata table ( #28228 )
...
* migrate image config
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-13 03:20:35 +05:30
Yaros
3e1c8aacb1
feat(mobile): trash/restore all ( #28116 )
...
* feat(mobile): trash/restore all
* chore: remove themeData variable
* chore: filter query by user
* refactor
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-05-12 14:56:19 -05:00
shenlong
91ac56cef2
refactor: move timeline config to metadata table ( #28227 )
...
* migrate timeline config
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-13 01:23:25 +05:30
Jason Rasmussen
58beac8fe0
chore: migrate mobile makefile to mise ( #28390 )
2026-05-12 15:21:04 -04:00
Santo Shakil
f632d320f5
fix(mobile): clear linkedRemoteAlbumId in reset() so FK refs dont dangle ( #28382 )
...
* fix(mobile): clear linkedRemoteAlbumId in reset() so FK refs dont dangle
reset() runs with foreign_keys off before wiping remote_* tables, so the ON DELETE SET NULL cascade on linkedRemoteAlbumId doesnt fire. local rows keep pointing at deleted remote ids.
affects logout (clearLocalData calls reset()) and the server SyncResetV1 path (30 day idle, etc). after re-login, syncLinkedAlbum either silently warns or fires 400s (those are covered by #28299 ).
null the column manually inside the same transaction. cascade still works for normal SyncAlbumDeleteV1.
verified on pixel 9a with this branch built locally: logged out, deleted album from web, logged back in. without fix linkedRemoteAlbumId stayed dangling. with fix all three local rows have linkedRemoteAlbumId = NULL after the logout reset, and recovery is clean once manageLinkedAlbums runs again.
* fix(mobile): always re-enable foreign_keys in reset() + simplify the update
re-enable foreign_keys inside a try/finally so it always runs even if the transaction throws. without this, a failed reset would leave the connection with foreign_keys = OFF and silently disable cascades for everything after (per copilot review).
also drop the where filter on the linkedRemoteAlbumId update, unconditional update-all is simpler and we wipe everything in reset anyway (per ganka review).
2026-05-12 13:43:15 -05:00
shenlong
2ddaf6a611
fix: indexes on remote_asset_entity ( #28264 )
...
* fix: periodically execute pragma optimize
* fix: indexes on remote_asset_entity
* regen files
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-05-12 16:43:24 +00:00
shenlong
1932c60e1c
fix: kekab icon colors in light mode ( #28366 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-12 11:27:55 -05:00
Brandon Wees
dc6f8e746e
fix: deep link for assets when asset viewer already open ( #27971 )
2026-05-12 16:19:54 +00:00
Jason Rasmussen
ad7aedb843
refactor: move plugins to packages ( #28389 )
2026-05-12 13:28:30 +00:00
Santo Shakil
571e6a8560
chore(mobile): drop deprecated deviceAssetId / deviceId from upload fields ( #28384 )
...
server removed both fields from AssetMediaCreateDto in #27818 . zod silently strips unknown fields so uploads still work, but we send dead weight on every request.
drop from foreground + background upload paths + share intent path. deviceAssetId stays as the internal background_downloader taskId, just not in the multipart form fields anymore.
2026-05-12 09:12:26 -04:00
bo0tzz
4791313def
fix: manage oazapfts through mise ( #28380 )
2026-05-12 08:12:27 -04:00
renovate[bot]
f88fdae048
fix(deps): update dependency @immich/ui to ^0.77.0 ( #28373 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-12 12:15:47 +02:00
renovate[bot]
bcef7aa6b6
chore(deps): update github-actions ( #28372 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-12 12:07:32 +02:00
renovate[bot]
ce292bdce9
chore(deps): update base-image to v202605051129 ( #28374 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-12 12:02:43 +02:00
renovate[bot]
4eee023648
chore(deps): update docker.io/valkey/valkey:9 docker digest to 8436e10 ( #28369 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-12 11:52:30 +02:00
shenlong
8f4b0fce49
fix: limit android background worker duration ( #23566 )
...
* fix: limit each android background run to 20 mins
# Conflicts:
# mobile/lib/domain/services/background_worker.service.dart
* review chages
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-11 23:08:17 -05:00
Timon
c6b3127b35
feat(web): add individual filter removal from search result chips ( #28166 )
...
* feat(web): add individual filter removal from search result chips
* drop cast
* use delete
* lint
* stylings
* filter
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-05-12 03:50:40 +00:00
shenlong
4d6a50c2cb
refactor: move map config to metadata table ( #28226 )
...
* refactor: app metadata
* refactor to per row store
* cleanup
* more test
* review changes
* more refactor
* refactor
* migrate primary color
* migrate dynamic theme
* migrate colorfulInterface
* cleanup providers
* migrate cleanup
* migrate mapconfig
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-11 22:43:52 -05:00
Jason Rasmussen
15f3947ae6
chore: mise scripts ( #28367 )
2026-05-11 17:46:02 -04:00
Ben Beckford
e142e3aca7
feat: recently added assets page ( #28272 )
...
* feat(server): add ordering date option to time buckets
* feat(web): add recently added page
* feat(server): recently created assets in explore data
* feat(web): recently added in explore tab
* fix: recently added assets ordering
* fix(server): failing bucket test
* feat(web): improve recently added preview
* chore: update e2e explore/timeline tests
* chore: rename and refactor timeline ordering dates
* fix(web): invalid timeline option
* feat(mobile): recently added page
* fix(server): sync tests
* fix(mobile): resync assets to get uploadedAt column
* chore: rename assetorderby enum
* chore(mobile): formatting
* minor fixes
* stylings
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-05-11 21:35:10 +00:00
Brandon Wees
38438c8d9a
refactor!: remove asset faces from AssetResponseDto ( #27779 )
...
* refactor!: remove faces from `people` in AssetResposnseDto
* chore: tests
* chore: e2e generator
* chore: code review readonly
* chore: code review changes
* chore: cleanup
* fix: openapi
* chore: format
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-05-11 17:05:40 -04:00
Alex
a278c10c75
fix: mobile upload duration type ( #28362 )
2026-05-11 15:46:00 -05:00
renovate[bot]
2276443c56
fix(deps): update dependency kysely to v0.28.17 [security] ( #28363 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-11 22:38:25 +02:00
Jason Rasmussen
bb44773e57
chore: remove unused commands ( #28361 )
2026-05-11 16:19:40 -04:00
Jason Rasmussen
14d9e90a03
refactor: move i18n formatting to workspace root ( #28360 )
...
refactor: move i18n formatting to project root
2026-05-11 16:19:28 -04:00
Jason Rasmussen
03e042213c
refactor: move e2e-auth-server to packages ( #28358 )
2026-05-11 15:39:59 -04:00
Jason Rasmussen
db589455f4
refactor: move cli to package folder ( #28356 )
2026-05-11 14:49:45 -04:00
Jason Rasmussen
fb0a54d548
chore: mise on windows ( #28351 )
...
* chore: mise on windows
* chore: bump use-mise
2026-05-11 20:04:38 +02:00
renovate[bot]
7013cc0904
fix(deps): update dependency @opentelemetry/exporter-prometheus to ^0.217.0 [security] ( #28353 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-11 18:03:30 +00:00
renovate[bot]
dcaf7b4a65
fix(deps): update dependency @opentelemetry/sdk-node to ^0.217.0 [security] ( #28354 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-11 19:48:25 +02:00
shenlong
12f7b2a005
chore: add always_put_control_body_on_new_line lint ( #28352 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-11 13:47:24 -04:00
Jason Rasmussen
7837d40f57
chore: move sdk to packages ( #28350 )
2026-05-11 13:37:10 -04:00
bo0tzz
b4f719653f
fix: indentation and typo ( #28349 )
...
* fix: indentation and typo
* neline
2026-05-11 09:17:39 -05:00
bo0tzz
f370b4bac6
chore: fold apk comment qr in <details> ( #28348 )
2026-05-11 09:40:19 -04:00
Mert
d788169bf3
chore(server)!: remove libopus enum ( #28325 )
2026-05-11 08:02:57 -04:00
Mert
eea820fa2f
chore(server): enable hw decoding by default ( #28324 )
2026-05-11 08:02:26 -04:00
Timon
271f1cb868
feat(web): Add metadata overlay to slideshow ( #24627 )
...
* feat: add slideshow metadata overlay and settings
* Introduced a new SlideshowMetadataOverlay component to display image information during slideshows.
* Updated slideshow settings modal to include options for showing the metadata overlay and selecting its display mode (Description Only or Full).
* Added corresponding translations and store management for the new overlay features.
* remove noisy log
* constant opacity
* 2nd pass
* more
* use text components
* lint
2026-05-11 11:49:12 +02:00
Mert
8c8dc9d32f
chore(ml)!: remove deprecated envs ( #28326 )
...
remove deprecated envs
2026-05-09 22:40:05 +00:00
Alex
fd18e55f7c
chore: token extraction for build mobile ( #28320 )
...
Co-authored-by: bo0tzz <git@bo0tzz.me >
2026-05-09 15:08:07 +00:00
shenlong
faab9e620d
refactor: medium repository context helpers ( #28311 )
...
* refactor: medium repository context helpers
* test: add regress test for 26723
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-09 08:19:31 -05:00
Matthew Momjian
5ba3efafd8
fix(deployment): remove unneeded volume ( #28307 )
...
remove unneeded volume
2026-05-09 09:07:54 -04:00
Alex
8b3c9bf9c3
feat(ci): publish PR Android APK to comment ( #28283 )
...
* feat(ci): publish PR Android APK to R2 with installable links
Adds a universal debug APK to PR builds and uploads it to a public
R2 bucket alongside the existing GitHub Actions artifact. Posts a
sticky PR comment with tap-to-install links and a QR code so testers
can install directly on their device without unzipping artifacts.
Required setup:
- Secrets: R2_APK_ACCESS_KEY_ID, R2_APK_SECRET_ACCESS_KEY,
R2_APK_ACCOUNT_ID, R2_APK_BUCKET
- Optional repo variable: APK_PUBLIC_HOST (defaults to apk.immich.app)
- R2 bucket configured with a public custom domain matching APK_PUBLIC_HOST
* chore(ci): drop R2 upload, link directly to GitHub artifact
Surfaces the existing release-apk-signed artifact in a sticky PR
comment with a QR code. Avoids new infra and secrets — the trade-off
is GitHub login and a zip wrapper instead of tap-to-install.
* feat(ci): build PR APK as release and publish to GitHub Release
PR builds now produce a release APK signed with the release keystore.
The universal APK is published as a GitHub Release asset under tag
'pr-<num>' (prerelease), giving testers a direct, unzipped, tap-to-
install URL plus a QR code in the PR comment. The release-apk-signed
artifact is unchanged.
* chore(ci): drop GitHub Release, publish universal APK as own artifact
Reverts the prerelease publish. Uploads the universal release APK as
a separate single-file artifact so its download URL gives a zip
containing only that APK — no extra files to dig through. The QR in
the PR comment points at this universal-only artifact.
* chore(ci): build only universal APK for PR, drop split artifact
PR builds skip the arm64-only split — release-apk-signed now contains
just the universal app-release.apk, so the download zip is a single
file. Removes the redundant separate universal artifact and points
the PR comment QR at the main artifact URL.
* feat(mobile): suffix PR APK applicationId so it installs alongside production
Each PR build now becomes app.alextran.immich.pr<num> via PR_NUMBER env
read in build.gradle, so testers can install multiple PR builds and the
Play Store version on the same device without uninstalling. Also tags
the version with -pr<num> for visibility.
* feat(ci): allow PR APK build to run on forks
Forks can now run the Android build job. Steps that need repo secrets
(create-workflow-token, Create Keystore) are skipped when the PR is
from a fork, the checkout falls back to GITHUB_TOKEN, and build.gradle
falls back to debug signing if the release keystore isn't materialised.
The PR comment still requires write access, so it's gated to non-fork
PRs — fork APKs are reachable from the workflow run's artifact tab.
2026-05-09 07:46:40 -05:00
Yaros
41f285aa3e
feat(mobile): increased tap area on video player overlay ( #27269 )
...
* fix(mobile): improved tap area on video player
* fix: back button padding
* chore: use sizedbox.square & button padding
* chore: fixed padding
2026-05-09 10:47:41 +07:00
Sandro
fdac6c8bc4
fix(docs): missing colon in config file doc ( #28313 )
...
Fix missing colon
2026-05-09 09:44:41 +07:00
Thorsten Winkler
d7f05d2510
fix(mobile): Deduplicate assets in person view timeline ( #26723 )
...
fix(mobile): deduplicate assets in person view timeline
Previously, assets with multiple face records for the same person (e.g.,
manual Digikam imports and Immich ML detections) appeared multiple times
in the person timeline. This was caused by an inner join on the
assetFaceEntity without proper deduplication.
This commit refactors the timeline queries to use a subquery approach
instead of joins and grouping. This ensures:
- _getPersonBucketAssets: Only unique assets are fetched, even if
multiple face records exist for a single asset.
- _watchPersonBucket: Asset counts in timeline headers are accurate
and represent unique assets.
- Performance: Database overhead is reduced by avoiding complex joins
and explicit groupBy operations on large result sets.
Signed-off-by: thowdev <12428285+thowdev@users.noreply.github.com >
2026-05-09 01:53:18 +00:00
stfn
3100bd5eed
fix(mobile): avoid duplicate assets in album view ( #28152 )
...
fix(mobile): avoid duplicate assets in remote album timeline
Co-authored-by: Stefan Friedli <stefan@stefanfriedli.ch >
2026-05-09 08:24:54 +07:00
Jason Rasmussen
8a024e2b50
chore: faster web linting ( #28303 )
2026-05-08 16:55:14 -04:00
Jason Rasmussen
25a6a38b30
chore: use mise ( #28298 )
2026-05-08 15:21:33 -04:00
Santo Shakil
7c6750941e
fix(mobile): mounted check before setState in album sync action ( #28300 )
...
_manualSyncAlbums fires a setState 1s after sync via Future.delayed
with no mounted check. if the widget is gone by then, setState throws
null check and the global error logger logs it severe.
2026-05-08 18:55:03 +00:00
renovate[bot]
832ed4d015
chore(deps): update dependency exiftool-vendored to v35.19.0 [security] ( #28261 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-05-08 12:24:31 +02:00
Santo Shakil
238895cad9
fix(mobile): restore notification plugin init ( #28284 )
...
#27666 removed LocalNotificationService with the legacy stack, which
was the only place calling FlutterLocalNotificationsPlugin().initialize().
without it, ios never prompts for the notification perm on fresh
installs so background_downloader notifications get dropped silently.
restores the init in the same spot the deleted call used to live.
2026-05-08 10:45:52 +07:00
sakshamchawla
e2ec04e86c
feat: hide hidden person from memories ( #20877 )
...
* hide hidden person from memories
* clean up
* fix united test
* clean up
* moved sql to inline, rebased
* clean up
* clean up again
* chore: sync sql
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-05-07 19:54:26 +00:00
renovate[bot]
6050526360
fix(deps): update dependency connectivity_plus to v7 ( #22921 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-07 15:22:26 -04:00
renovate[bot]
bfd76570c5
chore(deps): update dependency python-multipart to v0.0.27 [security] ( #28286 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-07 15:22:03 -04:00
renovate[bot]
37e6a49652
fix(deps): update dependency nestjs-otel to v8 ( #27863 )
...
* fix(deps): update dependency nestjs-otel to v8
* fix: apiMetrics
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-05-07 19:14:15 +00:00
Mert
36caeb34ec
chore(ml)!: require numpy 2.4 ( #28158 )
...
require numpy 2.4
2026-05-07 19:07:39 +00:00
renovate[bot]
87713c7f2f
chore(deps): update dependency flutter to v3.41.9 ( #28235 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-07 15:00:37 -04:00
Daniel Dietzler
2039c129f2
refactor: settings accordion reactivity ( #28281 )
2026-05-07 19:00:23 +00:00
Timon
52b00b0bad
chore(ml): add mise checklist command ( #28267 )
...
* chore(ml): add mise checklist command
* don't depend tests on installing a cpu flavor
2026-05-07 12:28:24 -04:00
shenlong
21af184045
refactor: move cleanup config to metadata table ( #28225 )
...
* refactor: app metadata
* refactor to per row store
* cleanup
* more test
* review changes
* more refactor
* refactor
* migrate primary color
* migrate dynamic theme
* migrate colorfulInterface
* cleanup providers
* migrate cleanup
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-07 11:27:06 -05:00
Timon
1fcc2b704b
feat(server)!: add isOwned filter to albums API ( #28213 )
...
* feat(server)!: add owned filter to albums API
BREAKING CHANGE: GET /albums with no parameters now returns all accessible albums (owned + shared-with-me) instead of only owned albums.
* document tri-state matrix
* web impl
* collapse to single method and handover branching to sql
* dedupe
* verify that owned, shared, and notShared counts are mapped independently from their respective queries
* refactor(server): add select:['id'] overload to albumRepository.getAll
Avoid fetching full album rows (with albumUsers/sharedLinks subqueries) in map.service where only album IDs are needed.
* focus relevant test filters
* fmt
* Revert "verify that owned, shared, and notShared counts are mapped independently from their respective queries"
This reverts commit 47aab458192c766de4662aada5a6841b091d2a80.
* sync sql
* Revert "document tri-state matrix"
This reverts commit a5b2355d0c6a084f2c021d517bf5ee80123d108c.
* address review comments
* inline shared condition and return as ternary
* sync sql
* use [...albums].sort
Array.toSorted() is not supported in Chrome 109
* use isShared and isOwned nomenclature
* fix e2e tests
* add params to sql query
2026-05-07 12:13:07 -04:00
Timon
7de73dc176
fix(server): hide isFavorite from partner asset sync stream ( #28035 )
...
* fix(server): hide isFavorite from partner asset sync stream
* use new column entry instead
* sync sql
* add migration
* use sql.val
* sync sql
2026-05-07 12:00:54 -04:00
TheBestX11
fe2bf0c6dd
fix(mobile): correct filter default and UI desync in similar photos search ( #27516 )
...
* fix(mobile): view similar defaults to images only
* fix(mobile): reset filter chips when pre-filter is applied
---------
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com >
2026-05-07 15:22:35 +00:00
shenlong
d4a97f2d25
refactor: move theme config to metadata table ( #28224 )
...
* refactor: app metadata
* refactor to per row store
* cleanup
* more test
* review changes
* more refactor
* refactor
* migrate primary color
* migrate dynamic theme
* migrate colorfulInterface
* cleanup providers
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-07 15:12:14 +00:00
shenlong
bd58db4fcc
fix: periodically execute pragma optimize ( #28241 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-07 09:54:35 -05:00
Luis Nachtigall
7f43c6a3a3
fix(mobile): prevent asset loading issues when changing page or when closing memories ( #27596 )
2026-05-07 09:13:22 -04:00
Mees Frensel
87175ee56c
fix(docs): document upgrade-insecure-requests default ( #28279 )
2026-05-07 08:40:14 -04:00
Mees Frensel
13587bf13c
feat(web): video player i18n ( #28192 )
2026-05-07 13:39:37 +02:00
Thomas
f09769a2f3
chore(mobile): add box shadow to asset details ( #27510 )
...
The details widget can blend with the image when they are similar
colours.
2026-05-06 19:43:55 +00:00
bo0tzz
bfdff12ee0
chore: use app token for mise in workflows ( #28270 )
2026-05-06 14:51:25 -04:00
bo0tzz
eb6dca6a31
chore: switch push-o-matic auth from app-id to client-id ( #28269 )
2026-05-06 17:01:14 +00:00
Daniel Dietzler
c2e3739a58
chore: run relevant tests for pnpm updates ( #28266 )
2026-05-06 15:38:00 +00:00
Daniel Dietzler
f6bd514cdc
chore: silence svelte state referenced locally warning ( #28263 )
2026-05-06 17:22:39 +02:00
Timon
d93ab7707e
chore(ml): configure mise for machine-learning directory ( #25579 )
2026-05-06 11:03:54 -04:00
renovate[bot]
6bb47c802f
chore(deps): update github-actions ( #28262 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 16:00:03 +02:00
mws-weekend-projects
90a69e2ba6
feat(web): add full-path search mode to UI ( #26758 )
...
Co-authored-by: mws-weekend-projects <mws-weekend-projects@users.noreply.github.com >
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com >
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com >
2026-05-06 15:45:40 +02:00
Mert
6580394cfe
chore(server): simplify sharp edit code ( #28249 )
2026-05-06 09:32:49 -04:00
Daniel Dietzler
42ff3b705d
fix: revert "chore(deps): update dependency exiftool-vendored to v35.19.0 [security]" ( #28260 )
2026-05-06 15:32:25 +02:00
Mert
0f00053bb1
chore(server): simplify preview extraction ( #28250 )
2026-05-06 09:32:19 -04:00
Mert
c5c59ed040
refactor(server): move video interface fetch to storage core ( #28248 )
2026-05-06 09:32:03 -04:00
Aigars Mahinovs
576b1eb999
docs: update rocm installation instructions ( #25434 )
2026-05-06 09:30:42 -04:00
Mees Frensel
24189702da
fix(web): shared album avatars opening modal ( #26719 )
...
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-05-06 13:49:12 +02:00
Sky
ad0d01005e
fix(web): migrate people management component to page, enabling tooltips ( #26971 )
2026-05-06 13:25:59 +02:00
Brent Hugh
3e6d053f93
chore: enhance documentation on wildcard and exclusion patterns ( #27884 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-05-06 12:36:25 +02:00
renovate[bot]
1bb3fd985f
chore(deps): update dependency exiftool-vendored to v35.19.0 [security] ( #28254 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 12:28:47 +02:00
Andreas Heinz
f72aa54a1f
feat(enhancement): Navigate stack with up and down arrow keys ( #27854 )
...
* feat(enhancement): navigate stack with up and down arrow keys
* remove unnecessary code
* move shortcut to section; no need for document level
2026-05-06 11:56:23 +02:00
shenlong
dafe9d7966
chore: pump version ( #28231 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-05 16:27:04 -05:00
Daniel Dietzler
7acda0572d
fix: stale person name after merge ( #28222 )
2026-05-05 15:34:49 +02:00
renovate[bot]
98bc9f6a6e
chore(deps): update dependency terragrunt to v1.0.3 ( #28236 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-05 12:52:14 +02:00
renovate[bot]
63a3b405c3
chore(deps): update grafana/grafana docker tag to v12.4.3 ( #28238 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-05 12:51:18 +02:00
Ben Beckford
0058df798d
fix(mobile): show lens info without lens name ( #28234 )
...
* fix(mobile): always display lens subtitle
* fix(mobile): hide empty lens subtitles
2026-05-05 10:46:09 +07:00
shenlong
97100a4362
refactor: app metadata ( #28113 )
...
* refactor: app metadata
* refactor to per row store
* cleanup
* more test
* review changes
* more refactor
* refactor
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-05 10:45:51 +07:00
Alex
af39384efb
chore: better contrast for highlighted button on control bar ( #28217 )
2026-05-04 09:39:37 -05:00
Mert
01712cf0a7
fix(server): av typing ( #28223 )
...
* fix av typing, move fixtures to stub file
* fix tests
2026-05-04 09:04:29 -04:00
Michel Heusschen
2015f95ff5
fix(web): correct timeline yesterday label across month boundaries ( #28183 )
2026-05-04 13:46:11 +02:00
Timon
d4f29ab6ac
fix(server): validate duplicate group ownership before dismissal ( #28221 )
2026-05-04 12:51:54 +02:00
Timon
3decc864b5
refactor(server)!: structured validation error responses ( #28204 )
...
* refactor(server)!: structured validation error responses
* refactor(server): clarify comment on removing duplicate HTTP response fields
* enhance validation error tests
* make path and message required
* fmt
* fix e2e test
* fmt
* feat: enhance error handling in getServerErrorMessage function
2026-05-04 00:00:03 -04:00
David Allen
eca0e60db8
fix: librknnrt permissions in machine-learning ( #28216 )
...
fix librknnrt permissions in machine-learning
2026-05-03 23:39:27 +00:00
AyaanMAG
8cff5883b5
fix(ml): respect time zone for logs in cuda container ( #28155 )
2026-05-03 04:19:56 +00:00
Mees Frensel
3d320d9751
fix(web): fix shared link /s/photos.* navigation after password login ( #27788 )
...
* fix(web): fix shared link navigation after password login
* use regex after all
* chore: use special case for shared link with slug route
* dont use onMount
* fix lint
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-05-02 09:26:35 -04:00
Daniel Dietzler
b9e0e65bdb
fix: migration order ( #28191 )
2026-05-01 20:57:30 +00:00
shenlong
88e5e8d6ea
chore: pump dcm to 1.37.0 ( #28188 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-01 15:39:29 -05:00
shenlong
ee107c98d5
chore: pump flutter to 3.41.9 ( #28187 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-01 15:39:19 -05:00
Mees Frensel
affe0ac5ee
feat(web): custom video player controls ( #26183 )
...
* feat(web): custom video player controls
* add seek & rate buttons
* wrap memory viewer in media-controller for muted/volume store
* fix memories
* disable video shortcut keys
* re-add playsinline for safari iphone playback
* fix black screen issue
* always display time range
* remove seek buttons and center controls, and put time range above controls
* change ui
* update memory viewer
* fix full width on video player on safari
* enhance video player layout by ensuring full width and maintaining aspect ratio
* layout: don't shrink buttons, tabular time text
---------
Co-authored-by: timonrieger <mail@timonrieger.de >
2026-05-01 17:26:30 +00:00
Mert
f1d8ab8aae
feat(server): track video metadata ( #28023 )
...
* track video metadata
* earlier duration check
* revert colorspace change
* duplicate constant
* formatting
* linting
* add comments
* redundant variable
* simplify tests
* use totalDuration instead of format.duration
* medium tests
* install ffmpeg
* install noble
* update test-assets commit
* make timeBase non-nullable
* linting
* use proper smallint
* add ffmpeg to mise
* simplify duration
* regenerate migration
2026-05-01 17:03:49 +00:00
Timon
c0898b96ca
refactor(server)!: sanitize error messages to avoid leaking resource details ( #28154 )
...
* refactor(server)!: sanitize error messages to avoid leaking resource and permission details
* fix e2e tests
* fix(server): prevent login timing oracle by always running bcrypt
Always call compareBcrypt in the login path regardless of whether the
email is registered. When no user is found, a dummy hash is used so the
bcrypt KDF still runs and response latency is constant, making it
impossible to enumerate valid email addresses by measuring response time.
* fix(server): collapse OAuth callback messages to prevent email-existence oracle
Two distinct error messages in the OAuth callback endpoint revealed
whether an email address was already registered in the database.
An attacker controlling the OAuth provider's email claim could probe
the user table without authentication. Both cases now return the same
generic message.
* fix(server): replace email-in-use messages to prevent user-existence oracle
Error messages on registration and profile-update that named whether an
email address was already taken allowed callers to enumerate registered
accounts. All three sites now return the same generic message regardless
of whether the address is in use.
* fix(server): hide slug uniqueness constraint to prevent shared-link probe
Surfacing the Postgres unique-constraint name in the error response let
any authenticated user brute-force whether a custom slug was already in
use by another user's shared link, leaking the existence of other links.
* fix(server): unify profile image errors to prevent user-existence oracle via status code
GET /users/:id/profile-image returned HTTP 400 for an unknown user ID
but HTTP 404 when the user existed without a photo, letting callers
distinguish the two cases. Both now return 404 so the response is
identical regardless of whether the UUID maps to an account.
* fix(server): replace album user-not-found message to prevent UUID-existence oracle
Album owners could probe arbitrary UUIDs via the add-user endpoint and
determine whether they belonged to registered accounts by receiving
'User not found'. The message is now ambiguous about whether the ID was
unrecognised or the user is inactive.
* Revert "fix e2e tests"
This reverts commit c1bd7a116b3f0fccf3d2530c8e34b13c1d862989.
* Revert "refactor(server)!: sanitize error messages to avoid leaking resource and permission details"
This reverts commit b96421a08387340fbb77913ca89b0717bcd9945d.
* fix(server): use 403 instead of 400 for access-denied errors
requireAccess threw BadRequestException which is incorrect HTTP semantics.
Access denial is a client authorization problem (403 Forbidden), not a
malformed request (400 Bad Request). Keep the descriptive permission name
in the message since the full permission set is public API surface.
* Revert "fix(server): use 403 instead of 400 for access-denied errors"
This reverts commit bb069909571f4e514e7d050ddf588c017ee5a029.
* shorten comment
* add log messages
* format
* one more
2026-05-01 10:00:18 -04:00
Daniel Dietzler
5e9bda7fab
chore: tailwind linting ( #28165 )
...
chore: tailwind cannonical classes
2026-05-01 00:18:03 -04:00
Pedro Pinhão
b60e9c6771
fix(server): selectively apply metadata bitstream filter for video thumbnails ( #28162 )
2026-04-30 23:05:08 -04:00
Mert
b554664791
chore!: duration in milliseconds ( #28003 )
...
* server changes
* openapi
* web changes
* mobile changes
* assume 3.0 client
* deprecate
* review feedback
* update medium tests
* linting
2026-04-30 09:44:27 -04:00
Mert
97c62136b7
chore(server)!: drop pgvecto.rs support ( #28159 )
...
drop pgvecto.rs
2026-04-30 09:40:38 -04:00
白隐Hakuin
c1051c7ed2
fix(docs): Update Tailscale free tier user and device limits ( #28151 )
...
* docs: Update Tailscale free tier user and device limits
* chore: generalize
Updated the description of the Tailscale free tier for clarity.
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-04-30 10:19:49 +00:00
Snowknight26
65bd0a9320
fix(web): timeline scroll when pressing back from stacked asset ( #28163 )
2026-04-30 11:39:34 +02:00
Mert
bf32864644
feat(server): video streaming table definitions ( #28147 )
...
* video streaming table definitions
Co-authored-by: Copilot <copilot@github.com >
* update sql
* tetris
* use enum
Co-authored-by: Copilot <copilot@github.com >
* fix column name
---------
Co-authored-by: Copilot <copilot@github.com >
2026-04-29 15:48:15 +00:00
renovate[bot]
7ef7ecec5b
chore(deps): update dependency flutter to v3.41.7 ( #28124 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-29 10:15:40 -05:00
Alex
bc4abd18e4
feat: update iOS CI/CD with FUTO build credential ( #28146 )
...
* update email
* Update fastfile
* use different apple id
* debug build
* build only
2026-04-29 09:06:35 -05:00
Peter Ombodi
b74cfd4424
fix(mobile): suppress asset stack UI in trash timeline ( #26536 )
...
* fix(mobile): suppress asset stack UI in trash timeline
* refactor(mobile): apply review suggestions
* fix(mobile): hide unstack action in the trash timeline
* fix(mobile): move stack indicator out of asset type icons
---------
Co-authored-by: Peter Ombodi <peter.ombodi@gmail.com >
2026-04-29 17:49:47 +07:00
Yaros
7dc84f56c0
fix(web): double video playback on map timeline ( #28090 )
2026-04-29 12:11:33 +02:00
Timon
92634f923b
refactor(server)!: remove redundant error and statusCode fields from error responses ( #28140 )
...
* refactor(server)!: remove redundant error and statusCode fields from error responses
* use enum
* enhance response management
* chore: clean up header
* fix: chaining
* refactor: handle error
* fix e2e tests
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-04-28 17:54:54 -04:00
Timon
96b6165bd3
refactor(server)!: move correlationId to X-Correlation-ID response header ( #28139 )
2026-04-28 13:07:39 -04:00
Mees Frensel
2624f3884f
fix(web): large files: better handling of asset deletions ( #28117 )
2026-04-28 18:18:39 +02:00
Timon
f9b7ce9407
fix(web): convert shared link expiry to UTC before serialising ( #28135 )
2026-04-28 16:10:08 +00:00
Timon
013ea37a0d
refactor!: change number to integer types ( #27912 )
...
* refactor!: change number to integer types
* fix oversight
2026-04-28 11:25:03 -04:00
Mees Frensel
b2b4385271
chore(web): refactor people panel ( #28136 )
2026-04-28 11:22:22 -04:00
Mees Frensel
081c75bb21
fix(web): refresh memories hourly ( #28114 )
2026-04-28 11:18:51 -04:00
renovate[bot]
da337578fb
fix(deps): update typescript-projects ( #28132 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-04-28 13:18:29 +02:00
renovate[bot]
acf4109171
chore(deps): update dependency exiftool-vendored to v35.18.0 ( #28133 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-28 12:46:54 +02:00
renovate[bot]
66601a1fdc
chore(deps): update dependency terragrunt to v1.0.2 ( #28125 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-28 12:00:44 +02:00
renovate[bot]
02ff077367
chore(deps): update prom/prometheus docker digest to e425440 ( #28120 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-28 12:00:11 +02:00
renovate[bot]
94bb6c1a5e
chore(deps): update dependency @immich/ui to v0.76.2 ( #28121 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-27 21:54:12 -05:00
Daniel Dietzler
fe9e5afcf4
fix: do not emit AlbumInvite event for owner ( #28110 )
2026-04-27 17:59:46 +00:00
Yosi Taguri
5e89efba64
fix(ml): handle empty/corrupt images in face detection ( #27391 )
...
* fix(ml): handle empty/corrupt images in face detection
When a corrupt or degenerate image with zero-dimension (0 width or 0 height)
reaches the face detection pipeline, insightface's RetinaFace.detect() calls
cv2.resize() with a target size of 0, triggering an OpenCV assertion failure:
error: (-215:Assertion failed) inv_scale_x > 0 in function 'resize'
This crashes the ML worker and returns a 500 error to the server.
Add an early return in FaceDetector._predict() that checks for zero-dimension
images after decoding and returns empty detection results instead of passing
them to the insightface model.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
* fix(ml): move empty image validation to request level
Per review feedback, validate image dimensions in the predict endpoint
(returning 400) rather than in each model's _predict method. This
catches all zero-dimension images before they reach any model task.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
* fix(ml): resolve mypy strict type error in predict endpoint
Use intermediate `decoded` variable so mypy knows `.width` and `.height`
are accessed on `Image`, not on `Image | str`.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-27 11:14:34 -04:00
Peter Ombodi
5a457d72c9
fix(mobile): delete assets on trash empty, Android ( #26070 )
...
* fix(mobile): improve trash sync flow
- trash local assets on remote delete events
- unify remote trash handling and support assetDelete cleanup by remote asset id
- update sync stream tests
* fix(mobile): revert pubspec.lock
* refactor(mobile): remove helper
remove unused columns from results
* refactor(mobile): use remoteIds in getAssetsFromBackupAlbums and remove getAssetsFromBackupAlbumsByRemoteIds
refactor tests
---------
Co-authored-by: Peter Ombodi <peter.ombodi@gmail.com >
2026-04-27 18:46:49 +05:30
Min Idzelis
45ccdb37fb
refactor(web): replace asset-viewer listener based face hover with overlay elements ( #27400 )
2026-04-27 12:08:34 +02:00
Savely Krasovsky
9263e2f2e1
feat(ml): update Intel graphics compiler and compute runtime ( #28076 )
...
feat(ml): update Intel graphics compiler and compute runtime to latest versions
2026-04-25 08:49:57 -04:00
Aaron Liu
a3ee615c5b
chore(ml): update huggingfacehub and pillow ( #27552 )
2026-04-24 19:44:01 -04:00
Yaros
39cfad7136
feat(mobile): action bottom sheet on map timeline ( #27515 )
2026-04-24 09:30:10 -05:00
renovate[bot]
350056dd1a
fix(deps): update dependency uuid to v14 [security] ( #28046 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-23 11:24:33 +02:00
Alex
f0835d06f8
chore: migrate to FUTO Apple's account ( #28020 )
...
* chore: migrate to FUTO Apple's account
* chore: migrate to FUTO Apple's account
* chore: match widget and share extension
* chore: update app share group
* reuse group.app.immich.share
2026-04-22 11:53:20 -05:00
Alex
03b70cf029
fix: jump to timeline on new auto_router update ( #28022 )
2026-04-22 10:21:48 -05:00
Daniel Dietzler
4bfb8b36c2
chore!: migrate album owner to album_user ( #27467 )
...
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com >
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-22 16:52:23 +02:00
renovate[bot]
dfacde5af8
fix(deps): update typescript-projects ( #28025 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-04-22 16:49:28 +02:00
Junghwan
317afe9e3b
fix(web): normalize underscore locale codes in dynamic language selection ( #27900 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-04-22 13:28:33 +00:00
Jason Rasmussen
1fb5f13237
fix: oauth prompt ( #28021 )
2026-04-22 09:19:28 -04:00
Luis Nachtigall
793a7054fb
fix(mobile): thumbnail transition to asset viewer ( #27850 )
2026-04-21 15:54:40 -05:00
Luis Nachtigall
3a874dd441
fix(mobile): enable autoplay for motion photos in video viewer ( #27961 )
2026-04-21 15:53:21 -05:00
Luis Nachtigall
3dc7dc93d8
fix(mobile): clear local data on forced logout ( #27957 )
2026-04-21 15:52:00 -05:00
Yaros
70397dc5a6
fix(mobile): zero exposure ( #28017 )
2026-04-21 15:47:27 -05:00
Jason Rasmussen
a16d233a0c
chore(web): sort imports ( #27922 )
...
* feat: sort imports
* fix: something?
2026-04-21 14:51:38 -04:00
Daniel Dietzler
bb0872afef
chore: upgrade sql-tools ( #27885 )
2026-04-21 17:42:27 +00:00
Freddie Floydd
b9ca68f6e4
chore(web): rename components to PascalCase ( #28013 )
...
chore: rename components to PascalCase
2026-04-21 12:29:42 -04:00
Daniel Dietzler
837305da7e
chore: un-skip tests ( #28012 )
2026-04-21 12:08:23 -04:00
Daniel Dietzler
e20fb44142
fix: web navigation/animation regression ( #28011 )
2026-04-21 14:51:37 +00:00
renovate[bot]
c2786978cd
fix(deps): update typescript-projects ( #28008 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-04-21 15:29:34 +02:00
renovate[bot]
312bb91a4f
chore(deps): update github-actions ( #28005 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-21 13:35:55 +02:00
renovate[bot]
c1934b904c
chore(deps): update dependency opentofu to v1.11.6 ( #27999 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-21 13:31:16 +02:00
renovate[bot]
47752d158a
fix(deps): update dependency @mapbox/mapbox-gl-rtl-text to v0.4.0 ( #28007 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-21 13:25:30 +02:00
renovate[bot]
6267322b9c
chore(deps): update dependency exiftool-vendored to v35.17.0 ( #28004 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-21 13:08:12 +02:00
renovate[bot]
93c3cd49f3
chore(deps): update node.js to v24.15.0 ( #28006 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-21 09:47:32 +00:00
renovate[bot]
f52825ab08
chore(deps): update prom/prometheus docker digest to 5550dc6 ( #27998 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-21 11:23:24 +02:00
renovate[bot]
d74dc74f92
chore(deps): update dependency terragrunt to v1.0.1 ( #28002 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-21 11:23:07 +02:00
Luis Nachtigall
539a39ae49
refactor(mobile): Migrate durationInSeconds to durationMs ( #26615 )
2026-04-20 23:28:11 -04:00
Daniel Dietzler
f68cd424a7
chore: tags styling ( #27984 )
2026-04-20 22:06:43 -05:00
Alex
20c0cc7e73
fix: show neon light ( #27994 )
2026-04-20 20:12:54 -04:00
Aki Hakune
be1b9a5f67
feat(server): add MPO file type support ( #27963 )
...
* feat(server): add MPO file type support
* fix(server): document description error
2026-04-20 17:45:53 -04:00
shenlong
d9011c0829
refactor: test organisation and service test ( #27991 )
...
* refactor: test organisation
# Conflicts:
# mobile/test/unit/utils/editor_test.dart
* regroup hash_service_test
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-20 17:45:20 -04:00
shenlong
f909648bce
chore: pump flutter to 3.41.7 ( #27990 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-20 14:51:27 +00:00
Min Idzelis
c78b1d8ab4
fix(web): prevent interaction with detail panel behind person side panel ( #27309 )
2026-04-20 15:26:06 +02:00
Jason Rasmussen
94a34436a3
chore: remove unused packages & code ( #27925 )
2026-04-20 08:39:46 -04:00
shenlong
0eef15a3ab
chore(mobile): minor dependency updates ( #27949 )
...
* chore: minor dependency updates
* regenerate pod and remove unused imports
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-19 11:56:39 -05:00
shenlong
6982896549
feat: android periodic work manager task ( #23563 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-19 11:55:07 -05:00
Matthew Momjian
2c812a2561
fix(docs): helmet file affected containers ( #27939 )
...
fix helmet file
2026-04-18 12:19:39 -04:00
Mert
0b1188e42e
chore(server): separate ffmpeg arguments ( #27937 )
...
separate arguments
2026-04-18 15:33:44 +00:00
Freddie Floydd
be20cd2bf9
chore(web): bump svelte-check version to silence big warning stack trace ( #27935 )
...
chore: bump svelte-check version to silence big warning log
2026-04-18 14:42:47 +00:00
LJspice
b8591cb591
feat(server): add OIDC logout URL override option ( #27389 )
...
* feat(server): add OIDC logout URL override option
- Added toggle and field consistent with existing mobile redirect URI override.
- Existing auto-discovery remains default.
- Update tests and docs for new feature.
* fix(server): changes from review for OIDC logout URL override
- Rename 'logoutUri' to 'endSessionEndpoint'
- Remove toggle, just use override if provided
- Moved field in settings UI
2026-04-18 04:18:21 +00:00
Freddie Floydd
384d3a0984
fix(web): fix stale album page load ( #27825 )
...
* invalidate album data on album update to fix stale page load
* invalidate album data on album update to fix stale page load
* factor out callback, make async and await invalidate
* chore: formatting
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-04-17 21:24:33 -04:00
Freddie Floydd
03af669856
refactor(web): co-locate single-use components in /routes ( #27921 )
...
* co-locate single use components to /routes
* revert accidentally changed paths
* fix mangled path
* fmt
* fix accidentally moved multi-use components
2026-04-17 21:21:36 -04:00
renovate[bot]
b0e4850d76
chore(deps): update dependency flutter to v3.41.6 ( #27915 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-18 05:14:44 +05:30
Freddie Floydd
36ebcaf00c
fix(web): compute hashes for uploads in chunks ( #27878 )
...
* add @noble/hashes as a dep for web
* hash files in chunks
* drop old reference to crypto in test code
* use web worker for file hashing
2026-04-17 19:08:46 -04:00
shenlong
7a86f2b7b9
chore: remove stale mobile/.isar submodule entry ( #27913 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-18 04:29:13 +05:30
sparsh985
55f2b3b6a0
feat(server): add configurable OAuth prompt parameter ( #26755 )
...
* feat(server): add configurable OAuth prompt parameter
Add a `prompt` field to the OAuth system config, allowing admins to
configure the OIDC `prompt` parameter (e.g. `select_account`, `login`,
`consent`). Defaults to empty string (no prompt sent), preserving
backward compatibility.
This is useful for providers like Google where users want to be prompted
to select an account when multiple accounts are signed in.
Discussed in #20762
* chore: regenerate OpenAPI spec and clients for OAuth prompt field
* Adding e2e test cases
* feat: web setting
* feat: docs
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-04-17 21:20:07 +00:00
shenlong
fd5e8d6521
chore: pump auto_route ( #27876 )
...
* chore: pump auto_route
* make build
* chore: use drift from pubdev (#27877 )
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-17 20:28:36 +00:00
Freddie Floydd
6798d5df32
fix(server): require at least one field to be set when updating memory ( #27842 )
...
* add zod util to require one field is set in some schemas. appy to update memory endpoint
* add test
2026-04-17 20:18:48 +00:00
Min Idzelis
9d33853544
fix(web): respect abort signal after timeline bucket fetches ( #27563 )
...
Change-Id: I4bf7c7458883b50bd21484b1029d62526a6a6964
2026-04-17 16:18:14 -04:00
bo0tzz
a46e46452c
fix: run profile picture through thumbnail pipeline ( #27890 )
...
* fix: run profile picture through thumbnail pipeline
* fix: format
2026-04-17 16:15:59 -04:00
santanoce
dbf30b77bf
feat(server): added backchannel logout api endpoint ( #26235 )
...
* feat(server): added backchannel logout api endpoint
* test(server): fixed e2e tests
* fix(server): fixed suggested changes by reviewer
* feat(server): created function invalidateOAuth
* fix(server): fixed session.repository.sql
* test(server): added unit tests for backchannelLogout function
* test(server): added e2e tests for oidc backchnnel logout
* docs(server): added documentation on backchannel logout url
* docs(server): fixed typo
* feat(server): minor improvements of the oidc backchannel logout
* test(server): fixed tests after merge with main
* fix(server): fixed e2e test file
* refactor(server): tiny refactor of validateLogoutToken
* chore: cleanup
* fix: tests
* fix: make jwks extractable
---------
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-04-17 18:45:33 +00:00
bo0tzz
8afca348ff
fix: sanitize filenames before adding to zip ( #27893 )
...
* fix: sanitize filenames before adding to zip
* fix: lints
* chore: drop split()
2026-04-17 13:05:53 -04:00
shenlong
2070f775d6
refactor: remove riverpod generator ( #27874 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-17 20:01:44 +05:30
bo0tzz
a456a05052
chore: make filesystem backup docs even more explicit ( #27013 )
2026-04-17 15:42:40 +02:00
Sergey Katsubo
b7eff33f90
chore(web): refactor date section of asset viewer ( #24514 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-04-17 12:56:39 +00:00
Mees Frensel
18c0228f1b
fix(web): remove json title from duplicate tool thumbnail ( #27886 )
2026-04-17 08:37:04 -04:00
Jason Rasmussen
2f8be45fe0
chore!: remove /api/server/theme endpoint ( #27880 )
...
chore: remove server/theme endpoint
2026-04-17 08:30:03 -04:00
Daniel Dietzler
41968fdcac
feat: cache shared link ( #27889 )
2026-04-17 08:17:39 -04:00
Yaros
79c392ceba
fix(docs): instructions on how to use local immich ui ( #27813 )
2026-04-17 12:29:14 +02:00
Mees Frensel
8fbeb64c59
fix(web): use event for zooming out after opening face editor ( #27789 )
2026-04-17 12:14:24 +02:00
Mees Frensel
7d181f0686
fix!: set duration to null when not present ( #26982 )
2026-04-17 11:57:10 +02:00
shenlong
2172dde7dc
chore: remove immich lint ( #27873 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-16 15:55:40 -05:00
Luis Nachtigall
fce220b1d7
chore(mobile): update special format column detection ( #27867 )
2026-04-16 14:01:59 -04:00
shenlong
2a47c35eb7
chore: pump flutter to 3.41.6 ( #27834 )
...
* chore: pump flutter to 3.41.6
* more isar cleanup
* ignore experimental use for TableMigration
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-16 22:26:46 +05:30
Jason Rasmussen
6aadb7b5bd
feat: dynamic languages ( #27869 )
...
Co-authored-by: xantin <github@xantin.be >
2026-04-16 12:37:37 -04:00
renovate[bot]
88bce52042
fix(deps): update dependency jose to v6 ( #27862 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-04-16 18:36:07 +02:00
Timothy Dobras
d046f16860
fix(oauth): normalize email claim to lowercase and trim before account lookup and registration ( #26841 )
...
* fix(oauth): normalize email claim to lowercase before account lookup and registration
* test(auth): add test for OAuth email case normalization
* chore: clean up
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-04-16 15:41:42 +00:00
renovate[bot]
88815a0345
chore(deps): update base-image to v202604141125 (major) ( #27858 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 15:40:40 +00:00
Jason Rasmussen
57212f29bf
chore: bump ( #27866 )
2026-04-16 11:32:33 -04:00
renovate[bot]
95fa8fbdab
chore(deps): update machine-learning ( #26970 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 11:32:08 -04:00
renovate[bot]
687b7cad6f
chore(deps): update dependency terragrunt to v1 ( #27860 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 10:36:15 -04:00
Steven Massaro
ac2ebcee37
chore: improve randomness of /search/random endpoint ( #27531 )
2026-04-16 14:36:05 +00:00
bo0tzz
3356e81c85
fix!: do not allow insecure oauth requests by default ( #27844 )
...
* fix!: do not allow insecure oauth requests by default
* fix: format
* fix: make open-api
* fix: tests
* nit: casing
* chore: migration to allow insecure if current oauth uses http
2026-04-16 10:11:58 -04:00
renovate[bot]
9c642bd6fc
chore(deps): update github-actions ( #27857 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 15:29:48 +02:00
bo0tzz
9da0cb3cf4
chore: link to PR template in auto-close message ( #27756 )
2026-04-16 09:14:36 -04:00
renovate[bot]
4ff6cca4da
fix(deps): update dependency pillow to >=12.2,<12.3 [security] ( #27773 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 09:13:39 -04:00
renovate[bot]
2b7ae4981f
chore(deps): update dependency pytest to v9.0.3 [security] ( #27777 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 09:12:49 -04:00
renovate[bot]
e63df4121a
chore(deps): update dependency @types/node to ^24.12.2 ( #27856 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 13:12:38 +00:00
renovate[bot]
03b4ab2935
fix(deps): update dependency simple-icons to v16 ( #27855 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 13:07:35 +00:00
bo0tzz
facd3bd331
fix: oauth issuerUrl validation ( #27848 )
2026-04-16 09:06:55 -04:00
renovate[bot]
20ddf2e7d2
fix(deps): update dependency nestjs-cls to v6 ( #27852 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 13:45:42 +02:00
renovate[bot]
7f0025b3fc
chore(deps): update dependency @types/nodemailer to v8 ( #27851 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 13:28:23 +02:00
Mees Frensel
60f4dedb29
chore(web): small fixes for location picker modal ( #27822 )
2026-04-16 11:49:24 +02:00
Min Idzelis
d5d2ebd9bf
fix(web): close edit faces panel on Escape key press ( #27519 )
...
Move `showEditFaces` state to `assetViewerManager` so the edit faces
panel open/close state is globally accessible. Add Escape key handling
to `PersonSidePanel` that closes the assign-face sub-panel first, then
the edit faces panel. Guard the asset viewer's global Escape-to-close
action so it doesn't fire while either face panel is open.
Change-Id: I0c947fe0758aef0eac473f4cc72f6a3b6a6a6964
2026-04-15 20:22:20 -05:00
Yaros
37abbeba52
fix(mobile): readonly redirect when not logged in ( #27728 )
2026-04-15 20:20:08 -05:00
Min Idzelis
50557002b7
fix(web): stale adaptive image when original overlays preview ( #27621 )
...
AdaptiveImage stacks quality layers (thumbnail → preview → original) as they load. Without compositor layer promotion on the container, the browser could render a stale frame when the original-quality layer was overlaid on top of the preview-quality layer.
Add `will-change: transform` as a class on AdaptiveImage's root element so it gets a dedicated compositor layer from first paint. This also subsumes the imperative `style.willChange = 'transform'` that zoomImageAction was applying to the same element (the zoom target from photo-viewer is the AdaptiveImage root), so drop that now-redundant code.
Change-Id: Icd866a2bb5a5fce299c36404547fa0546a6a6964
2026-04-15 20:19:18 -05:00
Min Idzelis
4aa31d38bf
fix(web): svelte regression - cancel video preview fetch when bind:this is cleared early ( #27713 )
...
fix(web): cancel video preview fetch when bind:this is cleared early
In Svelte 5.53.9, `bind:this` is now cleared earlier in the unmount
sequence ("better bind:this cleanup timing"). The video thumbnail's
$effect was relying on the old order to read the bound `player` element
and clear its `src` to abort the in-flight `/api/assets/{id}/video/playback`
range request — but the bind is now `undefined` by the time the effect
runs, so the cleanup is silently skipped. The detached <video> keeps
its src, and Firefox does not abort an in-flight media fetch when the
element is detached/GC'd. Long-lived 206 range requests then saturate
Firefox's 6-connection HTTP/1.1 per-host limit and freeze the timeline
(see #27585 ).
Capture the player reference inside the effect and tear down via the
effect cleanup return — Svelte runs the prior cleanup (with the captured
ref) before `bind:this` is cleared. Use the canonical
`pause() / removeAttribute('src') / load()` sequence which actually aborts
the fetch in Firefox, even on a detached element.
Fixes #27585
Change-Id: I4d9fba859955f5c54f603c345e61d4206a6a6964
2026-04-15 20:18:59 -05:00
Min Idzelis
3d8df74b43
refactor(web): turn thumbhash action into Thumbhash component ( #27741 )
...
refactor(web): extract thumbhash canvas into Thumbhash component
Change-Id: If78955bed48b6e690df398e5e2ae61fb6a6a6964
2026-04-15 20:18:49 -05:00
renovate[bot]
2ff9f95527
chore(deps): update dependency python-multipart to v0.0.26 [security] ( #27838 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 19:06:27 -04:00
Jason Rasmussen
a69eecf3bc
chore!: remove without assets ( #27835 )
...
* chore!: remove without assets
* fix: linting and e2e
---------
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-04-15 18:34:22 -04:00
Jason Rasmussen
4ffa26c969
feat: auth logout page ( #27831 )
...
* feat: auth logout page
* feat: skip login if already logged in
2026-04-15 16:33:52 -04:00
Jason Rasmussen
ac06514db5
feat: album map markers endpoint ( #27830 )
2026-04-15 15:58:34 -04:00
Jason Rasmussen
792cb9148b
chore!: rename API key schemas ( #27828 )
...
chore!: rename API schemas
2026-04-15 15:58:26 -04:00
Daniel Dietzler
8ee5d3039a
chore!: remove deviceId and deviceAssetId ( #27818 )
...
chore: remove deviceId and deviceAssetId
2026-04-15 15:00:33 -04:00
Jason Rasmussen
d410131312
chore!: remove old timeline sync endpoints ( #27804 )
2026-04-15 13:58:48 -04:00
bo0tzz
5334a6254a
fix: make web build stage deterministic ( #27823 )
2026-04-15 19:31:23 +02:00
shenlong
79fccdbee0
refactor: yeet old timeline ( #27666 )
...
* refactor: yank old timeline
# Conflicts:
# mobile/lib/presentation/pages/editing/drift_edit.page.dart
# mobile/lib/providers/websocket.provider.dart
# mobile/lib/routing/router.dart
* more cleanup
* remove native code
* chore: bump sqlite-data version
* remove old background tasks from BGTaskSchedulerPermittedIdentifiers
* rebase
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-15 23:00:27 +05:30
Brandon Wees
6dd6053222
feat: mobile editing ( #25397 )
...
* feat: mobile editing
fix: openapi patch
this sucks :pepehands:
chore: migrate some changes from the filtering PR
chore: color tweak
fix: hide edit button on server versions
chore: translation
* chore: code review changes
chore: code review
* sealed class
* const constant
* enum
* concurrent queries
* chore: major cleanup to use riverpod provider
* fix: aspect ratio selection
* chore: typesafe websocket event parsing
* fix: wrong disable state for save button
* chore: remove isCancelled shim
* chore: cleanup postframe callback usage
* chore: clean import
---------
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com >
2026-04-15 09:26:40 -05:00
Mees Frensel
8454cb2631
chore: exit open-api script on errors ( #27815 )
2026-04-15 10:09:51 -04:00
Daniel Dietzler
603fc7401f
fix: redirect original ( #27759 )
2026-04-15 15:43:09 +02:00
Jason Rasmussen
ed70e0febf
chore: stop using legacy partner create endpoint ( #27806 )
2026-04-15 16:16:43 +05:30
Jason Rasmussen
5f5e3344d5
chore!: remove unused token response param ( #27805 )
2026-04-15 00:58:00 -04:00
Brandon Wees
6da2d3d587
chore!: remove getRandom api endpoint ( #27780 )
...
* chore!: remove getRandom api endpoint
* chore: sync openapi
* fix: test
* chore: more cleanup
2026-04-14 21:32:12 -04:00
Jason Rasmussen
41d2d84b21
chore!: remove deprecated env variables ( #27802 )
2026-04-14 21:30:31 -04:00
Jason Rasmussen
6ba17bb86f
refactor!: remove my shared link dto ( #27023 )
...
refactor!: remove deprecated shared link apis
2026-04-14 20:58:02 -04:00
Jason Rasmussen
e1a84d3ab6
refactor!: remove replace asset ( #27022 )
2026-04-14 20:21:05 -04:00
Timon
7d8f843be6
refactor!: migrate class-validator to zod ( #26597 )
2026-04-14 23:39:03 +02:00
OdinOxin
3753b7a4d1
feat: sort users alphabetically when adding to album ( #27731 )
2026-04-14 21:21:22 +02:00
Jonathan Jogenfors
84a1fb27ca
feat(web): lazy load library and server statistics ( #26406 )
...
* feat: add offline library statistics
* fix comments
* feat: add offline library statistics
* fix comments
* fix Daniel's comments
* fix Daniels comment 2
2026-04-14 12:54:09 -04:00
Yaros
81780b0cc0
fix(web): add partner photo to album from multiselect ( #27767 )
...
* fix(web): add partner photo to album
* chore: fix formatting
* fix: run-job assets
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-04-14 16:48:39 +00:00
Min Idzelis
5e81a5a054
feat(web): remove delay from Skeleton ( #27580 )
...
Change-Id: I95a37f1af832c005a8f009d6f07df8ac6a6a6964
2026-04-14 12:47:37 -04:00
Miguel Raposo
e4e2f586b5
fix(server): render storage template date/time tokens in UTC ( #24350 ) ( #26917 )
2026-04-14 18:45:14 +02:00
OdinOxin
a001adf14a
feat: filter users on share ( #27732 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-04-14 16:43:45 +00:00
Daniel Dietzler
136814540a
fix: asset multi select download shortcut ( #27784 )
2026-04-14 12:29:55 -04:00
Jason Rasmussen
fed5cc1ae1
feat: upgrade immich/ui ( #27792 )
2026-04-14 16:18:12 +00:00
Yaros
641ab51b80
fix(web): selection clearing on preview ( #27702 )
...
* fix(web): selection clearing on preview
* chore: remove unnecessary checks
2026-04-14 10:06:32 -05:00
Yaros
3b47ca1c37
fix(mobile): add keys for person tiles in search ( #27689 )
...
* fix(mobile): key for person tiles in search
* chore: add key to avatar
* chore: use simple personId
* chore: rename key in person page
2026-04-14 10:05:09 -05:00
Jason Rasmussen
8fb2c7755d
feat: commands ( #27546 )
2026-04-14 09:34:46 -04:00
Jason Rasmussen
1ba0989e15
refactor: auth manager ( #27638 )
2026-04-14 08:49:24 -04:00
renovate[bot]
daed3f0966
chore(deps): update dependency @sveltejs/kit to v2.57.1 [security] ( #27762 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-14 11:50:25 +02:00
renovate[bot]
46d612ad8c
chore(deps): update dependency nodemailer to v8.0.5 [security] ( #27623 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-14 11:49:26 +02:00
renovate[bot]
513dead2c2
chore(deps): update dependency @nestjs/core to v11.1.18 [security] ( #27544 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-14 09:49:03 +00:00
renovate[bot]
ca006c1569
fix(deps): update typescript-projects ( #27573 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-04-14 11:41:09 +02:00
renovate[bot]
4e8e8304fd
fix(deps): update react-email monorepo (major) ( #27572 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-14 11:40:58 +02:00
Nicolas-micuda-becker
d377d2e145
fix(web): center images in RTL layouts ( #27678 ) ( #27753 )
2026-04-13 13:29:35 -05:00
shenlong
9c9feddf7d
refactor: folder page to use new models ( #27657 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-13 12:19:44 -05:00
Andreas Heinz
bfcf34d8b5
feat(web): persist state of file path information in details panel ( #27770 )
...
feat(enhancement): persist state of file path info in details panel
2026-04-13 12:18:34 -05:00
github-actions
95e57a24cb
chore: version v2.7.5
2026-04-13 14:27:31 +00:00
Weblate (bot)
eada662981
chore(web): update translations ( #27589 )
...
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de_CH/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/eo/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
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/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
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/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translation: Immich/immich
Co-authored-by: Aliyss Snow <mangoworksbeta@gmail.com >
Co-authored-by: Bannawat Thongbai <kaji.kanlapat99@gmail.com >
Co-authored-by: Carlo Beltrame <weblate@pendantmusic.ch >
Co-authored-by: Dawnsink <dai@cosmopeace.com >
Co-authored-by: Edmundas <edmius@gmail.com >
Co-authored-by: Happy <59247878+happy2452354@users.noreply.github.com >
Co-authored-by: Jeppe Nellemann <jepnel@proton.me >
Co-authored-by: Linerly <linerly@proton.me >
Co-authored-by: Link Notig <TestMailProtonWhyNot@protonmail.com >
Co-authored-by: Mees Frensel <meesfrensel@gmail.com >
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com >
Co-authored-by: Osama <laptooxz@proton.me >
Co-authored-by: PPNplus <ppnplus@protonmail.com >
Co-authored-by: Tim Morley <weblate.3919org@timsk.org >
Co-authored-by: UDP <udp@users.noreply.hosted.weblate.org >
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org >
Co-authored-by: Volodymyr Sakharov <savolodya@gmail.com >
Co-authored-by: Vykintas Vyšniauskas <vykintasv@gmail.com >
Co-authored-by: WellsTsai <dan50907@gmail.com >
Co-authored-by: brainheart95 <josephdm4d@gmail.com >
Co-authored-by: dvbthien <dvbthien@users.noreply.hosted.weblate.org >
Co-authored-by: 이찬웅 <lcw7527@gmail.com >
2026-04-13 14:25:01 +00:00
Zack Pollard
352f6ecc28
fix(server): add rate limit and deduplication to version check ( #27747 )
2026-04-13 12:35:46 +00:00
github-actions
bee49cef02
chore: version v2.7.4
2026-04-10 16:32:26 +00:00
shenlong
6d0c6a4008
chore: pump cronet version ( #27685 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-04-10 16:29:05 +00:00
Luis Nachtigall
8a975e5ea9
refactor(mobile): cleanup iOS image loading pipeline ( #27672 )
...
* refactor: replace DispatchQueue + DispatchSemaphore with OperationQueue for image processing
* implement RequestRegistry and UnfairLock for managing cancellable requests
* implement requests registry for local and remote image processing
* remove Cancellable protocol and cancel method from request registry
* refactor: introduce ImageRequest base class with unified cancellation and finish helpers
* refactor: add get method to RequestRegistry and streamline request removal in image processing
* add guard to cancel to prevent double onCancel calls
* fix duplicate code merge issue
* refactor(ios): enhance finish method to return callback status
* remove unfitting methods form ImageRequest.swift and fix memory issue
* revert bad merge
* refactor(ios): resolve cancellation issues
* refactor(ios): streamline image request completion handling
* add return statements
* refactor(ios): simplify image request cancellation and registry handling
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-04-10 10:56:35 -05:00
Luis Nachtigall
d39e7da10d
fix(mobile): fix flutter cache eviction on thumbnails ( #27663 )
...
* fix: add markFinished parameter to loadRequest and loadCodecRequest methods
* update loadRequest and loadCodecRequest methods to use isFinal
* Apply suggestions from code review
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com >
* remove redundant check
* fix: ensure isFinished is set correctly during cache eviction
* formatting
---------
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com >
2026-04-10 10:28:55 -05:00
Daniel Dietzler
bc400d68ac
chore: move .tsbuildinfo file to dist folder ( #27682 )
2026-04-10 16:02:25 +02:00
renovate[bot]
d7f038ec60
chore(deps): update dependency eslint-plugin-unicorn to v64 ( #27575 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-04-10 10:23:42 +00:00
Mees Frensel
26957f37ce
fix(server): hide original filename when not showing metadata ( #27581 )
2026-04-10 12:07:18 +02:00
github-actions
3254d31cd2
chore: version v2.7.3
2026-04-09 17:51:40 +00:00
Jason Rasmussen
7b269d1638
fix: ssr open graph tags ( #27639 )
...
fix: SSR open graph tags
2026-04-09 12:16:41 -04:00
Luis Nachtigall
b5bed02300
fix(mobile): get provider refs before async gaps in backup page ( #27597 )
...
* fix(mobile): get provider refs before async gaps in backup page
* fix(mobile): use previously created provider refs in start backup function
2026-04-08 20:55:53 -05:00
Zack Pollard
5553910236
fix(web): don't cache empty search results for people search ( #27632 )
2026-04-09 02:33:04 +01:00
Zack Pollard
8d67c1f820
fix(server): people search not showing for 3 or less characters ( #27629 )
...
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com >
2026-04-09 01:56:07 +01:00
Matthew Momjian
ed0ec30917
fix(docs): updated docker deprecation link ( #27633 )
...
new link
2026-04-08 20:33:11 -04:00
Luis Nachtigall
2b0f6c9202
fix(mobile): improve image load cancellation handling ( #27624 )
...
fix(image): improve image load cancellation handling
2026-04-08 17:23:42 -04:00
André Erasmus
55ab8c65b6
fix(server): avoid false restore failures on large database imports ( #27420 )
...
* fix(server): increase restore health check timeout and reject with Error
* chore: clean up
---------
Co-authored-by: André Erasmus <25480506+NoBadDays@users.noreply.github.com >
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-04-08 16:03:41 -04:00
Cullen Jennings
781d568f29
fix(docs): typo 'Start rating' to 'Star rating' ( #27606 )
2026-04-08 18:25:45 +00:00
Zack Pollard
6a361dae72
fix(server): use randomized cron for version check scheduling ( #27626 )
...
Also removes unnecessary rate limit
2026-04-08 19:15:38 +01:00
renovate[bot]
64766c8c06
chore(deps): update github-actions ( #27560 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-08 17:32:54 +02:00
github-actions
6a63e814a5
chore: version v2.7.2
2026-04-07 20:58:38 +00:00
Jason Rasmussen
6441c3b77c
fix: server build ( #27599 )
2026-04-07 20:53:04 +00:00
github-actions
b03a649e74
chore: version v2.7.1
2026-04-07 20:22:28 +00:00
Mert
2903b2653b
fix(server): library import batch size ( #27595 )
...
* lower batch size
* update test
2026-04-07 15:58:03 -04:00
Mert
9ba9a22c40
fix(ml): downgrade numpy ( #27591 )
...
downgrade numpy
2026-04-07 15:57:42 -04:00
bo0tzz
f1882c2926
fix: csp quotes ( #27592 )
2026-04-07 15:54:30 -04:00
Daniel Dietzler
4278789083
chore: git ignore tsBuildInfo ( #27594 )
2026-04-07 15:53:10 -04:00
renovate[bot]
921c8a8de3
chore(deps): update dependency typescript to v6 ( #27577 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-04-07 17:15:55 +02:00
github-actions
afec61addc
chore: version v2.7.0
2026-04-07 15:08:18 +00:00
Weblate (bot)
a1a03efbcd
chore(web): update translations ( #27483 )
...
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
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/es/
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/gl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nn/
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/ru/
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/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hans/
Translation: Immich/immich
Co-authored-by: Dawnsink <dai@cosmopeace.com >
Co-authored-by: DevServs <bonov@mail.ru >
Co-authored-by: Francesco Fiorentino <gallgricela+trotter@gmail.com >
Co-authored-by: Frank Paul Silye <frankps@gmail.com >
Co-authored-by: Gianni De Wachter <gianni.dewachter@gmail.com >
Co-authored-by: HackingAll <hacking.all.YT@gmail.com >
Co-authored-by: Haru Ijima <haruijimakun@gmail.com >
Co-authored-by: Hurricane_32 <rodrigorimo@hotmail.com >
Co-authored-by: Jarek Iwanus <jiwanus@proton.me >
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk >
Co-authored-by: Krastyo Krastev <roshavi4ak@gmail.com >
Co-authored-by: Luis Peregrina <luis.a.peregrina@gmail.com >
Co-authored-by: MarcSerraPeralta <marcserraperalta@gmail.com >
Co-authored-by: Matjaž T. <matjaz@moj-svet.si >
Co-authored-by: Petri Hämäläinen <petri.hamalainen@mailbox.org >
Co-authored-by: Simen Haugen <simen00@gmail.com >
Co-authored-by: Sylvain Pichon <service@spichon.fr >
Co-authored-by: TA <tobi@warsnich.de >
Co-authored-by: TV Box <realceday.tvbox@gmail.com >
Co-authored-by: Veerasak Kritsanapraphan <veerasak.kritsanapraphan@gmail.com >
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl >
Co-authored-by: chamdim <chamdim@protonmail.com >
Co-authored-by: miksuk28 <mikhail@sukhanik.no >
Co-authored-by: muziqaz <muziqaz@users.noreply.hosted.weblate.org >
Co-authored-by: nanai <ivagamerytmc@gmail.com >
Co-authored-by: naxxerd <top.gear2951@dsme.no >
Co-authored-by: ray ra <verdonsky22@gmail.com >
Co-authored-by: 张建涛 <app521@gmail.com >
Co-authored-by: 안세훈 <on9686@gmail.com >
2026-04-07 15:05:52 +00:00
Dominik Szymański
1d0e5cf18d
fix: allow bots to access /s/ urls ( #27579 )
...
#27548 Add Allow directive for custom share links social media preview
2026-04-07 09:22:53 -05:00
Min Idzelis
de9ec95db1
fix(web): handle unhandled promise rejection in CancellableTask ( #27553 )
...
When a concurrent caller awaits `this.complete` inside `execute()` and
`cancel()` is called, the promise rejects with `undefined` outside of any
try/catch, causing "Uncaught (in promise) undefined" console spam during
rapid timeline scrolling.
- Wrap the `await this.complete` path in try/catch, returning 'CANCELED'
- Guard the `finally` block to only null `cancelToken` if it still belongs
to this call, preventing a race condition with `cancel()` to `init()`
Change-Id: I65764dd664eb408433fc6e5fc2be4df56a6a6964
2026-04-07 09:22:29 -05:00
renovate[bot]
7f784952eb
chore(deps): update dependency rollup-plugin-visualizer to v7 ( #27576 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-07 11:01:23 +00:00
renovate[bot]
3d6c7ba353
chore(deps): update dependency @types/supertest to v7 ( #27574 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-07 10:57:45 +00:00
renovate[bot]
3be97db118
fix(deps): update react monorepo to v19 (major) ( #27571 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-07 12:53:33 +02:00
renovate[bot]
8f3a99ffbc
chore(deps): update dependency eslint-plugin-compat to v7 ( #27570 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-07 10:52:25 +00:00
renovate[bot]
e6d114af10
chore(deps): update dependency terragrunt to v0.99.5 ( #27567 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-07 12:37:29 +02:00
renovate[bot]
4e28811f09
chore(deps): update prom/prometheus docker digest to dda13e2 ( #27566 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-07 11:49:05 +02:00
renovate[bot]
4987032e62
chore(deps): update docker.io/valkey/valkey:9 docker digest to 3b55fba ( #27559 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-07 11:48:06 +02:00
renovate[bot]
572bad8ede
chore(deps): update dependency vite to v8.0.5 [security] ( #27543 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-06 18:20:10 +00:00
Afonso Mendonça Ribeiro
95c1f0efeb
fix: timestamp handling for database backup in Web UI ( #27359 )
...
* Fix #26502 : Fix timestamp handling for database backup in Web UI
Frontend parsed backup timestamps as UTC, but they were in the
server's local timezone, causing wrong relative times.
Add `timezone` field to DatabaseBackupDto to expose server timezone.
Update frontend to parse timestamps using this timezone.
Convert timestamps to user's local timezone before rendering.
Fallback to browser timezone if server timezone is missing.
Ensures correct relative time display in Web UI.
* fix: regenerate open-api types and remove custom backup type
- Ran `make open-api` to update types based on backend changes
- Removed custom BackupWithTimezone type in MaintenanceBackupsList
- Updated timezone props to use the newly generated native type
* fix: simplify timezone handling for database backups
- Updated DatabaseBackupDto to make timezone a required property
- Removed manual DateTime.local().zoneName fallbacks
- Cleaned up type casts after regenerating OpenAPI types
* fix: Add missing newline at end of spec file
2026-04-06 17:27:48 +02:00
Thomas
fbe631fe91
fix(mobile): convert video controls from hook to stateful widget ( #27514 )
...
We are generally looking to move away from hooks as they are hard to
reason about and have weird bugs. In particular, the timer did not
properly capture the ref of the callback, and so it would execute on old
state. A standard stateful widget does not have this problem, and is
easier to organise.
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-04-06 10:13:45 -05:00
Putu Prema
2143a0c935
fix(mobile): transparent system navbar when trash bottom bar is visible ( #27093 )
...
* disable bottom safe area on trash bottom bar so that it extends below the system nav bar
* remove manual padding calculations
* re-add static vertical padding to maintain previous bottom bar height
2026-04-06 09:28:07 -05:00
Ray
136bd1e2eb
feat(server): Add support for .ts files ( #27529 )
2026-04-06 15:50:05 +02:00
Min Idzelis
564065a3ed
fix(web): reset cursor style when slideshow bar unmounts ( #27521 )
2026-04-06 14:07:49 +02:00
Min Idzelis
9bcce59719
fix(e2e): fix search gallery delete tests ( #27536 )
2026-04-06 14:00:50 +02:00
Luis Nachtigall
cd86a83c33
refactor(mobile): introduce image request registry on iOS ( #27486 )
...
* refactor: replace DispatchQueue + DispatchSemaphore with OperationQueue for image processing
* implement RequestRegistry and UnfairLock for managing cancellable requests
* implement requests registry for local and remote image processing
* remove Cancellable protocol and cancel method from request registry
* use mutex
---------
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com >
2026-04-05 18:55:43 -04:00
Min Idzelis
f29c06799f
fix(web): isFullScreen initial value check is incorrect ( #27520 )
2026-04-05 21:19:58 +00:00
Luis Nachtigall
6fcf651d76
refactor(mobile): IOS replace DispatchQueue + DispatchSemaphore with OperationQueue for image processing ( #27471 )
...
refactor: replace DispatchQueue + DispatchSemaphore with OperationQueue for image processing
2026-04-05 16:11:02 -04:00
Zack Pollard
196307bca5
chore(server): use dev version check endpoint for non-production environments ( #27508 )
2026-04-05 10:52:59 +01:00
Thomas
776b9cbad5
fix(mobile): use key on video controls ( #27512 )
...
The widget is not recreated correctly when videoPlayName changes, which
can cause weird behaviour with hooks and timers (like timers not firing
when they should do). Using a key forces flutter to recreate the widget
properly and allow the assumptions in build to work correctly.
2026-04-04 21:54:34 -05:00
Thomas
960be0c27a
fix(mobile): don't update search filters in-place ( #26965 )
...
* fix(mobile): don't update search filters in-place
Search filters are currently modified in-place, which can feel quite
janky. The chips behind the bottom sheet update instantly, and the
search page gets confused because filters have been applied but no
search has been initiated. Filters should keep their own copy of the
filter when they're opened, and the commit + search on apply.
The previous filter and pre-filter concepts were also cleaned up. They
added complexity, and `search()` now owns the full life cycle of the
filter.
This now also reverts the changes from #27155 , as this solution should
be cleaner.
* refactor & color tweak
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-04-04 22:53:03 +00:00
Thomas
123119ca0d
chore(mobile): reduce buffering timer duration ( #27111 )
...
3 seconds is too long for some people, and it can be confusing to see
the video not playing and no indication that it's buffering. Reducing
the duration of the timer should show the spinner faster and prevent
confusion.
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-04-04 21:25:40 +00:00
Thomas
1772f720bf
fix(mobile): reset video controls hide timer when showing controls ch… ( #26985 )
...
fix(mobile): reset video controls hide timer when showing controls changes
The hide timer currently only resets when the status of the video
changes, but does not account for when the controls change. This means
that two things happen:
1. The hide timer does not reset when the controls become visible
again, the controls will stay visible forever or until the playback
status changes.
2. The hide timer will fire too quickly, and will hide the controls
much sooner than 5 seconds if the controls are hidden and then shown
again before the hide timer fires.
2026-04-04 16:12:56 -05:00
Thomas
bcc29903de
chore(mobile): persist video controls visibility when swiping ( #26986 )
...
At current, the controls for videos are always hidden when opening an
asset from the timeline, and when swiping between assets. The latter is
actually quite annoying, so it would be better UX if video controls were
hidden when opening from the timeline like before, but visibility of the
controls was retained when swiping between assets.
2026-04-04 16:11:59 -05:00
Thomas
767caf9bfe
fix(mobile): ignore pointer events on toasts ( #26990 )
...
These toasts can sometimes cover UI elements and make them impossible to
interact with until they are dismissed. Specifically, deleting an asset
will show a toast over the video controls and prevent seeking.
2026-04-04 10:39:13 -05:00
Min Idzelis
649d14822a
refactor(web): rename MonthGroup to TimelineMonth ( #27447 )
...
Rename MonthGroup class to TimelineMonth to better convey that it represents a single month within the timeline. Updates the file, class, and all references across 16 files.
Change-Id: Id50fd6d4b7d0e431571b67c0f81c0e316a6a6964
2026-04-03 13:27:12 -04:00
Jason Rasmussen
207672c481
fix: user-agent format ( #27488 )
...
* fix: user-agent format
* ci: fix static analysis
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-03 12:26:50 -04:00
John Maguire
4fcd9c2e0d
feat: add preview button when selecting images ( #27305 )
...
* Add preview button when selecting images
* Fix test helper
* prettier
* styling
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com >
2026-04-03 16:21:43 +00:00
renovate[bot]
a2687d674e
chore(deps): update dependency lodash-es to v4.18.1 [security] ( #27448 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-03 18:16:05 +02:00
renovate[bot]
fb1bc7f9e2
chore(deps): update dependency lodash to v4.18.1 [security] ( #27461 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-03 18:15:31 +02:00
Mert
18e8d30b1c
fix(server): double exif join ( #27485 )
2026-04-03 18:14:46 +02:00
Vogeluff
95ef60628c
fix(web): always show search type button ( #27043 )
...
* fix(web): always show search type button
* fix(web): formatting fixes
* fix(web): search-type-button inactive styling outline/secondary
* chore: styling
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com >
2026-04-03 15:37:03 +00:00
Mees Frensel
a19b7148e5
feat(web): use ui meter component for storage ( #27459 )
2026-04-03 09:36:22 -05:00
Weblate (bot)
8e414e42f3
chore(web): update translations ( #27029 )
...
Co-authored-by: -J- <heyj0e@tuta.io >
Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com >
Co-authored-by: André Nøbbe Christiansen <andre@nobbe.dk >
Co-authored-by: Arif Budiman <arifpedia@gmail.com >
Co-authored-by: Chao En, Kuo <daniel970275@gmail.com >
Co-authored-by: Cornelius Christiansen <christiansen.cornelius@gmail.com >
Co-authored-by: David Kurniawan <kurniawandavid17@gmail.com >
Co-authored-by: DevServs <bonov@mail.ru >
Co-authored-by: Deyan Stamboliev <deyan.stamboliev@gmail.com >
Co-authored-by: Fatah Rokbi <fatahrokbi@gmail.com >
Co-authored-by: Felipe Gomes <seutiaoemporio@gmail.com >
Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org >
Co-authored-by: Francesco Miccoli <fra03mi@gmail.com >
Co-authored-by: Frank Paul Silye <frankps@gmail.com >
Co-authored-by: Gideon Wentink <gjwentink@gmail.com >
Co-authored-by: HackingAll <hacking.all.YT@gmail.com >
Co-authored-by: Hakan <gucsav@yahoo.com >
Co-authored-by: Hans Cats <hanscats@gmail.com >
Co-authored-by: Happy <59247878+happy2452354@users.noreply.github.com >
Co-authored-by: Hosted Weblate user 85894 <reo7s@users.noreply.hosted.weblate.org >
Co-authored-by: Hurricane_32 <rodrigorimo@hotmail.com >
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com >
Co-authored-by: Indrek Haav <indrekhaav@users.noreply.hosted.weblate.org >
Co-authored-by: Ivan Dimitrov <idimitrov08@gmail.com >
Co-authored-by: Jarek Iwanus <jiwanus@proton.me >
Co-authored-by: Jeppe Nellemann <jepnel@proton.me >
Co-authored-by: JiZPaper <JiZPaper@gmail.com >
Co-authored-by: Joseph <josephlegrand33+hosted.weblate.org@gmail.com >
Co-authored-by: Jozef Gaal <preklady@mayday.sk >
Co-authored-by: Link Notig <TestMailProtonWhyNot@protonmail.com >
Co-authored-by: Marin Čorkalo <mcorkalo@gmail.com >
Co-authored-by: Marwan Jalaleddine <marwanjalaleddine@gmail.com >
Co-authored-by: Matjaž T. <matjaz@moj-svet.si >
Co-authored-by: Matthias Hirsch <ma.hirsch.hh@gmail.com >
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com >
Co-authored-by: Niklas Trautwein <jniklast@gmail.com >
Co-authored-by: Olaf Nielsen <solluh@mail.de >
Co-authored-by: Oleksandr Yurov <oyurov@icloud.com >
Co-authored-by: Oscar Guillén <osguima3@gmail.com >
Co-authored-by: PigeonPeak <pigeonpeak@proton.me >
Co-authored-by: PontusÖsterlindh <pontus@osterlindh.com >
Co-authored-by: Psycho <unhomen@gmail.com >
Co-authored-by: Roi Gabay <roigby@gmail.com >
Co-authored-by: Runskrift <anders@rimfrost.nu >
Co-authored-by: Sepehr Behroozi <sep.behroozi@gmail.com >
Co-authored-by: Shimul Roy <stenasaha@gmail.com >
Co-authored-by: Skanda <skillwiz94@gmail.com >
Co-authored-by: Sylvain Pichon <service@spichon.fr >
Co-authored-by: Szymon Kucharski <szymon.kucharski5@gmail.com >
Co-authored-by: TA <tobi@warsnich.de >
Co-authored-by: TV Box <realceday.tvbox@gmail.com >
Co-authored-by: Tage Lauritsen <tage@tunenet.dk >
Co-authored-by: Tim Morley <weblate.3919org@timsk.org >
Co-authored-by: UDP <udp@users.noreply.hosted.weblate.org >
Co-authored-by: Vegard Fladby <vegard@fladby.org >
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org >
Co-authored-by: Yllelder <yllelder@gmail.com >
Co-authored-by: anton garcias <isaga.percompartir@gmail.com >
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl >
Co-authored-by: bural <bural@mailbox.org >
Co-authored-by: chamdim <chamdim@protonmail.com >
Co-authored-by: dacx910 <dacx910@users.noreply.hosted.weblate.org >
Co-authored-by: dark fury <nodo05nodo05@gmail.com >
Co-authored-by: dark&white <darkwhite@users.noreply.hosted.weblate.org >
Co-authored-by: dvbthien <dvbthien@users.noreply.hosted.weblate.org >
Co-authored-by: fabiosequeira <fabio.sequeira.t0126448@edu.atec.pt >
Co-authored-by: josu. <josugarralda@gmail.com >
Co-authored-by: kylo32 <kylo32@gmail.com >
Co-authored-by: millallo <millallo@tiscali.it >
Co-authored-by: muziqaz <muziqaz@users.noreply.hosted.weblate.org >
Co-authored-by: pcnc <paul@cioanca.eu >
Co-authored-by: pyccl <changcongliang@163.com >
Co-authored-by: pythoncontroller <zinovlaun@gmail.com >
Co-authored-by: stefano trubian <trubianstefano@gmail.com >
Co-authored-by: waclaw66 <waclaw66@seznam.cz >
Co-authored-by: walpeDEV <walpe.aw@proton.me >
Co-authored-by: தமிழ்நேரம் <tamilneram247@gmail.com >
Co-authored-by: 藍焰-0Blue_Yan0 <jim080825@gmail.com >
2026-04-03 00:04:17 +01:00
Zack Pollard
db0f86c749
feat: move version checks to our own infrastructure ( #27450 )
2026-04-02 23:32:26 +01:00
Jason Rasmussen
adb6b39eec
fix: migrations ( #27477 )
2026-04-02 17:49:26 -04:00
Jason Rasmussen
c8ae99e7d7
fix: escape html ( #27469 )
2026-04-02 15:19:24 -04:00
Alex
37823bcd51
feat: create new person in face editor ( #27364 )
...
* feat: create new person in face editor
* add delay
* fix: test
* i18n
* fix: unit test
* pr feedback
2026-04-02 15:28:40 +00:00
Mees Frensel
b465f2b58f
fix: scrollbar ui theme colors ( #27455 )
2026-04-02 10:18:47 -05:00
Min Idzelis
2166f07b1f
refactor(web): rename DayGroup to TimelineDay ( #27446 )
...
Rename DayGroup class to TimelineDay to better convey that it represents
a single day within the timeline. Updates the file, class, and all
references across 13 files.
Change-Id: I9faef9bad73cd5b11f40daaf5eb140dd6a6a6964
2026-04-01 19:30:54 -04:00
Min Idzelis
c9e251c78c
feat(web): highlight active person thumbnail in detail panel and edit faces panel ( #27401 )
...
- Dim non-hovered person thumbnails to 40% opacity when any face is active
- Add ring highlight on the active person's thumbnail
- Add focus-visible outline styling for keyboard navigation
- Apply same treatment to both detail panel people section and edit faces side panel
Change-Id: I4ac10fe4568b95f3e0e8d9104133180f6a6a6964
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-04-01 10:49:09 -05:00
Mees Frensel
da4b88fc14
fix(web): transition bg and border-radius ( #27438 )
...
* fix(web): transition bg and border-radius
* also transition thumb
2026-04-01 09:34:49 -05:00
okxint
d1e2e8ab4e
fix(server): use substring matching for person name search ( #26903 )
2026-04-01 13:31:54 +00:00
Timon
2a619d3c10
fix(web): Enable stack selector in shared album view ( #24641 )
2026-04-01 15:19:14 +02:00
Brandon Wees
c29493e3a0
fix: withFilePath select edited or unedited file ( #27328 )
...
* fix: withFilePath select edited or unedited file
* chore: test
2026-04-01 08:19:38 -04:00
renovate[bot]
4ef777d145
chore(deps): update dependency handlebars to v4.7.9 [security] ( #27334 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-01 08:17:58 -04:00
renovate[bot]
0b40f4fd76
chore(deps): update dependency happy-dom to v20.8.9 [security] ( #27350 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-01 08:16:45 -04:00
bo0tzz
ecba4e2a62
chore: tee GITHUB_OUTPUT for debugging ( #27378 )
2026-04-01 08:15:43 -04:00
Michel Heusschen
4eb531197e
fix(web): prevent AssetUpdate from adding unrelated timeline assets ( #27369 )
2026-04-01 08:14:28 -04:00
Alex
505a07a825
feat: add move to lock folder in folder view ( #27384 )
2026-04-01 08:10:39 -04:00
Robin Meese
548dbe8ad6
feat(docs): add keycloack example to oauth docs ( #27425 )
2026-04-01 13:39:36 +02:00
renovate[bot]
0c184940f4
chore(deps): update github-actions ( #27416 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-31 15:58:36 +00:00
Channing Bellamy
be180fd9da
fix: detection of WebM container ( #24182 )
2026-03-31 11:44:51 -04:00
renovate[bot]
859f58174e
chore(deps): update node.js to v24.14.1 ( #27412 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-31 12:46:38 +02:00
renovate[bot]
a6c7e76008
chore(deps): update grafana/grafana docker tag to v12.4.2 ( #27411 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-31 12:39:33 +02:00
renovate[bot]
0ff94213e6
chore(deps): update dependency exiftool-vendored to v35.15.1 ( #27415 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-31 12:39:11 +02:00
Yaros
6b1dd6f680
fix(mobile): favorite button not updating state ( #27271 )
2026-03-30 21:24:56 -05:00
Min Idzelis
7d4286bbc5
fix(web): add drop shadow to asset viewer nav bar and prevent button shrinking ( #27404 )
...
- Add subtle drop shadow to the asset viewer nav bar for better visual
separation from the image behind it
- Add drop shadow to the OCR text recognition button in the lower right
- Prevent nav bar action buttons from shrinking to nothing by adding
*:shrink-0 to the flex container, with p-1/-m-1 to avoid clipping
focus outlines
Change-Id: I61cdc0ec66a65cde1c95b40c2c5428006a6a6964
2026-03-30 19:22:10 -05:00
Min Idzelis
18201a26d9
feat(web): OCR overlay interactivity during zoom ( #27039 )
...
Change-Id: Id62e1a0264df2de0f3177a59b24bc5176a6a6964
2026-03-30 19:19:53 -05:00
Daniel Dietzler
a2e3635ac9
chore: use esm global import ( #27408 )
2026-03-31 00:22:07 +02:00
Min Idzelis
ce346bf956
feat(web): dim photo outside hovered face bounding box ( #27402 )
...
When hovering over a detected face in the photo viewer, an SVG mask overlay
dims the rest of the image (40% black) while leaving the hovered face fully
visible. The overlay fades in/out smoothly via CSS opacity transition by
freezing the last highlighted box positions in state, preventing the overlay
from popping off instantly when the mouse leaves.
Change-Id: I07e2eb2b297820ec89812785fe7943846a6a6964
2026-03-30 16:16:38 -05:00
Mert
a1a2939868
fix(mobile): low upload timeout on android ( #27399 )
...
fix timeout
2026-03-30 16:05:21 -05:00
renovate[bot]
e8309585d6
fix(deps): update dependency nodemailer to v8 [security] ( #27351 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-30 19:44:39 +02:00
Jason Rasmussen
17d4941089
refactor: asset select manager ( #27330 )
2026-03-30 15:45:57 +01:00
Tony Fung
b09ebb11e9
perf(server): optimize people page query ( #27346 )
...
Optimize People page query: modified SQL to use index for faster performance
2026-03-28 21:33:05 +00:00
Nicolas-micuda-becker
181b028b09
fix(web): keep upload totals stable when dismissing items ( #27247 ) ( #27354 )
...
* fix(web): keep upload totals stable when dismissing items (#27247 )
* chore: remove package-lock.json
---------
Co-authored-by: bwees <brandonwees@gmail.com >
2026-03-28 16:25:44 -05:00
bo0tzz
eb20b715e4
fix: don't auto-close manually reopened PRs ( #27347 )
2026-03-28 12:50:09 +00:00
Luis Nachtigall
a277c6311f
fix(mobile): streamline error handling for live photo saving ( #27337 )
2026-03-27 19:07:38 -05:00
Jason Rasmussen
5889c42eb6
refactor: asset select manager ( #27329 )
2026-03-27 14:23:33 -04:00
Jason Rasmussen
14cce0cba3
refactor: asset select manager ( #27327 )
2026-03-27 13:48:51 -04:00
Jason Rasmussen
9b80ffd9c6
refactor: selection mananger ( #27325 )
2026-03-27 12:41:52 -04:00
Luis Nachtigall
306a3b8c7f
fix(mobile): images loads sometimes cancel too early ( #27067 )
...
* refactor listener tracking for image stream completers and fix early cancel call
* fix: improve cache listener identification in image stream tracking
* add documentation and test cases for listener tracking in ImageStreamCompleter
* fix: remove unnecessary image provision flag from listener tracking
* fix: override setImage method in cache aware listener tracker mixin
* fix: rename test file
2026-03-27 10:35:50 -04:00
Putu Prema
be0fc403d8
fix(mobile): mismatch between system and app color when using low-chroma system color scheme ( #27282 )
...
use DynamicSchemeVariant.fidelity to preserve low-chroma system color scheme as the app color
2026-03-27 09:21:43 -05:00
Yaros
c13fd9e4b5
fix(mobile): video icon not showing on memories ( #27311 )
2026-03-27 09:11:02 -05:00
Thomas
8724848fce
chore(mobile): reduce spacing on video controls ( #27313 )
...
The spacing was required for the old slider, but the new one has its own
spacing and makes it redundant. There is too much now, and we've
received feedback that it should be less sparse. The default track
height of 16px is an improvement over the old track height, but it is
very thick. A middleground of 12px might be better.
2026-03-27 09:10:19 -05:00
Min Idzelis
2d950db940
refactor(web): replace intersection booleans with enum ( #27306 )
...
Change-Id: I0c9703d5960031142ae47fef23805e0a6a6a6964
2026-03-27 08:37:12 -04:00
Min Idzelis
4b9ebc2cff
refactor(web): migrate isFaceEditMode from standalone store to assetViewerManager ( #27307 )
2026-03-27 13:20:15 +01:00
Saurav Sharma
e2d26ebdea
fix(web): prevent Safari from overwriting live photo image with video ( #26898 )
...
When downloading a live photo, Safari overwrites the image file with
the motion video because both share the same base filename. Append
'-motion' suffix to the video filename to prevent collision.
For example, IMG_1234.heic and IMG_1234.mov become IMG_1234.heic
and IMG_1234-motion.mov.
Fixes #23055
2026-03-26 14:37:05 -04:00
Phlogi
8c6adf7157
feat(server): resolve duplicates ( #25316 )
...
* feat(web): Synchronize information from deduplicated images
* Added new settings menu to the the deduplication tab.
* The toggable options in the settings are synchronization of: albums, favorites, ratings, description, visibility and location.
* When synchronizing the albums, the resolved images will be added to all albums of the duplicates.
* When synchronizing the favorite status, the resolved images will be marked as favorite, if at least one selectable image is marked as favorite.
* When synchronizing the ratings, the highest rating from the selectable images will be applied to the resolved image.
* When synchronizing the description, all descriptions from the selectable images will be merged into one description for the resolved image.
* When synchronizing the visibility, the most restrictive visibility setting from the selectable images will be applied to the resolved image.
* When synchronizing the location, if exactly one unique location exists among the selectable images, this location will be applied to the resolved image.
* There is no additional UI for these settings to keep the visual clutter minimal. The settings are applied automatically based on the user's preferences.
* Replace addAssetToAlbums with copyAsset
* fix linter
* feat(web): add duplicate sync fields and fix typo
* feat(web): add tag sync and enhance duplicate resolution
This update introduces tag synchronization for duplicate resolution,
ensuring all unique tag IDs from duplicates are applied to kept assets.
The visibility sync logic is updated to use a simplified ordering, as the hidden status items will never show up in a duplicate set.
Album synchronization now merges albums directly via addAssetsToAlbums; as the approach with copyAsset API endpoint was ineffiecient.
Description, rating, and location sync logic is improved for correctness.
and deduplication. i18n strings were added / updated.
* feat(server): move duplicate resolution to backend with sync and stacking
Moves duplicate metadata synchronization from frontend to backend, enabling robust
batch operations and proper validation. This is an improved refactor of PR #13851 .
New endpoints:
- POST /duplicates/resolve - batch resolve with configurable metadata sync
- POST /duplicates/stack - create stacks from duplicate groups
- GET /duplicates - now includes suggestedKeepAssetIds based on file size and EXIF
Key changes:
- Move sync logic (albums, tags, favorites, ratings, descriptions, location, visibility) to server
- Add server-side metadata merge policies with proper conflict resolution
- Replace client-side resolution logic with new backend endpoints
- Add comprehensive E2E tests (70+ test cases) and unit tests
- Update OpenAPI specs and TypeScript SDK
No breaking changes - only additions to existing API.
* feat(preferences): enable all duplicate sync settings by default
* chore: clean up
* chore: clean up
* refactor: rename & clean up
* fix: preference upgrade
* chore: linting
* refactor(e2e): use updateAssets API for setAssetDuplicateId
* fix: visibility sync logic in duplicate resolution
* fix(duplicate): write description to exifUpdate
Previously the duplicate resolution populated assetUpdate.description even
though description belongs to exif info.
* fix(duplicate): remove redundant updateLockedColumns wrapper
updateAllExif already computes lockedProperties via distinctLocked
using Object.keys(options). The wrapper added a lockedProperties key
to the options object, causing the spurious string 'lockedProperties'
to be stored in the lockedProperties array.
* fix(duplicate): write merged tags to asset_exif to survive metadata re-extraction
During duplicate resolution, replaceAssetTags correctly wrote merged tag
IDs to the tag_asset table, but never updated asset_exif.tags or locked
the tags property. The subsequent SidecarWrite → AssetExtractMetadata
chain calls applyTagList, which destructively replaces tag_asset rows
with whatever is in asset_exif.tags — still the original per-asset tags,
not the merged set.
Write merged tag values to asset_exif.tags via updateAllExif (which also
locks the property via distinctLocked), and queue SidecarWrite when tags
change so they persist to the sidecar file.
* docs(duplicates): clarify location and tag sync behavior
* refactor(duplicate): remove sync settings, always sync all metadata on resolve
Remove DuplicateSyncSettingsDto and the per-field sync toggles
(albums, favorites, rating, description, visibility, location, tags).
Duplicate resolution now unconditionally syncs all metadata from
trashed assets to kept assets.
- Remove DuplicateSyncSettingsDto and settings field from DuplicateResolveDto
- Update DuplicateService to always run all sync logic without conditionals
- Delete DuplicateSettingsModal.svelte and settings gear button from UI
- Remove DuplicateSettings type and duplicateSettings persisted store
- Update unit and e2e tests to remove settings from resolve requests
* docs: update duplicates utility to reflect automatic metadata sync
* docs(web): replace duplicates info modal with link to documentation
* chore: clean up
* fix: add missing type cast to jsonAgg in duplicate repository getAll
* fix: skip persisting rating=0 in duplicate merge to avoid unnecessary sidecar write
---------
Co-authored-by: Toni <51962051+EinToni@users.noreply.github.com >
Co-authored-by: Jason Rasmussen <jason@rasm.me >
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com >
2026-03-26 18:33:55 +00:00
Mees Frensel
48fdd39d30
feat(web): use ui pin input element ( #27200 )
2026-03-26 18:24:46 +00:00
Jonathan Jogenfors
22bf7c2005
feat(server): add checksum algorithm field ( #26573 )
...
* feat: add checksum algorithm field
* fix comments
* chore: rename migration
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-03-26 18:20:25 +00:00
Mees Frensel
47b45453c8
chore(web): refactor activity status ( #26956 )
...
* chore(web): refactor activity status
* fix: size change
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-03-26 18:15:42 +00:00
Robin Wohlers-Reichel
448c069fb6
feat(web): add shortcuts to rotate images ( #26927 )
2026-03-26 19:13:01 +01:00
Diogo Tavares Sendim Fernandes
958f270f0d
fix(web): keep map view open after closing asset viewer ( #26980 )
2026-03-26 18:11:05 +00:00
renovate[bot]
9f699fdfc3
chore(deps): update typescript-projects ( #26973 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-03-26 19:02:27 +01:00
renovate[bot]
00da7b88a1
chore(deps): update dependency @types/node to ^24.12.0 ( #26966 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-26 13:52:45 -04:00
Michel Heusschen
144a57ddff
refactor(server): use helpers for shared link queries ( #27088 )
...
* fix(server): prevent album shared link from breaking after uploads
* update test
* add withSharedAssets helper
* remove options
* add more helpers
* update selects
2026-03-26 13:51:00 -04:00
Daniel Dietzler
1bd2d474d7
fix: various comamnd palette usages ( #27304 )
2026-03-26 17:45:14 +00:00
Jason Rasmussen
b33874ef12
feat: add support for helmet configuration ( #27058 )
2026-03-26 17:41:23 +00:00
bo0tzz
dbaf4b548b
fix: pin success-check-action to correct tag ( #27230 )
2026-03-26 17:37:23 +00:00
Jason Rasmussen
7d58d5be12
refactor: memory manager ( #27206 )
2026-03-26 17:36:25 +00:00
renovate[bot]
42fe86d24c
chore(deps): update grafana/grafana docker tag to v12.4.1 ( #26969 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-26 18:31:08 +01:00
Michael Maycock
eeb55c279b
fix(web): preserve timezone when changing timestamp ( Closes #25354 ) ( #27095 )
2026-03-26 17:30:47 +00:00
renovate[bot]
5c159d70a7
chore(deps): update node.js to v24.14.0 ( #26972 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-26 18:30:38 +01:00
Paul Makles
44ae0fa7ed
fix(database restores): don't assume onboarding has completed ( #27052 )
2026-03-26 18:30:14 +01:00
renovate[bot]
f782782662
fix(deps): update dependency kysely to v0.28.14 [security] ( #27068 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-26 18:29:53 +01:00
renovate[bot]
4436cab827
chore(deps): update dependency yaml to v2.8.3 [security] ( #27293 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-26 18:28:46 +01:00
renovate[bot]
74789ad1c4
chore(deps): update dependency picomatch to v4.0.4 [security] ( #27281 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-26 18:28:05 +01:00
Jason Rasmussen
7877097b3f
refactor: asset viewing store ( #27204 )
2026-03-26 13:22:40 -04:00
Jason Rasmussen
fb84c1cf61
chore: remove unused file ( #27202 )
2026-03-26 13:22:31 -04:00
Jason Rasmussen
940a1d4ab8
refactor: change location ( #27201 )
2026-03-26 13:22:14 -04:00
Jason Rasmussen
fae25dbe65
chore: whitelist server deploy files ( #27056 )
2026-03-26 13:22:03 -04:00
Mert
8dd0d7f34c
fix(server): memory fragmentation ( #27027 )
2026-03-26 18:21:52 +01:00
Jason Rasmussen
9b78f2c0ba
chore: remove unused resources ( #27055 )
2026-03-26 13:21:36 -04:00
Timon
67cedfef17
feat(web): add RemoveFromAlbumAction to asset viewer nav bar ( #27000 )
2026-03-26 18:20:28 +01:00
Andreas Heinz
c9c2322b9d
feat(web): focus on face-editor search input ( #27136 )
2026-03-26 18:18:23 +01:00
Daniel Dietzler
389356149a
refactor: actionable toasts ( #27203 )
2026-03-26 18:18:06 +01:00
Michel Heusschen
4812a2e2d8
fix(server): refresh unedited asset dimensions on metadata extraction ( #27220 )
2026-03-26 18:17:32 +01:00
Vogeluff
8f01d06927
feat(web): add a seperate tooltip for switching from dark to light mode ( #27297 )
2026-03-26 18:15:16 +01:00
github-actions
a2ff075e9a
chore: version v2.6.3
2026-03-26 16:23:35 +00:00
Brandon Wees
d8b39906f9
fix: incorrect asset face sync ( #27243 )
...
* fix: incorrect asset face sync
* chore: sync sql
2026-03-26 09:39:02 -05:00
Michel Heusschen
b36911a16b
fix(server): filter out empty search suggestions ( #27292 )
...
* fix(server): filter out empty search suggestions
* make sql
2026-03-26 09:36:04 -05:00
Alex
b074ee202e
chore: move slideshow control button group to the left ( #27287 )
2026-03-26 14:31:11 +00:00
bo0tzz
78bb6cf926
chore: log id of existing asset on duplicate upload ( #27266 )
2026-03-26 11:50:53 +01:00
Yaros
c980f5fc19
chore(docs): withPeople parameter description ( #27262 )
...
* fix(server): withPeople inconsistent
* fix: query failing in some occasions
* test: add medium tests for withPeople option
* Revert "test: add medium tests for withPeople option"
This reverts commit 6c1505ba6b .
* Revert "fix: query failing in some occasions"
This reverts commit 221feeca45 .
* Revert "fix(server): withPeople inconsistent"
This reverts commit 4289a9f23d .
* chore: change endpoint description
* chore: generate open-api
2026-03-26 11:50:29 +01:00
Yaros
a26d9e05ba
fix(web): shifting motion image button ( #27275 )
2026-03-26 11:49:21 +01:00
bo0tzz
c862163204
fix: explicitly specify repo in auto-close job ( #27291 )
2026-03-26 10:43:51 +00:00
Michel Heusschen
5fb8f9bf1a
fix(web): prevent horizontal scroll bar in asset viewer side panel ( #27270 )
...
* fix(web): prevent horizontal scroll bar in asset viewer side panel
* simplify
2026-03-25 21:02:31 -05:00
Mees Frensel
b9b5dba037
fix(web): crop square ratio i18n ( #27257 )
2026-03-25 14:05:43 -05:00
renovate[bot]
8bfa75087c
chore(deps): update base-image to v202603251709 (major) ( #27273 )
...
chore(deps): update base-image to v202603251709
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-25 14:04:26 -05:00
bo0tzz
95280edd6c
fix: let renovate update base images ( #27272 )
2026-03-25 18:00:40 +00:00
Mert
a9666d2cef
fix(mobile): remove upload timeout ( #27237 )
...
remove timeout
2026-03-24 14:40:48 -04:00
renovate[bot]
4af9edc20b
chore(deps): update github-actions ( #27215 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-24 14:31:00 +01:00
renovate[bot]
c975fe5bc7
chore(deps): update github-actions (major) ( #27225 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-24 12:40:10 +00:00
renovate[bot]
12a4d8e2ee
chore(deps): update ghcr.io/jdx/mise docker tag to v2026.3.12 ( #27224 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-24 12:06:19 +00:00
github-actions
ce9b32a61a
chore: version v2.6.2
2026-03-24 02:51:55 +00:00
Yaros
4ddc288cd1
fix(mobile/web): album cover buttons consistency ( #27213 )
...
* fix(mobile/web): album cover buttons consistency
* test: adjust test
2026-03-23 21:40:17 -05:00
Yaros
94b15b8678
fix(server): album permissions for editors ( #27214 )
...
* fix(server): album permissions for editors
* test: adjust e2e test
* test: fix test
2026-03-23 21:39:30 -05:00
Daniel Dietzler
ff9ae24219
fix: album picker show all albums ( #27211 )
2026-03-23 19:08:57 -05:00
Matthew Momjian
b456f78771
fix(docs): clarify ML CPU architecture ( #27187 )
...
* ML architecture
* format
* clarify amd/arm
2026-03-23 18:29:58 -04:00
Mert
1506776891
fix(mobile): add cookie for auxiliary url ( #27209 )
...
add cookie before validating
2026-03-23 16:22:46 -05:00
Yaros
0e93aa74cf
fix(mobile): add keys to people list ( #27112 )
...
mobile(fix): add keys to people list
2026-03-23 10:50:56 -05:00
Yaros
e95ad9d2eb
fix(mobile): option padding on search dropdowns ( #27154 )
...
* fix(mobile): option padding on search dropdowns
* chore: prevent height fill up screen and block the bottom menu entry
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-03-23 15:03:07 +00:00
Nicolas-micuda-becker
b98a227bbd
fix(web): update upload summary when removing items ( #27035 ) ( #27139 )
2026-03-23 10:02:09 -05:00
Michel Heusschen
2dd785e3e2
fix(web): restore duplicate viewer arrow key navigation ( #27176 )
2026-03-23 10:01:15 -05:00
Daniel Dietzler
7e754125cd
fix: download original stale cache when edited ( #27195 )
2026-03-23 10:00:32 -05:00
Yaros
e2eb03d3a4
fix(mobile): star rating always defaults to 0 ( #27157 )
2026-03-23 09:56:27 -05:00
Yaros
bf065a834f
fix(mobile): no results before applying filter ( #27155 )
2026-03-23 09:41:13 -05:00
Daniel Dietzler
db79173b5b
chore: vite 8 ( #26913 )
2026-03-23 15:39:46 +01:00
Yaros
33666ccd21
fix(mobile): view similar photos from search ( #27149 )
...
* fix(mobile): view similar photos from search
* clean up
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com >
2026-03-23 09:36:42 -05:00
bo0tzz
be93b9040c
feat: consolidate auto-close workflows ( #27172 )
2026-03-23 11:22:44 +01:00
Luis Nachtigall
00dae6ac38
fix(mobile): cronet image cache clearing on android ( #27054 )
2026-03-20 18:28:24 -04:00
Daniel Dietzler
5a8fd40dc5
fix: svelte reactivity issues ( #27109 )
2026-03-20 15:56:16 -04:00
Jason Rasmussen
813d684aaa
fix: shared link add to album ( #27063 )
2026-03-20 13:14:07 -05:00
Luis Nachtigall
644f705be1
fix(mobile): correct maximumSizeBytes setter to use maximumSizeBytes property ( #27098 )
...
fix: correct maximumSizeBytes setter to use maximumSizeBytes property
2026-03-20 12:22:59 -04:00
Thomas
f3e4bcc733
fix(server): queue version check job when config changed ( #27094 )
...
Nothing happens when the version checks are enabled, which means the
server may return very stale versions until the next job runs.
Refs: #26935
2026-03-20 10:07:40 -05:00
Michel Heusschen
9a0c17fdb8
fix(web): preserve album scroll when adding to other albums ( #27078 )
2026-03-20 09:42:19 -05:00
Michel Heusschen
b7c4497dfd
fix(web): allow showing combobox items outside modals ( #27075 )
...
fix(web): allow showing combobox items outside of modals
2026-03-20 09:41:34 -05:00
Yaros
9c227aeaf5
fix(mobile): simplified chinese not available ( #27066 )
2026-03-20 00:27:50 -05:00
github-actions
e939fde6f1
chore: version v2.6.1
2026-03-19 17:56:42 +00:00
Mert
019beaed0b
fix(mobile): server url migration ( #27050 )
...
decode json
2026-03-19 12:52:51 -05:00
Jason Rasmussen
0e4d6d4eac
fix(web): disable send button ( #27051 )
...
fix(web): disable button while sending
2026-03-19 17:39:13 +00:00
Daniel Dietzler
79f978ddeb
fix: writing empty exif tags ( #27025 )
2026-03-19 17:17:56 +00:00
Jason Rasmussen
f2445ecab1
fix(web): stop in-progress uploads on logout ( #27021 )
2026-03-19 13:05:11 -04:00
Jason Rasmussen
86311e3cfe
fix(web): wrap long album title ( #27012 )
2026-03-19 13:04:56 -04:00
Jason Rasmussen
29000461c2
fix: ignore errors deleting untitled album ( #27020 )
2026-03-19 12:55:43 -04:00
Mees Frensel
b30373b24f
fix: release rootles compose file ( #27048 )
2026-03-19 16:45:11 +00:00
bo0tzz
bc2439883a
fix: track PR template auto-close with label ( #27042 )
...
* fix: track PR template auto-close with label
* fix: format
2026-03-19 12:42:29 -04:00
Jason Rasmussen
044257531e
fix(server): fallback to email when name is empty ( #27016 )
2026-03-19 12:41:20 -04:00
github-actions
f413f5c692
chore: version v2.6.0
2026-03-18 20:37:39 +00:00
Weblate (bot)
52307ed09f
chore(web): update translations ( #26192 )
...
Translate-URL: https://hosted.weblate.org/projects/immich/immich/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/af/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
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/de_CH/
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/eu/
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/gl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/gsw/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/gu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hi/
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/km/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/kn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ml/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ms/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
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/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/te/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
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/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translation: Immich/immich
Co-authored-by: -J- <heyj0e@tuta.io >
Co-authored-by: Abdullah Atsa <abdullahatsauban@gmail.com >
Co-authored-by: Adam Havránek <adamhavra@seznam.cz >
Co-authored-by: Ahmed Hamdy <ahmedhamdy19375@gmail.com >
Co-authored-by: Ahmed Khaleel Shihab <ahmed91shihab@gmail.com >
Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com >
Co-authored-by: Aleksa Milošević <akimaki15@gmail.com >
Co-authored-by: Anton Palmqvist <apq@users.noreply.hosted.weblate.org >
Co-authored-by: Antón Gómez López <antongomez03@gmail.com >
Co-authored-by: Arif Budiman <arifpedia@gmail.com >
Co-authored-by: Balázs R <nvi9@outlook.hu >
Co-authored-by: Baptiste Mille-Mathias <baptiste.millemathias@alcmeon.com >
Co-authored-by: Berkay Görgülü <berthanas@gmail.com >
Co-authored-by: Bora Atıcı <boratici.acc@gmail.com >
Co-authored-by: CHUNG, Jin-ho <doctorjinho@gmail.com >
Co-authored-by: Cesare Capo <cescapo@icloud.com >
Co-authored-by: Chintan Prajapati <chintan9@student.fdu.edu >
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com >
Co-authored-by: DevServs <bonov@mail.ru >
Co-authored-by: Dusan Hlavaty <dhlavaty@gmail.com >
Co-authored-by: Dymitr <zasvab@gmail.com >
Co-authored-by: Dániel Gál <galdaniel.school@gmail.com >
Co-authored-by: Emanuel Santos Martins <santosmartinsemanuel@gmail.com >
Co-authored-by: Emanuele La Mura <acedit.wcry@gmail.com >
Co-authored-by: Farkas Rábai <farkasrabai@gmail.com >
Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org >
Co-authored-by: Floruit <1964993179@qq.com >
Co-authored-by: Frank Paul Silye <frankps@gmail.com >
Co-authored-by: Gabriel <jellyfin.sensitize624@passmail.net >
Co-authored-by: Gideon Wentink <gjwentink@gmail.com >
Co-authored-by: Goran Aničin <anicin.goran@gmail.com >
Co-authored-by: HackingAll <hacking.all.YT@gmail.com >
Co-authored-by: Happy <59247878+happy2452354@users.noreply.github.com >
Co-authored-by: Haru Ijima <haruijimakun@gmail.com >
Co-authored-by: Hosted Weblate user 85894 <reo7s@users.noreply.hosted.weblate.org >
Co-authored-by: Hurricane_32 <rodrigorimo@hotmail.com >
Co-authored-by: IMPERA <rickbrouwer2005premium@gmail.com >
Co-authored-by: Ian.Su <stu92116stu92116@hotmail.com.tw >
Co-authored-by: Immich <weblate@immich.app >
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com >
Co-authored-by: IsakBH <isak@brunhenriksen.net >
Co-authored-by: Ismail <binhelati@gmail.com >
Co-authored-by: Ivan Dimitrov <idimitrov08@gmail.com >
Co-authored-by: Jannik Norden <development.jnorden@outlook.com >
Co-authored-by: Jeppe Nellemann <jepnel@proton.me >
Co-authored-by: Joseph <josephlegrand33+hosted.weblate.org@gmail.com >
Co-authored-by: Jozef Gaal <preklady@mayday.sk >
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk >
Co-authored-by: KW Lam <kwlam281@gmail.com >
Co-authored-by: Kaushal Patel <kaushalpatel1982@gmail.com >
Co-authored-by: Kim Hokyeong <manmen.mi1375@gmail.com >
Co-authored-by: Krzysztof <doom.zg@gmail.com >
Co-authored-by: Leo Bottaro <github@leobottaro.com >
Co-authored-by: Leon S <leonnis16@gmail.com >
Co-authored-by: Liviu Roman <contact@liviuroman.com >
Co-authored-by: Londoneye02 <jcdelcaz@gmail.com >
Co-authored-by: Luca Beyer <trickobert@gmail.com >
Co-authored-by: Lukas Konsin <lukaskonsin@proton.me >
Co-authored-by: Madipodo <madipo@posteo.de >
Co-authored-by: Marc Casillas <mcasillassu@gmail.com >
Co-authored-by: MarcSerraPeralta <marcserraperalta@gmail.com >
Co-authored-by: Marian Wolf <marian.wolf2008@gmail.com >
Co-authored-by: Matjaž T. <matjaz@moj-svet.si >
Co-authored-by: Mayukh Roy <mayukhroy2020@gmail.com >
Co-authored-by: Mees Frensel <meesfrensel@gmail.com >
Co-authored-by: Meet Bhingradiya <meetbhingradiya36@gmail.com >
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com >
Co-authored-by: MrZapp-LM <paul.lutz@lichtermacher.at >
Co-authored-by: Muhammad Ivan Aldorino <ivanaldorino@gmail.com >
Co-authored-by: Mykola Vaskevych <22372199@studentmail.ul.ie >
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com >
Co-authored-by: Olaf Nielsen <solluh@mail.de >
Co-authored-by: PPNplus <ppnplus@protonmail.com >
Co-authored-by: PaCoalt <pschwarzwaelder@yahoo.com >
Co-authored-by: Petri Hämäläinen <petri.hamalainen@mailbox.org >
Co-authored-by: Philip Goto <philip.goto@gmail.com >
Co-authored-by: Philipp Frauenfelder <philipp.frauenfelder@gmail.com >
Co-authored-by: PhillyMay <mein.alias@outlook.com >
Co-authored-by: Phyruos <phyruos@gmail.com >
Co-authored-by: Predrag Milićević <predragmilicevic@gmail.com >
Co-authored-by: Psycho <unhomen@gmail.com >
Co-authored-by: Ramon \"9Tails\" Canales <emaildoramon@gmail.com >
Co-authored-by: Rebelder <bas+github@bbelder.eu >
Co-authored-by: Reo7s <biz@reo-ang.net >
Co-authored-by: Roger Veciana Rovira <rveciana@gmail.com >
Co-authored-by: Roman Fedorchuk <roma.fedorchuk@gmail.com >
Co-authored-by: Ruben Silva <ruben02b@gmail.com >
Co-authored-by: Shadi Alrashoodi <shadifaisal91@gmail.com >
Co-authored-by: Shashibhushan Singh <shashibhushansingh11@gmail.com >
Co-authored-by: Shawn <xiaxinx@gmail.com >
Co-authored-by: Shihfu Juan <xlion@xlion.tw >
Co-authored-by: Skanda <skillwiz94@gmail.com >
Co-authored-by: Sylvain Pichon <service@spichon.fr >
Co-authored-by: TA <tobi@warsnich.de >
Co-authored-by: TV Box <realceday.tvbox@gmail.com >
Co-authored-by: Thomas Grimstad <solmester@gmail.com >
Co-authored-by: Thomas Vente <thomas.vente@gmail.com >
Co-authored-by: Tim Morley <weblate.3919org@timsk.org >
Co-authored-by: TobnacTobi <Tobias.Schrull@gmx.de >
Co-authored-by: Toivo Schmale <thetoicraft@gmail.com >
Co-authored-by: Tomo Tomov <tomotomov92@gmail.com >
Co-authored-by: Ugnius <kaugnius@gmail.com >
Co-authored-by: Ulices <hasecilu@tuta.io >
Co-authored-by: Ulpi Antor <weblate.residual441@passmail.net >
Co-authored-by: Unn Krigul <unn@arter.studio >
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org >
Co-authored-by: Vallabh Sharma <srivallabhsharma@gmail.com >
Co-authored-by: Vegard Fladby <vegard@fladby.org >
Co-authored-by: Viesturs <viesturs.sprogis@outlook.com >
Co-authored-by: Vivek M <vivekmalhotra004@gmail.com >
Co-authored-by: Vixepti <contact@vixepti.fr >
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org >
Co-authored-by: Zawaer <zawarudo123pro@gmail.com >
Co-authored-by: anton garcias <isaga.percompartir@gmail.com >
Co-authored-by: ashraf0484 <t.sashraf@gmail.com >
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl >
Co-authored-by: chamdim <chamdim@protonmail.com >
Co-authored-by: dimitrijeforesta <dimitrije.foresta@gmail.com >
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org >
Co-authored-by: jellebuitenhuis <github@jellebuitenhuis.nl >
Co-authored-by: kylo32 <kylo32@gmail.com >
Co-authored-by: l m <virtuamoo@gmail.com >
Co-authored-by: millallo <millallo@tiscali.it >
Co-authored-by: muziqaz <muziqaz@users.noreply.hosted.weblate.org >
Co-authored-by: mycodeco <victorschiellerup@gmail.com >
Co-authored-by: nachtpfoetchen <nachtpfoetchen@posteo.de >
Co-authored-by: pyccl <changcongliang@163.com >
Co-authored-by: stesoma <soma.steltzer@gmail.com >
Co-authored-by: techmoocher 🦊 <ndvphuc276@gmail.com >
Co-authored-by: timmy61109 <qazzxcasdqwewsxedc@gmail.com >
Co-authored-by: waclaw66 <waclaw66@seznam.cz >
Co-authored-by: 안세훈 <on9686@gmail.com >
2026-03-18 20:27:17 +00:00
Jason Rasmussen
77020e742a
fix: validate accept header before returning html ( #27019 )
2026-03-18 14:15:48 -04:00
Jason Rasmussen
38b135ff36
fix: bounding box return type ( #27014 )
2026-03-18 11:58:40 -04:00
Jason Rasmussen
cda4a2a5fc
fix: filter after searching by asset id ( #26994 )
...
* fix: filter after searching by asset id
* Update web/src/lib/modals/SearchFilterModal.svelte
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com >
---------
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com >
2026-03-18 13:32:54 +00:00
Min Idzelis
88002cf7fe
fix(web): allow images to be downloaded again(long-press or right click) ( #26992 )
2026-03-18 12:40:36 +01:00
Andreas Heinz
694ea151f5
fix(web): escape handling for tagging and adding a face in asset viewer ( #26870 )
2026-03-18 12:39:25 +01:00
Jason Rasmussen
b092c8b601
fix: healthcheck ( #26989 )
2026-03-17 17:54:39 -04:00
Jason Rasmussen
48e6e17829
feat: primary notifications ( #26988 )
2026-03-17 17:54:11 -04:00
Jason Rasmussen
0519833d75
refactor: prefer tv ( #26993 )
2026-03-17 17:53:48 -04:00
Thomas
34caed3b2b
fix(server): flaky metadata tests ( #26964 )
2026-03-17 18:06:22 +01:00
Thomas
677cb660f5
fix(mobile): reflect asset deletions instantly ( #26835 )
...
Sometimes the current asset won't update when deleted, or it won't
refresh until an event (like showing details) happens.
2026-03-17 06:43:14 -05:00
Michel Heusschen
9b0b2bfcf2
fix(web): jump to primary stacked asset from memory ( #26978 )
2026-03-17 06:39:39 -05:00
Preslav Penchev
ac6938a629
fix(web): allow pasting PIN code from clipboard or password manager ( #26944 )
...
* fix(web): allow pasting PIN code from clipboard or password manager
The keydown handler was blocking Ctrl+V/Cmd+V since it called
preventDefault() on all non-numeric keys. Also adds an onpaste
handler to distribute pasted digits across the individual inputs.
* refactor: handle paste in handleInput, remove maxlength
* cleanup + fix digit focus
---------
Co-authored-by: Preslav Penchev <preslav.penchev@acronis.com >
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com >
2026-03-17 06:38:06 -05:00
Thomas
16749ff8ba
fix(server): sync files to disk ( #26881 )
...
Ensure that all files are flushed after they've been written.
At current, files are not explicitly flushed to disk, which can cause
data corruption. In extreme circumstances, it's possible that uploaded
files may not ever be persisted at all.
2026-03-17 06:33:43 -05:00
renovate[bot]
bba4a00eb1
chore(deps): update github-actions ( #26967 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-17 10:40:22 +01:00
Mees Frensel
9dafc8e8e9
fix(web): make link fit album card ( #26958 )
2026-03-16 19:17:55 +01:00
Michel Heusschen
4e44fb9cf7
fix(web): prevent search page error on missing album filter ( #26948 )
2026-03-16 19:15:20 +01:00
Yaros
82db581cc5
feat(mobile): open in browser ( #26369 )
...
* feat(mobile): open in browser
* chore: open in browser instead of webview
* chore: allow archived asset
* fix: moved openinbrowser above unstack
* feat: deeplink into favorites, trash & archived
* fix: use remoteId (for tests to succeed)
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-03-16 18:06:51 +00:00
Mert
b66c97b785
fix(mobile): use shared auth for background_downloader ( #26911 )
...
shared client for background_downloader on ios
2026-03-13 22:23:07 -05:00
Mert
ff936f901d
fix(mobile): duplicate server urls returned ( #26864 )
...
remove server url
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-03-13 22:09:42 -05:00
Min Idzelis
48fe111daa
feat(web): improve OCR overlay text fitting, reactivity, and accessibility ( #26678 )
...
- Precise font sizing using canvas measureText instead of character-count heuristic
- Fix overlay repositioning on viewport resize by computing metrics from reactive state instead of DOM reads
- Fix animation delay on resize by using transition-colors instead of transition-all
- Add keyboard accessibility: OCR boxes are focusable via Tab with reading-order sort
- Show text on focus (same styling as hover) with proper ARIA attributes
2026-03-13 22:04:55 -05:00
bo0tzz
0581b49750
fix: ignore optional headers in pr template check ( #26910 )
2026-03-13 22:55:00 +00:00
rthrth-svg
2c6d4f3fe1
fix(web): copy yearMonth in MonthGroup to avoid shared object reference with asset ( #26890 )
...
Co-authored-by: Min Idzelis <min123@gmail.com >
2026-03-13 22:27:08 +01:00
Belnadifia
55513cd59f
feat(server): support IDPs that only send the userinfo in the ID token ( #26717 )
...
Co-authored-by: irouply <irouply@secom.fr >
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-03-13 22:14:45 +01:00
bo0tzz
10fa928abe
feat: require pull requests to follow template ( #26902 )
...
* feat: require pull requests to follow template
* fix: persist-credentials: false
2026-03-13 09:43:00 -05:00
Nathaniel Hourt
e322d44f95
fix: SMTP over TLS ( #26893 )
...
Final step on #22833
PReq #22833 is about adding support for SMTP-over-TLS rather than just STARTTLS when sending emails. That PReq adds almost everything; it just forgot to actually pass the flag to Nodemailer at the end.
This adds that last line of code and makes it work correctly (for me, anyways!).
Co-authored-by: Nathaniel <I@nathaniel.land >
2026-03-13 09:41:50 -05:00
Michel Heusschen
c2a279e49e
fix(web): keep header fixed on individual shared links ( #26892 )
2026-03-13 09:40:04 -05:00
Mert
226b9390db
fix(mobile): video auth ( #26887 )
...
* fix video auth
* update commit
2026-03-13 09:38:21 -05:00
Michel Heusschen
754f072ef9
fix(web): disable drag and drop for internal items ( #26897 )
2026-03-13 09:37:51 -05:00
luis15pt
c91d8745b4
fix: use correct original URL for 360 video panorama playback ( #26831 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 21:27:44 +01:00
Brandon Wees
f3b7cd6198
refactor: move encoded video to asset files table ( #26863 )
...
* refactor: move encoded video to asset files table
* chore: update
2026-03-12 16:15:21 -04:00
Jason Rasmussen
990aff441b
fix: add to shared link ( #26886 )
2026-03-12 16:10:55 -04:00
Daniel Dietzler
001d7d083f
refactor: small test factories ( #26862 )
2026-03-12 14:48:49 -04:00
Michel Heusschen
3fd24e2083
fix(server): restrict individual shared link asset removal to owners ( #26868 )
...
* fix(server): restrict individual shared link asset removal to owners
* make open-api
2026-03-12 14:48:00 -04:00
Jason Rasmussen
6bb8f4fcc4
refactor: clean class ( #26885 )
2026-03-12 14:47:35 -04:00
Jason Rasmussen
d4605b21d9
refactor: external links ( #26880 )
2026-03-12 14:55:33 +00:00
Jason Rasmussen
3bd37ebbfb
refactor: clean class ( #26879 )
2026-03-12 09:53:46 -05:00
Min Idzelis
5c3777ab46
fix(web): fix zoom touch event handling ( #26866 )
...
fix(web): fix zoom touch event handling and add clarifying comments
- Suppress Safari's synthetic dblclick on double-tap which conflicts with zoom-image's touchstart-based zoom
- Add comment explaining pointer-events-none on zoom transform wrapper
- Add comments for touchAction and overflow style overrides
2026-03-12 09:37:29 -05:00
Alex
6c531e0a5a
chore: add shadow to video play/pause icon shadow ( #26836 )
2026-03-11 14:15:31 -05:00
Thomas
471c27cd33
chore(mobile): remove background from asset viewer back button ( #26851 )
...
We recently changed the asset viewer to use a gradient. The circle
button looks out of place now.
2026-03-11 14:15:18 -05:00
bo0tzz
4773788a88
chore: more unused release workflow cleanup ( #26817 )
2026-03-11 20:04:26 +01:00
renovate[bot]
d49d995611
chore(deps): update dependency exiftool-vendored to v35.13.1 ( #26813 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-11 20:03:19 +01:00
Snowknight26
0ac3d6a83a
fix(web): face selection box position resetting on browser resize ( #26766 )
2026-03-11 19:38:08 +01:00
Mees Frensel
9996ee12d0
refactor(web): crop area tool ( #26843 )
2026-03-11 18:58:26 +01:00
Brendan Ngo
0a79dd1228
fix(server): extract make/model from sony video files ( #26833 )
...
Co-authored-by: Your Name <brendan.ngo@okendo.io >
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-03-11 17:29:37 +00:00
Mees Frensel
e45308b949
fix(web): exclude emoji from translation string ( #26852 )
2026-03-11 13:22:59 -04:00
Mert
c403e03a42
fix(mobile): logout on upgrade ( #26827 )
...
* use cookiejar
* cookie duping hook
* remove old pref
* handle network switching on logout
* remove bootstrapCookies
* dead code
* fix cast
* use constants
* use new event name
* update api
2026-03-11 12:07:27 -05:00
Luis Nachtigall
e7db3b220d
feat(mobile): show animated images in asset viewer ( #26614 )
...
* Add support for showing animated images in AssetViewer with AnimatedImageStreamCompleter
* Add GIF overlay to thumbnail tile for animated assets
* formatting
* require isAnimated parameter in image providers for better asset handling
* feat: refactor AnimatedImageStreamCompleter to use streams for codec loading and initial image handling
* formatting
* add isAnimatedImage property to BaseAsset
* remove ApiService.getRequestHeaders() usage
2026-03-11 12:07:06 -05:00
bo0tzz
28d5c169c0
chore: use pokedex-large runner for rocm ( #26823 )
2026-03-11 11:15:48 -05:00
renovate[bot]
0f2fe656db
fix(deps): update typescript-projects ( #26812 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-11 16:40:41 +01:00
Daniel Dietzler
34ce68095d
chore: upgrade to kysely 0.28.11 ( #26744 )
2026-03-11 16:17:31 +01:00
Min Idzelis
8764a1894b
feat: adaptive progressive image loading for photo viewer ( #26636 )
...
* feat(web): adaptive progressive image loading for photo viewer
Replace ImageManager with a new AdaptiveImageLoader that progressively
loads images through quality tiers (thumbnail → preview → original).
New components and utilities:
- AdaptiveImage: layered image renderer with thumbhash, thumbnail,
preview, and original layers with visibility managed by load state
- AdaptiveImageLoader: state machine driving the quality progression
with per-quality callbacks and error handling
- ImageLayer/Image: low-level image elements with load/error lifecycle
- PreloadManager: preloads adjacent assets for instant navigation
- AlphaBackground/DelayedLoadingSpinner: loading state UI
Zoom is handled via a derived CSS transform applied to the content
wrapper in AdaptiveImage, with the zoom library (zoomTarget: null)
only tracking state without manipulating the DOM directly.
Also adds scaleToCover to container-utils and getAssetUrls to utils.
* fix: don't partially render images in firefox
* add passive loading indicator to asset-viewer
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-03-11 09:48:46 -05:00
Michel Heusschen
27f69b39b2
fix(server): use correct day ordering in timeline buckets ( #26821 )
...
* fix(web): sort timeline day groups received from server
* fix(server): use correct day ordering in timeline buckets
2026-03-11 08:49:35 -04:00
Michel Heusschen
9fc6fbc373
fix(web): restore asset update events in asset viewer ( #26845 )
2026-03-11 08:46:29 -04:00
Thomas
9fc32b6f7a
feat(mobile): use material design 3 slider ( #26829 )
...
* feat(mobile): use material design 3 slider
The new slider is easier to use, and looks more modern.
* chore: add shadow to button and text for better visibility
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-03-11 01:58:01 +00:00
Thomas
4571940a4e
fix(mobile): wrap backup error message text ( #26834 )
...
Refs: #25022
2026-03-10 20:40:01 -05:00
Thomas
1ceb6d2e21
fix(mobile): use tabular figures in backup page ( #26830 )
...
The numbers in the backup page are not monospace, and so changes cause
the layout to shift. Using tabular figures (monospace) will prevent
that.
Refs: #25021
2026-03-10 20:12:33 -05:00
Andreas Heinz
1a4c5d73ac
feat(web): add shortcut "p" to open/close the face tag box ( #26826 )
2026-03-10 23:53:38 +01:00
renovate[bot]
22b43bf4d9
chore(deps): update dependency @types/node to ^24.11.0 ( #26808 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-10 16:46:21 +00:00
Michel Heusschen
45eff1c663
fix(web): prevent unrelated assets from appearing in tag view ( #26816 )
2026-03-10 17:43:30 +01:00
renovate[bot]
56b8e1b8a9
chore(deps): update docker.io/valkey/valkey:9 docker digest to 3eeb097 ( #26807 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-10 17:34:20 +01:00
Thomas
f79c8cf1c1
feat(mobile): consolidate video controls ( #26673 )
...
Videos have recently been changed to support zooming, but this can make
the controls in the centre of the screen unergonomic as they will either
stay in the centre when dismissing, or stick to the video when zooming.
Neither is great. We should align the behaviour with other apps which
has the play/pause toggle at the bottom of the screen with the seeker
bar instead.
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-03-10 10:55:31 -05:00
Min Idzelis
8e50d25f45
feat(web): animate zoom toggle with cubicOut easing ( #26731 )
2026-03-10 10:42:02 -05:00
Michel Heusschen
8222781d1f
fix(web): correct tag rounding in search options ( #26814 )
2026-03-10 15:25:13 +00:00
bo0tzz
08c4594cde
chore: remove release-pr workflow ( #26742 )
...
It's not being used right now; can always add it back :P
2026-03-09 16:53:13 -04:00
Daniel Dietzler
d325231df2
chore: refactor test factories ( #26804 )
2026-03-09 20:47:03 +00:00
Daniil Suvorov
f2726606e0
fix(web): context menu overflow ( #26760 )
2026-03-09 19:47:54 +01:00
Andreas Heinz
0edbca24e4
fix(web): recalculate face bounding boxes ( #26737 )
...
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-03-09 18:44:47 +00:00
Snowknight26
4791d9c0c3
fix(web): show the correct cursor at crop bounds when editing an asset ( #26748 )
2026-03-09 19:39:01 +01:00
Michel Heusschen
a47b232235
fix(web): refresh recent albums sidebar after album changes ( #26757 )
2026-03-09 17:11:32 +01:00
Luis Nachtigall
df0c86920d
fix(mobile): restrict trashed asset migration to Android platform ( #26726 )
...
* fix(migration): restrict trashed asset migration to Android platform
* playbackStyle migration add different log depending on platform
2026-03-09 09:56:27 -05:00
Min Idzelis
422111d26e
test(e2e): fix flakiness: optimize resetDatabase with TRUNCATE and fix selectDay selector scoping ( #26776 )
...
fix(e2e): optimize resetDatabase with TRUNCATE and fix selectDay selector scoping
2026-03-08 01:38:15 -06:00
Min Idzelis
7a83baaf27
feat: responsive video duration in thumbnail ( #26770 )
2026-03-08 01:37:41 -06:00
Aleksander Pejcic
aaf34fa7d4
feat(ml): enable openvino for cpu ( #22948 )
...
* Enable OpenVINO CPU acceleration in Immich
* Remove unnecessary debug log
* Removing checking for device_ids for openvino since cpu will always be available
* Find OpenVINOExecutionProvider index instead of assuming index 0
* Fix openvino tests
* Fix failing test mock. OpenVINO expects provider options, but cuda provide doesn't so use that for mocked tests.
* Support empty provider options in OrtSessions in which case ONNXRuntime will use its own defaults
* Use OpenVINOExecutionProvider for test_sets_provider_options_kwarg
* fix mock
* simplify
* unused variable
---------
Co-authored-by: Aleksander <pejcic@adobe.com >
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com >
2026-03-07 18:40:43 +00:00
Sergey Katsubo
4a384bca86
fix(server): opus handling as accepted audio codec in transcode policy ( #26736 )
...
* Fix opus handling as accepted audio codec in transcode policy
Fix the issue when opus is among accepted audio codecs in transcode policy
(which is default) but it still triggers transcoding because the codec name
from ffprobe (opus) does not match `libopus` literal in Immich.
Make a distinction between a codec name and encoder:
- codec name: switch to `opus` as the audio codec name. This matches what ffprobe
returns for a media file with opus audio.
- encoder: continue using the `libopus` encoder in ffmpeg.
* Add unit tests for accepted audio codecs and for libopus encoder
* Add db migration for ffmpeg.targetAudioCodec opus
* backward compatibility
* tweak
* noisy logs
* full mapping
* make check happy
* mark deprecated
* update api
* indexOf
---------
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com >
2026-03-07 13:08:42 -05:00
Thomas
dd72ec2621
fix(mobile): correct local asset dimensions ( #26677 )
...
* fix(mobile): correct local asset dimensions
We are constraining the size of videos so that they play nicely with
hero animations, and don't stretch in weird ways. This however caused a
regression as we are not account for local assets on Android which have
un-oriented dimensions.
* post-orientation width and height in local sync
* migration
* no need to handle it in asset viewer
---------
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-03-07 13:07:34 -05:00
Luis Nachtigall
e73686bd76
feat(android): enhance playback style detection using MIME type, reducing glide exposure ( #26747 )
...
* feat(android): enhance playback style detection using MIME type
* feat(android): improve playback style detection for GIF and WebP formats
* fix(android): make playback style detection faster
* refactor(android): simplify XMP reading logic for API 29 and below
* update playback style detection documentation
* use DefaultImageHeaderParser instead of all available ones for webp playbackStyle type detection
2026-03-07 10:41:26 -05:00
Snowknight26
6e9a425592
fix(web): asset viewer showing wrong viewer type when hovering on stack thumbnails ( #26741 )
2026-03-06 21:17:11 +01:00
Thomas
6012d22d98
fix(mobile): incorrect asset dimensions in search ( #26725 )
...
Search results use a different provider than the main timeline, and they
appear appear to have diverged a bit. This means that assets can
sometimes look wrong or different in search compared to the main
timeline or albums.
2026-03-05 21:58:58 -06:00
Min Idzelis
abfcffb423
feat(web): toggle zoom on double-click in photo viewer ( #26732 )
2026-03-05 21:58:09 -06:00
Min Idzelis
ec7246b86f
refactor(web): add --font-sans CSS variable for primary font ( #26730 )
2026-03-06 03:00:37 +00:00
Brandon Wees
9597f8c37f
feat(mobile): SyncAssetEditV1 ( #26518 )
...
* feat(mobile): SyncAssetEditV1
* fix: websocket handling
* fix: server version requirement
* fix: revert pubspec changes
2026-03-05 13:03:59 -06:00
Alex
7b0deb1fd3
fix: playback style migration ( #26718 )
2026-03-05 12:51:58 -06:00
Thomas
5ab05e57fa
fix(mobile): inconsistent asset details background ( #26634 )
...
The background of the photo view does not extend below the height of the
viewport, and so the asset details fade in over black with the photo
view, and the standard surface colour scheme of the scaffold for the
rest. This leads to a janky animation. We can't change the background of
the scaffold to black, as it in turn makes the iOS bouncing scroll
physics cut off incorrectly. The best fix is to remove background
decoration from the photo view, and defer to the parent to colour the
background.
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-03-05 17:45:21 +00:00
Marvin M
ba3f114625
chore: always use Package Imports ( #26630 )
...
* chore: always_use_package_imports
* fix: lint
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-03-05 11:18:01 -06:00
Mees Frensel
9b642633c1
fix(server): clarify transcoding bitrate policy ( #26711 )
2026-03-05 12:13:29 -05:00
Mert
a05c8c6087
feat(mobile): use shared native client ( #25942 )
...
* use shared client in dart
fix android
* websocket integration
platform-side headers
update comment
consistent platform check
tweak websocket handling
support streaming
* redundant logging
* fix proguard
* formatting
* handle onProgress
* support videos on ios
* inline return
* improved ios impl
* cleanup
* sync stopForegroundBackup
* voidify
* future already completed
* stream request on android
* outdated ios ws code
* use `choosePrivateKeyAlias`
* return result
* formatting
* update tests
* redundant check
* handle custom headers
* move completer outside of state
* persist auth
* dispose old socket
* use group id for cookies
* redundant headers
* cache global ref
* handle network switching
* handle basic auth
* apply custom headers immediately
* video player update
* fix
* persist url
* potential logout fix
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-03-05 11:04:45 -06:00
Mert
35a521c6ec
fix(ml): batch size setting ( #26524 )
2026-03-05 12:01:47 -05:00
Snowknight26
09fabb36b6
fix(web): video stealing focus when it plays again when looping ( #26704 )
2026-03-05 15:41:27 +00:00
Daniel Dietzler
c259fee309
chore: cleanup vscode settings ( #26709 )
2026-03-05 08:12:59 -05:00
renovate[bot]
78ba9cbc63
chore(deps): update dependency multer to v2.1.1 [security] ( #26705 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-05 10:59:51 +01:00
Michel Heusschen
33d75462c9
fix(web): combobox dropdown positioning in modals ( #26707 )
2026-03-05 10:58:26 +01:00
Mees Frensel
e9451f10d6
chore(web): small cleanup of timeline month ( #26708 )
2026-03-05 09:53:20 +00:00
Min Idzelis
480b7e8d65
chore: configure ESLint flat config and auto-fix on save in VSCode settings ( #26679 )
2026-03-04 14:55:02 -05:00
Thomas
228ac63ab9
feat(mobile): keep search results visible ( #26498 )
...
Search results are replaced with a spinner when loading the next page,
which is quite jarring. Search results now remain visible when loading
the next page with a spinner at the bottom. The next page also loads
sooner, which makes it feel a lot smoother.
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-03-04 11:27:11 -06:00
Thomas
7e9da945f6
chore(mobile): simplify asset page scroll ( #26635 )
...
In order to scroll smoothly without interfering with the gesture
detector on the photo view, we have an offstate scroll view which we
defer all drags to, and then forward scroll offsets to the real scroll
controller. This works well, but it can be simpler. Instead, we can
create a custom scroll controller on a scroll view with never scrollable
physics, and then forward drag events to that, bypassing the need for a
proxy scroll controller.
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-03-04 10:28:55 -06:00
Thomas
dd03c9c0a9
fix(mobile): add safe area for asset details ( #26675 )
2026-03-04 09:47:51 -06:00
Mees Frensel
16e4a2b92a
fix(docs): we usually don't assign issues ( #26691 )
...
Update CONTRIBUTING.md
2026-03-04 09:43:19 -06:00
Andreas Heinz
5caa7e1902
feat(web): bounding box for faces when hovering over the face in photo view ( #26667 )
...
* feat(web): when hovering over a face already deteced, display the bounding box also shown when hovering over the person in the details-pane.
* prevent lint error
* fix unused var
2026-03-04 15:27:26 +00:00
Snowknight26
8279e1078a
fix(web): download toast showing wrong filename for motion assets ( #26689 )
2026-03-04 16:22:48 +01:00
Timon
011ecbb43d
refactor(web): remove replaceAsset action ( #26444 )
2026-03-04 09:05:44 -06:00
Min Idzelis
2725c96cb1
chore: add recommended VSCode workspace extensions ( #26682 )
2026-03-04 09:29:15 -05:00
Daniel Dietzler
3c476b1987
chore: vitest 4 for web, cli, and e2e ( #26668 )
2026-03-04 14:19:13 +00:00
Snowknight26
5989c9b4aa
fix(web): inconsistent asset nav bar state after visiting shared link ( #26674 )
2026-03-04 08:25:29 -05:00
Min Idzelis
13c4260a1f
fix: resolve medium test asset paths relative to file location ( #26683 )
2026-03-04 08:23:58 -05:00
Min Idzelis
54bc9ddd69
chore: add vitest project names and fix server config root paths ( #26684 )
...
Add `name` to all vitest configs matching CI job buckets (server:unit,
server:medium, cli:unit, web:unit, e2e:server, e2e:maintenance) so they
appear as filterable @tags in the Vitest VSCode extension.
Fix `root` in server vitest configs to use an absolute path derived from
`import.meta.url` instead of `'./'`, which resolved relative to the config
file directory (`server/test/`) rather than `server/`, causing test
discovery to fail in the Vitest VSCode extension.
2026-03-04 08:20:43 -05:00
Paul Makles
f94e0fbc39
fix(maintenance mode): wait for valid server config on restart ( #26456 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-03-04 11:16:21 +00:00
Nicolò Maria Semprini
5532f669eb
feat: improve HEIC, HEIF and JPEG XL browser support detection ( #26122 )
...
feat: improve heic, heif and jxl browser support detection
2026-03-03 22:41:51 -05:00
Min Idzelis
e4c24bdec8
chore: enable prettier caching and quiet output ( #26681 )
2026-03-04 03:34:48 +00:00
Savely Krasovsky
56f14162f6
chore: bump base images manually ( #26670 )
2026-03-04 00:54:55 +00:00
renovate[bot]
8abbbc49cf
chore(deps): update dependency opentofu to v1.11.5 ( #26655 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 16:53:01 +00:00
Thomas
4eb08eee18
fix(mobile): video state ( #26574 )
...
Consolidate video state into a single asset-scoped provider, and reduce
dependency on global state generally. Overall this should fix a few
timing issues and race conditions with videos specifically, and make
future changes in this area easier.
2026-03-03 10:28:07 -06:00
Mees Frensel
0560f98c2d
chore(web): clarify locale settings description ( #25562 )
2026-03-03 12:52:17 +01:00
Brandon Annin
49ad411d50
fix(docs): add ocr to job flow diagram ( #26505 )
2026-03-03 12:43:59 +01:00
renovate[bot]
2478cc40f4
chore(deps): update dependency terragrunt to v0.99.4 ( #26658 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 11:42:11 +00:00
Joe Babbitt
44eeb1e088
fix: implement existing withStacked on searchAssetBuilder ( #26607 )
...
Co-authored-by: Joe <code@joebabbitt.com >
2026-03-03 11:41:29 +00:00
Min Idzelis
a868ae3ad0
perf: move album fetching into detail panel ( #26632 )
2026-03-03 12:25:03 +01:00
renovate[bot]
acac0d4f37
chore(deps): update github-actions ( #26656 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: bo0tzz <git@bo0tzz.me >
2026-03-03 11:14:12 +00:00
Michel Heusschen
8c40a28fef
fix(server): clean up edited thumbnail when deleting asset ( #26664 )
2026-03-03 12:08:07 +01:00
renovate[bot]
b2081eda1e
fix(deps): update typescript-projects ( #26657 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-03-03 12:06:22 +01:00
renovate[bot]
9670c853c6
chore(deps): update docker.io/valkey/valkey:9 docker digest to 2bce660 ( #26652 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 12:02:04 +01:00
renovate[bot]
cc2dacb308
chore(deps): update prom/prometheus docker digest to 4a61322 ( #26653 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 11:23:13 +01:00
renovate[bot]
15fc6b18f3
chore(deps): update dependency @types/node to ^24.10.14 ( #26654 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 09:22:58 +00:00
Mees Frensel
a284e38890
fix(web): timeline and asset viewer RTL support ( #26513 )
2026-03-03 09:01:54 +01:00
Thomas
05010c3a84
fix(mobile): asset viewer hero animation ( #26545 )
...
The image in the photo view has no height, and is therefore entirely
unconstrained. This causes the image to take up the full height of the
viewport during the hero animation, which can make look out of sync. In
some other cases, it can stretch or resize the image to fill the entire
viewport.
2026-03-02 22:26:53 -06:00
Min Idzelis
4da3d68a67
refactor: use keyed each for face bounding boxes ( #26648 )
2026-03-02 22:16:13 -06:00
Min Idzelis
20c639e52a
refactor: extract shared ContentMetrics for overlay position calculations ( #26310 )
2026-03-02 21:49:56 -06:00
Luis Nachtigall
6deb97d5bc
fix(mobile): android detect supported version for special format column ( #26633 )
...
* fix(android): detect supported version for special format column
* fix(android): remove unnecessary suppression for new API in special format check
* fix(android): change visibility of hasSpecialFormatColumn method to private
2026-03-02 17:06:35 -05:00
Snowknight26
b282d83e95
fix(web): show shared link download button when logged in ( #26629 )
2026-03-02 22:00:23 +01:00
Jason Rasmussen
5bc08f8654
refactor: queue names ( #26650 )
2026-03-02 15:46:26 -05:00
shenlong
f54924d46a
refactor: simplify video zooming ( #26527 )
...
fix: simplify video zooming
# Conflicts:
# mobile/lib/presentation/widgets/asset_viewer/asset_page.widget.dart
# mobile/lib/presentation/widgets/asset_viewer/video_viewer.widget.dart
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-03-02 17:53:49 +00:00
Michel Heusschen
dffe4d1d5c
refactor(web): remove resize observer action ( #26647 )
2026-03-02 14:45:34 +00:00
Min Idzelis
7f47cdd645
feat: enhance face-editor positioning ( #26303 )
...
feat: enhance face-editor positioning - less overlap
test: timeline with actual video
2026-03-02 09:44:59 -05:00
Min Idzelis
625b30c50a
test: stack editor e2e tests ( #26526 )
...
* feat: add responsive layout to broken asset
* test: stack editor e2e tests
2026-03-02 09:43:56 -05:00
Min Idzelis
8619d14eca
feat: add responsive layout to broken asset ( #26384 )
2026-03-02 09:27:40 -05:00
Min Idzelis
062546c168
refactor: rename image cancel method ( #26381 )
2026-03-02 09:23:20 -05:00
Michel Heusschen
ea668d6b22
refactor(web): convert memory observer to an attachment ( #26646 )
2026-03-02 09:20:13 -05:00
Michel Heusschen
f06af2c600
refactor(web): dedupe isAllUserOwned logic ( #26645 )
2026-03-02 09:18:32 -05:00
Snowknight26
9dd2633e0c
chore(web): deduplicate storage template examples ( #26462 )
2026-03-02 12:52:02 +01:00
Mees Frensel
13a514c189
fix(web): small thumbnail issues ( #26643 )
2026-03-02 12:50:33 +01:00
Mees Frensel
b0c9120bb6
chore: update PWA support ( #26491 )
2026-03-02 11:35:53 +00:00
Yaros
bc4265416d
fix(web): top bar z index on search page ( #26582 )
2026-03-02 11:33:00 +01:00
shenlong
d4434f2276
fix: reset db from splash screen ( #26617 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-03-01 15:23:26 -06:00
Luis Nachtigall
f4e156494f
feat(mobile): add playbackStyle to local asset entity and related database schema ( #26596 )
...
* feat: add playbackStyle to local asset entity and related database schema
* implement conversion function for playbackStyle in local sync service
* implement conversion function for playbackStyle in local sync service
* refactor: remove deducedPlaybackStyle from TrashedLocalAssetEntityData
* add playbackStyle column to trashed local asset entity
* make playbackStyle non-nullable across the mobile codebase
* Streamline playbackStyle backfill:
- only backfill local assets playbackStyle in flutter/dart code
- only update trashed local assets in db migration
* bump target database version to 23 and update migration logic for playbackStyle
* set playback_style to 0 in merged_asset.drift as its a getter in base asset
* run make pigeon
* Populate playbackStyle for trashed assets during native migration
2026-03-01 14:50:21 -05:00
Min Idzelis
84abad564e
fix(server): deduplicate shared links in getAll query ( #26395 )
2026-03-01 14:41:15 -05:00
renovate[bot]
02d356f5dd
chore(deps): update dependency multer to v2.1.0 [security] ( #26613 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-01 11:34:11 +01:00
renovate[bot]
e963eedd26
chore(deps): update dependency @sveltejs/kit to v2.53.3 [security] ( #26612 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-01 11:33:51 +01:00
renovate[bot]
3da4acfe67
chore(deps): update dependency svelte to v5.53.5 [security] ( #26611 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-01 11:22:54 +01:00
Yaros
e06cedb626
fix: hide download action for local/merged assets ( #26461 )
...
* fix: hide download action for local/merged assets
* chore: use onlyRemote
* chore: rename hasLocal to onlyLocal
2026-03-01 11:16:45 +05:30
Luis Nachtigall
ac5ef6a56d
feat(mobile): add support for encoded image requests in local/remote image APIs ( #26584 )
...
* feat(mobile): add support for encoded image requests in local and remote image APIs
* fix(mobile): handle memory cleanup for cancelled image requests
* refactor(mobile): simplify memory management and response handling for encoded image requests
* fix(mobile): correct formatting in cancellation check for image requests
* Apply suggestion from @mertalev
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com >
* refactor(mobile): rename 'encoded' parameter to 'preferEncoded' for clarity in image request APIs
* fix(mobile): ensure proper resource cleanup for cancelled image requests
* refactor(mobile): streamline codec handling by removing unnecessary descriptor disposal in loadCodec request
---------
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com >
2026-02-28 11:43:58 -05:00
Luis Nachtigall
d6c724b13b
feat(mobile): add playbackStyle to native sync API ( #26541 )
...
* feat(mobile): add playbackStyle to native sync API
Adds a `playbackStyle` field to `PlatformAsset` in the pigeon sync API so
native platforms can communicate the asset's playback style (image, video,
animated, livePhoto) to Flutter during sync.
- Add `playbackStyleValue` computed property to `PHAsset` extension (iOS)
- Populate `playbackStyle` in `toPlatformAsset()` and the full-sync path
- Update generated Dart/Kotlin/Swift files
* fix(tests): add playbackStyle to local asset test cases
* fix(tests): update playbackStyle to use integer values in local sync tests
* feat(mobile): extend playbackStyle enum to include videoLooping
* Update PHAssetExtensions.swift
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* fix(playback): simplify playbackStyleValue implementation by removing iOS version check
* feat(android): implement proper playbackStyle detection
* add PlatformAssetPlaybackStyle enum
* linting
---------
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-02-28 03:08:51 +00:00
Hao Xi
aa87d1b9a3
fix: tune up the performance of the getByDayOfYear query. ( #26495 )
2026-02-27 16:51:19 -05:00
Savely Krasovsky
dc4da4b3d6
feat: update onnxruntime-openvino to 1.24.1 and intel drivers ( #26565 )
...
feat: update onnxruntime-openvino to 1.24.1 and intel drivers to the latest version
2026-02-27 16:35:29 -05:00
Marius
7dbd08a747
feat(mobile): add confirmation dialog to permanent delete action ( #26442 )
2026-02-27 15:49:57 +00:00
Thomas
1d89190f96
fix(mobile): don't cut off top corners of app bar ( #26550 )
...
It's not visible normally, but in screenshots and when casting, the top
corners of the app bar are cut off. This should fix that.
2026-02-27 17:39:58 +05:30
Thomas
c2d8400899
fix(mobile): prevent video player from being recreated unnecessarily ( #26553 )
...
The changes in #25952 inadvertently removed an optimisation which
prevents the video player from being recreated when the tree changed.
This happens surprisingly often, namely when the hero animation
finishes. The widget is particularly expensive, so recreating it 2-3 in
a short period not only feels sluggish, but also causes the video to
hitch and restart.
The solution is to bring the global key back for the native video
player. Unlike before, we are using a custom global key which compares
the values of hero tags directly. This means we don't need to maintain a
map of hero tags to global keys in the state, and also means we don't
have to pass the global key down multiple layers.
This also fixes #25981 .
2026-02-27 17:39:38 +05:30
Mees Frensel
a100a4025e
fix(web): handle delete shortcut on shared link page as remove ( #26552 )
2026-02-27 12:50:06 +01:00
Nikhil Alapati
334fc250d3
fix(server): Live Photo migration bug when album is in template ( #25329 )
...
Co-authored-by: Nikhil Alapati <nikhilalapati@meta.com >
2026-02-27 12:46:55 +01:00
Michel Heusschen
28ca5f59fe
fix(web): map timeline asset count ( #26564 )
2026-02-27 12:28:53 +01:00
Thomas
789d82632a
fix(mobile): race condition showing details ( #26559 )
...
Asset details are prematurely hidden when a drag ends if the simulation
shows that it will close given its current velocity. It makes for a much
more responsible feeling UI. However, this behaviour conflicts with the
logic which determines whether details are showing based on the current
offset. The result is that the details are hidden, then immediately
shown again, and then hidden once it passes the min snap distance
threshold.
This can be fixed by only evaluating the position based logic when a
drag is active, and then inferring upcoming state with a simulation.
2026-02-27 12:12:24 +05:30
Daniel Dietzler
9f9569c152
fix: schema check ( #26543 )
2026-02-26 13:27:50 -05:00
Jason Rasmussen
fae05270a3
feat: doc links ( #26519 )
2026-02-26 12:14:17 -05:00
Michel Heusschen
771816f601
feat(web): map timeline sidepanel ( #26532 )
...
* feat(web): map timeline panel
* update openapi
* remove #key
* add index on lat/lng
2026-02-26 12:03:23 -05:00
Daniel Dietzler
e25ec4ec17
chore: migrate migration scripts to sql tools ( #26537 )
2026-02-26 17:59:52 +01:00
Kishor Prins
dd9046508d
feat: ROCm 7.2 and MIGraphX support ( #26178 )
2026-02-26 16:52:26 +00:00
shenlong
177d1c9a30
feat: splash screen error page ( #26460 )
...
* feat: splash screen error page
* Update mobile/lib/pages/common/splash_screen.page.dart
Co-authored-by: Alex <alex.tran1502@gmail.com >
* add clear data action
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-02-26 16:47:28 +00:00
Noel S
ded8d4e2b4
fix(mobile): set correct initial system-ui mode in asset viewer ( #26500 )
...
* fix: set correct initial system-ui mode on asset open
* move to function and add details visibility to initial state logic
* switch to ref.read
2026-02-26 10:10:46 -06:00
Mees Frensel
e454c3566b
refactor: star rating ( #26357 )
...
* refactor: star rating
* transform rating 0 to null in controller dto
* migrate rating 0 to null
* deprecate rating -1
* rating type annotation
* update Rating type
2026-02-26 14:54:20 +01:00
Luis Nachtigall
4c79c3c902
feat(mobile): Prevent premature image cache eviction when higher image loading is enabled ( #26208 )
...
* feat(mobile): enhance image loading with error handling and eviction options
* pull request suggestions: remove log and remove useless local implementation
2026-02-25 17:31:37 -05:00
Alex
3bed1b6131
fix: consider DAR when extracting video dimension ( #25293 )
...
* feat: consider DAR when extracting video dimension
* move to probe
* comment
---------
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com >
2026-02-25 21:58:53 +00:00
Brandon Wees
3c9fb651d0
feat(server): SyncAssetEditV1 ( #26446 )
...
* feat: SyncAssetEditV1
* fix: audit table import
* fix: sql tools table fetch
* fix: medium tests (wip)
* fix: circ dependency
* chore: finalize tests
* chore: codegen/lint
* fix: code review
2026-02-25 18:12:41 +00:00
Mees Frensel
55e625a2ac
fix(web): error page i18n ( #26517 )
2026-02-25 18:35:25 +01:00
Daniel Dietzler
ca6c486a80
refactor: person stubs ( #26512 )
2026-02-25 08:56:00 -05:00
socksprox
d94d9600a7
fix(mobile): birthday picker shows limited months when no date exists ( #26407 )
...
* ScrollDatePicker defaults maximumDate to DateTime.now(). When no birthday exists, the picker starts at today (Feb 2026) with max also Feb 2026 — so only Jan–Feb are available for the current year.
Fix applied: Added maximumDate: DateTime(DateTime.now().year, 12, 31) at person_edit_birthday_modal.widget.dart:93, allowing all 12 months to be selected while still preventing future-year birthdays.
* fix(mobile): initialize birthday picker to past date to prevent future birthdays
When no birthday exists, initialize to 30 years ago instead of today.
This allows all 12 months to be selectable while keeping maximumDate
as DateTime.now() to prevent future birthday selection.
Fixes issue where only current months were available due to maxDate constraint.
---------
Co-authored-by: socksprox <info@shadowfly.net >
2026-02-25 07:58:02 +05:30
Mees Frensel
11e5c42bc9
fix(web): toast warning when trying to upload unsupported file type ( #26492 )
2026-02-24 15:58:40 -05:00
shenlong
33c6cf8325
test: backup repository ( #26494 )
...
test: backup repository tests
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-24 15:50:02 -05:00
renovate[bot]
dd97395f3a
chore(deps): update dependency gunicorn to v25 ( #26486 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-24 16:14:04 +00:00
renovate[bot]
7ae268e287
fix(deps): update dependency exiftool-vendored to v35 ( #26488 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-02-24 14:40:57 +01:00
Jason Rasmussen
f07e2b58f0
refactor: prefer buffer ( #26469 )
...
* refactor: prefer buffer
* Update server/src/schema/tables/session.table.ts
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com >
---------
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com >
2026-02-24 13:26:36 +00:00
shenlong
4b8f90aa55
refactor: remote album repository test to use context ( #26481 )
...
* refactor: remote album repository test to use context
* refactor: medium repo context (#26482 )
* refactor: medium repo context
* store userId in closure
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-24 13:25:07 +00:00
Daniel Dietzler
55ee9f76da
chore: eslint 10 ( #26490 )
2026-02-24 08:24:18 -05:00
Michel Heusschen
30f6d4439e
fix(web): prevent null folder tree on concurrent load ( #26489 )
2026-02-24 08:23:07 -05:00
renovate[bot]
f62d98a0d1
chore(deps): update dependency eslint-plugin-unicorn to v63 ( #26484 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-24 12:34:12 +01:00
renovate[bot]
db3d580761
chore(deps): update dependency globals to v17 ( #26485 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-24 12:18:01 +01:00
renovate[bot]
0bc38fefe6
fix(deps): update typescript-projects ( #26483 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-02-24 11:15:26 +00:00
renovate[bot]
acc4219849
chore(deps): update actions/checkout action to v6.0.2 ( #26477 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-24 10:09:34 +01:00
shenlong
5234e21241
fix: retain asset when either asset is a favorite ( #26473 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-23 16:52:34 -05:00
shenlong
17b327bfcd
refactor: medium repository context ( #26472 )
...
refactor: repository test context
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-23 21:34:21 +00:00
Min Idzelis
d14d0a9b9b
feat: add isTransparent to db ( #26413 )
2026-02-23 21:33:52 +00:00
Mees Frensel
bf47147fbb
fix(server): accept showAt and hideAt for creating memories ( #26429 )
...
* fix(server): accept showAt and hideAt for creating memories
* fix history
2026-02-23 21:26:34 +00:00
aviv926
9ea0a69a72
feat(docs): Adding information about parameter c= ( #26430 )
...
* Adding information about parameter c=
* Apply suggestions from code review
Co-authored-by: bo0tzz <git@bo0tzz.me >
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
Co-authored-by: bo0tzz <git@bo0tzz.me >
2026-02-23 21:21:06 +00:00
shenlong
00f43ffc25
chore: add Option type ( #26467 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-23 16:20:25 -05:00
Jonathan Jogenfors
96dc4a77a0
fix: always show library scan button ( #26428 )
...
* fix: always show library scan button
* chore: clean up
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-02-23 21:18:23 +00:00
shenlong
db7158b967
refactor: ImmichHtmlText to ImmichFormattedText ( #26466 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-23 16:05:00 -05:00
Brandon Wees
e5722c525b
feat: getAssetEdits respond with edit IDs ( #26445 )
...
* feat: getAssetEdits respond with edit IDs
* chore: cleanup typings for edit API
* chore: cleanup types with jason
* fix: openapi sync
* fix: factory
2026-02-23 20:57:57 +00:00
shenlong
f616de5af8
chore(mobile): nudge users to switch to the new timeline ( #26458 )
...
* nudge users to switch to the new timeline
* remove timeline switch setting from new timeline
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-23 13:42:32 -06:00
shenlong
4f39663d27
fix: simplify timeline rebuild on orientation ( #26408 )
...
* revert: current fix
# Conflicts:
# mobile/lib/presentation/widgets/timeline/timeline.widget.dart
* fix: simpler fix
* rebase
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-23 13:30:09 -05:00
Thomas
367025a3a8
chore(mobile): simplify showing details toggle ( #26403 )
...
Keeping track of the last scroll offset and guarding on scroll direction
is not necessary. The dead zone with kTouchSlop is more than sufficient,
and much simpler.
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com >
2026-02-23 23:49:35 +05:30
Min Idzelis
60dafecdc9
refactor: thumbnail components ( #26379 )
2026-02-23 11:56:20 -05:00
Yaros
16c1c3c780
fix(mobile): join local on archived timeline ( #26387 )
2026-02-23 20:21:32 +05:30
Brandon Wees
e633bc3f24
fix: missing deletedAt and isVisible columns on mobile ( #26414 )
...
* feat: SyncAssetV2
* feat: mobile sync handling
* feat: request correct sync object based on server version
* fix: mobile queries
* chore: sync sql
* fix: test
* chore: switch to mapper
* fix: sql sync
2026-02-23 09:50:54 -05:00
Daniel Dietzler
a07d7b0c82
chore: migrate to sql-tools library ( #26400 )
...
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-02-23 09:50:16 -05:00
Yaros
a469d350be
feat(mobile): prompt when deleting from trash ( #26392 )
...
* feat(mobile): prompt when deleting from trash
* refactor: use existing strings
* chore: use type-safe translations
* chore: remove old translation function
2026-02-23 14:45:05 +00:00
Yaros
ccab4c88bb
perf(mobile): optimized album sorting ( #25179 )
...
* perf(mobile): optimized album sorting
* refactor: add index & sql query
* fix: migration
* refactor: enum, ordering & list
* test: update album service tests
* chore: fix enums
broken during merging main
* chore: remove unnecessary tests
* test: add tests for getSortedAlbumIds
* test: added back stubs in service test
2026-02-23 20:13:45 +05:30
Min Idzelis
430638e129
feat: warn when losing transparency during thumbnail generation ( #26243 )
...
* feat: preserve alpha
* refactor: use isTransparent naming and separate getImageMetadata
* warn instead of preserve
2026-02-23 08:16:28 -05:00
Thomas
caebe5166a
chore(mobile): remove redundant assignment ( #26404 )
...
The view controller is already assigned during page build. Reassigning
it for every drag doesn't really make any sense.
2026-02-23 12:48:25 +00:00
Michel Heusschen
1bd28c3e78
fix(web): prevent state_unsafe_mutation error on people page ( #26438 )
2026-02-23 13:24:51 +01:00
Matthew Momjian
31a55aaa73
fix(web): storage template example ( #26424 )
2026-02-23 10:34:56 +00:00
Thomas
8b2e1509ff
chore(mobile): simplify pop logic ( #26410 )
...
We have all the information we need to decide on whether we should pop
or not at the end of a drag. There's no need to track that separately,
and update the value constantly.
2026-02-23 14:49:15 +05:30
Lauritz Tieste
d0cb97f994
feat(mobile): Add slug support for shared links ( #26441 )
...
* feat(mobile): add slug support for shared links
* fix(mobile): ensure slug retains existing value when unchanged
2026-02-23 14:31:42 +05:30
Timon
f0cf3311d5
feat(mobile): Allow users to set profile picture from asset viewer ( #25517 )
...
* init
* fix
* styling
* temporary workaround for 500 error
**Root cause:**
The autogenerated Dart OpenAPI client (`UsersApi.createProfileImage()`) had two issues:
1. It set `Content-Type: multipart/form-data` without a boundary, which overrode the correct header that Dart's `MultipartRequest` would set (`multipart/form-data; boundary=...`).
2. It added the file to both `mp.fields` and `mp.files`, creating a duplicate text field.
**Result:**
Multer on the server failed to parse the multipart body, so `@UploadedFile()` was `undefined` → accessing `file.path` in `UserService.createProfileImage()` threw → **500 Internal Server Error**.
**Workaround:**
Bypass the autogenerated method in `UserApiRepository.createProfileImage()` and send the multipart request directly using the same `ApiClient` (basePath + auth), ensuring:
- No manual `Content-Type` header (let `MultipartRequest` set it with boundary)
- File only in `mp.files`, not `mp.fields`
- Proper filename fallback
* Revert "temporary workaround for 500 error"
This reverts commit 8436cd402632ca7be9272a1c72fdaf0763dcefb6.
* generate route for ProfilePictureCropPage
* add route import
* simplify
* try this
* Revert "try this"
This reverts commit fcf37d2801055c49010ddb4fd271feb900ee645a.
* try patching
* Reapply "temporary workaround for 500 error"
This reverts commit faeed810c21e4c9f0839dfff1f34aa6183469e56.
* Revert "Reapply "temporary workaround for 500 error""
This reverts commit a14a0b76d14975af98ef91748576a79cef959635.
* fix upload
* Refactor image conversion logic by introducing a new utility function. Replace inline image-to-Uint8List conversion with the new utility in EditImagePage, DriftEditImagePage, and ProfilePictureCropPage.
* use toast over snack
* format
* Revert "try patching"
This reverts commit 68a616522a1eee88c4a9755a314c0017e6450c0f.
* Enhance toast notification in ProfilePictureCropPage to include success type for better user feedback.
* Revert "simplify"
This reverts commit 8e85057a40 .
* format
* add tests
* refactor to use statefulwidget
* format
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-02-22 06:02:33 +00:00
Timon
3ce0654cab
feat(mobile): Allow users to set album cover from mobile app ( #25515 )
...
* set album cover from asset
* add to correct kebab group
* add to album selection
* add to legacy control bottom bar
* add tests
* format
* analyze
* Revert "add to legacy control bottom bar"
This reverts commit 9d68e12a08 .
* remove unnecessary event emission
* lint
* fix tests
* fix: button order and remove unncessary check
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-02-22 05:53:39 +00:00
Noel S
f0e2fced57
feat(mobile): video zooming in asset viewer ( #22036 )
...
* wip
* Functional implementation, still need to bug test.
* Fixed flickering bugs
* Fixed bug with drag actions interfering with zoom panning. Fixed video being zoomable when bottom sheet is shown. Code cleanup.
* Add comments and simplify video controls
* Clearer variable name
* Fix bug where the redundant onTapDown would interfere with zooming gestures
* Fix zoom not working the second time when viewing a video.
* fix video of live photo retaining pan from photo portion
* code cleanup and simplified widget stack
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-02-21 23:37:36 -06:00
Alex Balgavy
8ba20cbd44
feat: tap to see next/previous image ( #20286 )
...
* feat(mobile): tap behavior for next/previous image
This change enables switching to the next/previous photo in the photo
viewer by tapping the left/right quarter of the screen.
* Avoid animation on first/last image
* Add changes to asset_viewer.page
* Add setting for tap navigation, disable by default
Not everyone wants to have tapping for next/previous image enabled, so
this commit adds a settings toggle. Since it might be confusing behavior
for new users, it is disabled by default.
* chore: refactor
* fix: lint
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com >
2026-02-22 05:28:17 +00:00
Mert
1d25267f22
fix(mobile): buffer width/height referenced after recycling ( #26415 )
...
recycle after getters
2026-02-21 09:41:44 -06:00
Michel Heusschen
a4d95b7aba
fix(web): prevent side panel overlap during transition ( #26398 )
2026-02-21 09:14:53 -06:00
Min Idzelis
25d0bdc9f5
chore: replace remaining usages of npm with pnpm ( #26411 )
2026-02-21 08:44:33 -05:00
Michel Heusschen
905b9bd560
fix(web): album description auto height ( #26420 )
2026-02-21 08:43:23 -05:00
Michel Heusschen
672743f543
fix(web): escape handling on album page ( #26419 )
2026-02-21 08:42:31 -05:00
Michel Heusschen
27c45b5ddb
fix(web): restore close action for asset viewer ( #26418 )
2026-02-21 10:31:30 +00:00
Peter Ombodi
82c6302549
feat(mobile): timeline - add persistentBottomBar flag ( #25634 )
...
* feat(mobile): timeline - add selectable all-assets control
* feature(mobile): introduce bottomWidgetBuilder in Timeline
remove redundant code
* fix(mobile): remove redundant code
* refactor(mobile): refactor new code in Timeline
* fix(mobile): fix format
* refactor(mobile): replace unsupported Dart syntax for analyzer compatibility
* refactor(mobile): remove Timeline.bottomSheet and migrate to bottomWidgetBuilder
* refactor(mobile): restore Timeline.bottomSheet and remove bottomWidgetBuilder
add withPersistentBottomBar param to Timeline class
* refactor(mobile): refactor var name
---------
Co-authored-by: Peter Ombodi <peter.ombodi@gmail.com >
2026-02-20 23:51:26 +05:30
Min Idzelis
aae64b5e2f
test: thumbnail selector ( #26383 )
...
* test: face ordering issue/flakiness
* test: thumbnail selector
2026-02-20 15:04:17 +00:00
Benjamin Nguyen
18bf96b4b2
fix(mobile): handle userPreferencesProvider error state during sync ( #26332 )
...
fix drift_search_page render bug
2026-02-20 08:57:28 -06:00
Timon
84f2956941
fix(cli): delete sidecar files after upload if requested ( #26353 )
...
* fix(cli): delete sidecar files after upload if requested
Introduced a new function, findSidecar, to locate XMP sidecar files based on specified naming conventions. Updated the deleteFiles function to delete associated sidecar files when the main asset file is deleted. Added unit tests for findSidecar to ensure correct functionality.
* lint and format
* fix test
* chore: clean up
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-02-20 14:54:08 +00:00
Min Idzelis
6044b41648
fix: align devcontainers with standard development containers ( #26321 )
2026-02-20 09:37:07 -05:00
Min Idzelis
b4e16efdf4
test: face ordering issue/flakiness ( #26382 )
2026-02-20 09:23:40 -05:00
Min Idzelis
19da655390
fix: exiftool-vendored.exe ( #26393 )
2026-02-20 09:16:42 -05:00
Benjamin Nguyen
a1839b3676
fix(mobile): Reset "People" search filter chip if no selections are made ( #26267 )
...
* filter by tags
* reset people search filter chip if no selections
2026-02-20 16:37:26 +05:30
dotlambda
7461479f60
chore(ml): remove unused dependency ftfy ( #25529 )
2026-02-19 22:58:25 +00:00
Jason Rasmussen
01050a3d54
fix: pin code reset modal ( #26370 )
2026-02-19 21:50:39 +00:00
renovate[bot]
e8bedfdb7a
chore(deps): update dependency @sveltejs/kit to v2.52.2 [security] ( #26371 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-19 16:19:19 -05:00
Timon
7b4cabc2c6
chore: update task commands in web/mise.toml to use pnpm ( #26345 )
...
* chore: update task commands in mise.toml to use pnpm
* Replaced direct commands with pnpm run equivalents for consistency.
* Added new tasks for type checking and Svelte checks.
* Removed deprecated svelte-kit-sync task and adjusted dependencies accordingly.
* mroe
* chore: update mise.toml to add demo server task
* Removed the direct IMMICH_SERVER_URL setting from the environment section.
* Added a new task for starting the demo server with the IMMICH_SERVER_URL environment variable.
* Ensured consistency in task definitions.
2026-02-19 16:10:55 -05:00
David Baxter
5c7c07a09f
perf: add indexes to improve People API response times ( #26337 )
...
Add SQL indexes for people search endpoints
2026-02-19 16:09:05 -05:00
Jason Rasmussen
e6ac48f4b5
refactor: app download modal ( #26368 )
2026-02-19 16:03:46 -05:00
Jason Rasmussen
3d4dec0cca
refactor: asset actions ( #26367 )
2026-02-19 20:42:37 +00:00
Jason Rasmussen
1d11106dd0
refactor: add to album ( #26366 )
2026-02-19 15:27:30 -05:00
Timon
8eec3c810e
fix(web): single select scroll behavior ( #26358 )
...
refactor(timeline): remove single select scroll behavior
2026-02-19 15:21:03 -05:00
Thomas
a43680c8b1
chore(mobile): simplify drag logic ( #26291 )
...
We were manually tracking whether gestures should be blocked, which was
a remnant of how the old code worked. This is no longer needed as we
have better heuristics for knowing whether we should skip drag updates
now.
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-02-19 14:18:44 -06:00
Jason Rasmussen
b2a510efee
refactor: remove unused actions ( #26363 )
2026-02-19 12:52:21 -06:00
shenlong
a0077a0f51
feat(mobile): html text ( #25739 )
...
* feat: html text
* feat: mobile ui showcase (#25827 )
* feat: mobile ui showcase
* remove showcase from main app
* update fonts
* update code to be loaded from asset
* fix ci
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
# Conflicts:
# mobile/lib/widgets/common/immich_sliver_app_bar.dart
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-19 12:27:16 -06:00
Thomas
aa02310d63
chore(mobile): cleanup asset viewer state ( #26300 )
...
initState was quite noisy, so I've moved some things around and made the
intention a bit clearer.
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-02-19 12:26:21 -06:00
renovate[bot]
7394fa1491
chore(deps): update dependency svelte to v5.51.5 [security] ( #26352 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-19 17:11:56 +00:00
Mees Frensel
99f7eb4ce6
chore(server): remove redundant nullish checks ( #26354 )
2026-02-19 17:09:12 +00:00
Timon
ffd54d0431
fix(i18n): add translation key for partner's photos ( #26348 )
...
* fix(i18n): add translation key for partner's photos
* reuse existing key
2026-02-19 10:53:19 -06:00
Michel Heusschen
7005e9fc50
fix(web): update @immich/ui to v0.64.0 ( #26351 )
2026-02-19 16:33:06 +00:00
Michel Heusschen
4f2e6e3f15
fix(web): favoriting assets opened via GalleryViewer ( #26350 )
...
fix(web): favoriting assets through GalleryViewer
2026-02-19 10:32:25 -06:00
Michel Heusschen
8b5fc3d8bc
fix(web): prevent panorama image reload during asset updates ( #26349 )
2026-02-19 10:31:30 -06:00
Thomas
0fa385c465
fix(mobile): infer drag intent early ( #26344 )
...
The drag intent was not set until it reached the kTouchSlop threshold.
This is not necessary as flutter already has its own heuristics for
preventing unintended drags.
The result of using kTouchSlop is that dismissing or scroll can feel a
little delayed, and will jump from 0 to kTouchSlop (18px) rather than
moving smoothly.
2026-02-19 09:56:51 -06:00
Daniel Dietzler
db4e7abf6d
chore: refactor more queries ( #25572 )
...
* refactor: asset service queries
* chore: refactor more queries
2026-02-19 10:48:30 -05:00
Thomas
dadd20acfc
chore(mobile): reduce the asset details snap target ( #26343 )
...
We were snapping to 75%, but 66.6% may be more natural.
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-02-19 15:48:21 +00:00
Jason Rasmussen
f04efbb714
fix: safari address bar color ( #26346 )
2026-02-19 09:40:13 -06:00
Timon
208c07af1f
chore(web): merge "Add to album" and "Add to shared album" actions into a single action ( #24669 )
...
* refactor: simplify album selection actions by removing shared option
* Removed the shared option from AddToAlbumAction and related components.
* Updated AlbumPickerModal and other components to reflect this change.
* Cleaned up related tests and documentation for consistency.
* fix lint
2026-02-19 16:15:26 +01:00
Jason Rasmussen
72a5ccaa53
feat: editing descriminator ( #26336 )
2026-02-19 09:15:56 -05:00
Daniel Dietzler
fd0338f89c
refactor: asset service queries ( #25535 )
2026-02-19 08:54:28 -05:00
Daniel Dietzler
d0ed76dc37
refactor: small face tests ( #26340 )
2026-02-19 08:51:18 -05:00
renovate[bot]
e0bb5f70ec
fix(deps): update dependency fabric to v7 [security] ( #26342 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-19 12:28:12 +00:00
Timon
f965daa8d2
chore: remove push trigger for check-openapi workflow ( #26341 )
2026-02-19 13:14:26 +01:00
Timon
316f86d25e
feat: add .mxf file support ( #24644 )
...
* feat: add support for MXF format in media handling
* Updated supported formats documentation to include MXF.
* Added MXF to valid video extensions in tests.
* Registered MXF MIME type in mime-types utility.
* fix: enhance MXF handling in mime-types utility
* Updated video mime type validation to include 'application/mxf'.
* Adjusted asset type determination to recognize MXF as a video container.
* chore: clean up
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-02-19 06:39:41 +00:00
Hao Xi
e520fc3b63
fix: include DROP INDEX in transaction to prevent missing index on rollback ( #25399 )
...
* fix: ERR_PNPM_ENOENT error while `make dev` on macOS.
* fix: include `DROP INDEX` in transaction to prevent missing index on rollback.
* chore: clean up this PR.
2026-02-19 06:20:36 +00:00
Jonathan Jogenfors
b3b9834c00
feat(web): loop chromecast video ( #24410 )
2026-02-18 20:29:13 -05:00
Mees Frensel
84f7fb63ee
feat(web): show ocr text boxes in panoramas ( #25727 )
2026-02-18 20:04:18 -05:00
Jorge Montejo
1f8359ead4
fix: Download the edited version when downloading multiple photos ( #26259 )
...
* fix: download the edited version when downloading multiple photos
* test: update tests
* chore: clean up
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-02-18 21:47:45 +00:00
Fabio Garavini
ea30c9d2ba
fix(server): db restore failure when DB_URL is set to unix-domain socket connection ( #26252 )
...
* fix db restore fails to get postgres user
* Apply suggestion from @danieldietzler
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com >
* fix fallback to reasonable default test
---------
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com >
2026-02-18 16:37:40 -05:00
Dusan Hlavaty
d1abdea420
chore(docs): add quick-start guide for DevPod with docker ( #26213 )
2026-02-18 16:26:09 -05:00
Benjamin Nguyen
ae8dad68fc
feat(mobile): filter by tags ( #26196 )
...
filter by tags
2026-02-18 21:16:26 +00:00
renovate[bot]
227ff70b6e
chore(deps): update dependency ajv to v8.18.0 [security] ( #26297 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-18 16:06:43 -05:00
bo0tzz
ee7ac09450
fix: bad field paste in metadata.service.spec ( #26329 )
...
Caused https://github.com/immich-app/immich/actions/runs/22153269773/job/64050176244 to flake
2026-02-18 16:04:32 -05:00
Devansh H Jani
2e59dbdc12
fix: prevent server crash when extraction of metadata fails if the assets are corrupted ( #26042 )
...
* Fix-25968 Extraction of metadata fails if the assets are corrupted
* chore: clean up
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-02-18 15:53:23 -05:00
Timon
c4c7f94317
chore: add OpenAPI check workflow ( #26223 )
2026-02-18 15:16:01 -05:00
Jason Rasmussen
d004d7e21b
fix: metadata crash ( #26327 )
2026-02-18 15:09:35 -05:00
Timon
5f95aab437
chore: align mobile mise tasks ( #26237 )
...
* chore: align mobile mise tasks
* fix
2026-02-18 14:11:01 -05:00
Michel Heusschen
dd632f38de
fix(web): unblock escape after opening context menu ( #26325 )
2026-02-18 14:10:15 -05:00
renovate[bot]
6f7fc94710
chore(deps): update github-actions ( #25388 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-18 19:53:41 +01:00
renovate[bot]
85cb515cae
chore(deps): update dependency github:cqlabs/homebrew-dcm to v1.35.1 ( #26278 )
...
* chore(deps): update dependency github:cqlabs/homebrew-dcm to v1.35.1
* fix static analysis
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-18 23:47:54 +05:30
bo0tzz
65e1bb83b7
fix: use wrangler cli directly ( #26326 )
2026-02-18 18:06:41 +00:00
bo0tzz
d9b1b69827
fix: switch docs-deploy to use wrangler-action ( #26323 )
2026-02-18 18:45:43 +01:00
Min Idzelis
b2050583f5
chore: run maintenance test (e2e) in isolation too, share containers ( #26246 )
2026-02-18 09:39:13 -05:00
Keunes
1bdc24c730
feat(docs): Explain configuration file location for Docker Compose ( #24989 )
...
* Explain configuration file location for Docker Compose
* Update config-file.md
* Update config-file.md
* Update config-file.md
---------
Co-authored-by: Mees Frensel <33722705+meesfrensel@users.noreply.github.com >
2026-02-18 14:52:28 +01:00
renovate[bot]
5adb75c272
fix(deps): update dependency @mapbox/mapbox-gl-rtl-text to v0.3.0 ( #23353 )
...
* fix(deps): update dependency @mapbox/mapbox-gl-rtl-text to v0.3.0
* fix: maplibre rtl import
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-02-18 12:05:41 +01:00
Daniel Dietzler
8f9ea6a171
fix: utc time zone upserts ( #26258 )
...
fix: utc timezone upserts
2026-02-17 18:59:52 +01:00
Thomas
3f41916ad7
chore(mobile): fix asset marker icon file name ( #26290 )
2026-02-17 11:53:44 -05:00
Thomas
5c6433b4ca
feat(mobile): inline asset details ( #25952 )
...
The existing implementation for showing asset details uses a bottom
sheet, and is not in sync with the preview or scroll intent. Other apps
use inline details, which is much cleaner and feels better to use.
2026-02-17 09:24:34 -06:00
Damien Nozay
06d487782e
fix(release): add docker-compose.rootless.yml to released assets ( #26261 )
...
* fix(release): add docker-compose files to released assets
Since there is a warning:
"Make sure to use the docker-compose.yml of the current release"
This should apply to other docker-compose files, so it would make sense to release them.
It also makes it slightly easier to get the asset for rootless (e.g., PR 2750).
* release docker-compose.rootless.yml
2026-02-17 12:55:34 +01:00
Min Idzelis
455afbb119
ci: fix formatting task ( #26274 )
2026-02-17 12:51:15 +01:00
ewinnd
0767ae0c8a
fix(docs): remove truenas link from synology community guide ( #26277 )
...
* Update synology.md to remove Truenas link
Removed link to Truenas github community repo.
* remove blank line
---------
Co-authored-by: Mees Frensel <33722705+meesfrensel@users.noreply.github.com >
2026-02-17 12:50:11 +01:00
renovate[bot]
a16a00ebd4
fix(deps): update typescript-projects ( #26276 )
...
* fix(deps): update typescript-projects
* chore: downgrade kysely
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-02-17 11:50:02 +00:00
renovate[bot]
398b750ef7
chore(deps): update dependency github:extism/js-pdk to v1.6.0 ( #26279 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-17 12:49:14 +01:00
renovate[bot]
18bbb5b4db
chore(deps): update node.js to v24.13.1 ( #26275 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-17 11:45:57 +01:00
renovate[bot]
b3c37905f7
chore(deps): update dependency @types/node to ^24.10.13 ( #26273 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-17 11:44:38 +01:00
renovate[bot]
90ef6c4e28
chore(deps): update docker.io/valkey/valkey:9 docker digest to 930b414 ( #26272 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-17 11:44:21 +01:00
Michel Heusschen
ceef65154d
fix(web): clear cache when asset changes ( #26257 )
...
* fix(web): clear cache when asset changes
* formatting
2026-02-17 11:43:08 +01:00
Joren Guillaume
de7b42eb23
chore(docs): Update help channel for developers ( #26284 )
...
Update help channel for developers
2026-02-17 11:39:43 +01:00
Min Idzelis
75bdd6a644
fix: development containers init race conditions ( #25876 )
2026-02-16 18:34:42 -05:00
Michel Heusschen
0da74569f2
fix(web): clear unsaved asset description when changing asset ( #26255 )
...
* fix(web): clear unsaved asset description when changing asset
* remove unneeded $derived
2026-02-16 18:25:13 +01:00
Michel Heusschen
cc9c261fd0
fix(web): clear face boxes when switching assets ( #26249 )
2026-02-16 15:52:34 +01:00
Michel Heusschen
4dccc2082b
fix(web): focus tag input when modal opens ( #26256 )
2026-02-16 14:30:41 +00:00
shenlong
9211013996
fix: bring back timeline args auto-scoping ( #26219 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-16 08:20:28 -06:00
Alex
156e3479fa
chore: styling tweak profile panel ( #26248 )
2026-02-16 08:20:01 -06:00
Min Idzelis
19ef196150
chore: quiet down dotenv ( #26245 )
2026-02-15 22:25:18 -06:00
Thomas
d2682f160e
fix(mobile): inherit toolbar opacity ( #25694 )
...
Some widgets, like Icon widgets, automatically inherit opacity from the
icon theme in the context. Many other widgets however, do not. The
Immich logo, profile picture, and backup badge are examples of widgets
of this.
All unsupported toolbar widgets have been updated to support inheriting
the opacity from the icon theme.
IconButtons internally animate properties like opacity, which is kind of
nice, but means we have to do more work to replicate that behaviour for
other widgets. In most cases, we can simply use an IconButton widget and
forward the correct opacity. The Immich logo however is not a button,
and therefore we need to use a custom TweenAnimationBuilder.
All widgets are using efficient, native opacity rather than the heavy
Opacity widget.
2026-02-16 09:54:57 +05:30
Nicolas
c9dd8e0a79
feat(mobile): hide search by context/OCR if disabled on server ( #25472 ) ( #26063 )
...
* feat(mobile): hide search by context/OCR if disabled on server (#25472 )
* revert(mobile): remove changes to old search page
---------
Co-authored-by: Nicolas <nicolasroy@MacBookPro>
2026-02-16 08:11:56 +05:30
Dusan Hlavaty
f6e10afe2b
chore(docs): fix discord channel in docs ( #26238 )
2026-02-15 21:34:02 +01:00
Thomas
5f87047490
feat(mobile): dynamic multi-line album name ( #26040 )
...
* feat(mobile): dynamic multi-line album name
Album names are currently limited to a single line, and scroll on
overflow. It would be better if album names were multi-line, and even
better if the font size was dynamic depending on how many lines there
are. The album name should then overflow with an ellipsis.
This is actually quite similar to how Google Photos handles album names.
* lint
---------
Co-authored-by: timonrieger <mail@timonrieger.de >
2026-02-15 22:23:45 +05:30
Daniel Dietzler
75e3b0467a
chore: hyperlink contributing file in llm message ( #26234 )
2026-02-15 10:51:47 +00:00
bo0tzz
df4c25e567
fix: use pull_request_target in close-llm-pr.yml ( #26232 )
...
So that it actually has write permissions; this should be safe as it doesn't use any external input.
2026-02-15 11:47:01 +01:00
Michel Heusschen
ff7dca35f5
perf(web): speed up asset selection ( #26216 )
2026-02-14 15:31:04 -05:00
Alex
49ba833e4c
fix(web): Revert "add checkerboard background for transparent images ( #26091 )" ( #26220 )
...
Revert "fix(web): add checkerboard background for transparent images (#26091 )"
This reverts commit bc7a1c838c .
2026-02-14 20:25:14 +00:00
Michel Heusschen
9ab887d5d2
perf(web): speed up multi asset operations ( #26217 )
2026-02-14 15:24:47 -05:00
Min Idzelis
d264e78d3f
chore: pnpm workspace protocol for sibling packagages ( #26218 )
2026-02-14 15:03:08 -05:00
Min Idzelis
2c9d69865c
fix: e2e exit 135 ( #26214 )
2026-02-14 12:51:54 -05:00
bo0tzz
72cefcabaf
chore: discourage LLM-generated PRs ( #26211 )
...
* chore: discourage LLM-generated PRs
* chore: add reading CONTRIBUTING.md to PR checklist
* chore: workflow to close LLM-generated PRs
2026-02-14 10:40:27 -06:00
Xantin
2fb9f84b56
refactor(i18n): Follow IETF standard ( #26171 )
...
* refactor(18n): Follow IETF standard
Rename zh_SIMPLIFIED to zh_Hans
Makes it easier to merge #21337
* fix(web): zh_SIMPLIFIED -> zh_Hans
2026-02-13 18:47:41 +01:00
Weblate (bot)
434ded92f5
chore(web): update translations ( #26167 )
...
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/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
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/it/
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/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/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/yue_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translation: Immich/immich
Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com >
Co-authored-by: DevServs <bonov@mail.ru >
Co-authored-by: Happy <59247878+happy2452354@users.noreply.github.com >
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com >
Co-authored-by: Jozef Gaal <preklady@mayday.sk >
Co-authored-by: Kuba <kubaant@gmail.com >
Co-authored-by: Matjaž T. <matjaz@moj-svet.si >
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com >
Co-authored-by: PPNplus <ppnplus@protonmail.com >
Co-authored-by: Sylvain Pichon <service@spichon.fr >
Co-authored-by: Ulices <hasecilu@tuta.io >
Co-authored-by: Yu-Hsuan Liao <EMC521@outlook.com >
Co-authored-by: albanobattistella <albano_battistella@hotmail.com >
Co-authored-by: jcreusand <joan.creusandreu@gmail.com >
Co-authored-by: waclaw66 <waclaw66@seznam.cz >
Co-authored-by: Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com >
2026-02-13 17:45:35 +00:00
agent-steven
bc7a1c838c
fix(web): add checkerboard background for transparent images ( #26091 )
...
Co-authored-by: steven94kr <rlgns98kr@gmail.com >
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com >
2026-02-13 17:18:44 +00:00
Daniel Dietzler
7cb355279e
chore: remove asset stubs ( #26187 )
2026-02-13 11:00:31 -05:00
Nykri
ecb09501a5
feat(cli): change progress bar to display file size ( #23328 )
...
* Change progress bar to display file size
* Solved lint errors
2026-02-13 10:22:00 -05:00
Michel Heusschen
34eb2e1410
fix(web): timeline multi select group state ( #26180 )
2026-02-13 08:34:15 -05:00
shenlong
2d6580acd8
feat(mobile): dynamic layout in new timeline ( #23837 )
...
* feat(mobile): dynamic layout in new timeline
* simplify _buildAssetRow
* auto dynamic mode on smaller column count
* auto layout on smaller tiles
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-13 09:15:42 +05:30
Yaros
9aa3fe82c1
fix(mobile): inconsistent query for people ( #24437 )
...
* fix(mobile): inconsistent query for people
* refactor: implement suggestions
* refactor: refactored query impl suggestions
2026-02-13 09:13:21 +05:30
Arne Schwarck
66733eb4c0
feat: add people deeplink ( #25686 )
...
* Change path prefix from '/memories/' to '/people/'
Updated the AndroidManifest.xml to change the path prefix from '/memories/' to '/people/'.
Memories is anyway wrong and was replaced by /memory
and now the people path completes the known deeplinks.
* Add regex for people deep link handling
Add regex for people deep link handling
* Add deep link handling for 'people' route
* fix: missing person route builder method
---------
Co-authored-by: bwees <brandonwees@gmail.com >
2026-02-13 09:13:04 +05:30
Thomas
e5156df4f1
fix(mobile): hide latest version warnings ( #26036 )
...
The latest version is already hidden in the server info widget if
disabled (https://github.com/immich-app/immich/pull/25691 ), however I
did not realise there are more places where this warning is shown. This
hides the warning everywhere, and cleans up the code a bit.
2026-02-13 08:15:25 +05:30
Jason Rasmussen
8ef4e4d452
feat: schema-check ( #25904 )
2026-02-12 17:59:00 -05:00
Christos Longros
7413356a2f
fix: clarify external domain translation ( #26009 )
...
* fix: clarify external domain setting is used for emails too (#24950 )
* Update i18n/en.json
Co-authored-by: Jason Rasmussen <jason@rasm.me >
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-02-12 14:01:51 -05:00
Jason Rasmussen
5bf4e9595c
refactor: purchase store ( #25734 )
2026-02-12 13:32:17 -05:00
renovate[bot]
6c0c4b3dda
chore(deps): update docker.io/valkey/valkey:9 docker digest to 930b414 ( #26087 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-12 12:36:46 -05:00
Yaros
206a208410
feat(web): change link expiration logic & presets ( #26064 )
...
* feat(web): link expiration presets
* refactor: implement suggestions
* chore: remove createdAt prop
* fix: tests
* fix: button keys
2026-02-12 18:27:49 +01:00
Jason Rasmussen
72cef8b94b
feat: shared link login ( #25678 )
2026-02-12 12:08:38 -05:00
Jason Rasmussen
81c93101a0
feat: verify permissions ( #25647 )
2026-02-12 12:08:20 -05:00
Christos Longros
b06c21325e
fix(mobile): prevent nav bar label text wrapping ( #26011 )
...
* fix(mobile): prevent nav bar label text wrapping (#25921 )
* chore: fix format
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-12 16:57:03 +00:00
Bastian Köcher
730b770e67
fix(mobile): timeline orientation & foldable phones handling ( #25088 )
...
* [mobile]: Fix timeline handling on foldable phones + ensuring that images are not cut off
This fixes the handling of unfolding the phone while having the application opened. So,
the timeline is correctly rescaled and the current position is kept.
Besides that it fixes a bug with the ordering which lead to images being "cut off" at the right side
of the screen.
* refactor + cleanup
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-12 22:20:00 +05:30
Michel Heusschen
b85f6f3fce
fix(web): add missing @immich/ui translations ( #26143 )
2026-02-12 16:42:35 +00:00
Min Idzelis
81f592ca52
feat: remove Cache API, rework preload(), cancel() and fetch() ( #25289 )
...
* feat: remove Cache API, rework preload(), cancel() and fetch()
perf - replace broadcast channel with direct postMessage
* remove sw response handling
* review comments
2026-02-12 11:25:20 -05:00
renovate[bot]
a62e8ed179
fix(deps): update typescript-projects ( #25549 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev >
2026-02-12 16:24:04 +00:00
Michel Heusschen
1cf3a80840
fix(web): show correct assets in memory gallery ( #26157 )
2026-02-12 11:17:09 -05:00
Klenner Martins Barros
9f6dbf710c
fix(web): improve api key modal responsiveness ( #26151 )
2026-02-12 17:13:09 +01:00
Michel Heusschen
f207f99e86
fix(web): prevent event manager from throwing error ( #26156 )
2026-02-12 11:09:15 -05:00
Thomas
0d35231dfd
chore(mobile): cleanup server storage info ( #26038 )
...
The server storage info has a lot of whitespace due to the ListTile.
Converting it to be inline makes the styling appear more intentional.
There are also a few semantically relevant list items in the app bar
dialog which have been grouped together.
2026-02-12 21:09:55 +05:30
shenlong
675bbf3ac3
chore: remove unused key and fix casing for recent_albums ( #24691 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-12 16:06:22 +01:00
Weblate (bot)
c45450b6ac
chore(web): update translations ( #26118 )
...
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich
Co-authored-by: Anton Palmqvist <apq@users.noreply.hosted.weblate.org >
Co-authored-by: PPNplus <ppnplus@protonmail.com >
Co-authored-by: Rishi <rishikesh.200@gmail.com >
Co-authored-by: TV Box <realceday.tvbox@gmail.com >
Co-authored-by: Vivek M <vivekmalhotra004@gmail.com >
Co-authored-by: WellsTsai <dan50907@gmail.com >
Co-authored-by: czlevi7 <czlevi7@gmail.com >
Co-authored-by: jässin <aouanijassin@gmail.com >
Co-authored-by: muziqaz <muziqaz@users.noreply.hosted.weblate.org >
Co-authored-by: pyccl <changcongliang@163.com >
2026-02-12 15:02:07 +00:00
renovate[bot]
fea6e8d9f3
chore(deps): update dependency python-multipart to v0.0.22 [security] ( #25559 )
2026-02-12 09:32:59 -05:00
renovate[bot]
27ebbab1d9
fix(deps): update dependency pillow to v12 [security] ( #26142 )
2026-02-12 09:32:17 -05:00
renovate[bot]
4647ecf2ea
chore(deps): update machine-learning ( #25067 )
2026-02-12 09:31:13 -05:00
shenlong
78c8f1d5a9
chore: add indexes for foreign keys ( #25925 )
...
* chore: add indexes for foreign keys
* update idx_asset_face_person_id index
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-12 19:58:31 +05:30
shenlong
ec4de54ea2
fix: null local date time in timeline queries ( #26133 )
...
* fix: null local date time in timeline queries
* refactor effectiveCreatedAt
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-12 19:58:00 +05:30
Peter Ombodi
420cd5193b
fix(mobile): Login routing on Splash screen ( #26128 )
...
* fix(mobile): fix Login routing on Splash screen
* fix(mobile): remove _duplicateGuard from the LoginRoute
revert changes in splash_screen
---------
Co-authored-by: Peter Ombodi <peter.ombodi@gmail.com >
2026-02-12 19:57:43 +05:30
Daniel Dietzler
7e0356e227
refactor: more small tests ( #26159 )
2026-02-12 08:34:32 -05:00
Michel Heusschen
913904f418
fix(web): escape shortcut handling ( #26096 )
2026-02-11 18:55:28 +01:00
Daniel Dietzler
e54678e0d6
refactor: small tests ( #26141 )
2026-02-11 11:49:00 -05:00
Daniel Dietzler
222c90b7b7
chore: remove album stubs ( #26130 )
2026-02-11 09:12:46 -05:00
Michel Heusschen
1c1a000c78
fix(web): use locale for date picker ( #26125 )
2026-02-11 11:39:30 +01:00
Jason Rasmussen
458d5f0f8f
fix: ignore checksum constraint error when logging ( #26113 )
2026-02-10 20:43:55 +00:00
Jason Rasmussen
4c948647fc
chore: asset-job medium tests ( #26111 )
2026-02-10 13:41:40 -05:00
github-actions
3be8e265cd
chore: version v2.5.6
2026-02-10 18:24:40 +00:00
Weblate (bot)
e3c4e0197a
chore(web): update translations ( #25947 )
...
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
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/de_CH/
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/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ga/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/gl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hr/
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/kn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nn/
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/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/sq/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
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_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich
Co-authored-by: Adam Havránek <adamhavra@seznam.cz >
Co-authored-by: Ahmed Khaleel Shihab <ahmed91shihab@gmail.com >
Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com >
Co-authored-by: Arif Budiman <arifpedia@gmail.com >
Co-authored-by: Arnie97 <arnie97@gmail.com >
Co-authored-by: David Krizak <lavidk@icloud.com >
Co-authored-by: DevServs <bonov@mail.ru >
Co-authored-by: Gautam Pai <gautam.gp4207@gmail.com >
Co-authored-by: Gilgalard Elendil <Gilgalard11@gmail.com >
Co-authored-by: Gisle-Andre Larsen <gisleandre@hotmail.com >
Co-authored-by: Guillaume Petit <gpetit@edelzone.fr >
Co-authored-by: Guillermo Ramos Santos <guillermo.ramosantos@gmail.com >
Co-authored-by: HackingAll <hacking.all.YT@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: Indrek Haav <indrek.haav@hotmail.com >
Co-authored-by: Ivan Dimitrov <idimitrov08@gmail.com >
Co-authored-by: Jozef Gaal <preklady@mayday.sk >
Co-authored-by: Julius Lehmann <julius.lehmann.privat@gmail.com >
Co-authored-by: Luuk Heijnen <luukheijnen1@gmail.com >
Co-authored-by: MarcSerraPeralta <marcserraperalta@gmail.com >
Co-authored-by: Masani Amin Yasin <langugetranslategay.taps663@silomails.com >
Co-authored-by: Matjaž T. <matjaz@moj-svet.si >
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com >
Co-authored-by: Olaf Nielsen <solluh@mail.de >
Co-authored-by: Oleksandr Yurov <oyurov@icloud.com >
Co-authored-by: Philipp Frauenfelder <philipp.frauenfelder@gmail.com >
Co-authored-by: Reetryyy <kaxa.kikalishvili.kk@gmail.com >
Co-authored-by: Romo <romo@romo.al >
Co-authored-by: Shawn <xiaxinx@gmail.com >
Co-authored-by: Skanda <skillwiz94@gmail.com >
Co-authored-by: Sylvain Pichon <service@spichon.fr >
Co-authored-by: TV Box <realceday.tvbox@gmail.com >
Co-authored-by: Tage Lauritsen <tage@tunenet.dk >
Co-authored-by: Tim Morley <weblate.3919org@timsk.org >
Co-authored-by: Ulices <hasecilu@tuta.io >
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org >
Co-authored-by: Veerasak Kritsanapraphan <veerasak.kritsanapraphan@gmail.com >
Co-authored-by: albanobattistella <albano_battistella@hotmail.com >
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl >
Co-authored-by: chamdim <chamdim@protonmail.com >
Co-authored-by: dvbthien <dvbthien@users.noreply.hosted.weblate.org >
Co-authored-by: ea stanley <hang4ea@gmail.com >
Co-authored-by: muziqaz <muziqaz@users.noreply.hosted.weblate.org >
Co-authored-by: nobo73 <noboru.tanaka@gmail.com >
Co-authored-by: pyccl <changcongliang@163.com >
Co-authored-by: waclaw66 <waclaw66@seznam.cz >
Co-authored-by: Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com >
2026-02-10 18:22:41 +00:00
Nicolò Maria Semprini
1ddb8f0667
feat: jxl browser support detection ( #25599 )
2026-02-10 12:49:09 -05:00
Alex
adfb003d03
fix: local date time group fall back ( #26110 )
...
* fix: local date time group fall back
* remove else clause
2026-02-10 11:47:13 -06:00
Brandon Wees
8c8b11f80c
fix: person thumbnail generation on edited assets ( #26112 )
...
* fix: person thumbnail generation on edited assets
* chore: sql sync
2026-02-10 11:38:43 -06:00
Claudio
90d554947f
docs: update ml-hardware-acceleration.md ( #25755 )
...
Update ml-hardware-acceleration.md
Invert the lines about editing the docker-compose.yml file to have users add the tag to the image first, then uncomment the extends section. This should help users follow the instructions as they flow through the YAML file.
2026-02-10 12:28:21 -05:00
Paul Makles
caeba5063b
refactor(server): move database restores code into a service ( #25918 )
...
* fix(server): use provided database name/username for restore & ensure name is not mangled
fixes #25633
Signed-off-by: izzy <me@insrt.uk >
* chore: add db switch back but with comments
Signed-off-by: izzy <me@insrt.uk >
* refactor: no need to restore database since it's not technically possible
chore: late fallback for username in parameter builder
Signed-off-by: izzy <me@insrt.uk >
* chore: type fix
Signed-off-by: izzy <me@insrt.uk >
* refactor: move db backup code into service
* test: check SQL sent to psql
* chore: remove todo
Signed-off-by: izzy <me@insrt.uk >
---------
Signed-off-by: izzy <me@insrt.uk >
2026-02-10 12:12:27 -05:00
Matthew Momjian
280174026f
feat(deployment): rootless compose file ( #25931 )
...
rootless deployment
2026-02-10 12:11:44 -05:00
Michel Heusschen
a9e0fa43fa
fix: correctly cancel select all assets ( #26067 )
2026-02-10 11:47:23 -05:00
Jason Rasmussen
e6e56d75e2
fix(web): refresh text ( #26071 )
2026-02-10 16:42:03 +00:00
Brandon Wees
0886281dd8
fix: create face exif orientation handling ( #26108 )
...
* fix: handle exif orientation when creating face
* chore: tests
2026-02-10 11:30:34 -05:00
renovate[bot]
32dea76a92
chore(deps): update dependency @types/node to ^24.10.11 ( #26088 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-10 11:24:33 -05:00
Min Idzelis
6af534fe4c
feat: run maintenance tests in isolation, share containers between all … ( #25856 )
...
* feat: run maintance tests in isolation, share containers between all serial test suites
* refactor: organize files
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-02-10 11:05:06 -05:00
Daniel Dietzler
71fe9192fd
chore: metadata extraction date test ( #26102 )
2026-02-10 10:05:05 -05:00
Mert
7fa6f617f5
fix(server): thumbnail queueing ( #26077 )
...
* fix thumbnail queueing
* add bmp
* other isEdited column
2026-02-10 09:04:03 -06:00
Thomas
c3730c8eab
chore(mobile): enable high refresh rate in debug builds ( #26085 )
...
I'm testing changes to animations and app performance, and noticed it
felt quite sluggish on a 120hz display. It turns out that high refresh
is disabled in debug builds. It's probably a good idea to enable it so
that it more closely mirrors the production build.
2026-02-10 03:51:33 +00:00
Luis Nachtigall
3462fc434e
fix: evict image from cache on error during image loading ( #26078 )
2026-02-09 17:01:10 -05:00
Luis Nachtigall
561469b826
fix(mobile): handle image stream completion when no image is emitted ( #25984 )
...
* Fix image cancellation to be stream-scoped instead of widget-scoped
* fix(OneFramePlaceholderImageStreamCompleter): make onLastListenerRemoved callback synchronous with removing the last listener
* fix(OneFrameMultiImageStreamCompleter): remove unnecessary blank line in code
* fix(OneFramePlaceholderImageStreamCompleter): cancel pending requests when only cache listener remains
* fix(OneFrameMultiImageStreamCompleter): ensure onLastListenerRemoved callback is invoked only once
2026-02-09 16:59:29 -05:00
bo0tzz
937bef9a4d
fix: run rocm builds on pokedex ( #26062 )
...
* fix: run rocm builds on pokedex
* fix: --parallel 48 (#26065 )
2026-02-09 15:06:05 -05:00
dolfje
5f18110e97
fix(web): removing a person in an asset, doesn't remove the asset in … ( #26068 )
...
* fix(web): removing a person in an asset, doesn't remove the asset in the persons view (without refresh)
* prettier
---------
Co-authored-by: Nikos Verschore <nikos@uwsoftware.be >
2026-02-09 11:51:02 -06:00
Alex
57485023ae
fix: free up space using small batch size to reliably work on Android ( #26047 )
...
* fix: free up space delete in small batch
* fix: free up space delete in small batch
2026-02-09 11:48:55 -06:00
Michel Heusschen
8a9b541dd0
fix: slideshow setting dropdown overflow ( #26066 )
2026-02-09 09:28:47 -06:00
Justin Xiao
25be5fc22d
fix(web): prevent context menu from overflowing viewport ( #26041 )
...
* fix(web): prevent context menu from overflowing viewport
The context menu used `max-h-dvh` (100% viewport height) as its max height,
but did not account for the menu's top position. When the menu opens at
y > 0, its bottom extends beyond the viewport.
Compute `maxHeight` dynamically based on the menu's top position and apply
it as an inline style, so the menu always fits within the viewport and
scrolls when content exceeds the available space.
* fix: linting
* fix: overflow
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me >
2026-02-09 09:26:25 -06:00
Alex
906c38273f
fix: profile dialog auto dismiss after opening on iPad ( #26046 )
2026-02-08 17:30:57 -06:00
Alex
10b2bf7970
fix: iOS slow start ( #26043 )
2026-02-08 16:28:51 -06:00
Kolin
7cf8a9936a
fix(web): display storage unit next to value instead of absolute positioning in admin user page ( #25985 )
...
* fix(web): display storage unit next to value instead of absolute positioning in admin user page
* chore: styling
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com >
2026-02-08 17:22:42 +00:00
Michel Heusschen
59c4a49ffd
fix: scroll jump when opening show & hide people ( #25932 )
2026-02-08 11:19:35 -06:00
Yaros
00486cbcc8
fix(web): toast fixed location ( #25966 )
...
fix: toast fixed location
2026-02-08 11:15:09 -06:00
Michel Heusschen
b524d7b6fd
fix: reduce queue graph jitter and include paused count ( #26023 )
...
fix: reduce queue graph jitter and show paused count
2026-02-08 11:03:59 -06:00
Michel Heusschen
5b705cb723
fix: improve albums page load time on firefox ( #26025 )
2026-02-08 11:03:17 -06:00
Luis Nachtigall
354dd3cc3c
feat(mobile): enhance album sorting functionality with order handling ( #24816 )
...
* feat: enhance album sorting functionality with effective order handling
* mobile: formatting
* test: align album sorting order in unit tests with defaultSortOrder
* test(mobile): add reverse order validation for album sorting
* chore(PR): remove OppositeSortOrder Extension and move it directly into SortOrder enum
* refactor: return sorted list directly in album sorting function
* refactor: remove sort_order_extensions.dart
2026-02-07 10:11:37 +05:30
shenlong
57483a1e7f
fix: user profile refetched each time on opening app dialog ( #25992 )
...
fix: user profile on opening app dialog
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-07 10:10:17 +05:30
Romo
bcea64875f
fix: image and video download complete notification shows "file_name" ( #25975 )
...
* fix: image and video download complete notification shows "file_name"
* fix lint
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-02-07 02:56:14 +00:00
Matthew Momjian
84e30abe5d
feat(docs): version policy ( #25979 )
...
version policy
2026-02-06 20:31:57 -05:00
Jason Rasmussen
e3e243fa2b
refactor: tests ( #25987 )
2026-02-07 00:47:54 +01:00
Jason Rasmussen
b3820c259e
refactor: test factories ( #25977 )
2026-02-06 16:32:50 -05:00