Santo Shakil
2c9b43b925
fix(mobile): rotate android raw natively instead of createBitmap
...
the exif rotate now happens in a small native pass (lock pixels + a
tiled copy straight into the output buffer) so there's no second full
bitmap. about 6x faster on big raws. also fixes orientation 5/7 which
were swapped, and forces argb_8888 so high-bit-depth dng don't
under-allocate. keeps the skia path as a fallback for odd formats.
2026-06-26 19:33:23 +06:00
Santo Shakil
ab4700d6d0
fix(mobile): apply exif orientation to android raw photos
...
android's ImageDecoder/loadThumbnail (API 29+) skip the EXIF orientation
tag for raw files like DNG, so portrait raw shots showed up sideways in
the grid and viewer. jpeg/heic were fine since those decoders rotate on
their own.
read the orientation tag and rotate the decoded raw bitmap to match, on
the same background pool so the ui doesn't jank. the load-original
full-res decode is sampled down first so the rotate copy can't OOM on
high-mp sensors. raw only, jpeg/heic and pre-29 paths unchanged.
2026-06-26 15:35:47 +06: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
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