- Workflow logging
- New search UI on web
- New config endpoints
- Cluster groups
- Asset file APIs
- Memories view
- Show asset owner in asset details on mobile
- New search API on server
- Store null instead of empty string for album description
- Log hint about downgrades when migration is missing
- Search album description in add-to-album modal on web
- Display the number of selected items in AlbumPickerModal title
- Toggle to match icon theme in widget
- Workflow asset tag trigger, filter, and action
- iOS dynamic background IDs
- Actions undo handling
- Rotate an API key
- OAuth account management URL
- Tag renaming v2 on web
- Map asset number on mobile
- Allow users to re-run facial recognition for their group
From Immich
[!WARNING]
Disclaimer
This is a release candidate, not a stable release. It is subject to change and may contain bugs or breaking changes. As always, make sure you have a backup of your database and library before upgrading to this version.
Welcome to the first release candidate of v3.2; v3.2.0-rc.1! Due to redoing the way we do releases, we had to sacrifice rc.0 unfortunately 😅. But, we are now able to backport changes from main to older releases. Especially, that also means no more PR merge freezes after a release, in case we need to release any patch fixes.
Release notes
Work-in-progress release notes can be found here:
https://pr-737.dev.immich.app/blog/v3.2.0-release
Server
To use this RC version on the server, update the IMMICH_VERSION in your .env file:
IMMICH_VERSION=v3.2.0-rc.1
or
IMMICH_VERSION=v3-rc
Then pull and restart:
docker compose pull && docker compose up -d
Mobile
To use this RC version on the mobile app, follow the appropriate link for your platform:
Android
You can download the APK in the release note below, or tap on "Join the beta" from the Google Play Immich page
iOS
The iOS app is available via Testflight: https://testflight.apple.com/join/JTSTucBd
If you run into any issues, please report them on GitHub so we can address them before the final release. Thank you for helping us test!
And as always, bugs are fixed, and many other improvements also come with this release.
What's Changed
🚀 Features
- feat: workflow logging by @benbeckford in https://github.com/immich-app/immich/pull/29878
- feat(web): new search ui by @benbeckford in https://github.com/immich-app/immich/pull/30279
- feat: new config endpoints by @jrasm91 in https://github.com/immich-app/immich/pull/30881
- feat: cluster groups by @jrasm91 in https://github.com/immich-app/immich/pull/30739
- feat: asset file apis by @jrasm91 in https://github.com/immich-app/immich/pull/25900
- feat: memories view by @benbeckford in https://github.com/immich-app/immich/pull/28675
- feat(mobile): show asset owner in asset details by @Lauritz-Tieste in https://github.com/immich-app/immich/pull/29302
- feat(server): new search API by @timonrieger in https://github.com/immich-app/immich/pull/30179
🌟 Enhancements
- feat: store null instead of empty string for album.description by @gPinato in https://github.com/immich-app/immich/pull/30123
- feat: log hint about downgrades when migration is missing by @bo0tzz in https://github.com/immich-app/immich/pull/30493
- feat(web): search album description in add-to-album modal by @djadji-gueye in https://github.com/immich-app/immich/pull/30462
- feat: Display the number of selected items in AlbumPickerModal title by @statox in https://github.com/immich-app/immich/pull/30485
- feat(widget): add toggle to match icon theme by @bwees in https://github.com/immich-app/immich/pull/30428
- feat: workflow asset tag trigger/filter/action by @benbeckford in https://github.com/immich-app/immich/pull/29043
- feat: iOS dynamic background ids by @mikes1991gh in https://github.com/immich-app/immich/pull/30574
- feat: actions undo handling by @shenlong-tanwen in https://github.com/immich-app/immich/pull/30481
- feat: rotate an API key by @bwees in https://github.com/immich-app/immich/pull/30801
- fix(cli): enforce node engine version on start by @bo0tzz in https://github.com/immich-app/immich/pull/30437
- chore(server): migrate library e2e tests by @etnoy in https://github.com/immich-app/immich/pull/27277
- feat: add oauth account management url by @sacha-c in https://github.com/immich-app/immich/pull/30873
- feat(web): tag renaming v2 by @jorbrock in https://github.com/immich-app/immich/pull/27909
- chore: search filter animation improvement and reactive search cue example by @alextran1502 in https://github.com/immich-app/immich/pull/30866
- perf(web): use hash-wasm SHA-1 with pure-JS fallback for upload hashing by @mosh-dev in https://github.com/immich-app/immich/pull/30107
- fix: don't swallow fetch errors by @bo0tzz in https://github.com/immich-app/immich/pull/30496
- feat(mobile): map asset number by @YarosMallorca in https://github.com/immich-app/immich/pull/28911
- feat: allow users to re-run facial recognition for their group by @danieldietzler in https://github.com/immich-app/immich/pull/30965
- feat(web): view assets in map viewport by @rickytrevor in https://github.com/immich-app/immich/pull/27492
🐛 Bug fixes
- fix: make sure iOS memory widget render by @alextran1502 in https://github.com/immich-app/immich/pull/30172
- fix: calendar heatmap permissions by @danieldietzler in https://github.com/immich-app/immich/pull/30310
- fix: calendar heatmap api key permissions by @danieldietzler in https://github.com/immich-app/immich/pull/30314
- fix(deployment): matplotlib in rootless deployments by @mmomjian in https://github.com/immich-app/immich/pull/30328
- fix(mobile): refresh person thumbnail when the featured photo changes by @santoshakil in https://github.com/immich-app/immich/pull/29350
- fix: assetFileFilter path matching by @benbeckford in https://github.com/immich-app/immich/pull/30394
- fix: shared check for server setup availability by @bo0tzz in https://github.com/immich-app/immich/pull/30311
- fix(mobile): resolve owned assets when partner owns identical asset by @agg23 in https://github.com/immich-app/immich/pull/30137
- fix(web): Fix face thumbnail when swapping merge direction by @lhvy in https://github.com/immich-app/immich/pull/30466
- fix(server): reject invalid or deleted user when creating a partner by @djadji-gueye in https://github.com/immich-app/immich/pull/30431
- fix(server): remove the asset row when an upload fails after creating it by @santoshakil in https://github.com/immich-app/immich/pull/30349
- fix(mobile): correct mislabeled Bengali locale entry by @DrHaque in https://github.com/immich-app/immich/pull/30519
- fix(mobile): sync stack changes from the websocket by @santoshakil in https://github.com/immich-app/immich/pull/30479
- fix: metadata extraction as LensModel can be a float by @danieldietzler in https://github.com/immich-app/immich/pull/30512
- fix(mobile): run one more sync round when a request arrives mid sync by @santoshakil in https://github.com/immich-app/immich/pull/30478
- fix: use setRequireOriginal on SDK 29 and above by @shenlong-tanwen in https://github.com/immich-app/immich/pull/29072
- fix(mobile): stale local renders after editing a photo on device by @santoshakil in https://github.com/immich-app/immich/pull/30415
- fix(mobile): stop websocket reconnect loop draining battery when server is unreachable by @santoshakil in https://github.com/immich-app/immich/pull/29901
- fix(mobile): stop long images squishing on ios by @santoshakil in https://github.com/immich-app/immich/pull/29367
- fix(mobile): keep backup remainder from going negative by @santoshakil in https://github.com/immich-app/immich/pull/29011
- fix(mobile): handle asset websocket events by @santoshakil in https://github.com/immich-app/immich/pull/30499
- fix(mobile): stop disabling androidx.startup initializers by @shenlong-tanwen in https://github.com/immich-app/immich/pull/30559
- fix: map not updating after viewing an asset by @shenlong-tanwen in https://github.com/immich-app/immich/pull/30601
- fix(deployment): Add huggingface cache directory to Dockerfile by @mmomjian in https://github.com/immich-app/immich/pull/30357
- fix(mobile): video playback controls dead for backed up videos opened from search by @santoshakil in https://github.com/immich-app/immich/pull/30587
- fix(mobile): decode remote thumbnails at displayed size by @santoshakil in https://github.com/immich-app/immich/pull/29965
- fix(mobile): don't let a frozen sync block syncing on resume by @santoshakil in https://github.com/immich-app/immich/pull/29870
- fix: face label clipping by @danieldietzler in https://github.com/immich-app/immich/pull/30712
- fix: owner cascade delete album by @danieldietzler in https://github.com/immich-app/immich/pull/30692
- fix(mobile): prevent iOS status bar scroll to top during transitions by @agg23 in https://github.com/immich-app/immich/pull/30717
- fix(mobile): disable iOS smart quotes/dashes in email/password inputs by @agg23 in https://github.com/immich-app/immich/pull/30767
- fix(mobile): prevent snapping to center on pinch-to-zoom release (#29207) by @cmdPromptCritical in https://github.com/immich-app/immich/pull/29343
- fix: shared link create validation by @danieldietzler in https://github.com/immich-app/immich/pull/30762
- fix(mobile): mark finished downloads complete instead of leaving them stuck by @santoshakil in https://github.com/immich-app/immich/pull/29023
- fix: freeze on navigating back album description by @YarosMallorca in https://github.com/immich-app/immich/pull/30781
- fix(server): guard createAll against empty values list by @tech00exploere in https://github.com/immich-app/immich/pull/30837
- fix(server): respect backpressure in the sync stream by @enol5423 in https://github.com/immich-app/immich/pull/30764
- fix(server): update ocr & faces after asset edit by @YarosMallorca in https://github.com/immich-app/immich/pull/29303
- fix(mobile): resend an upload once when the connection dies before a response by @santoshakil in https://github.com/immich-app/immich/pull/30843
- fix(mobile): cannot deep link to memory lane (#30634) by @nikhilpodila in https://github.com/immich-app/immich/pull/30787
- fix: redis cli ping command by @mmomjian in https://github.com/immich-app/immich/pull/30329
- fix(server): do not throw on unparsable DB_URL when building backup arguments by @NoiceHax in https://github.com/immich-app/immich/pull/30759
- fix(server): Sort stacked assets by creation date by @timonrieger in https://github.com/immich-app/immich/pull/24033
- fix(web): gracefully handle map errors when WebGL is disabled by @meesfrensel in https://github.com/immich-app/immich/pull/26538
- fix(server): unicode email validation by @YarosMallorca in https://github.com/immich-app/immich/pull/30871
- fix(mobile): order album/place/person timelines by local date by @santoshakil in https://github.com/immich-app/immich/pull/29338
- chore(mobile): update flutter-maplibre-gl to 0.27.0 by @agg23 in https://github.com/immich-app/immich/pull/30892
- fix(web): download archives via html POST forms by @diogotcorreia in https://github.com/immich-app/immich/pull/30021
- fix(server): library exclusion patterns can soft-delete assets outside their directory by @PAtreju in https://github.com/immich-app/immich/pull/30850
- fix(mobile): dedupe stale remote_asset rows on sync by @santoshakil in https://github.com/immich-app/immich/pull/28445
- fix(server): correct asset dimensions from exif metadata by @fuergaosi233 in https://github.com/immich-app/immich/pull/29244
- fix: quote database owner in restore by @danieldietzler in https://github.com/immich-app/immich/pull/30905
- fix(mobile): permanently delete local copies when moving to the locked folder by @santoshakil in https://github.com/immich-app/immich/pull/29730
- fix(server): let a second metadata extraction replace stored AV metadata by @RxChi1d in https://github.com/immich-app/immich/pull/30900
- fix: do not exit search screen on back during multiselect by @YarosMallorca in https://github.com/immich-app/immich/pull/30689
- fix(mobile): respect 24h system setting by @YarosMallorca in https://github.com/immich-app/immich/pull/30792
- fix: maintentance return URL sanitization by @bwees in https://github.com/immich-app/immich/pull/30948
- fix: remove partner assets from existing memories by @shenlong-tanwen in https://github.com/immich-app/immich/pull/28950
- fix(server): correct tag create operations by @jorbrock in https://github.com/immich-app/immich/pull/30877
- fix: thumbnail generation for specific SVGs by @danieldietzler in https://github.com/immich-app/immich/pull/30908
- fix(mobile): aspect ratio change by @ferraridamiano in https://github.com/immich-app/immich/pull/30939
- fix: throw a typed error on malformed api responses by @bo0tzz in https://github.com/immich-app/immich/pull/31006
- fix(web): restore timeline scroll when the asset id cannot be resolved by @thejeff77 in https://github.com/immich-app/immich/pull/30916
- fix(web): do not play memory video if the
MemoryVideoViewerelement is not visible by @Zlendy in https://github.com/immich-app/immich/pull/30947 - fix(web): preserve slideshow pause state when viewing video slides by @tech00exploere in https://github.com/immich-app/immich/pull/30278
- fix: draggable Immich logo by @danieldietzler in https://github.com/immich-app/immich/pull/31055
- fix(server): kill pg_dump when a backup fails so it stops holding table locks by @justadityaraj in https://github.com/immich-app/immich/pull/30851
- fix(web): misleading toast notification by @brn-lin in https://github.com/immich-app/immich/pull/30976
- fix(web): map by @jrasm91 in https://github.com/immich-app/immich/pull/31056
- fix: external library statistics for excluded assets by @stevenjoezhang in https://github.com/immich-app/immich/pull/28462
- feat: same-second photos now sub-sort by filename by @andydotmp3 in https://github.com/immich-app/immich/pull/29528
📚 Documentation
- fix(docs): remove listing unraid as an "official" deployment by @mmomjian in https://github.com/immich-app/immich/pull/30323
- fix(docs): Revise config file instructions and notes by @mmomjian in https://github.com/immich-app/immich/pull/30418
- docs: fix identity provider examples in oauth guide by @fredrikekre in https://github.com/immich-app/immich/pull/30828
- docs: Update backup script to match manual/automatic backups by @Quantum-Cucumber in https://github.com/immich-app/immich/pull/26810
- docs: update remote-machine-learning.md by @Aviatorpaal in https://github.com/immich-app/immich/pull/28728
🌐 Translations
- feat: add cantonese for mobile by @danieldietzler in https://github.com/immich-app/immich/pull/30318
- chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/30296
New Contributors
- @jaegeral made their first contribution in https://github.com/immich-app/immich/pull/30385
- @deveshkolte made their first contribution in https://github.com/immich-app/immich/pull/30223
- @gPinato made their first contribution in https://github.com/immich-app/immich/pull/30123
- @lhvy made their first contribution in https://github.com/immich-app/immich/pull/30466
- @djadji-gueye made their first contribution in https://github.com/immich-app/immich/pull/30462
- @DrHaque made their first contribution in https://github.com/immich-app/immich/pull/30519
- @statox made their first contribution in https://github.com/immich-app/immich/pull/30485
- @ihmcsm made their first contribution in https://github.com/immich-app/immich/pull/30742
- @baseballyama made their first contribution in https://github.com/immich-app/immich/pull/30782
- @enol5423 made their first contribution in https://github.com/immich-app/immich/pull/30764
- @mikes1991gh made their first contribution in https://github.com/immich-app/immich/pull/30574
- @nikhilpodila made their first contribution in https://github.com/immich-app/immich/pull/30787
- @fredrikekre made their first contribution in https://github.com/immich-app/immich/pull/30828
- @NoiceHax made their first contribution in https://github.com/immich-app/immich/pull/30759
- @Quantum-Cucumber made their first contribution in https://github.com/immich-app/immich/pull/26810
- @sacha-c made their first contribution in https://github.com/immich-app/immich/pull/30873
- @PAtreju made their first contribution in https://github.com/immich-app/immich/pull/30850
- @fuergaosi233 made their first contribution in https://github.com/immich-app/immich/pull/29244
- @jorbrock made their first contribution in https://github.com/immich-app/immich/pull/27909
- @RxChi1d made their first contribution in https://github.com/immich-app/immich/pull/30900
- @mosh-dev made their first contribution in https://github.com/immich-app/immich/pull/30107
- @thejeff77 made their first contribution in https://github.com/immich-app/immich/pull/30916
- @brn-lin made their first contribution in https://github.com/immich-app/immich/pull/30976
- @Aviatorpaal made their first contribution in https://github.com/immich-app/immich/pull/28728
- @stevenjoezhang made their first contribution in https://github.com/immich-app/immich/pull/28462
- @andydotmp3 made their first contribution in https://github.com/immich-app/immich/pull/29528
- @rickytrevor made their first contribution in https://github.com/immich-app/immich/pull/27492
- @immich-push-o-matic[bot] made their first contribution in https://github.com/immich-app/immich/pull/31066
Full Changelog: https://github.com/immich-app/immich/compare/v3.1.0...v3.2.0-rc.1