Immich
app.alextran.immich
Zapstore _@zapstore.dev Republished from GitHub / F-Droid by the Zapstore main account.
This is a client app for the self-hostable Immich Server (which can be found with the app's source repo). You will need to run/manage the server on your own in order to use the app. Once set up, this app can be used as photo and video backup solution directly from your mobile phone. **Features:** * Upload and view assets(videos/images). * Multi-user supported. * Quick navigation with drag scroll bar. * Auto Backup. * Support HEIC/HEIF Backup. * Extract and display EXIF info. * Real-time render from multi-device upload event. * Image Tagging/Classification based on ImageNet dataset * Object detection based on COCO SSD. * Search assets based on tags and exif data (lens, make, model, orientation) * Upload assets from your local computer/server using [immich cli tools](https://www.google.com/url?q=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Fimmich&sa=D&sntz=1&usg=AOvVaw0AyZuHXc7lVqTcY5v7zNoS) * Reverse geocoding from image exif data * Show asset's location information on map (OpenStreetMap). * Show curated places on the search page * Show curated objects on the search page
First release: Sep 22, 2025, 34 total releases.
Most recent release: Sep 28, 2026.
Appears in 5 app stacks.
500 sats / 1 zaps received in the past year.
Sats Received
Underlying data available via MCP: app_zaps, app_releases.
Zap Count
Underlying data available via MCP: app_zaps, app_releases.
Releases
- Sep 28, 2026 3.2.4It's been a while since we last had to sacrifice a release. Let's hope v3.2.3 was a good sacrifice for v3.3, which is right around the corner! Just another small patch that primarily fixes the memory leak people have observed through a dependency update. <!-- Release notes generated using configuration in .github/release.yml at v3.2.4 --> ## What's Changed ### 🐛 Bug fixes * fix(mobile): sync status page goes blank when the counts query fails by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31644
More…
**Full Changelog**: https://github.com/immich-app/immich/compare/v3.2.2...v3.2.4 - Sep 15, 2026 3.2.2Just another small patch with a fix for the reassign faces feature. <!-- Release notes generated using configuration in .github/release.yml at v3.2.2 --> ## What's Changed ### 🐛 Bug fixes * fix: skip faces of other users when reassigning faces by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31586 **Full Changelog**: https://github.com/immich-app/immich/compare/v3.2.1...v3.2.2
- Sep 14, 2026 3.2.1This patch release addresses various bugs, including: - An issue with connection pool exhaustion during sync - Problems with the new search modal - Not seeing partner shared assets on people page - Person merge not working for two named people ... and more. See the full list below. <!-- Release notes generated using configuration in .github/release.yml at v3.2.1 -->
More…
## What's Changed ### 🐛 Bug fixes * fix: show partner assets on people page by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31449 * fix(server): vacuum after migrations, concurrent reindex by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31446 * fix(web): asset remains in timeline after archive by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31459 * fix(web): change "View asset owners" to "Hide asset owners" when enabled by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31460 * fix(web): preserve search type by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31462 * fix: sync client disconnect by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31463 * fix(web): scroll timeline to top when navigating without a scroll target by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31477 * fix: honor memory filters on explore page by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31542 * fix: face label clipping (again) by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31543 * fix(web): show full path on hover in duplicates utility by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31491 * fix: feature face update ignores soft-deleted faces by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31545 * fix: put back search untagged button by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31546 * fix: reset shouldChangePassword on password change by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31553 * fix: metadata extraction of faces by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31554 * feat: people merge improvements by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31555 **Full Changelog**: https://github.com/immich-app/immich/compare/v3.2.0...v3.2.1 - Sep 10, 2026 3.2.0# v3.2.0 Welcome to Immich `v3.2.0`! This release includes many new features as well as the usual collection of bug fixes and cleanups. Keep reading below for a list of highlights. ## Highlights * Docker compose builder * Revamped search UI (web) * Search API v2 (server)
More…
* View own people in shared assets, cross-user clustering * Workflow tags trigger and actions * Dedicated memories page * Tag renaming (web) * View assets in map viewport (web) ### Docker compose builder We recently released our new [docker compose builder](https://immich.app/docker-compose-builder), which lets you put together a custom compose file for Immich more easily. Please try it out and give us [your feedback](https://github.com/immich-app/immich/discussions/31232)! ### Search API v2 (server) We have built an entirely new search API that, amongst other things, will support searching within albums and combining multiple search filters with both AND and OR operations. Some of these features will be exposed to the search UI interfaces in the future, others will be used to power other fancy features as well as give 3rd party tools more functionality. If you are interested in the particular changes and examples for how to use the new API, feel free to check out the PR <https://github.com/immich-app/immich/pull/30179> as well as our API documentation at <https://api.immich.app/endpoints/search/searchAssets>. ### Revamped search UI (web) We have a new designer who helped us remodel the search modal, which has been pretty complex before and looks a lot more visually appealing in our opinion now. It still supports the same functionality, but with some quality of life additions as well as a significantly simpler look. In the future, we will extend this to also include some of the new features enabled by the new search API. Stay tuned and give us your feedback on the new design! <img alt="image" src="https://github.com/user-attachments/assets/aa1cf886-498d-4e9f-b7cf-96dcb8300818" /> _New search modal filtering by images with Jason in it, taken in the last 30 days in BC, Canada, tagged "Long Beach" with the context search term "Swimming"_ <img alt="image" src="https://github.com/user-attachments/assets/d87e24db-d314-4462-a204-a9a3020c1ddd" /> _Advanced filters showing camera make, model, and lens model, as well as filers for favorite and archive status, and album membership_ ### View own people in shared assets We are very happy to ship the first step towards better sharing. You can now have people recognized across trusted users, which also allows you to view people you already have records of in any shared assets! In the [user sharing settings](https://my.immich.app/user-settings?isOpen=sharing) there is a new section; cluster group. <img alt="cluster group" src="https://github.com/user-attachments/assets/498d914b-40b2-427f-b0ba-04803706772a" /> _The user sharing settings showing a cluster group with Jane Doe and Mich in it_ You can invite users on your instance that you trust to your own group, or join another group you have been invited to. These cluster groups make it possible to identify people in assets shared by users in the same group. They also likely improve accuracy, as the clustering will operate on a bigger pool of faces. People names and birth dates are still set on a per-user level and aren’t (yet) shared with users in the same group. As of now, this **requires** resetting facial recognition for all users in the group, in order for the changes to apply retroactively for all assets. This means, names and birth dates will be lost, and the results can vary slightly compared to before. Only faces recognized by machine learning will be affected by this. We may be able to do some non-destructive merging in the future, but for now this is a necessary step in order to fully benefit from the feature. That is why we put a button in the sharing settings for every user in the group (specifically also non-admins) to reset the facial recognition for that group. ### Workflow tags trigger and actions Workflows have gotten a new trigger. You can now do automations when an asset has been tagged. <p align="center"> <img width="400" alt="trigger list" src="https://github.com/user-attachments/assets/8d949bce-8ec6-4be2-96a0-5fca1715ae2a" /> </p> In order to use this new trigger, there is also a new filter that allows you to match specific tags. It supports matching for all, any, or none in the provided list. <p align="center"> <img width="400" alt="tag trigger" src="https://github.com/user-attachments/assets/91435b14-6ca8-41da-b3d3-73c7704df695" /> </p> Lastly, a new workflow action to add tags to the current asset has also been added. It allows to add a list of tags at once. <p align="center"> <img width="400" alt="add tag step" src="https://github.com/user-attachments/assets/04910b74-04ee-4564-8b2f-48f3d5e76dbf" /> </p> ### Dedicated memories page The new memories page allows you to view past memories. You can also favorite memories and they will show up here and never get deleted. The goal is for this to be a place you can come back to at any point and reminisce in old memories. <p > <img width="600" alt="image" src="https://github.com/user-attachments/assets/0f526915-b53a-484e-8d99-ce0caa9698fd" /> <img width="200" alt="Memory page on the mobile app" src="https://github.com/user-attachments/assets/b11b8534-22c9-417c-a57b-922bada486c5" /> </p> ### Tag renaming (web) Finally, you can also rename existing tags. This is a small addition to the edit tag modal on web, but under the hood was more complicated than you might expect. <p align="center"> <img width="400" alt="tag renaming" src="https://github.com/user-attachments/assets/091acef9-1056-4264-9e89-c44d9ddfdbc7" /> </p> ### View assets in map viewport (web) Similarly to showing a timeline all assets in a cluster on the map when clicking on it, you can now open a timeline for assets currently in the viewport. There is a new button among the map controls to show assets in the area. It will open a timeline that will update as you pan around the map. <img alt="map view port with timeline" src="https://github.com/user-attachments/assets/90b0aeb5-2e99-4dc5-a8cb-592c3ed71e8f" /> _The map page showing a timeline of assets currently in the viewport on the right_ As always, please consider supporting the project. 🎉 Cheers! 🎉 ## Support Immich <p align="center"> <img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExbjY2eWc5Y2F0ZW56MmR4aWE0dDhzZXlidXRmYWZyajl1bWZidXZpcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/87CKDqErVfMqY/giphy.gif" width="450" title="SUPPORT THE PROJECT!"> </p> If you find the project helpful, you can support Immich by purchasing a product key at <https://buy.immich.app> or our merchandise at <https://immich.store> ---- ## 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 `MemoryVideoViewer` element 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 * fix(web): face editor coordinates on a not-yet-loaded video by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31085 * fix: do not move faces of users other than the current owner by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31149 * fix(server): allow an empty assetIds array when creating an album shared link by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31151 * fix(mobile): keep the original filename when sharing downloaded assets by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31154 * fix(mobile): handle transient loading states for map timelines by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31153 * fix(web): interaction with some filter elements closes the search panel by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31160 * fix(ml): read CLIP model configs as UTF-8 by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31152 * fix(mobile): refresh server info when the websocket connects by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31155 * fix(server): never unlink an untracked-file path that an asset now references by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31194 * fix: incorrect edit's openapi type by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31233 * fix(web): album date range formatting by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31238 * fix: face detection of edited assets by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31243 * fix(mobile): prevent inner mutability on Freezed classes by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31251 * fix(web): partner sharing timeline by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31252 * fix(mobile): refresh the memory lane after resume by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31260 * fix: memory page navigation by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31368 * fix(server): live photo transcode visibility by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31374 * fix(web): use RTL-friendly layout for people panel buttons by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31378 * fix(web): word-wrap long album names by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31379 * fix(mobile): hide negative age by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31381 * fix(mobile): make shared link download toggle depend on metadata toggle by @immich-push-o-matic[bot] in https://github.com/immich-app/immich/pull/31382 ### 📚 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 - Jul 29, 2026 3.1.0Welcome to Immich `v3.1.0`! This release includes several quality of life improvements and another round of bug fixes. Keep reading below for the complete highlights. ## Highlights - Upload wakelock (web) - Undo archive (web) - Filter assets by server filepath (workflows) - Quick navigate to maintenance page (web)
More…
- Better slideshow button accessibility (web) - OIDC role claim sync improvements (OAuth) - Invalidate sessions on password reset (admin-cli) ### Upload wakelock (web) Similar to mobile, the web application will now automatically acquire a wakelock to prevent the screen from dimming while uploads are happening. This feature will require an HTTPS connection. ### Undo archive (web) After archiving assets, the success notification now has an “undo” button to undo the action.  ### Filter assets by server filepath (workflows) The asset file filter has a new option “Use path”. When set to true, it will filter based on the actual path on the server rather than the original file name.  ### Filter assets by EXIF metadata (workflows) A new workflow filter has been added that allows you to filter assets based on their EXIF metadata fields. For now it only supports string comparisons, with numerical comparisons expected to come soon. <img width="700" alt="Filter by EXIF metadata step configuration options" src="https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/10dbcaddcbeb9bfa7cab1e4029e0f70b.webp" /> ### Quick navigate to maintenance page (web) The command palette (`CTRL+K` or `/`) now includes an item for the maintenance page. <img width="600" alt="Command palette with a maintenance page item" src="https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/28134831c6b1a5f1919ceecdadc1ae54.webp" /> ### Better slideshow button visibility (web) The slideshow buttons on the web are now wrapped in a container with a backdrop blur, making them easier to view when the current asset is very light.  ### OIDC role claim sync improvements (OAuth) The OAuth integration in Immich supports setting an initial `isAdmin` value for new users via a role claim. This same process has been updated to now _sync_ `isAdmin` on subsequent logins. Additionally, the role claim now supports both single values (`immich_role: 'admin'`) in addition to lists of values ( `immich_role: ["admin", "user"]`), making in more flexible. ### Invalidate sessions on password reset (admin-cli) When using the admin command line interface to reset a password, there is now a new option to invalidate existing sessions. ```none immich-admin reset-admin-password Found Admin: - ID=e65e6f88-2a30-4dbe-8dd9-1885f4889b53 - OAuth ID= - Email=admin@example.com - Name=Immich Admin ? Please choose a new password (optional) immich-is-cool ? Invalidate existing sessions? Yes The admin password has been updated. ``` ### Date range for map (mobile) Similar to web, mobile now also supports filtering the map for assets within a given date range. <img width="500" alt="Mobile map settings page date range options" src="https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/be25f538bcb69574ff21c15c2aa64b27.webp" /> --- <!-- Release notes generated using configuration in .github/release.yml at v3.1.0 --> ## What's Changed ### 🚨 Breaking Changes - chore(mobile): drop support for iOS 14 by @agg23 in <https://github.com/immich-app/immich/pull/29780> ### 🚀 Features - feat(cli): Add --visibility flag to immich CLI upload subcommand by @yuxincs in <https://github.com/immich-app/immich/pull/29614> - feat(mobile): custom date range for map by @YarosMallorca in <https://github.com/immich-app/immich/pull/26205> ### 🌟 Enhancements - feat(web): Keep show more open on duplicates by @MontejoJorge in <https://github.com/immich-app/immich/pull/29734> - fix(server/workflow): add trigger for external libraries AssetCreate by @cratoo in <https://github.com/immich-app/immich/pull/29597> - chore(seo): remove redundant twitter metadata tags by @cevdetta in <https://github.com/immich-app/immich/pull/29801> - feat(web): add wake lock when uploading assets by @diogotcorreia in <https://github.com/immich-app/immich/pull/29820> - feat(web): undo archive from toast by @YarosMallorca in <https://github.com/immich-app/immich/pull/27061> - feat: workflow filter assets by upload path by @benbeckford in <https://github.com/immich-app/immich/pull/30000> - feat(web): add maintenance link to command palette by @yamishi13 in <https://github.com/immich-app/immich/pull/30016> - feat: add album asset event handling by @timonrieger in <https://github.com/immich-app/immich/pull/29008> - fix(web): improve slideshow controls visibility on bright backgrounds by @tech00exploere in <https://github.com/immich-app/immich/pull/29950> - fix: re-evaluate OIDC role claim on every login and support array values by @ImperatorRuscal in <https://github.com/immich-app/immich/pull/29991> - feat: exif metadata workflow filter by @benbeckford in <https://github.com/immich-app/immich/pull/29295> - feat: password invalidate sessions by @jrasm91 in <https://github.com/immich-app/immich/pull/30125> ### 🐛 Bug fixes - fix(mobile): apply exif orientation to remote raw photos on android by @santoshakil in <https://github.com/immich-app/immich/pull/29906> - fix(web): hide stack thumbnail tray in slideshow mode by @tech00exploere in <https://github.com/immich-app/immich/pull/29918> - fix(web): use Container component for responsive admin maintenance la… by @tech00exploere in <https://github.com/immich-app/immich/pull/29917> - fix(server): updated default CSP config to support videos from V3 player by @l0ll098 in <https://github.com/immich-app/immich/pull/29830> - fix(server): workflow date filter, make end date inclusive by @kigrup in <https://github.com/immich-app/immich/pull/29876> - fix(web): URI encode slug and reduce confusion for users by @meesfrensel in <https://github.com/immich-app/immich/pull/29796> - fix(web): clear birth date by @danieldietzler in <https://github.com/immich-app/immich/pull/29959> - fix(server): disable heif security limit by @mertalev in <https://github.com/immich-app/immich/pull/29954> - fix: zero byte image uploads by @rrrockey in <https://github.com/immich-app/immich/pull/29426> - fix(server): return workflow steps in ascending order by @benbeckford in <https://github.com/immich-app/immich/pull/29999> - fix(mobile): update album creation to use user-defined name from dialog by @LeLunZ in <https://github.com/immich-app/immich/pull/30002> - fix: long press share quality override preference settings by @alextran1502 in <https://github.com/immich-app/immich/pull/30030> - fix(web): align ContextMenu z-index with design-system token by @tech00exploere in <https://github.com/immich-app/immich/pull/30015> - fix(web): refresh folder view after asset deletion by @tech00exploere in <https://github.com/immich-app/immich/pull/29899> - fix: do not show the whats new page on fresh login by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/30072> - fix(mobile): prevent crash on video widget dispose by @agg23 in <https://github.com/immich-app/immich/pull/30078> - fix(web): attach file picker input to DOM so iOS Safari fires change … by @mrxder in <https://github.com/immich-app/immich/pull/29660> - fix: timebuckets locked permissions by @danieldietzler in <https://github.com/immich-app/immich/pull/30066> - fix: search statistics locked folder permissions by @danieldietzler in <https://github.com/immich-app/immich/pull/30063> - fix(web): fix Country/State filters when set to Unknown by @compscitwilight in <https://github.com/immich-app/immich/pull/30026> - fix(server): file uploads for files with extension only filenames by @compscitwilight in <https://github.com/immich-app/immich/pull/30024> - fix(mobile): stop double close animation when dismissing an asset by @santoshakil in <https://github.com/immich-app/immich/pull/29413> - fix(mobile): back up files moved into a watched folder on android by @santoshakil in <https://github.com/immich-app/immich/pull/29872> - fix(web): lens model search by @jrasm91 in <https://github.com/immich-app/immich/pull/30088> - fix(mobile): add album picker to the partner view bottom sheet by @santoshakil in <https://github.com/immich-app/immich/pull/30099> - fix(mobile): prevent duplicate album creation during submission by @LeLunZ in <https://github.com/immich-app/immich/pull/30003> - fix(mobile): properly group download tasks for Live Photos by @agg23 in <https://github.com/immich-app/immich/pull/29952> - fix(mobile): show real error when an asset can't be added to an album by @santoshakil in <https://github.com/immich-app/immich/pull/29754> - fix(mobile): treat wired ethernet as unmetered on ios by @santoshakil in <https://github.com/immich-app/immich/pull/29351> - fix(server): send id\_token\_hint on OIDC logout by @lorypota in <https://github.com/immich-app/immich/pull/29720> - fix(mobile): refresh asset stack after deleting viewer item by @PeterOmbodi in <https://github.com/immich-app/immich/pull/28164> - fix: limit ocr overlay to images by @YarosMallorca in <https://github.com/immich-app/immich/pull/30116> - fix: disable slideshow crossfade on reduced motion by @YarosMallorca in <https://github.com/immich-app/immich/pull/29826> - fix(mobile): map unresponsive after viewing asset by @YarosMallorca in <https://github.com/immich-app/immich/pull/27036> - fix(mobile): send date-only value for memories query param by @ajuijas in <https://github.com/immich-app/immich/pull/30049> - fix: admin user details responsive layout by @YarosMallorca in <https://github.com/immich-app/immich/pull/30114> - fix: backup delay translation key parsing by @YarosMallorca in <https://github.com/immich-app/immich/pull/30112> - fix(web): use correct date field for shift-click range in Recently Added by @okxint in <https://github.com/immich-app/immich/pull/30071> - fix(server): dissolve stack when its non-primary assets are deleted by @justadityaraj in <https://github.com/immich-app/immich/pull/29354> - fix: always set extension from provided file by @bo0tzz in <https://github.com/immich-app/immich/pull/29839> - fix: locked view and asset view provider by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/30136> - fix(mobile): birthday picker date order follows locale by @santoshakil in <https://github.com/immich-app/immich/pull/29419> - fix(web): restore correct back route when opening person asset via direct URL by @okxint in <https://github.com/immich-app/immich/pull/30129> - fix(web): mirror asset viewer navigation icons in RTL by @noboike in <https://github.com/immich-app/immich/pull/30151> - fix(mobile): allow URL validation to pass when scheme is not provided by @agg23 in <https://github.com/immich-app/immich/pull/30142> - fix: run background tasks in root isolate by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/30101> - fix(web): mirror onboarding navigation icons in RTL by @noboike in <https://github.com/immich-app/immich/pull/30158> - fix: min faces user preference by @jrasm91 in <https://github.com/immich-app/immich/pull/30177> - fix(web): use RTL transform origin in AdaptiveImage by @noboike in <https://github.com/immich-app/immich/pull/30182> - fix: don't skip person thumbnail generation if ML is disabled by @bo0tzz in <https://github.com/immich-app/immich/pull/30194> - fix: shared by user detail panel by @danieldietzler in <https://github.com/immich-app/immich/pull/30187> - fix(mobile): prevent timeline scroll to top on unrelated pages by @agg23 in <https://github.com/immich-app/immich/pull/30281> ### 📚 Documentation - chore(security.txt): bump expired Expires field (RFC 9116) by @kobihikri in <https://github.com/immich-app/immich/pull/29932> - fix(docs): remove ref to synology channel by @mmomjian in <https://github.com/immich-app/immich/pull/30051> - fix: hypertext link to example docker-compose.rootless.yml by @upmcplanetracker in <https://github.com/immich-app/immich/pull/30155> ### 🌐 Translations - feat(docs): add bulgarian readme by @nedevski in <https://github.com/immich-app/immich/pull/29427> - chore(web): update translations by @weblate in <https://github.com/immich-app/immich/pull/29781> ## New Contributors - @kobihikri made their first contribution in <https://github.com/immich-app/immich/pull/29932> - @kigrup made their first contribution in <https://github.com/immich-app/immich/pull/29876> - @yuxincs made their first contribution in <https://github.com/immich-app/immich/pull/29614> - @cevdetta made their first contribution in <https://github.com/immich-app/immich/pull/29801> - @mrxder made their first contribution in <https://github.com/immich-app/immich/pull/29660> - @compscitwilight made their first contribution in <https://github.com/immich-app/immich/pull/30026> - @nedevski made their first contribution in <https://github.com/immich-app/immich/pull/29427> - @yamishi13 made their first contribution in <https://github.com/immich-app/immich/pull/30016> - @lorypota made their first contribution in <https://github.com/immich-app/immich/pull/29720> - @ImperatorRuscal made their first contribution in <https://github.com/immich-app/immich/pull/29991> - @ajuijas made their first contribution in <https://github.com/immich-app/immich/pull/30049> - @justadityaraj made their first contribution in <https://github.com/immich-app/immich/pull/29354> - @pavel-miniutka made their first contribution in <https://github.com/immich-app/immich/pull/29939> - @noboike made their first contribution in <https://github.com/immich-app/immich/pull/30151> - @upmcplanetracker made their first contribution in <https://github.com/immich-app/immich/pull/30155> **Full Changelog**: <https://github.com/immich-app/immich/compare/v3.0.3...v3.1.0> - Jul 15, 2026 3.0.3# v3.0.3 - various bug fixes - we push to our own F-Droid repo at https://app.futo.org/fdroid/repo now. If you're using F-Droid, please pull the application from there from now on - fixes an issue where LivePhotos upload from the background isn't showing up. > [!Note] > In some specific circumstances, newly uploaded Live Photos could have broken thumbnails. If you see any such cases, please run the "missing" job for thumbnails or wait for the respective nightly job to clear it up. <!-- Release notes generated using configuration in .github/release.yml at v3.0.3 -->
More…
## What's Changed ### 🚀 Features * feat: publish app releases to FUTO F-Droid repo by @bo0tzz in https://github.com/immich-app/immich/pull/29804 ### 🐛 Bug fixes * fix(web): closing plugin method picker selects "unknown" method by @benbeckford in https://github.com/immich-app/immich/pull/29784 * fix: unauthorized album owner update by @danieldietzler in https://github.com/immich-app/immich/pull/29883 * fix: still part of live photo hidden on bg upload by @shenlong-tanwen in https://github.com/immich-app/immich/pull/29884 * fix: system appbar icon color has incorrect color in asset viewer by @alextran1502 in https://github.com/immich-app/immich/pull/29885 * fix: locked visibility in search random endpoint by @danieldietzler in https://github.com/immich-app/immich/pull/29887 * fix(mobile): send a full datetime from the android memories widget by @santoshakil in https://github.com/immich-app/immich/pull/29689 * fix: memory search date validation by @danieldietzler in https://github.com/immich-app/immich/pull/29907 * fix(server): set hvc1 tag when using hwa by @mertalev in https://github.com/immich-app/immich/pull/29908 * fix(mobile): clear zoom state when swapping assets by @agg23 in https://github.com/immich-app/immich/pull/29909 * fix: Ken Burns effect on sliver app bar jittery on Android by @alextran1502 in https://github.com/immich-app/immich/pull/29890 ### 📚 Documentation * fix(docs): update fdroid link by @mmomjian in https://github.com/immich-app/immich/pull/29797 * feat: system integrity docs by @danieldietzler in https://github.com/immich-app/immich/pull/29911 ### 🌐 Translations * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/29774 * fix(mobile): correct person age singular pluralization by @tech00exploere in https://github.com/immich-app/immich/pull/29868 ## New Contributors * @tech00exploere made their first contribution in https://github.com/immich-app/immich/pull/29868 **Full Changelog**: https://github.com/immich-app/immich/compare/v3.0.2...v3.0.3 - Jul 9, 2026 3.0.2# v3.0.2 This patch release addresses various bugs from v3 release and adds an additional filter to workflows <!-- Release notes generated using configuration in .github/release.yml at v3.0.2 --> ## What's Changed ### 🌟 Enhancements * fix(web): add ARIA label to ServerStatisticsCard by @tjhorner in https://github.com/immich-app/immich/pull/29497 * feat(server): hls variant configuration by @mertalev in https://github.com/immich-app/immich/pull/29613
More…
* feat: user agnostic database restore by @danieldietzler in https://github.com/immich-app/immich/pull/29512 * feat(server): date workflow filter by @benbeckford in https://github.com/immich-app/immich/pull/29040 ### 🐛 Bug fixes * fix: re-add gCastEnabled negation by @bo0tzz in https://github.com/immich-app/immich/pull/29499 * fix: downmix audio to stereo to fix broken channel layout by @lukasdotcom in https://github.com/immich-app/immich/pull/29485 * fix: live transcoding when viewing from a link share by @lukasdotcom in https://github.com/immich-app/immich/pull/29471 * fix: web search timeline visibility by @danieldietzler in https://github.com/immich-app/immich/pull/29518 * fix(web): missing i18n strings by @wonsukchoi in https://github.com/immich-app/immich/pull/29612 * fix: chinese browser locales recognition by @danieldietzler in https://github.com/immich-app/immich/pull/29622 * chore: improve added to album messages by @danieldietzler in https://github.com/immich-app/immich/pull/29641 * fix(mobile): fix 10-bit heic and avif colors on android by @santoshakil in https://github.com/immich-app/immich/pull/29631 * fix(mobile): match iOS scroll to top and tabbar scroll (#28469) by @agg23 in https://github.com/immich-app/immich/pull/29705 * fix: wrap migrations in transaction by @shenlong-tanwen in https://github.com/immich-app/immich/pull/29664 * fix: oauth account linking by @danieldietzler in https://github.com/immich-app/immich/pull/29624 * fix: incorrect grouping of recently added assets by @benbeckford in https://github.com/immich-app/immich/pull/29666 * fix: integrity checks checksum pagination by @danieldietzler in https://github.com/immich-app/immich/pull/29516 * fix(mobile): missing crop options and rotation scaling by @bwees in https://github.com/immich-app/immich/pull/29645 * fix(mobile): properly handle live photos locally by @agg23 in https://github.com/immich-app/immich/pull/29462 * fix: integrity checks dto validation by @danieldietzler in https://github.com/immich-app/immich/pull/29621 * fix(mobile): http request handling after isolate death by @mertalev in https://github.com/immich-app/immich/pull/29714 * fix: do not log out on automatic url switch by @shenlong-tanwen in https://github.com/immich-app/immich/pull/29715 * fix(server): stream ffprobe packets by @mertalev in https://github.com/immich-app/immich/pull/29723 * fix: search metadata for album shared links by @danieldietzler in https://github.com/immich-app/immich/pull/29742 * fix(web): clear asset selection when search context changes by @khanguyen74 in https://github.com/immich-app/immich/pull/29738 * fix(mobile): update timeline args on layout constraint changes by @santoshakil in https://github.com/immich-app/immich/pull/29653 * fix: iso date parsing for three digit years by @danieldietzler in https://github.com/immich-app/immich/pull/29739 * fix: missing files integrity checks by @danieldietzler in https://github.com/immich-app/immich/pull/29737 * fix(mobile): play videos from search results and folder view by @santoshakil in https://github.com/immich-app/immich/pull/29693 * fix(web): recursively unnest class arrays by @meesfrensel in https://github.com/immich-app/immich/pull/29755 * fix: emit album update event when uploading assets through shared link by @danieldietzler in https://github.com/immich-app/immich/pull/29757 * fix(web): always initialize language manager to set lang and dir by @meesfrensel in https://github.com/immich-app/immich/pull/29696 ### 📚 Documentation * chore: update docs with v3 tags by @alextran1502 in https://github.com/immich-app/immich/pull/29312 * fix(docs): use correct heading name for DB dump by @track0x1 in https://github.com/immich-app/immich/pull/29483 * feat(docs): add Malayalam language support in README files by @jinskjoy in https://github.com/immich-app/immich/pull/29593 * fix(docs): clarify version policy by @mmomjian in https://github.com/immich-app/immich/pull/29654 ### 🌐 Translations * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/29415 ## New Contributors * @tjhorner made their first contribution in https://github.com/immich-app/immich/pull/29497 * @wonsukchoi made their first contribution in https://github.com/immich-app/immich/pull/29612 * @track0x1 made their first contribution in https://github.com/immich-app/immich/pull/29483 * @jinskjoy made their first contribution in https://github.com/immich-app/immich/pull/29593 * @khanguyen74 made their first contribution in https://github.com/immich-app/immich/pull/29738 **Full Changelog**: https://github.com/immich-app/immich/compare/v3.0.1...v3.0.2 - Jul 2, 2026 3.0.1# v3.0.1 - Fixes a bug that causes albums don't show up in the mobile app ## What's Changed ### 🚀 Features * feat(web): recently added link in sidebar by @benbeckford in https://github.com/immich-app/immich/pull/29039 ### 🐛 Bug fixes * fix: albums broken on v2 mobile clients by @shenlong-tanwen in https://github.com/immich-app/immich/pull/29446 * fix: setting input field description spacing for description snippet by @danieldietzler in https://github.com/immich-app/immich/pull/29433
More…
### 🌐 Translations * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/29410 **Full Changelog**: https://github.com/immich-app/immich/compare/v3.0.0...v3.0.1 - Jul 2, 2026 3.0.0# v3.0.0 Welcome to Immich `v3.0.0`! After months of hard work from the team and our amazing contributors, we're thrilled to announce the next major version of Immich: `v3.0.0`! 🎉 ## Breaking changes This release includes several breaking changes; read the full migration guide [here](https://immich.app/blog/v3-migration). *It's worth mentioning that many of the breaking changes are updates to API endpoints and affect only **third-party tools** that integrate with Immich's API*. For the vast majority of users, updating works exactly as it always has.
More…
## How to update First, update the `IMMICH_VERSION` in your `.env` file to `v3`: ```diff - IMMICH_VERSION=v2 + IMMICH_VERSION=v3 ``` Then run the usual update commands: ```bash docker compose pull && docker compose up -d ``` ## Release candidates If you missed it, `v3.0.0` was the first time we used release candidates, also known as prereleases. Release candidates are tested but not yet official releases of Immich, and they allow us to find and fix any outstanding bugs before a final release. If you would like to be notified about release candidates directly through Immich, you can change the release channel from "Stable" to "Release candidate" in the `Admin settings > Version check` options ([here](https://my.immich.app/admin/system-settings?isOpen=version-check)). <img alt="New release channel option in version check settings" src="https://github.com/user-attachments/assets/fc8f6008-d486-4915-ad1b-feaddb856315" /> ## New Merch As part of this release, we're happy to announce we also have some new swag for you! * Kids clothing: For those who are likely the reason for your Immich library's size * Colored embroidery: We now have clothes with a full color embroidered Immich logo <a href="https://immich.store/collections/immich-3-0"> <img width="1200" alt="immich-store (1)" src="https://github.com/user-attachments/assets/ce114e7b-1424-4eca-975d-b23debadb32b" /> </a> Check it out now at [https://immich.store](https://immich.store/collections/immich-3-0)! ## Highlights Now, let's get right into all the new features in this release: * Mobile non-destructive editing * Workflows (preview) * Background backup improvement * Recently added page * Integrity checks * Slideshow on mobile app * HLS and real-time video transcoding (preview) * New video player for web * Open photo in Immich as gallery on Android * OCR on mobile app * Upload asset directly to album on the mobile app * Option to select image size when sharing on the mobile app * Timeline performance improvement for browsing a large amount of assets in a single month ### Mobile non-destructive editing <p align="center"> <img width="300" alt="image" src="https://github.com/user-attachments/assets/e9ddf97c-a4f8-42c1-9910-49ef3c8d4b0a" /> </p> This is a follow-up to Image Editing on the web, which was released in `v2.5.0`. This feature allows you to make non-destructive edits to your photos inside of Immich. Until now, the mobile editor used a completely different system that created new assets instead of editing the photo in place. With this update, we bring a new, easier-to-use editor to mobile devices that has the same features as the web version. You can now edit photos directly in the mobile app, including cropping, rotating, and adjusting your images without ever touching the original file. Similar to the web, edits are non-destructive, so you can revisit or revert them at any time. You can even make edits on mobile and then adjust them on the web later! Some features from the previous mobile editing implementation have been removed including: * Recoloring photos * Editing live photos * Editing local assets We have plans to bring some of these capabilities back in future releases. ### Workflows (preview) The first preview of Workflows is here! Workflows let you automate actions in your library by chaining triggers, filters, and actions together with a drag-and-drop builder. This is the foundation for many exciting automations to come, and we'd love your feedback as we continue building on it. You can access the feature from [Utilities > Workflows](https://my.immich.app/workflows) on the web. <img width="800" alt="Workflows link on the utilities page" src="https://github.com/user-attachments/assets/db7e139e-89b0-481a-9a66-530a40dc175a" /> From there, you can either create a new blank workflow or browse the premade templates to get a basic understanding of how workflows can be used. <p align="center"> <img width="400" height="704" alt="image" src="https://github.com/user-attachments/assets/23fdb017-e439-4221-9be8-a14bd690fa9b" /> </p> #### Workflows editor <img alt="Workflow editor with an example workflow" src="https://github.com/user-attachments/assets/c6a569de-d884-4bdb-8bb0-0ff2c805bfb9" /> In the workflows editor, you can switch between the Visual or JSON editor. The visual editor is nice for building out the workflow; the JSON editor is nice for sharing and receiving workflow content from others. In each workflow, there is a ***trigger*** and a sequence of ***steps.*** * Trigger: this is the entry point of each workflow; when the trigger occurs, the steps are evaluated. * Steps: they include Filters (conditions) and Actions (effects); they can be combined to produce the desired effect of the use case you aim for. <p align="center"> <img width="400" alt="List of available workflow steps" src="https://github.com/user-attachments/assets/50e89454-2bf9-4d41-bfa6-fd54f8944ea3" /> </p> #### Sharing a workflow You can share the workflow you made with others in two ways: text and JSON. Text is nice for sharing on a forum or for show-and-tell content. JSON is nice for others to make an exact copy of your workflow's configuration. You can copy the text in the workflows summary panel on the lower right of the screen <p align="center"> <img width="400" alt="workflow summary in text" src="https://github.com/user-attachments/assets/dda24c88-f403-4189-a57b-71f6da3816e7" /> </p> You can share the JSON content from the copy workflows button in the app bar, switch to the JSON editor, or use the `Show schema` button in the context menu in the workflows list <img alt="JSON editor" src="https://github.com/user-attachments/assets/307297cc-36d6-477c-bd72-d52be1dec0c5" /> <img alt="Show workflow schema" src="https://github.com/user-attachments/assets/b6efada4-44fc-4d35-9e24-0f143c003313" /> > [!NOTE] > Please use this [discussion thread](https://github.com/immich-app/immich/discussions/29167) to propose new ideas of triggers and actions. We are looking for extensive feedback and suggestions from you all. ### Background backup improvements Background backup on Android is now significantly more reliable. Previously, the background backup on Android was limited to newly taken photos. Now, the app uses a new periodic task scheduler, which allows you to upload your entire library in the background, and it plays nicer with Android's background execution limits, properly cleans up tasks, and warns you when battery optimization and notification settings might interfere with backups. On iOS, the background refresh task now runs its sync and upload work in parallel, so uploads actually start within the short time window iOS allows. <p align="center"> <img width="300" alt="Enable backup option on mobile" src="https://github.com/user-attachments/assets/82be41f3-93b9-4231-9f91-53eb317bb3fe" /> </p> ### Recently added page A new "Recently Added" page on the web and mobile lets you browse your library sorted by when assets were added to Immich, rather than when they were taken. This makes it easier to find what's new when browsing a new batch of imports. You can find the new page in the "Explore" tab on the web and in the "Search" tab on mobile. <img width="798" height="220" alt="Recently added" src="https://github.com/user-attachments/assets/d4729864-f736-4554-a672-91861aad5f7f" /> ### Integrity checks The maintenance page has gotten a new addition: integrity reports! Immich will scan its directories on your file system, and compare it to what it has stored in its database. If there are deviations, they will be surfaced as * untracked, if there is a file in Immich's directories that Immich does not know of * missing, if Immich references a file in its database that does not exist in that place (anymore) * a checksum mismatch, if the checksum of the file on disk does not match the checksum Immich has stored for that file. Typically, this would happen through file corruption but could also be the result of a bad rename. <img alt="Integrity report on the maintenance page showing a count of untracked and missing files, as well as checksum mismatches." src="https://github.com/user-attachments/assets/0e59537e-89b7-4d06-b5e6-731bb1e453c0" /> You can configure when and how long the job runs each night. <img width="800" alt="image" src="https://github.com/user-attachments/assets/13da49ac-5cfa-40a1-b852-b89b0ed7fff6" /> ### Slideshow (mobile) The slideshow experience comes to mobile! You can now sit back and let your photos and videos play across the screen, just like on the web. <p align="center"> <img width="300" alt="Slideshow view on mobile" src="https://github.com/user-attachments/assets/b3325f3c-0505-405f-9b79-322f738030f4" /> </p> ### HLS and Real-Time Video transcoding (preview) Immich can now transcode videos on-the-fly without needing to generate offline transcodes. This has been a long-requested feature with many benefits: * Quality switching (both manual and automatic) * Transcoding to the best codecs supported by the client * Lower storage overhead when offline transcoding is disabled * HDR for compatible clients (not implemented yet) * Remuxing rather than transcoding the original when bandwidth allows it (not implemented yet) Please note that this feature is still experimental and can change behavior from version to version. It's currently only implemented in the web app, with the mobile app implementation in progress. To enable real-time transcoding, go to the [video transcoding settings](https://my.immich.app/admin/system-settings?isOpen=video-transcoding+realtime-transcoding) (scroll down). Offline transcoding isn't directly affected by enabling it, so if you'd like to disable offline transcoding, you should also adjust the transcode policy. > [!NOTE] > For assets imported prior to v3, you will also need to re-run Metadata Extraction in the job panel for them to be re-processed. <img alt="HLS Transcoding settings" src="https://github.com/user-attachments/assets/6313ea40-ae1a-4495-aaea-212ef67fd338" /> Keep in mind that your server needs to be powerful enough to transcode in real-time for this feature to work well. Hardware acceleration is recommended, but not required, when using this feature. ### New video player for web A new custom video player on the web app ensures all your devices share the same controls and layout, matching the Immich design. Some basic functions, like changing the playback rate, are available. This should also fix a lot of the problems on iOS, where the OS's controls are hidden behind the Immich navbar. ### Open photos in Immich as a gallery on Android Immich can now act as a gallery/image viewer app on Android. Tap a photo or video in another app, choose Immich, and it opens directly in the asset viewer with options to share the file or upload it to your library. This is the first iteration of the feature, and refinements to how Immich recognizes files that are already in your library are on the way <img width="350" alt="image" src="https://github.com/user-attachments/assets/f98c2a65-1b84-4580-a7af-ead54ab737d8" /> <img width="350" alt="image" src="https://github.com/user-attachments/assets/fb783bed-c6c4-4634-af71-c2e888274121" /> ### OCR on the mobile app The asset viewer now has a toggle that highlights recognized text in a photo, and you can select and copy it directly from the image. <p align="center"> <img width="350" alt="OCR in the mobile app" src="https://github.com/user-attachments/assets/5f870d38-53a5-4b05-9dba-5d8838b86934" /> </p> ### Upload assets directly to an album on mobile You can now upload local photos directly to an album in the mobile app, including from the asset bottom sheet, instead of uploading first and organizing later. A small change that removes a lot of friction from the backup-and-organize flow. ### Select image size when sharing on mobile When sharing photos from the mobile app, you can now choose the image size before sending; it is handy for keeping shared files small for messaging apps while preserving the option to share at full quality when needed. You can change the default behavior in the `App Settings > Preferences` <p align="center"> <img width="350" alt="Share file's size settings" src="https://github.com/user-attachments/assets/fe1c95d7-39e4-4c25-8981-dea4d07fce5a" /> </p> You can also pick the option when sharing on-the-fly by long pressing the `Share` button <p align="center"> <img width="350" alt="On-the-fly picker" src="https://github.com/user-attachments/assets/667b79a7-efac-462b-8736-9e674e083d6b" /> </p> ### Timeline performance Improvements Browsing months with a large number of assets is now dramatically smoother and prevents the browser tab from locking up when your instance encounters that scenario. ## Support Immich <p align="center"> <img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExbjY2eWc5Y2F0ZW56MmR4aWE0dDhzZXlidXRmYWZyajl1bWZidXZpcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/87CKDqErVfMqY/giphy.gif" width="450" title="SUPPORT THE PROJECT!"> </p> If you find the project helpful, you can support Immich by purchasing a product key at <https://buy.immich.app> or our merchandise at <https://immich.store> <!-- Release notes generated using configuration in .github/release.yml at v3.0.0 --> ## What's Changed ### 🚨 Breaking Changes * refactor!: migrate class-validator to zod by @timonrieger in https://github.com/immich-app/immich/pull/26597 * refactor!: remove replace asset by @jrasm91 in https://github.com/immich-app/immich/pull/27022 * refactor!: remove my shared link dto by @jrasm91 in https://github.com/immich-app/immich/pull/27023 * chore!: remove deprecated env variables by @jrasm91 in https://github.com/immich-app/immich/pull/27802 * chore!: remove getRandom api endpoint by @bwees in https://github.com/immich-app/immich/pull/27780 * chore!: remove unused token response param by @jrasm91 in https://github.com/immich-app/immich/pull/27805 * refactor: yeet old timeline by @shenlong-tanwen in https://github.com/immich-app/immich/pull/27666 * chore!: remove old timeline sync endpoints by @jrasm91 in https://github.com/immich-app/immich/pull/27804 * chore!: remove deviceId and deviceAssetId by @danieldietzler in https://github.com/immich-app/immich/pull/27818 * chore!: rename API key schemas by @jrasm91 in https://github.com/immich-app/immich/pull/27828 * chore!: remove without assets by @jrasm91 in https://github.com/immich-app/immich/pull/27835 * fix: oauth issuerUrl validation by @bo0tzz in https://github.com/immich-app/immich/pull/27848 * fix!: do not allow insecure oauth requests by default by @bo0tzz in https://github.com/immich-app/immich/pull/27844 * fix!: set duration to null when not present by @meesfrensel in https://github.com/immich-app/immich/pull/26982 * chore!: remove /api/server/theme endpoint by @jrasm91 in https://github.com/immich-app/immich/pull/27880 * chore!: migrate album owner to album_user by @danieldietzler in https://github.com/immich-app/immich/pull/27467 * refactor!: change number to integer types by @timonrieger in https://github.com/immich-app/immich/pull/27912 * refactor(server)!: move correlationId to X-Correlation-ID response header by @timonrieger in https://github.com/immich-app/immich/pull/28139 * refactor(server)!: remove redundant error and statusCode fields from error responses by @timonrieger in https://github.com/immich-app/immich/pull/28140 * chore(server)!: drop pgvecto.rs support by @mertalev in https://github.com/immich-app/immich/pull/28159 * chore!: duration in milliseconds by @mertalev in https://github.com/immich-app/immich/pull/28003 * refactor(server)!: sanitize error messages to avoid leaking resource details by @timonrieger in https://github.com/immich-app/immich/pull/28154 * refactor(server)!: structured validation error responses by @timonrieger in https://github.com/immich-app/immich/pull/28204 * feat(server)!: add isOwned filter to albums API by @timonrieger in https://github.com/immich-app/immich/pull/28213 * chore(ml)!: require numpy 2.4 by @mertalev in https://github.com/immich-app/immich/pull/28158 * fix(deps): update dependency nestjs-otel to v8 by @renovate[bot] in https://github.com/immich-app/immich/pull/27863 * chore(ml)!: remove deprecated envs by @mertalev in https://github.com/immich-app/immich/pull/28326 * chore(server)!: remove libopus enum by @mertalev in https://github.com/immich-app/immich/pull/28325 * refactor!: remove asset faces from AssetResponseDto by @bwees in https://github.com/immich-app/immich/pull/27779 * refactor(server)!: drop empty string to null conversion by @timonrieger in https://github.com/immich-app/immich/pull/28808 * refactor(server)!: remove changeExpiryTime by @timonrieger in https://github.com/immich-app/immich/pull/28816 * refactor!: disallow star rating < 1 by @meesfrensel in https://github.com/immich-app/immich/pull/27896 * fix!: search endpoints visibility can be omitted by @danieldietzler in https://github.com/immich-app/immich/pull/29385 ### 🫥 Deprecated Changes * refactor(server): deprecate PUT routes in favor of PATCH by @timonrieger in https://github.com/immich-app/immich/pull/28859 ### 🔒 Security * fix: run profile picture through thumbnail pipeline by @bo0tzz in https://github.com/immich-app/immich/pull/27890 ### 🚀 Features * feat: mobile editing by @bwees in https://github.com/immich-app/immich/pull/25397 * feat: album map markers endpoint by @jrasm91 in https://github.com/immich-app/immich/pull/27830 * feat(server): added backchannel logout api endpoint by @santanoce in https://github.com/immich-app/immich/pull/26235 * feat(server): add OIDC logout URL override option by @LJspice in https://github.com/immich-app/immich/pull/27389 * feat: android periodic work manager task by @shenlong-tanwen in https://github.com/immich-app/immich/pull/23563 * feat(web): custom video player controls by @meesfrensel in https://github.com/immich-app/immich/pull/26183 * feat(web): add full-path search mode to UI by @mws-weekend-projects in https://github.com/immich-app/immich/pull/26758 * feat: recently added assets page by @benbeckford in https://github.com/immich-app/immich/pull/28272 * feat(mobile): slideshow view by @benbeckford in https://github.com/immich-app/immich/pull/28421 * feat(mobile): "Add Tags" asset multiselect option by @benjamonnguyen in https://github.com/immich-app/immich/pull/26269 * feat: workflows & plugins by @jrasm91 in https://github.com/immich-app/immich/pull/26727 * feat(server): hls with real-time transcoding by @mertalev in https://github.com/immich-app/immich/pull/28230 * feat(web): hls player by @mertalev in https://github.com/immich-app/immich/pull/28312 * feat(mobile): Android. Immich as a gallery / image viewer app by @PeterOmbodi in https://github.com/immich-app/immich/pull/26109 * feat: user upload heatmap by @bondeabhijeet in https://github.com/immich-app/immich/pull/28593 * feat(mobile): ocr support by @YarosMallorca in https://github.com/immich-app/immich/pull/26523 * feat: geolocation workflow filter by @benbeckford in https://github.com/immich-app/immich/pull/28961 * feat: image quality option in sharing by @alextran1502 in https://github.com/immich-app/immich/pull/28918 * feat: integrity check jobs (missing files, untracked files, checksums) by @insertish in https://github.com/immich-app/immich/pull/24205 * feat: new feature message by @alextran1502 in https://github.com/immich-app/immich/pull/29388 ### 🌟 Enhancements * feat(web): persist state of file path information in details panel by @cratoo in https://github.com/immich-app/immich/pull/27770 * feat: commands by @jrasm91 in https://github.com/immich-app/immich/pull/27546 * feat: upgrade immich/ui by @jrasm91 in https://github.com/immich-app/immich/pull/27792 * feat: filter users on share by @OdinOxin in https://github.com/immich-app/immich/pull/27732 * fix(server): render storage template date/time tokens in UTC (#24350) by @migpovrap in https://github.com/immich-app/immich/pull/26917 * feat(web): lazy load library and server statistics by @etnoy in https://github.com/immich-app/immich/pull/26406 * feat: sort users alphabetically when adding to album by @OdinOxin in https://github.com/immich-app/immich/pull/27731 * feat: auth logout page by @jrasm91 in https://github.com/immich-app/immich/pull/27831 * chore: improve randomness of /search/random endpoint by @StevenMassaro in https://github.com/immich-app/immich/pull/27531 * feat: dynamic languages by @jrasm91 in https://github.com/immich-app/immich/pull/27869 * feat: cache shared link by @danieldietzler in https://github.com/immich-app/immich/pull/27889 * feat(server): add configurable OAuth prompt parameter by @sparsh985 in https://github.com/immich-app/immich/pull/26755 * feat(server): add MPO file type support by @git-akihakune in https://github.com/immich-app/immich/pull/27963 * feat(mobile): action bottom sheet on map timeline by @YarosMallorca in https://github.com/immich-app/immich/pull/27515 * feat(server): track video metadata by @mertalev in https://github.com/immich-app/immich/pull/28023 * feat(enhancement): Navigate stack with up and down arrow keys by @cratoo in https://github.com/immich-app/immich/pull/27854 * fix(web): migrate people management component to page, enabling tooltips by @SkyDev125 in https://github.com/immich-app/immich/pull/26971 * chore(mobile): add box shadow to asset details by @uhthomas in https://github.com/immich-app/immich/pull/27510 * feat: hide hidden person from memories by @sakshamchawla in https://github.com/immich-app/immich/pull/20877 * feat(mobile): increased tap area on video player overlay by @YarosMallorca in https://github.com/immich-app/immich/pull/27269 * feat(web): Add metadata overlay to slideshow by @timonrieger in https://github.com/immich-app/immich/pull/24627 * feat(web): add individual filter removal from search result chips by @timonrieger in https://github.com/immich-app/immich/pull/28166 * feat(mobile): trash/restore all by @YarosMallorca in https://github.com/immich-app/immich/pull/28116 * feat: display more info in asset viewer by @alextran1502 in https://github.com/immich-app/immich/pull/24630 * feat(server): allow subpaths for machine learning URL by @gnojus in https://github.com/immich-app/immich/pull/28427 * feat(ui): Shared URL input configuration by @Lauritz-Tieste in https://github.com/immich-app/immich/pull/27105 * refactor: enhance shared link UI and functionality by @Lauritz-Tieste in https://github.com/immich-app/immich/pull/26464 * feat: upload and add local asset directly to album by @alextran1502 in https://github.com/immich-app/immich/pull/28123 * feat: Selectable metadata in duplicates utility with diffing by @ollioddi in https://github.com/immich-app/immich/pull/26328 * fix: improve form control focus visibility by @Caltsic in https://github.com/immich-app/immich/pull/28512 * feat: command for user pages by @alextran1502 in https://github.com/immich-app/immich/pull/28554 * refactor: use ControlBar UI Library component by @bwees in https://github.com/immich-app/immich/pull/28567 * feat: workflow template by @alextran1502 in https://github.com/immich-app/immich/pull/28553 * feat(mobile): improve downloading algorithm for sharing by @YarosMallorca in https://github.com/immich-app/immich/pull/27312 * feat: search by album name and id by @jrasm91 in https://github.com/immich-app/immich/pull/28672 * feat: upload local assets to album from bottom sheet by @alextran1502 in https://github.com/immich-app/immich/pull/28531 * feat: places in context search by @timonrieger in https://github.com/immich-app/immich/pull/28768 * feat: minimum face count per user by @timjonez in https://github.com/immich-app/immich/pull/27452 * feat: show notification and battery optimization warning by @shenlong-tanwen in https://github.com/immich-app/immich/pull/26610 * feat: workflows drag and drop enhancements by @danieldietzler in https://github.com/immich-app/immich/pull/28764 * feat(mobile): min face count per-user by @YarosMallorca in https://github.com/immich-app/immich/pull/28805 * refactor(server): allow -1 rating again by @timonrieger in https://github.com/immich-app/immich/pull/28886 * feat(web): warn before overwriting existing locations in geolocation utility by @yoshovski in https://github.com/immich-app/immich/pull/28840 * feat: warn if microservices worker is missing by @bo0tzz in https://github.com/immich-app/immich/pull/28869 * fix(web): show album names in duplicate review by @meesfrensel in https://github.com/immich-app/immich/pull/29080 * feat: keyboard seeking for new video player by @danieldietzler in https://github.com/immich-app/immich/pull/29208 * feat(web): Add text-white-shadow to elements and increase the shadows effect by @Vogeluff in https://github.com/immich-app/immich/pull/29165 * feat: webhook workflow action by @benbeckford in https://github.com/immich-app/immich/pull/29258 * feat: integrity checks admin settings by @danieldietzler in https://github.com/immich-app/immich/pull/29406 ### 🐛 Bug fixes * fix(web): center images in RTL layouts (#27678) by @Nicolas-micuda-becker in https://github.com/immich-app/immich/pull/27753 * fix(mobile): add keys for person tiles in search by @YarosMallorca in https://github.com/immich-app/immich/pull/27689 * fix(web): selection clearing on preview by @YarosMallorca in https://github.com/immich-app/immich/pull/27702 * fix: asset multi select download shortcut by @danieldietzler in https://github.com/immich-app/immich/pull/27784 * fix(web): add partner photo to album from multiselect by @YarosMallorca in https://github.com/immich-app/immich/pull/27767 * fix: redirect original by @danieldietzler in https://github.com/immich-app/immich/pull/27759 * fix: make web build stage deterministic by @bo0tzz in https://github.com/immich-app/immich/pull/27823 * fix(web): svelte regression - cancel video preview fetch when bind:this is cleared early by @midzelis in https://github.com/immich-app/immich/pull/27713 * fix(web): stale adaptive image when original overlays preview by @midzelis in https://github.com/immich-app/immich/pull/27621 * fix(mobile): readonly redirect when not logged in by @YarosMallorca in https://github.com/immich-app/immich/pull/27728 * fix(web): close edit faces panel on Escape key press by @midzelis in https://github.com/immich-app/immich/pull/27519 * fix(oauth): normalize email claim to lowercase and trim before account lookup and registration by @timdobras in https://github.com/immich-app/immich/pull/26841 * fix(web): use event for zooming out after opening face editor by @meesfrensel in https://github.com/immich-app/immich/pull/27789 * fix: sanitize filenames before adding to zip by @bo0tzz in https://github.com/immich-app/immich/pull/27893 * fix(server): require at least one field to be set when updating memory by @fredfloydd in https://github.com/immich-app/immich/pull/27842 * fix(web): compute hashes for uploads in chunks by @fredfloydd in https://github.com/immich-app/immich/pull/27878 * fix(web): fix stale album page load by @fredfloydd in https://github.com/immich-app/immich/pull/27825 * fix(web): prevent interaction with detail panel behind person side panel by @midzelis in https://github.com/immich-app/immich/pull/27309 * fix: show neon light by @alextran1502 in https://github.com/immich-app/immich/pull/27994 * fix(mobile): zero exposure by @YarosMallorca in https://github.com/immich-app/immich/pull/28017 * fix(mobile): clear local data on forced logout by @LeLunZ in https://github.com/immich-app/immich/pull/27957 * fix(mobile): enable autoplay for motion photos in video viewer by @LeLunZ in https://github.com/immich-app/immich/pull/27961 * fix(mobile): thumbnail transition to asset viewer by @LeLunZ in https://github.com/immich-app/immich/pull/27850 * fix: jump to timeline on new auto_router update by @alextran1502 in https://github.com/immich-app/immich/pull/28022 * fix(mobile): delete assets on trash empty, Android by @PeterOmbodi in https://github.com/immich-app/immich/pull/26070 * fix(ml): handle empty/corrupt images in face detection by @yosit in https://github.com/immich-app/immich/pull/27391 * fix(web): refresh memories hourly by @meesfrensel in https://github.com/immich-app/immich/pull/28114 * fix(web): large files: better handling of asset deletions by @meesfrensel in https://github.com/immich-app/immich/pull/28117 * fix(web): double video playback on map timeline by @YarosMallorca in https://github.com/immich-app/immich/pull/28090 * fix(mobile): suppress asset stack UI in trash timeline by @PeterOmbodi in https://github.com/immich-app/immich/pull/26536 * fix(web): timeline scroll when pressing back from stacked asset by @Snowknight26 in https://github.com/immich-app/immich/pull/28163 * fix(server): selectively apply metadata bitstream filter for video thumbnails by @pinhao in https://github.com/immich-app/immich/pull/28162 * fix(web): fix shared link /s/photos.* navigation after password login by @meesfrensel in https://github.com/immich-app/immich/pull/27788 * fix(ml): respect time zone for logs in cuda container by @AyaanMAG in https://github.com/immich-app/immich/pull/28155 * fix: librknnrt permissions in machine-learning by @DavidTheFighter in https://github.com/immich-app/immich/pull/28216 * fix(server): validate duplicate group ownership before dismissal by @timonrieger in https://github.com/immich-app/immich/pull/28221 * fix(web): correct timeline yesterday label across month boundaries by @michelheusschen in https://github.com/immich-app/immich/pull/28183 * fix(mobile): show lens info without lens name by @benbeckford in https://github.com/immich-app/immich/pull/28234 * fix: stale person name after merge by @danieldietzler in https://github.com/immich-app/immich/pull/28222 * fix(web): shared album avatars opening modal by @meesfrensel in https://github.com/immich-app/immich/pull/26719 * fix(mobile): prevent asset loading issues when changing page or when closing memories by @LeLunZ in https://github.com/immich-app/immich/pull/27596 * fix(mobile): correct filter default and UI desync in similar photos search by @TheBestX11 in https://github.com/immich-app/immich/pull/27516 * fix(server): hide isFavorite from partner asset sync stream by @timonrieger in https://github.com/immich-app/immich/pull/28035 * fix(mobile): restore notification plugin init by @santoshakil in https://github.com/immich-app/immich/pull/28284 * fix(mobile): mounted check before setState in album sync action by @santoshakil in https://github.com/immich-app/immich/pull/28300 * fix(mobile): avoid duplicate assets in album view by @stfn42 in https://github.com/immich-app/immich/pull/28152 * fix(mobile): Deduplicate assets in person view timeline by @thowdev in https://github.com/immich-app/immich/pull/26723 * fix(deployment): remove unneeded volume by @mmomjian in https://github.com/immich-app/immich/pull/28307 * fix: mobile upload duration type by @alextran1502 in https://github.com/immich-app/immich/pull/28362 * fix: deep link for assets when asset viewer already open by @bwees in https://github.com/immich-app/immich/pull/27971 * fix: kekab icon colors in light mode by @shenlong-tanwen in https://github.com/immich-app/immich/pull/28366 * fix: indexes on remote_asset_entity by @shenlong-tanwen in https://github.com/immich-app/immich/pull/28264 * fix(mobile): clear linkedRemoteAlbumId in reset() so FK refs dont dangle by @santoshakil in https://github.com/immich-app/immich/pull/28382 * fix: ignore icc profile make and model by @jrasm91 in https://github.com/immich-app/immich/pull/28412 * fix(mobile): don't block app open on slow validateAccessToken by @santoshakil in https://github.com/immich-app/immich/pull/28405 * fix(mobile): add restore option to trashed assets by @inesiscosta in https://github.com/immich-app/immich/pull/27442 * fix(mobile): use correct delete action by @ByteSizedMarius in https://github.com/immich-app/immich/pull/26575 * fix(server): dedupe database backup jobs by @rdeaton in https://github.com/immich-app/immich/pull/28341 * fix(mobile): cronet buffer overflow on compressed thumbnails by @santoshakil in https://github.com/immich-app/immich/pull/28439 * fix(mobile): cronet thumbnail buffer overflow regression from #28439 by @santoshakil in https://github.com/immich-app/immich/pull/28450 * fix(mobile): mounted check in ThumbnailTile hero flight listener by @santoshakil in https://github.com/immich-app/immich/pull/28451 * fix(mobile): don't force-unwrap nil localizedTitle in ios getAlbums by @santoshakil in https://github.com/immich-app/immich/pull/28452 * fix(web): work around Chrome HDR image seam lines during zoom by @midzelis in https://github.com/immich-app/immich/pull/27715 * fix(ios): respect status bar scroll to top in timeline views by @agg23 in https://github.com/immich-app/immich/pull/28469 * fix(mobile): asset viewer stuck on spinner after rotation by @LeLunZ in https://github.com/immich-app/immich/pull/28019 * fix(web): timeline stuttering with many assets in 1 day by @benbeckford in https://github.com/immich-app/immich/pull/28509 * fix(mobile): preserve zoom level during image loading and live photo playback by @LeLunZ in https://github.com/immich-app/immich/pull/27960 * fix(ml): stabilize MIGraphX inference by @fabianwimberger in https://github.com/immich-app/immich/pull/28444 * fix: await sync asset v2 by @bwees in https://github.com/immich-app/immich/pull/28569 * fix: strip metadata from timeline responses for shared links without exif sharing by @danieldietzler in https://github.com/immich-app/immich/pull/28644 * fix: Refresh local album overview page after asset deletion by @Lauritz-Tieste in https://github.com/immich-app/immich/pull/28586 * fix(server): prevent locked assets from leaking to partners by @timonrieger in https://github.com/immich-app/immich/pull/28652 * refactor(web): replace per-asset viewport proximity with day-tier active indices by @midzelis in https://github.com/immich-app/immich/pull/28597 * fix: timeline scroll flicker by @alextran1502 in https://github.com/immich-app/immich/pull/28653 * fix: api repositories using stale endpoint by @shenlong-tanwen in https://github.com/immich-app/immich/pull/28667 * fix: disallow cross origin/non http protocols for continueUrl on login by @bwees in https://github.com/immich-app/immich/pull/28706 * fix(web): skip thumbhash fade for offscreen thumbnails by @midzelis in https://github.com/immich-app/immich/pull/27335 * fix(web): prevent partner assets from being selected in geolocation utility by @okxint in https://github.com/immich-app/immich/pull/28737 * fix(mobile): invisible ink splashes in asset sheet by @timonrieger in https://github.com/immich-app/immich/pull/28756 * fix!: unauthorized face creation by @shenlong-tanwen in https://github.com/immich-app/immich/pull/28561 * fix(mobile): proper background task cleanup by @mertalev in https://github.com/immich-app/immich/pull/28694 * fix(cli): prevent out-of-memory on file upload due to undici storing the request body by @moversity in https://github.com/immich-app/immich/pull/28723 * fix: error log on aborted uploads by @jrasm91 in https://github.com/immich-app/immich/pull/28806 * fix(server): respect timezone in iso date string encoding by @timonrieger in https://github.com/immich-app/immich/pull/28810 * test: fix tests when OpenVINO provider is available by @nekowinston in https://github.com/immich-app/immich/pull/28802 * fix(mobile): run iOS bg task phases in parallel by @santoshakil in https://github.com/immich-app/immich/pull/28293 * fix: error handling by @jrasm91 in https://github.com/immich-app/immich/pull/28843 * fix: cross isolate drift watchers by @shenlong-tanwen in https://github.com/immich-app/immich/pull/28862 * fix: reload timeline on group by setting change by @shenlong-tanwen in https://github.com/immich-app/immich/pull/28864 * fix(web): use irot/imir tags for HEIF Orientation by @joojoooo in https://github.com/immich-app/immich/pull/27820 * fix: detail panel faces reactivity issues by @danieldietzler in https://github.com/immich-app/immich/pull/28910 * fix(server): hide isFavorite from album asset sync stream by @timonrieger in https://github.com/immich-app/immich/pull/28923 * fix(mobile): show memory and folder dates in local time by @santoshakil in https://github.com/immich-app/immich/pull/28941 * fix(mobile): show error when creating an album fails by @santoshakil in https://github.com/immich-app/immich/pull/28942 * fix(mobile): add album picker to archive bottom sheet by @santoshakil in https://github.com/immich-app/immich/pull/28953 * fix: normalize diacritics in person name search in Web & Mobile by @pedrovieira in https://github.com/immich-app/immich/pull/28887 * fix(web): Prevent face editor from closing when dismissing tag confirmation by @pedrovieira in https://github.com/immich-app/immich/pull/28900 * fix(mobile): map timeline layout crash by @YarosMallorca in https://github.com/immich-app/immich/pull/28878 * fix(mobile): deduplicate people in asset details panel by @santoshakil in https://github.com/immich-app/immich/pull/28972 * fix(mobile): keep timezone when editing asset date time by @santoshakil in https://github.com/immich-app/immich/pull/28978 * fix(mobile): stale details after editing asset date by @santoshakil in https://github.com/immich-app/immich/pull/28977 * fix(mobile): show albums whose assets are all trashed by @santoshakil in https://github.com/immich-app/immich/pull/28985 * fix(mobile): give android notification channels proper names by @santoshakil in https://github.com/immich-app/immich/pull/28986 * fix: Improving scroll behavior on image stacks that overflow the screen by @BlankCanvasStudio in https://github.com/immich-app/immich/pull/28885 * fix(web): focus on scrollable element on load by @timonrieger in https://github.com/immich-app/immich/pull/29004 * fix(mobile): show like and comment options on album photo deep links by @santoshakil in https://github.com/immich-app/immich/pull/29020 * fix(web): correctly handle person search with more than 100 results by @maxinegardenas in https://github.com/immich-app/immich/pull/29002 * fix(web): prevent upload status panel from overlapping album action bar by @okxint in https://github.com/immich-app/immich/pull/29044 * fix(web): error loading image state by @bwees in https://github.com/immich-app/immich/pull/29058 * fix(web): show asset arrows by @timonrieger in https://github.com/immich-app/immich/pull/29010 * fix(server): hide partner archived asset locations from map by @timonrieger in https://github.com/immich-app/immich/pull/29028 * fix: lock transcoding options by @timonrieger in https://github.com/immich-app/immich/pull/29076 * fix(server): do not merge metadata when multiple duplicates are kept by @timonrieger in https://github.com/immich-app/immich/pull/29035 * fix: integrity report checksum query by @danieldietzler in https://github.com/immich-app/immich/pull/29136 * fix: map settings by @danieldietzler in https://github.com/immich-app/immich/pull/29134 * fix: too strict cron expression validation by @danieldietzler in https://github.com/immich-app/immich/pull/29138 * fix(web): respect local timezone when building date range for search by @okxint in https://github.com/immich-app/immich/pull/29128 * fix(web): language selector by @meesfrensel in https://github.com/immich-app/immich/pull/29065 * fix: update datetimeRelative description to minutes instead of seconds by @meesfrensel in https://github.com/immich-app/immich/pull/29137 * fix: video thumbnail quality sharing by @bwees in https://github.com/immich-app/immich/pull/29104 * fix(mobile): stop sync albums crashing on the main isolate by @santoshakil in https://github.com/immich-app/immich/pull/29133 * fix(mobile): show memories with no showAt/hideAt in the timeline lane by @santoshakil in https://github.com/immich-app/immich/pull/29158 * fix(mobile): keep toasts off the dynamic island when keyboard is open by @santoshakil in https://github.com/immich-app/immich/pull/29159 * fix(server): skip existing users when sharing albums by @jeevan6996 in https://github.com/immich-app/immich/pull/28884 * fix: web i18n by @danieldietzler in https://github.com/immich-app/immich/pull/29175 * fix(web): shift+click on GPS asset extends range selection in geolocation utility by @timonrieger in https://github.com/immich-app/immich/pull/29022 * fix(server): allow non-utc datetime offsets by @timonrieger in https://github.com/immich-app/immich/pull/29186 * fix: remove local-only step ids from workflow json by @danieldietzler in https://github.com/immich-app/immich/pull/29188 * fix: asset type filter by @danieldietzler in https://github.com/immich-app/immich/pull/29190 * fix(mobile): prevent duplicate login pages for unauthenticated share intent warm start by @olildu in https://github.com/immich-app/immich/pull/29054 * fix(mobile): refresh memories on resume and day change by @santoshakil in https://github.com/immich-app/immich/pull/28983 * fix(mobile): re-lock locked folder when the app is backgrounded by @santoshakil in https://github.com/immich-app/immich/pull/29089 * fix(mobile): endless spinner on album selection when device has no albums by @santoshakil in https://github.com/immich-app/immich/pull/28994 * fix: rc version check by @danieldietzler in https://github.com/immich-app/immich/pull/29194 * fix: detail panel people reactivity and iterator consumption by @danieldietzler in https://github.com/immich-app/immich/pull/29250 * fix(server): use VBR for QSV so the max bitrate is respected by @aclerici38 in https://github.com/immich-app/immich/pull/29240 * fix: ignore external libraries for integrity report checksum check by @danieldietzler in https://github.com/immich-app/immich/pull/29248 * fix(web): remove map's fullscreen button by @meesfrensel in https://github.com/immich-app/immich/pull/29192 * refactor: use SemVer classes for version compatability message by @bwees in https://github.com/immich-app/immich/pull/29056 * fix: sync backfill by @jrasm91 in https://github.com/immich-app/immich/pull/29267 * fix(mobile): force AssetViewerPage recreation on repeated view intents by @okxint in https://github.com/immich-app/immich/pull/29235 * fix(mobile): blank notifications page after enabling notifications by @santoshakil in https://github.com/immich-app/immich/pull/29232 * fix(mobile): app doesn't exit full-screen mode by @YarosMallorca in https://github.com/immich-app/immich/pull/29301 * fix(mobile): only toggle backup from the switch, not the whole row by @santoshakil in https://github.com/immich-app/immich/pull/29236 * fix(mobile): hide video thumbnail when video is ready by @santoshakil in https://github.com/immich-app/immich/pull/29012 * fix(mobile): apply exif orientation to android raw photos by @santoshakil in https://github.com/immich-app/immich/pull/29337 * fix(server): face region coordinates parsing by @djbravo06 in https://github.com/immich-app/immich/pull/29333 * feat: honor album access permissions in search endpoints by @danieldietzler in https://github.com/immich-app/immich/pull/29352 * fix: version compatability check by @bwees in https://github.com/immich-app/immich/pull/29405 ### 📚 Documentation * fix(docs): instructions on how to use local immich ui by @YarosMallorca in https://github.com/immich-app/immich/pull/27813 * fix(docs): helmet file affected containers by @mmomjian in https://github.com/immich-app/immich/pull/27939 * fix(docs): Update Tailscale free tier user and device limits by @Hakuin123 in https://github.com/immich-app/immich/pull/28151 * docs: update rocm installation instructions by @aigarius in https://github.com/immich-app/immich/pull/25434 * fix(docs): document `upgrade-insecure-requests` default by @meesfrensel in https://github.com/immich-app/immich/pull/28279 * fix(docs): missing colon in config file doc by @SuperSandro2000 in https://github.com/immich-app/immich/pull/28313 * fix: update server-commands subcommand list by @bo0tzz in https://github.com/immich-app/immich/pull/28402 * feat(docs): add fixed subnet guide for Synology to prevent firewall issues by @racehd in https://github.com/immich-app/immich/pull/26554 * chore(docs): update FAQ with profile picture change instructions by @tvangemert in https://github.com/immich-app/immich/pull/28634 * chore: update documentation to use mise commands by @timonrieger in https://github.com/immich-app/immich/pull/28515 * fix(docs): v3 bumps by @mmomjian in https://github.com/immich-app/immich/pull/29007 * docs(server): clarify AssetBulkUploadCheckItem.id is a correlation token by @timonrieger in https://github.com/immich-app/immich/pull/29141 * docs(mobile-app): add Play App Signing certificate hash by @tlvince in https://github.com/immich-app/immich/pull/29168 * docs(mobile): point users towards shared setup docs by @agg23 in https://github.com/immich-app/immich/pull/29078 * docs: clarify duplicate exif merging intent by @timonrieger in https://github.com/immich-app/immich/pull/29203 * fix(docsc): v3 bump by @mmomjian in https://github.com/immich-app/immich/pull/29246 * docs: MS smtp guide by @jameskimmel in https://github.com/immich-app/immich/pull/29289 ### 🌐 Translations * feat: latest language requests by @danieldietzler in https://github.com/immich-app/immich/pull/28858 * chore: update translations by @weblate in https://github.com/immich-app/immich/pull/27764 * feat: languages by @danieldietzler in https://github.com/immich-app/immich/pull/29088 * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/29036 * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/29162 * fix: turkish readme translation by @MuySup in https://github.com/immich-app/immich/pull/29234 * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/29204 * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/29290 * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/29347 ## New Contributors * @OdinOxin made their first contribution in https://github.com/immich-app/immich/pull/27732 * @migpovrap made their first contribution in https://github.com/immich-app/immich/pull/26917 * @StevenMassaro made their first contribution in https://github.com/immich-app/immich/pull/27531 * @timdobras made their first contribution in https://github.com/immich-app/immich/pull/26841 * @santanoce made their first contribution in https://github.com/immich-app/immich/pull/26235 * @fredfloydd made their first contribution in https://github.com/immich-app/immich/pull/27842 * @sparsh985 made their first contribution in https://github.com/immich-app/immich/pull/26755 * @LJspice made their first contribution in https://github.com/immich-app/immich/pull/27389 * @git-akihakune made their first contribution in https://github.com/immich-app/immich/pull/27963 * @shaun0927 made their first contribution in https://github.com/immich-app/immich/pull/27900 * @yosit made their first contribution in https://github.com/immich-app/immich/pull/27391 * @Hakuin123 made their first contribution in https://github.com/immich-app/immich/pull/28151 * @pinhao made their first contribution in https://github.com/immich-app/immich/pull/28162 * @AyaanMAG made their first contribution in https://github.com/immich-app/immich/pull/28155 * @DavidTheFighter made their first contribution in https://github.com/immich-app/immich/pull/28216 * @benbeckford made their first contribution in https://github.com/immich-app/immich/pull/28234 * @bhugh made their first contribution in https://github.com/immich-app/immich/pull/27884 * @SkyDev125 made their first contribution in https://github.com/immich-app/immich/pull/26971 * @aigarius made their first contribution in https://github.com/immich-app/immich/pull/25434 * @mws-weekend-projects made their first contribution in https://github.com/immich-app/immich/pull/26758 * @TheBestX11 made their first contribution in https://github.com/immich-app/immich/pull/27516 * @sakshamchawla made their first contribution in https://github.com/immich-app/immich/pull/20877 * @santoshakil made their first contribution in https://github.com/immich-app/immich/pull/28284 * @stfn42 made their first contribution in https://github.com/immich-app/immich/pull/28152 * @thowdev made their first contribution in https://github.com/immich-app/immich/pull/26723 * @SuperSandro2000 made their first contribution in https://github.com/immich-app/immich/pull/28313 * @racehd made their first contribution in https://github.com/immich-app/immich/pull/26554 * @inesiscosta made their first contribution in https://github.com/immich-app/immich/pull/27442 * @gnojus made their first contribution in https://github.com/immich-app/immich/pull/28427 * @rdeaton made their first contribution in https://github.com/immich-app/immich/pull/28341 * @agg23 made their first contribution in https://github.com/immich-app/immich/pull/28469 * @ollioddi made their first contribution in https://github.com/immich-app/immich/pull/26328 * @Caltsic made their first contribution in https://github.com/immich-app/immich/pull/28512 * @fabianwimberger made their first contribution in https://github.com/immich-app/immich/pull/28444 * @tvangemert made their first contribution in https://github.com/immich-app/immich/pull/28634 * @BlankCanvasStudio made their first contribution in https://github.com/immich-app/immich/pull/28620 * @pneuly made their first contribution in https://github.com/immich-app/immich/pull/28610 * @timjonez made their first contribution in https://github.com/immich-app/immich/pull/27452 * @moversity made their first contribution in https://github.com/immich-app/immich/pull/28723 * @nekowinston made their first contribution in https://github.com/immich-app/immich/pull/28802 * @bondeabhijeet made their first contribution in https://github.com/immich-app/immich/pull/28593 * @joojoooo made their first contribution in https://github.com/immich-app/immich/pull/27820 * @pedrovieira made their first contribution in https://github.com/immich-app/immich/pull/28887 * @yoshovski made their first contribution in https://github.com/immich-app/immich/pull/28840 * @maxinegardenas made their first contribution in https://github.com/immich-app/immich/pull/29002 * @jeevan6996 made their first contribution in https://github.com/immich-app/immich/pull/28884 * @rizwanpatel-gif made their first contribution in https://github.com/immich-app/immich/pull/29172 * @olildu made their first contribution in https://github.com/immich-app/immich/pull/29054 * @MuySup made their first contribution in https://github.com/immich-app/immich/pull/29234 * @aclerici38 made their first contribution in https://github.com/immich-app/immich/pull/29240 * @jullanggit made their first contribution in https://github.com/immich-app/immich/pull/29308 * @jameskimmel made their first contribution in https://github.com/immich-app/immich/pull/29289 * @djbravo06 made their first contribution in https://github.com/immich-app/immich/pull/29333 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.7.5...v3.0.0 - Apr 13, 2026 2.7.5# v2.7.5 ## What's Changed ### 🐛 Bug fixes * fix(server): add rate limit and deduplication to version check by @zackpollard in https://github.com/immich-app/immich/pull/27747 ### 🌐 Translations * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/27589 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.7.4...v2.7.5
- Apr 10, 2026 2.7.4# v2.7.4 This release addresses some issues with image rendering on the mobile app ## What's Changed ### 🐛 Bug fixes * refactor(mobile): cleanup iOS image loading pipeline by @LeLunZ in https://github.com/immich-app/immich/pull/27672 * fix(server): hide original filename when not showing metadata by @meesfrensel in https://github.com/immich-app/immich/pull/27581 * fix(mobile): fix Flutter cache eviction on thumbnails by @LeLunZ in https://github.com/immich-app/immich/pull/27663 * chore: pump cronet version by @shenlong-tanwen in https://github.com/immich-app/immich/pull/27685
More…
**Full Changelog**: https://github.com/immich-app/immich/compare/v2.7.3...v2.7.4 - Apr 9, 2026 2.7.3# v2.7.3 ## What's Changed ### 🐛 Bug fixes * fix(server): avoid false restore failures on large database imports by @ErasmusAndre in https://github.com/immich-app/immich/pull/27420 * fix(mobile): improve image load cancellation handling by @LeLunZ in https://github.com/immich-app/immich/pull/27624 * fix(server): people search not showing for 3 or less characters by @zackpollard in https://github.com/immich-app/immich/pull/27629 * fix(web): don't cache empty search results for people search by @zackpollard in https://github.com/immich-app/immich/pull/27632 * fix(mobile): get provider refs before async gaps in backup page by @LeLunZ in https://github.com/immich-app/immich/pull/27597 * fix: ssr open graph tags by @jrasm91 in https://github.com/immich-app/immich/pull/27639
More…
### 📚 Documentation * fix(docs): updated docker deprecation link by @mmomjian in https://github.com/immich-app/immich/pull/27633 ## New Contributors * @fluffy made their first contribution in https://github.com/immich-app/immich/pull/27606 * @ErasmusAndre made their first contribution in https://github.com/immich-app/immich/pull/27420 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.7.2...v2.7.3 - Apr 7, 2026 2.7.2You knew it was coming :sweat_smile: This release addresses the following issues: - Fix an issue with the default helmet.json file - Fix an issue with ML containers not working on some older CPUs - Fix an issue with importing external libraries <!-- Release notes generated using configuration in .github/release.yml at v2.7.2 --> ## What's Changed
More…
### 🐛 Bug fixes * fix: csp quotes by @bo0tzz in https://github.com/immich-app/immich/pull/27592 * fix(ml): downgrade numpy by @mertalev in https://github.com/immich-app/immich/pull/27591 * fix(server): library import batch size by @mertalev in https://github.com/immich-app/immich/pull/27595 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.7.0...v2.7.2 - Apr 7, 2026 2.7.0# v2.7.0 Welcome to Immich `v2.7.0`! This release includes enhancements to the asset viewer, security improvements, changes to the duplicate APIs and viewer, and a bunch of bug fixes. Keep reading below for the complete highlights and a note on the upcoming `v3.0.0` release. > [!NOTE] > We're working on a managed backup service for Immich with end-to-end encrypted backups of your library to a remote datacentre where only you hold the keys. > > We've put together a quick survey (~5 mins) to get a better idea of how you're backing things up today and what you'd actually want from something like this. Your answers help us figure out what to prioritise, so we'd really appreciate it if you took a few minutes to fill it out.
More…
> > Leave your email at the end if you're interested in joining our free closed beta when it's ready. > > https://futo-backups-survey.immich.app/ ## Highlights * Remove from album (asset viewer) * Move to locked folder (folder page) * Editor shortcuts * Create a new face on-the-fly in the face tag editor * Resolve duplicates * Helmet configuration * Version check infrastructure * Notable fix: live photo and video download in Safari * Notable fix: escape HTML in the Panorama Photo Viewer ### Remove from album The web has a new action, "Remove from album," available in the asset viewer that makes it easier to remove an asset from an album. This action is available to both album and asset owners. <img width="360" height="202" alt="image" src="https://github.com/user-attachments/assets/e5facb24-ed10-4adc-957a-37147cca5634" /> ### Move to locked folder in the Folder view Similarly, the folder view now includes the "Move to locked folder" action. <img width="1900" height="762" alt="image" src="https://github.com/user-attachments/assets/c39e792b-81da-4c31-a23f-03f96853fe8e" /> ### Editor shortcuts Users on the web can now edit with keyboard shortcuts. Press `e` to open the editor. Once in the editor, press `[` or `]` to rotate the asset +/- 90 degrees. Finally, save any changes and close the editor with `ENTER`. https://github.com/user-attachments/assets/969de104-b02d-41a6-830b-3e1a49541d14 ### Create a new face on-the-fly in the face tag editor You can now create a new face/person on the fly from the face tagging editor interface <img width="350" alt="image" src="https://github.com/user-attachments/assets/c39db0e3-da47-4421-9040-5f51650deee9" /> <img width="350" alt="image" src="https://github.com/user-attachments/assets/0c81a1ee-c54e-4167-9dff-95719fe44595" /> ### Deduplication improvements The duplicate screen has gone through a bunch of iterations since it was first introduced all the way back in May, 2024. The latest release moves a bunch of logic from the client to the server, which now automatically suggests which asset to keep based on image size and EXIF data. Additionally, the new server implementation will automatically synchronize metadata, including albums, favorite status, rating, description, visibility, location, and tags. For more information about this process, see the new [documentation](https://docs.immich.app/features/duplicates-utility). ### Helmet configuration You can now opt in to using a [Content Security Policy (CSP)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP) in Immich. The new environment variant `IMMICH_HELMET_FILE` accepts a boolean or a path to a [helmet](https://helmetjs.github.io/) configuration file. **Recommend action:** The team recommends setting `IMMICH_HELMET_FILE=true` to enable the default policy. Then, please let us know if you run into any issues with it. #### Background and details Since Immich is deployed in so many different ways, it has been hard to figure out how to enable a CSP that would not conflict with or break existing installs that might use 3rd party map providers, custom CSS, embed Immich in an iframe, or other such features. In this release, we have added the ability to both opt in to a default policy and configure a custom one. To use the default policy, simply set the environment variable `IMMICH_HELMET_FILE=true`. To use a custom policy, set the environment variable to a path on disk (within the immich-server) that contains a valid helmet configuration (e.g. `IMMICH_HELMET_FILE=/opt/immich/helmet.json`). CSP can be used to control what scripts are allowed to run on the page, which domains to load images from, etc. Additionally, it can be used to configure headers for [Referrer-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Referrer-Policy), [X-Powered-By](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Powered-By), [X-Frame-Options](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Frame-Options), and others. ### New version check infrastructure Prior to this release, instances that used the automatic version check feature would send HTTP requests to `github.com`. Now, we have set up a small service at `version.immich.cloud` to handle these types of requests. This avoids any privacy implications of connecting to `github.com` , as well as moves the request load to our own infrastructure. ### Notable fix: live photo and video download in Safari When downloading files in Safari with the same name, it will simply overwrite the file instead of automatically renaming it. In this release, the still and motion parts of a live photo are now named differently to prevent this from happening. ### Notable fix: escape HTML in panorama photo viewer In `v2.6.0`, we added the ability to show/view clip text in the panorama viewer, but introduced an XSS vulnerability, which has been fixed in this release. Interestingly, this was XSS using text in the image, which would then get read by OCR. ### Notable fix: Immich User Agent for external requests Similar to the mobile app, the server now sends a custom [User Agent](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/User-Agent) header. The format for the User Agent is `immich-server/{version}`. For example, `immich-server/2.7.0`. ## `v3.0.0` Just a heads up that this is the likely to be the last release before `v3.0.0`. Being a major release there will be a handful of breaking changes, *although it's worth noting that nothing is currently planned that requires user intervention*. It is mainly changes that impact 3rd party developers. More information and details should be available in the coming weeks. ## Support Immich <p align="center"> <img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExbjY2eWc5Y2F0ZW56MmR4aWE0dDhzZXlidXRmYWZyajl1bWZidXZpcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/87CKDqErVfMqY/giphy.gif" width="450" title="SUPPORT THE PROJECT!"> </p> If you find the project helpful, you can support Immich by purchasing a product key at https://buy.immich.app or our merchandise at https://immich.store ---- <!-- Release notes generated using configuration in .github/release.yml at v2.7.0 --> ## What's Changed ### 🚀 Features * feat: add support for helmet configuration by @jrasm91 in https://github.com/immich-app/immich/pull/27058 * feat: create new person in face editor by @alextran1502 in https://github.com/immich-app/immich/pull/27364 ### 🌟 Enhancements * feat(web): add a seperate tooltip for switching from dark to light mode by @Vogeluff in https://github.com/immich-app/immich/pull/27297 * feat(web): focus on face-editor search input by @cratoo in https://github.com/immich-app/immich/pull/27136 * feat(web): add RemoveFromAlbumAction to asset viewer nav bar by @timonrieger in https://github.com/immich-app/immich/pull/27000 * feat(web): add shortcuts to rotate images by @squishykid in https://github.com/immich-app/immich/pull/26927 * feat(server): add checksum algorithm field by @etnoy in https://github.com/immich-app/immich/pull/26573 * feat(server): resolve duplicates by @Phlogi in https://github.com/immich-app/immich/pull/25316 * chore(mobile): reduce spacing on video controls by @uhthomas in https://github.com/immich-app/immich/pull/27313 * perf(server): optimize people page query by @ffchung in https://github.com/immich-app/immich/pull/27346 * feat(web): dim photo outside hovered face bounding box by @midzelis in https://github.com/immich-app/immich/pull/27402 * feat(web): OCR overlay interactivity during zoom by @midzelis in https://github.com/immich-app/immich/pull/27039 * feat: add move to lock folder in folder view by @alextran1502 in https://github.com/immich-app/immich/pull/27384 * feat(web): highlight active person thumbnail in detail panel and edit faces panel by @midzelis in https://github.com/immich-app/immich/pull/27401 * feat: move version checks to our own infrastructure by @zackpollard in https://github.com/immich-app/immich/pull/27450 * feat: add preview button when selecting images by @johnmaguire in https://github.com/immich-app/immich/pull/27305 * fix: user-agent format by @jrasm91 in https://github.com/immich-app/immich/pull/27488 * chore(mobile): reduce buffering timer duration by @uhthomas in https://github.com/immich-app/immich/pull/27111 * fix(mobile): use key on video controls by @uhthomas in https://github.com/immich-app/immich/pull/27512 * feat(server): Add support for .ts files by @ray in https://github.com/immich-app/immich/pull/27529 ### 🐛 Bug fixes * fix(server): refresh unedited asset dimensions on metadata extraction by @michelheusschen in https://github.com/immich-app/immich/pull/27220 * fix(server): memory fragmentation by @mertalev in https://github.com/immich-app/immich/pull/27027 * fix(database restores): don't assume onboarding has completed by @insertish in https://github.com/immich-app/immich/pull/27052 * fix(web): preserve timezone when changing timestamp (Closes #25354) by @updatemike in https://github.com/immich-app/immich/pull/27095 * fix: various command palette usages by @danieldietzler in https://github.com/immich-app/immich/pull/27304 * fix(web): keep map view open after closing asset viewer by @diiogofer in https://github.com/immich-app/immich/pull/26980 * fix(web): prevent Safari from overwriting live photo image with video by @saurav61091 in https://github.com/immich-app/immich/pull/26898 * fix(mobile): video icon not showing on memories by @YarosMallorca in https://github.com/immich-app/immich/pull/27311 * fix(mobile): mismatch between system and app color when using low-chroma system color scheme by @putuprema in https://github.com/immich-app/immich/pull/27282 * fix(mobile): images loads sometimes cancel too early by @LeLunZ in https://github.com/immich-app/immich/pull/27067 * fix(mobile): streamline error handling for live photo saving by @LeLunZ in https://github.com/immich-app/immich/pull/27337 * fix(web): keep upload totals stable when dismissing items (#27247) by @Nicolas-micuda-becker in https://github.com/immich-app/immich/pull/27354 * fix(mobile): low upload timeout on android by @mertalev in https://github.com/immich-app/immich/pull/27399 * fix(web): add drop shadow to asset viewer nav bar and prevent button shrinking by @midzelis in https://github.com/immich-app/immich/pull/27404 * fix(mobile): favorite button not updating state by @YarosMallorca in https://github.com/immich-app/immich/pull/27271 * fix: detection of WebM container by @chanb22 in https://github.com/immich-app/immich/pull/24182 * fix(web): prevent AssetUpdate from adding unrelated timeline assets by @michelheusschen in https://github.com/immich-app/immich/pull/27369 * fix: withFilePath select edited or unedited file by @bwees in https://github.com/immich-app/immich/pull/27328 * fix(web): Enable stack selector in shared album view by @timonrieger in https://github.com/immich-app/immich/pull/24641 * fix(server): use substring matching for person name search by @okxint in https://github.com/immich-app/immich/pull/26903 * fix: escape html by @jrasm91 in https://github.com/immich-app/immich/pull/27469 * fix(mobile): ignore pointer events on toasts by @uhthomas in https://github.com/immich-app/immich/pull/26990 * fix(mobile): reset video controls hide timer when showing controls ch… by @uhthomas in https://github.com/immich-app/immich/pull/26985 * fix(mobile): don't update search filters in-place by @uhthomas in https://github.com/immich-app/immich/pull/26965 * fix(web): isFullScreen initial value check is incorrect by @midzelis in https://github.com/immich-app/immich/pull/27520 * fix(mobile): transparent system navbar when trash bottom bar is visible by @putuprema in https://github.com/immich-app/immich/pull/27093 * fix: timestamp handling for database backup in Web UI by @AfonsoMendoncaRibeiro in https://github.com/immich-app/immich/pull/27359 * fix: allow bots to access /s/ urls by @domints in https://github.com/immich-app/immich/pull/27579 ### 📚 Documentation * feat(docs): add keycloack example to oauth docs by @robson90 in https://github.com/immich-app/immich/pull/27425 ### 🌐 Translations * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/27029 * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/27483 ## New Contributors * @Vogeluff made their first contribution in https://github.com/immich-app/immich/pull/27297 * @updatemike made their first contribution in https://github.com/immich-app/immich/pull/27095 * @diiogofer made their first contribution in https://github.com/immich-app/immich/pull/26980 * @squishykid made their first contribution in https://github.com/immich-app/immich/pull/26927 * @Phlogi made their first contribution in https://github.com/immich-app/immich/pull/25316 * @saurav61091 made their first contribution in https://github.com/immich-app/immich/pull/26898 * @putuprema made their first contribution in https://github.com/immich-app/immich/pull/27282 * @ffchung made their first contribution in https://github.com/immich-app/immich/pull/27346 * @chanb22 made their first contribution in https://github.com/immich-app/immich/pull/24182 * @robson90 made their first contribution in https://github.com/immich-app/immich/pull/27425 * @okxint made their first contribution in https://github.com/immich-app/immich/pull/26903 * @johnmaguire made their first contribution in https://github.com/immich-app/immich/pull/27305 * @ray made their first contribution in https://github.com/immich-app/immich/pull/27529 * @AfonsoMendoncaRibeiro made their first contribution in https://github.com/immich-app/immich/pull/27359 * @domints made their first contribution in https://github.com/immich-app/immich/pull/27579 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.6.3...v2.7.0 - Mar 26, 2026 2.6.3# v2.6.3 ## What's Changed ### 🐛 Bug fixes * fix(mobile): remove upload timeout by @mertalev in https://github.com/immich-app/immich/pull/27237 * fix(web): prevent horizontal scroll bar in asset viewer side panel by @michelheusschen in https://github.com/immich-app/immich/pull/27270 * fix(web): shifting motion image button by @YarosMallorca in https://github.com/immich-app/immich/pull/27275 * chore(docs): withPeople parameter description by @YarosMallorca in https://github.com/immich-app/immich/pull/27262 * fix(server): filter out empty search suggestions by @michelheusschen in https://github.com/immich-app/immich/pull/27292 * fix: incorrect asset face sync by @bwees in https://github.com/immich-app/immich/pull/27243
More…
**Full Changelog**: https://github.com/immich-app/immich/compare/v2.6.2...v2.6.3 - # v2.5.6 This patch release addresses the following issues - Fixed an issue where thumbnail generation runs every night when `full-size image generation` option is enabled. - Fixed an issue where iOS is slow to start in some cases. - Fixed an issue where Android device cannot delete asset using Free Up Space feature if it has more than a few thousand assets
More…
<!-- Release notes generated using configuration in .github/release.yml at v2.5.6 --> ### 🐛 Bug fixes * fix: enhance album sorting functionality with order handling by @LeLunZ in https://github.com/immich-app/immich/pull/24816 * fix: add missing translations for image editor by @michelheusschen in https://github.com/immich-app/immich/pull/25957 * fix: image and video download complete notification shows "file_name" by @romoisverycool in https://github.com/immich-app/immich/pull/25975 * fix: user profile refetched each time on opening app dialog by @shenlong-tanwen in https://github.com/immich-app/immich/pull/25992 * fix: improve albums page load time on firefox by @michelheusschen in https://github.com/immich-app/immich/pull/26025 * fix: reduce queue graph jitter and include paused count by @michelheusschen in https://github.com/immich-app/immich/pull/26023 * fix(web): toast fixed location by @YarosMallorca in https://github.com/immich-app/immich/pull/25966 * fix: scroll jump when opening show & hide people by @michelheusschen in https://github.com/immich-app/immich/pull/25932 * fix(web): display storage unit next to value instead of absolute positioning in admin user page by @K0lin in https://github.com/immich-app/immich/pull/25985 * fix: iOS slow start by @alextran1502 in https://github.com/immich-app/immich/pull/26043 * fix: profile dialog auto dismiss after opening on iPad by @alextran1502 in https://github.com/immich-app/immich/pull/26046 * fix(web): prevent context menu from overflowing viewport by @ttpss930141011 in https://github.com/immich-app/immich/pull/26041 * fix: slideshow setting dropdown overflow by @michelheusschen in https://github.com/immich-app/immich/pull/26066 * fix: free up space using small batch size to reliably work on Android by @alextran1502 in https://github.com/immich-app/immich/pull/26047 * fix(web): removing a person in an asset, doesn't remove the asset in … by @dolfje in https://github.com/immich-app/immich/pull/26068 * fix(mobile): handle image stream completion when no image is emitted by @LeLunZ in https://github.com/immich-app/immich/pull/25984 * fix: evict image from cache on error during image loading by @LeLunZ in https://github.com/immich-app/immich/pull/26078 * fix(server): thumbnail queueing by @mertalev in https://github.com/immich-app/immich/pull/26077 * fix: create face exif orientation handling by @bwees in https://github.com/immich-app/immich/pull/26108 * fix(web): refresh text by @jrasm91 in https://github.com/immich-app/immich/pull/26071 * fix: correctly cancel select all assets by @michelheusschen in https://github.com/immich-app/immich/pull/26067 * fix: person thumbnail generation on edited assets by @bwees in https://github.com/immich-app/immich/pull/26112 * fix: local date time group fall back by @alextran1502 in https://github.com/immich-app/immich/pull/26110 ### 📚 Documentation * feat(docs): version policy by @mmomjian in https://github.com/immich-app/immich/pull/25979 * feat(deployment): rootless compose file by @mmomjian in https://github.com/immich-app/immich/pull/25931 * docs: update ml-hardware-acceleration.md by @cmrtdev in https://github.com/immich-app/immich/pull/25755 ### 🌐 Translations * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/25947 ## New Contributors * @ttpss930141011 made their first contribution in https://github.com/immich-app/immich/pull/26041 * @dolfje made their first contribution in https://github.com/immich-app/immich/pull/26068 * @cmrtdev made their first contribution in https://github.com/immich-app/immich/pull/25755 * @nicosemp made their first contribution in https://github.com/immich-app/immich/pull/25599 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.5.5...v2.5.6 - # v2.5.5 _`v2.5.4` was in the way of getting out, and we got another annoyance bug fixed, so we rolled it into `v2.5.5`_ Happy Friday! This release addresses more bugs from the `v2.5.0` release. Enjoy! - Fixed an issue where changing the timezone on the web changes the time instead of the timezone - Fixed an issue where background task on iOS don't get triggered as often - Fixes some issues regarding the usage of self-signed certificate and mLTS on the mobile app
More…
### 🐛 Bug fixes * fix(mobile): cancel share download when dialog is dismissed by @cmdPromptCritical in https://github.com/immich-app/immich/pull/25466 * fix: album dto docs by @jrasm91 in https://github.com/immich-app/immich/pull/25873 * fix: null validation by @jrasm91 in https://github.com/immich-app/immich/pull/25891 * fix(server): deleting stacked assets by @jrasm91 in https://github.com/immich-app/immich/pull/25874 * fix: close tag modal after tagging assets by @michelheusschen in https://github.com/immich-app/immich/pull/25884 * fix: correctly sync shared link download with metadata toggle by @michelheusschen in https://github.com/immich-app/immich/pull/25885 * fix: date time picker text color in dark mode by @alextran1502 in https://github.com/immich-app/immich/pull/25883 * fix: allow null tagIds in search dto by @michelheusschen in https://github.com/immich-app/immich/pull/25920 * fix: improve asset editor exit handling by @michelheusschen in https://github.com/immich-app/immich/pull/25917 * fix: make switch labels properly clickable by @michelheusschen in https://github.com/immich-app/immich/pull/25898 * fix: ensure theme stays in sync with @immich/ui by @michelheusschen in https://github.com/immich-app/immich/pull/25922 * fix: preserve hidden people state across pagination by @michelheusschen in https://github.com/immich-app/immich/pull/25886 * fix: file name search label by @alextran1502 in https://github.com/immich-app/immich/pull/25916 * fix(mobile): mtls on native clients by @mertalev in https://github.com/immich-app/immich/pull/25802 * fix: time zone upserts by @danieldietzler in https://github.com/immich-app/immich/pull/25889 * fix(web): Ensure profile picture is cropped to 1:1 ratio by @aditya-ai-architect in https://github.com/immich-app/immich/pull/25892 * fix(mobile): reset asset index on timeline refresh by @uhthomas in https://github.com/immich-app/immich/pull/25729 * fix: timezone in timeline bucketing by @shenlong-tanwen in https://github.com/immich-app/immich/pull/25894 * fix(mobile): Update preview and PageController position when the asset count decreases while the last item is selected by @PeterOmbodi in https://github.com/immich-app/immich/pull/25563 * fix(server): use provided database username for restore & ensure name is not mangled by @insertish in https://github.com/immich-app/immich/pull/25679 * fix: image download complete notification shows an extra {file_name} template tag by @romoisverycool in https://github.com/immich-app/immich/pull/25936 * fix: face and edit handling by @bwees in https://github.com/immich-app/immich/pull/25738 * fix: queue assets missing fullsize files for thumbnail regeneration by @midzelis in https://github.com/immich-app/immich/pull/25794 * fix: dedupe version announcement modal by @jrasm91 in https://github.com/immich-app/immich/pull/25946 * fix(cli): suppress startup messages for immich-admin by @VahantSharma in https://github.com/immich-app/immich/pull/25928 ### 📚 Documentation * docs: update manual backup/restore to match the automatic process by @insertish in https://github.com/immich-app/immich/pull/25924 * fix(docs): add missing --json-output arg to CLI example by @Xiol in https://github.com/immich-app/immich/pull/25870 * docs: remove writeTimeout on traefik example by @kaysond in https://github.com/immich-app/immich/pull/25837 ### 🌐 Translations * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/25585 ## New Contributors * @aditya-ai-architect made their first contribution in https://github.com/immich-app/immich/pull/25892 * @VahantSharma made their first contribution in https://github.com/immich-app/immich/pull/25927 * @Xiol made their first contribution in https://github.com/immich-app/immich/pull/25870 * @cmdPromptCritical made their first contribution in https://github.com/immich-app/immich/pull/25466 * @romoisverycool made their first contribution in https://github.com/immich-app/immich/pull/25936 * @didekoning made their first contribution in https://github.com/immich-app/immich/pull/25937 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.5.3...v2.5.5 - ## What's Changed ### 🐛 Bug fixes * chore: remove random code snippet by @jrasm91 in https://github.com/immich-app/immich/pull/25677 * fix: reset and unsaved change states in editor by @bwees in https://github.com/immich-app/immich/pull/25588 * fix: no notification if release check is disabled by @jrasm91 in https://github.com/immich-app/immich/pull/25688 * fix(mobile): hide latest version if disabled by @uhthomas in https://github.com/immich-app/immich/pull/25691 * fix(web): enable asset viewer navigation across memory boundaries by @midzelis in https://github.com/immich-app/immich/pull/25741 * fix: upload progress bar flickering by @alextran1502 in https://github.com/immich-app/immich/pull/25829 * fix: prevent stale values in edit user form after save by @michelheusschen in https://github.com/immich-app/immich/pull/25859 * fix: prevent album page get rebuilt when resuming app by @alextran1502 in https://github.com/immich-app/immich/pull/25862
More…
* fix: prevent backspace from accidentally triggering delete modals by @michelheusschen in https://github.com/immich-app/immich/pull/25858 * fix: metadata extraction race condition by @danieldietzler in https://github.com/immich-app/immich/pull/25866 * fix: reset zoom when navigating between assets by @michelheusschen in https://github.com/immich-app/immich/pull/25863 ### 📚 Documentation * docs(openapi): Add descriptions to OpenAPI specification by @timonrieger in https://github.com/immich-app/immich/pull/25185 * fix(docs): clarify supported vector version by @mmomjian in https://github.com/immich-app/immich/pull/25753 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.5.2...v2.5.3 - # v2.5.2 _`v2.5.1` has been sacrificed for the release God, so the Android app can now be released_ > [!NOTE] > This version of the mobile app will pull down some data from the server to fix the incorrect data in the mobile app local database, so you will see the sync icon running for a little bit ## Hotfixes
More…
- Fixed a bug where the video aspect ratio is played incorrectly for the remote asset - Fixed a bug where memory generation failed - Fixed a bug where memories don't show on the web until the page is refreshed - Fixed a bug where the `Load original image` option doesn't render the image on iOS ## What's Changed ### 🐛 Bug fixes * fix: deleting asset from asset-viewer on search results by @midzelis in https://github.com/immich-app/immich/pull/25596 * fix: escape handling in search asset viewer by @danieldietzler in https://github.com/immich-app/immich/pull/25621 * fix: correctly show owner in album options modal by @danieldietzler in https://github.com/immich-app/immich/pull/25618 * fix(server): don't assume maintenance action is set by @insertish in https://github.com/immich-app/immich/pull/25622 * fix: album card ranges by @danieldietzler in https://github.com/immich-app/immich/pull/25639 * fix(mobile): show controls by default on motion photos by @goalie2002 in https://github.com/immich-app/immich/pull/25638 * fix: escape handling by @danieldietzler in https://github.com/immich-app/immich/pull/25627 * fix(mobile): set correct system-ui mode on asset viewer init by @goalie2002 in https://github.com/immich-app/immich/pull/25610 * fix(mobile): actually load original image by @mertalev in https://github.com/immich-app/immich/pull/25646 * fix: width and height migration issue by @alextran1502 in https://github.com/immich-app/immich/pull/25643 * fix: memory lane by @jrasm91 in https://github.com/immich-app/immich/pull/25652 * fix: memory generation by @jrasm91 in https://github.com/immich-app/immich/pull/25650 * fix(mobile): tall image scrolling by @ByteSizedMarius in https://github.com/immich-app/immich/pull/25649 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.5.0...v2.5.2 - # 2.4.1 ## What's Changed ### 🐛 Bug fixes * fix(web): shared link expiry does not save by @YarosMallorca in https://github.com/immich-app/immich/pull/24569 * fix(mobile): infinite loading screen when hiding UI in map viewer on iOS by @timonrieger in https://github.com/immich-app/immich/pull/24563 * fix(web): auto-start slideshow when confirming settings modal by @timonrieger in https://github.com/immich-app/immich/pull/24629 * fix(mobile): merged video in On This Device played with incorrect ratio by @alextran1502 in https://github.com/immich-app/immich/pull/24656 * fix: dateTimeOriginal timezone updates by @danieldietzler in https://github.com/immich-app/immich/pull/24712 * fix(web): timezone dropdown showing "No results" when seconds are set to 00 by @timonrieger in https://github.com/immich-app/immich/pull/24662
More…
* fix(web): search-bar usability improvements by @LeLunZ in https://github.com/immich-app/immich/pull/24705 ### 📚 Documentation * fix(docs): add & fix missing alt text to store badge images by @divulgacheur in https://github.com/immich-app/immich/pull/24637 ## New Contributors * @timonrieger made their first contribution in https://github.com/immich-app/immich/pull/24563 * @LeLunZ made their first contribution in https://github.com/immich-app/immich/pull/24705 * @divulgacheur made their first contribution in https://github.com/immich-app/immich/pull/24637 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.4.0...v2.4.1 - # 2.4.1 ## What's Changed ### 🐛 Bug fixes * fix(web): shared link expiry does not save by @YarosMallorca in https://github.com/immich-app/immich/pull/24569 * fix(mobile): infinite loading screen when hiding UI in map viewer on iOS by @timonrieger in https://github.com/immich-app/immich/pull/24563 * fix(web): auto-start slideshow when confirming settings modal by @timonrieger in https://github.com/immich-app/immich/pull/24629 * fix(mobile): merged video in On This Device played with incorrect ratio by @alextran1502 in https://github.com/immich-app/immich/pull/24656 * fix: dateTimeOriginal timezone updates by @danieldietzler in https://github.com/immich-app/immich/pull/24712 * fix(web): timezone dropdown showing "No results" when seconds are set to 00 by @timonrieger in https://github.com/immich-app/immich/pull/24662
More…
* fix(web): search-bar usability improvements by @LeLunZ in https://github.com/immich-app/immich/pull/24705 ### 📚 Documentation * fix(docs): add & fix missing alt text to store badge images by @divulgacheur in https://github.com/immich-app/immich/pull/24637 ## New Contributors * @timonrieger made their first contribution in https://github.com/immich-app/immich/pull/24563 * @LeLunZ made their first contribution in https://github.com/immich-app/immich/pull/24705 * @divulgacheur made their first contribution in https://github.com/immich-app/immich/pull/24637 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.4.0...v2.4.1 - # v2.4.0 ## Highlights Welcome to the release `v2.4.0` of Immich. This release focuses on bug fixes, QoL improvements, and polished UI components and animation across mobile and the web. Let’s dive right in. * Show the owner's name in the shared album * Command palette * Change search type directly in the search bar * Better action button placement in the mobile asset viewer
More…
* Notable fix: fix an issue where metadata extraction could fail on high concurrency ### Show the owner's name in the shared album. On the web, in shared albums, you can now toggle an option to display the asset’s owner name at the bottom right corner of the thumbnail. <img width="800" alt="asset owner name in album" src="https://github.com/user-attachments/assets/90f425b3-91d4-4ef3-9455-234b2c28b0f0" /> ### Command palette The web app now has an integrated command palette, which can be opened `ctrl + k` on Windows/Linux or `cmd + k` on macOS. This first iteration of this lets you quickly navigate between administration pages by typing the name of the page you want to go to. It also already supports some common actions when on the respective admin pages, many of which also support shortcuts. Have a look around and check them out! <img width="800" alt="command pallet" src="https://github.com/user-attachments/assets/e9fb1638-a926-4df2-92ce-3ddfd0b04e02" /> ### Change search type directly in the search bar You can now click on the pill from the search bar to select a different search type without opening the search filter panel. <img width="800" alt="search type" src="https://github.com/user-attachments/assets/493d0b74-8b6f-4581-b2ba-9f00da9bcc30" /> ### Better placement of action buttons in the mobile asset viewer Previously, to perform a specific action on the asset, you needed first to swipe up to open the detail panel, then swipe all the way to the right and tap the action. It limits the discoverability of some actions. To help resolve that issue, all the action buttons in the detail panel are now moved to the drop-down menu when tapping on the vertical dot icon (or kebab menu), along with some buttons that used to be on the top bar, clearing up space to display more helpful information when viewing the asset. <img width="350" alt="kebab menu" src="https://github.com/user-attachments/assets/7b4610c4-d04b-4f5e-8b7b-02504a9ee531" /> ## Support Immich <p align="center"> <img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExbjY2eWc5Y2F0ZW56MmR4aWE0dDhzZXlidXRmYWZyajl1bWZidXZpcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/87CKDqErVfMqY/giphy.gif" width="450" title="SUPPORT THE PROJECT!"> </p> If you find the project helpful, you can support Immich by purchasing a product key at https://buy.immich.app or our merchandise at https://immich.store ## What's Changed ### 🫥 Deprecated Changes * feat: queues by @jrasm91 in https://github.com/immich-app/immich/pull/24142 ### 🚀 Features * feat: improve performance: don't sort timeline buckets from server by @midzelis in https://github.com/immich-app/immich/pull/24032 * feat: command palette by @danieldietzler in https://github.com/immich-app/immich/pull/23693 * feat(web): Shared album owner labels by @xCJPECKOVERx in https://github.com/immich-app/immich/pull/21171 * feat(mobile): persist album sorting & layout in settings by @YarosMallorca in https://github.com/immich-app/immich/pull/22133 * feat: queue detail page by @jrasm91 in https://github.com/immich-app/immich/pull/24352 * chore(mobile): add kebabu menu in asset viewer by @idubnori in https://github.com/immich-app/immich/pull/24387 * feat(mobile): create new album from add to modal by @YarosMallorca in https://github.com/immich-app/immich/pull/24431 * feat(mobile): move buttons in the bottom sheet to the kebabu menu by @idubnori in https://github.com/immich-app/immich/pull/24175 ### 🌟 Enhancements * feat(web): allow navigating the map with arrow keys by @lukashass in https://github.com/immich-app/immich/pull/24080 * feat: separate camera and lens info in detail panel by @fabianbees in https://github.com/immich-app/immich/pull/23670 * feat(web): shared link card tweaks by @jrasm91 in https://github.com/immich-app/immich/pull/24192 * feat(server): exclude syncthing folders from external libraries by @SaphuA in https://github.com/immich-app/immich/pull/24240 * feat(web): search type selection dropdown by @YarosMallorca in https://github.com/immich-app/immich/pull/24091 * feat: header context menu by @jrasm91 in https://github.com/immich-app/immich/pull/24374 * feat(mobile): move top bar buttons into kebabu menu in AssetViewer by @idubnori in https://github.com/immich-app/immich/pull/24461 * feat(web): asset selection bar in tags view by @YarosMallorca in https://github.com/immich-app/immich/pull/24522 * feat(web): slideshow feature on shared albums by @YarosMallorca in https://github.com/immich-app/immich/pull/24598 * feat: replace heart icons to thumbs-up across activity by @idubnori in https://github.com/immich-app/immich/pull/24590 ### 🐛 Bug fixes * fix: effect loop by @jrasm91 in https://github.com/immich-app/immich/pull/24014 * fix: do not clear hash on updated_at change by @shenlong-tanwen in https://github.com/immich-app/immich/pull/24039 * fix: disable animation "add to" action menu by @bwees in https://github.com/immich-app/immich/pull/24040 * fix: Use correct app store link by @Mraedis in https://github.com/immich-app/immich/pull/24062 * fix: show archived assets in favorite page by @bwees in https://github.com/immich-app/immich/pull/24052 * fix(mobile): first video memory on page doesn't play by @YarosMallorca in https://github.com/immich-app/immich/pull/23906 * feat(web): show detected faces in spherical photos by @meesfrensel in https://github.com/immich-app/immich/pull/23974 * fix: add users to album by @danieldietzler in https://github.com/immich-app/immich/pull/24133 * fix(server): sanitize DB_URL for pg_dumpall to remove unknown query params by @lutostag in https://github.com/immich-app/immich/pull/23333 * fix: use proper updatedAt value in local assets by @shenlong-tanwen in https://github.com/immich-app/immich/pull/24137 * fix: albums page reactivity loops by @danieldietzler in https://github.com/immich-app/immich/pull/24046 * fix: getAspectRatio fallback to db width and height by @shenlong-tanwen in https://github.com/immich-app/immich/pull/24131 * fix(web): fix support & feedback modal wrapping by @Snowknight26 in https://github.com/immich-app/immich/pull/24018 * fix: don't get OCR data in shared link by @alextran1502 in https://github.com/immich-app/immich/pull/24152 * fix: duration extraction by @jrasm91 in https://github.com/immich-app/immich/pull/24178 * fix(ml): Upgrade ONNX Runtime to v1.22.1 to fix ROCm build failures by @LukaPrebil in https://github.com/immich-app/immich/pull/24045 * fix: update timeline-manager after archive actions by @midzelis in https://github.com/immich-app/immich/pull/24010 * fix: theme switcher by @jrasm91 in https://github.com/immich-app/immich/pull/24209 * fix: label 'for' attributes in user-api-key-grid by @kimsey0 in https://github.com/immich-app/immich/pull/24232 * fix(mobile): enable backup text overflows by @YarosMallorca in https://github.com/immich-app/immich/pull/24227 * fix(web): integrate zoom toggle button into panorama photo viewer by @meesfrensel in https://github.com/immich-app/immich/pull/24189 * fix(web): use full tag path when creating nested subtags by @NiklasvonM in https://github.com/immich-app/immich/pull/24249 * fix: only generate memory based on users assets by @alextran1502 in https://github.com/immich-app/immich/pull/24151 * fix(mobile): docs link by @mmomjian in https://github.com/immich-app/immich/pull/24277 * fix(server): use bigrams for cjk by @mertalev in https://github.com/immich-app/immich/pull/24285 * fix(ml): do not upscale preview by @mertalev in https://github.com/immich-app/immich/pull/24322 * fix(web): open onboarding documentation link in new tab by @carbonemys in https://github.com/immich-app/immich/pull/24289 * fix(mobile): use correct timezone displayed in the info sheet by @kao-byte in https://github.com/immich-app/immich/pull/24310 * fix(web): folder view sort oder by @etnoy in https://github.com/immich-app/immich/pull/24337 * fix(server): do not delete offline assets by @mertalev in https://github.com/immich-app/immich/pull/24355 * fix: exposure info and better readability by @alextran1502 in https://github.com/immich-app/immich/pull/24344 * fix: Adjust the zoom level by @jforseth210 in https://github.com/immich-app/immich/pull/24353 * fix: local full sync on Android on resume by @alextran1502 in https://github.com/immich-app/immich/pull/24348 * fix(web): Add minimum content size to logo for consistent visual on small screens by @kiloomar in https://github.com/immich-app/immich/pull/24372 * fix: use adjustment time in iOS for hash reset by @shenlong-tanwen in https://github.com/immich-app/immich/pull/24047 * fix(server): update exiftool-vendored to v34 for more robust metadata extraction by @skatsubo in https://github.com/immich-app/immich/pull/24424 * fix(mobile): cannot create album while name field is focused by @YarosMallorca in https://github.com/immich-app/immich/pull/24449 * fix(web): [album table view] long album title overflows table row by @simonkub in https://github.com/immich-app/immich/pull/24450 * fix(mobile): fix overflow text in backup card by @YarosMallorca in https://github.com/immich-app/immich/pull/24448 * fix(mobile): timeline bottom padding on selection by @YarosMallorca in https://github.com/immich-app/immich/pull/24480 * feat(mobile): Localized backup upload details page by @ArnyminerZ in https://github.com/immich-app/immich/pull/21136 * fix(mobile): iOS local permission dialog extra whitespace by @kurtmckee in https://github.com/immich-app/immich/pull/24491 * fix(mobile): versionStatus.message text overflow by @idubnori in https://github.com/immich-app/immich/pull/24504 * fix(server): prevent metadata extraction failures on large video files by @hubert-taieb in https://github.com/immich-app/immich/pull/24094 * fix(web): show inferred timezone in date editor by @skatsubo in https://github.com/immich-app/immich/pull/24513 * fix(mobile): local videos with '#' don't play on android by @YarosMallorca in https://github.com/immich-app/immich/pull/24373 * fix: refresh appear in list after asset is added to a current or new album by @alextran1502 in https://github.com/immich-app/immich/pull/24523 * fix(mobile): birthday off by one day on remote by @YarosMallorca in https://github.com/immich-app/immich/pull/24527 * fix(web): download panel being hidden by admin sidebar by @diogotcorreia in https://github.com/immich-app/immich/pull/24583 * fix(web): recent search doesn't use search type by @YarosMallorca in https://github.com/immich-app/immich/pull/24578 * fix(server): only extract image's duration if format supports animation by @meesfrensel in https://github.com/immich-app/immich/pull/24587 * fix(mobile): local delete missing from sheet on some routes by @YarosMallorca in https://github.com/immich-app/immich/pull/24505 * fix(mobile): better UI for metadata panel by @kao-byte in https://github.com/immich-app/immich/pull/24428 * fix: shared link expiration and small styling by @alextran1502 in https://github.com/immich-app/immich/pull/24566 * fix: asset update race condition by @danieldietzler in https://github.com/immich-app/immich/pull/24384 ### 📚 Documentation * docs: DB_STORAGE_TYPE is only used by the database container by @dionysius in https://github.com/immich-app/immich/pull/24215 * fix(docs): build `cli` for e2e tests by @roschaefer in https://github.com/immich-app/immich/pull/24184 * docs(faq): add more info on archiving by @etnoy in https://github.com/immich-app/immich/pull/24326 * fix(docs): server and machine-learning use IMMICH_HOST and IMMICH_PORT by @dionysius in https://github.com/immich-app/immich/pull/24335 * fix: prevent OOM on nginx reverse proxy servers by @NicholasFlamy in https://github.com/immich-app/immich/pull/24351 * fix(docs): obsolete docs about rootless docker by @roschaefer in https://github.com/immich-app/immich/pull/24376 * fix(docs): websockets in nginx example by @fourthwall in https://github.com/immich-app/immich/pull/24411 * fix(docs): slow upload speed with example nginx reverse proxy config by @goalie2002 in https://github.com/immich-app/immich/pull/24490 * fix(docs): typo in maintenance mode command by @bartvanvelden in https://github.com/immich-app/immich/pull/24518 ### 🌐 Translations * chore: add new language requests by @danieldietzler in https://github.com/immich-app/immich/pull/23991 * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/24004 ## New Contributors * @ujjwal123123 made their first contribution in https://github.com/immich-app/immich/pull/24101 * @lutostag made their first contribution in https://github.com/immich-app/immich/pull/23333 * @LukaPrebil made their first contribution in https://github.com/immich-app/immich/pull/24045 * @kimsey0 made their first contribution in https://github.com/immich-app/immich/pull/24232 * @SaphuA made their first contribution in https://github.com/immich-app/immich/pull/24240 * @dionysius made their first contribution in https://github.com/immich-app/immich/pull/24215 * @NiklasvonM made their first contribution in https://github.com/immich-app/immich/pull/24249 * @kao-byte made their first contribution in https://github.com/immich-app/immich/pull/24098 * @carbonemys made their first contribution in https://github.com/immich-app/immich/pull/24289 * @kiloomar made their first contribution in https://github.com/immich-app/immich/pull/24372 * @fourthwall made their first contribution in https://github.com/immich-app/immich/pull/24411 * @simonkub made their first contribution in https://github.com/immich-app/immich/pull/24450 * @ArnyminerZ made their first contribution in https://github.com/immich-app/immich/pull/21136 * @kurtmckee made their first contribution in https://github.com/immich-app/immich/pull/24491 * @hubert-taieb made their first contribution in https://github.com/immich-app/immich/pull/24094 * @bartvanvelden made their first contribution in https://github.com/immich-app/immich/pull/24518 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.3.1...v2.4.0 - # v2.3.1 ## Hot fixes Fixed an issue where the new version notification pop-up causes the web app to enter a rendering loop and freeze up. > [!IMPORTANT] > We encourage all users to update to this version to avoid the issue that will happen when the next minor update is available, i.e., `v2.4.0` ## What's Changed
More…
### 🐛 Bug fixes * fix: supporter badge by @jrasm91 in https://github.com/immich-app/immich/pull/24012 * fix: new update notification cause rendering loop by @alextran1502 in https://github.com/immich-app/immich/pull/24013 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.3.0...v2.3.1 - # v2.3.0 *Loa loa loa, the stock is running low on [Retro DVD ](https://immich.store/products/immich-retro)**📀**! If you want to get one for yourself, you still can, but once this batch is gone, we won’t be making any more, **EVER!** So get one while you can from [immich.store](https://immich.store/)!* <img alt="image" src="https://github.com/user-attachments/assets/f5977e5f-aabe-4c7a-a8d3-ee44b43b0f15" /> > [!IMPORTANT] > We will start the work on removing the old mobile timeline soon. If you are still using the old timeline, please make sure to switch to the new timeline. If this message does not make sense to you, you can ignore it as you are already on the new timeline
More…
## Highlights Welcome to the release `v2.3.0` of Immich. This version comes with enhancements to the OCR feature and many bug fixes. This release also introduces foundational support for workflows and an application restore mechanism directly in the web UI. Let’s dive into some of the highlights below * OCR Improvements * Add/move action in mobile app * Delete synchronization - Android * Notable fixes: app freezes on resume on iOS * Sneak peek: Maintenance mode and workflow ### Add/move action in mobile app The asset viewer in the mobile app now includes an “Add to” button that lets you quickly add an asset to an album, the locked folder, or the archive. Thanks @happychriss! <p align="center"> <img width="300" alt="Tapping the Add to button presents a menu to add/move an asset" src="https://github.com/user-attachments/assets/21327e0b-ae5f-43b2-9f44-b75655895852" /> </p> ### OCR Improvement This release includes several enhancements to the OCR feature. There are now language-specific OCR model variants, extending support to Greek, Korean, Russian, Belarusian, Ukrainian, Thai, and languages using the Latin script. All variants (including the existing models) support English as well. There is also an English-only model that performs better for libraries where multilingual support is not needed. To switch to one of these models, you can navigate to the [OCR settings](https://my.immich.app/admin/system-settings?isOpen=machine-learning+ocr), choose the relevant model, save, then re-run OCR on all assets through the [Job Status](https://my.immich.app/admin/jobs-status) page. <p align="center"> <img width="800" alt="image" src="https://github.com/user-attachments/assets/86008221-4116-43d3-bd0d-f954e0e1a83a" /> </p> The OCR information can now be viewed by toggling a button in the web viewer. You can hover the mouse over the text and copy it. <p align="center"> <img width="500" alt="image" src="https://github.com/user-attachments/assets/693bcfd0-f4f0-40c1-a292-403b04166514" /> </p> ### Delete synchronization on Android. This release restores the previous mechanism for synchronizing the deletion action between the web and the mobile app. In addition to putting the asset in Immich’s trash bin, the mechanism also puts the deleted asset in the device’s trash system when the app opens. The mechanism has been reworked to align with the new data sync mechanism in the mobile app. You can enable the mechanism in the `App Settings > Advanced > Sync Remote Deletions` <p align="center"> <img width="400" alt="image" src="https://github.com/user-attachments/assets/60d3f53d-a5f8-4235-944d-0e2e80040148" /> </p> ### Notable fixes: app freezes on resume on iOS Previously, iOS background tasks, such as local or remote data sync and background uploads, could abruptly terminate database operations when the iOS’s background time expires, leaving the database lock unreleased. It leads to an annoying symptom: the app appears to freeze when opening from the background, requiring a hard restart (swipe up to close, then reopen) to regain access to the database. The bug happened sporadically and was incredibly hard to track down. Thanks to the relentless pursuit of the bug, we believe it has been caught through our extensive testing. Please let us know if you are still getting “bugged” by this one in the new version. ### Sneak peek: Maintenance mode and workflow We can’t contain the excitement to share two exciting items in the work, which have some portions already merged into the server, and are ready to be built upon #### Maintenance mode This mode will allow the admin to put the server into a state where no one can access it without entirely shutting it down. This paves the way for restoring the server from a previous point in time directly from the web UI, no more fidgeting with the terminal. https://github.com/user-attachments/assets/26aa5f7f-5e5f-45b5-aa89-347325f10f41 #### Workflow The foundation of workflows and plugins also made its way to the server; the UI is being worked on. This feature will enable many more custom use cases that are not available in the core application. The community can write custom plugins and share them. We are very excited to see this happening faster than anticipated. Below is a screenshot of how the feature could look. <p align="center"> <img width="600" height="4574" alt="image" src="https://github.com/user-attachments/assets/c0fccc92-6d9b-41e9-b271-574568425ba3" /> <img width="600" height="1822" alt="image" src="https://github.com/user-attachments/assets/c8991763-cd45-4c1e-90ad-5a1179eef789" /> </p> ## What's Changed ### 🚀 Features * feat: Add random memories resource by @jpg0 in https://github.com/immich-app/immich/pull/20025 * feat(mobile): Quick date picker in the search page by @exelix11 in https://github.com/immich-app/immich/pull/22653 * feat: workflow foundation by @alextran1502 in https://github.com/immich-app/immich/pull/23621 * feat(mobile): add to album from asset viewer by @happychriss in https://github.com/immich-app/immich/pull/23608 * feat: maintenance mode by @insertish in https://github.com/immich-app/immich/pull/23431 * feat(mobile): location edit from asset viewer by @bwees in https://github.com/immich-app/immich/pull/23925 * feat: timeline e2e tests by @midzelis in https://github.com/immich-app/immich/pull/23895 * feat: show OCR bounding box by @alextran1502 in https://github.com/immich-app/immich/pull/23717 ### 🌟 Enhancements * fix(web): add URLs to results in large files utility by @Snowknight26 in https://github.com/immich-app/immich/pull/23617 * feat(ml): add preload and fp16 settings for ocr by @mertalev in https://github.com/immich-app/immich/pull/23576 * feat(ml): multilingual ocr by @mertalev in https://github.com/immich-app/immich/pull/23527 * feat(mobile): Show lens model information in the asset viewer detail panel by @fabianbees in https://github.com/immich-app/immich/pull/23601 * feat: lazy load thumbnails on people and place list by @lukashass in https://github.com/immich-app/immich/pull/23682 * feat: make memories slideshow duration configurable by @meesfrensel in https://github.com/immich-app/immich/pull/22783 * feat(mobile): chat-style for asset activity view by @idubnori in https://github.com/immich-app/immich/pull/23347 * feat: show update version info by @alextran1502 in https://github.com/immich-app/immich/pull/23698 * feat(mobile): album activity deep link by @idubnori in https://github.com/immich-app/immich/pull/23737 * feat(web): animate gifs on hover by @meesfrensel in https://github.com/immich-app/immich/pull/23198 * feat(web): disable searching by disabled features by @meesfrensel in https://github.com/immich-app/immich/pull/23798 * feat: library details page by @danieldietzler in https://github.com/immich-app/immich/pull/23908 * feat(web): always view original of animated images by @meesfrensel in https://github.com/immich-app/immich/pull/23842 * feat: add originalPath for external library assets in dedupe by @kprkpr in https://github.com/immich-app/immich/pull/23710 ### 🐛 Bug fixes * feat: exif medium tests by @jrasm91 in https://github.com/immich-app/immich/pull/23561 * fix(web): fix timezone dropdown for timestamps lacking milliseconds by @skatsubo in https://github.com/immich-app/immich/pull/23615 * fix(web): "select all" button in trash and permanently deleted count by @Yonyc in https://github.com/immich-app/immich/pull/23594 * fix: fully sync local library on app restart by @alextran1502 in https://github.com/immich-app/immich/pull/23323 * fix: check if unmetered instead of wifi by @shenlong-tanwen in https://github.com/immich-app/immich/pull/23380 * fix(mobile): Add fade-in to asset viewer transition by @goalie2002 in https://github.com/immich-app/immich/pull/23692 * fix(web): i18n for admin>users>sessions by @meesfrensel in https://github.com/immich-app/immich/pull/23756 * feat: opt-in sync of deletes and restores from web to Android (beta timeline) by @PeterOmbodi in https://github.com/immich-app/immich/pull/20473 * fix(mobile): Set dynamic height of actions row in BottomSheet by @vitoksmile in https://github.com/immich-app/immich/pull/23755 * fix(mobile): Hide download button in asset viewer "immersive mode" by @goalie2002 in https://github.com/immich-app/immich/pull/23720 * fix(mobile): sync album and asset activity state when add/remove asset level activity by @idubnori in https://github.com/immich-app/immich/pull/23484 * fix(server): properly handle HEAD requests to SSR paths by @dav-wolff in https://github.com/immich-app/immich/pull/23788 * fix(web): make sliding window cover all visible space to show small number of assets by @meesfrensel in https://github.com/immich-app/immich/pull/23796 * refactor: shared links modals by @danieldietzler in https://github.com/immich-app/immich/pull/23803 * chore: bump background_downloader by @shenlong-tanwen in https://github.com/immich-app/immich/pull/23839 * fix(server): include the previous year in memories for January 1, 2, 3 by @skatsubo in https://github.com/immich-app/immich/pull/23832 * fix: timeline scroll after navigate by @danieldietzler in https://github.com/immich-app/immich/pull/23664 * fix: prefer filename from body over path in mime validation by @shenlong-tanwen in https://github.com/immich-app/immich/pull/23810 * fix(web): keep album timeline when selecting cover by @roadev in https://github.com/immich-app/immich/pull/23819 * fix: word wrap on custom link preview by @100daysummer in https://github.com/immich-app/immich/pull/23942 * fix(mobile): delete from device warning shows incorrectly by @YarosMallorca in https://github.com/immich-app/immich/pull/23935 * fix: deep link to last asset by @midzelis in https://github.com/immich-app/immich/pull/23920 * fix: null dereference when canceling bucket in album by @midzelis in https://github.com/immich-app/immich/pull/23924 * fix: incorrect header height calculation in estimated month height by @midzelis in https://github.com/immich-app/immich/pull/23923 * chore: update drift by @alextran1502 in https://github.com/immich-app/immich/pull/23877 * chore: reset remote sync on app update by @shenlong-tanwen in https://github.com/immich-app/immich/pull/23969 * fix(server): copy relevant panorama tags to preview image by @meesfrensel in https://github.com/immich-app/immich/pull/23953 * fix: unarchive action doesn't update archive page by @midzelis in https://github.com/immich-app/immich/pull/23987 ### 📚 Documentation * chore: update config.json example by @bo0tzz in https://github.com/immich-app/immich/pull/23471 * fix(docs): bump docs for PG versions by @mmomjian in https://github.com/immich-app/immich/pull/23714 * feat: endpoint descriptions by @jrasm91 in https://github.com/immich-app/immich/pull/23813 * feat: endpoint versioning by @jrasm91 in https://github.com/immich-app/immich/pull/23858 * chore: include link to discord server when referencing contribution channel by @Hritik14 in https://github.com/immich-app/immich/pull/23728 * fix(docs): update Readme links by @mmomjian in https://github.com/immich-app/immich/pull/23959 ### 🌐 Translations * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/23449 ## New Contributors * @FreeWind6 made their first contribution in https://github.com/immich-app/immich/pull/23627 * @Yonyc made their first contribution in https://github.com/immich-app/immich/pull/23594 * @fabianbees made their first contribution in https://github.com/immich-app/immich/pull/23601 * @exelix11 made their first contribution in https://github.com/immich-app/immich/pull/22653 * @AlexanderS made their first contribution in https://github.com/immich-app/immich/pull/23838 * @Hritik14 made their first contribution in https://github.com/immich-app/immich/pull/23728 * @roadev made their first contribution in https://github.com/immich-app/immich/pull/23819 * @zebrapurring made their first contribution in https://github.com/immich-app/immich/pull/22145 * @happychriss made their first contribution in https://github.com/immich-app/immich/pull/23608 * @insertish made their first contribution in https://github.com/immich-app/immich/pull/23948 * @100daysummer made their first contribution in https://github.com/immich-app/immich/pull/23942 * @kprkpr made their first contribution in https://github.com/immich-app/immich/pull/23710 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.2.3...v2.3.0 - # v2.2.3 ## What's Changed ### 🐛 Bug fixes * fix(ml): ocr inputs not resized correctly by @mertalev in https://github.com/immich-app/immich/pull/23541 * fix(web): search bar accessibility by @ben-basten in https://github.com/immich-app/immich/pull/23550 * fix: exif gps parsing of malformed data by @danieldietzler in https://github.com/immich-app/immich/pull/23551 * chore: correct hosted isar paths in fdroid_build_isar.sh by @gereeter in https://github.com/immich-app/immich/pull/23529 * fix(mobile): handle empty original filename by @skatsubo in https://github.com/immich-app/immich/pull/23469 * fix(mobile): ignore patch releases for app version alerts by @bwees in https://github.com/immich-app/immich/pull/23565
More…
## New Contributors * @gereeter made their first contribution in https://github.com/immich-app/immich/pull/23529 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.2.2...v2.2.3 - <!-- Release notes generated using configuration in .github/release.yml at v2.2.2 --> ## What's Changed ### 🐛 Bug fixes * fix(web): mobile scrubber on page load by @danieldietzler in https://github.com/immich-app/immich/pull/23488 * fix(mobile): disable asset sync clean up for more investigation by @alextran1502 in https://github.com/immich-app/immich/pull/23531 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.2.1...v2.2.2
- <!-- Release notes generated using configuration in .github/release.yml at v2.2.1 --> ## What's Changed ### 🐛 Bug fixes * fix(mobile): regression - not displayed activity button in top bar by @idubnori in https://github.com/immich-app/immich/pull/23366 * fix: asset copy validation error by @danieldietzler in https://github.com/immich-app/immich/pull/23387 * fix(ml): ocr failing with rootless docker by @mertalev in https://github.com/immich-app/immich/pull/23402 * fix(mobile): video seeking on android by @mertalev in https://github.com/immich-app/immich/pull/23405 * fix: button condition rendering by @alextran1502 in https://github.com/immich-app/immich/pull/23400 * fix: view in timeline does not jump to the timeline correctly by @alextran1502 in https://github.com/immich-app/immich/pull/23428
More…
* fix: show close button on purchase modal by @alextran1502 in https://github.com/immich-app/immich/pull/23436 ### 📚 Documentation * chore: update android signing fingerprints to docs by @luneth in https://github.com/immich-app/immich/pull/23361 ### 🌐 Translations * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/23375 ## New Contributors * @luneth made their first contribution in https://github.com/immich-app/immich/pull/23361 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.2.0...v2.2.1 - # v2.2.0 *The month following our [stable release ](https://immich.app/blog/stable-release)**🎉** has flown by! We are blown away by the support from everyone around this milestone, especially for the [Retro DVD ](https://immich.store/products/immich-retro)**📀**! If you want to get one for yourself, you still can, but once this batch is gone, we won’t be making any more, **EVER!** So get one while you can from [immich.store](https://immich.store/)!* <img width="2292" height="209" alt="image" src="https://github.com/user-attachments/assets/3829caef-8674-4ab0-a0d0-954c317e8987" /> ## Highlights Welcome to version `v2.2.0` of Immich. This release comes with the traditional Immich fashion, where the features and enhancements list is longer than the bug fixes list. Let’s dive right into the highlights of this exciting release
More…
* New mutable Docker tag for `v2` versions * Optical Character Recognition (OCR) * \[Web\] WASM implementation for justified layout calculation 🦀 * \[Web\] UI improvement for the review duplicates screen * \[Mobile\] Show albums in the asset’s detail sheet * \[Mobile\] Show similar photos * \[Mobile\] Chat-style for activity view * \[Mobile\] High precision seeking for video * \[Mobile\] New UI to present server-client version mismatch * Option to create a new user as an admin * Notable fix: older iOS devices freeze when spawning background tasks * Notable fix: temporary files on iOS are now cleaned up properly ### Docker tag for `v2` versions The `example.env` file has been updated to use `IMMICH_RELEASE=v2`, which is a mutable Docker tag that points to the latest `2.x.x` release image. ### Optical Character Recognition (OCR) OCR search has been one of the most requested features on our users' wishlists. Thanks to the fantastic work of @flipped-1121 and @mertalev, Immich can now recognize texts in images, adding a powerful capability to its already powerful search features. This will help users find lost family recipes or a crypto wallet’s passphrase more easily. The OCR pipeline is integrated into the existing machine learning flow. For new uploads, it will run automatically with the existing machine learning flow. For existing setups, you can go to `Administration > Job > Click on “All” for OCR job` to extract OCR information for your gallery <p align="center"> <img width="800" alt="image" src="https://github.com/user-attachments/assets/ece151cf-4268-406a-a68f-ce3c9c869c15" /> </p> To search for letters in photos, a new radio button has been added to the search type on the web app, and in the dropdown list on the mobile app. <p align="center"> <img width="500" alt="image" src="https://github.com/user-attachments/assets/adb161c8-717d-4030-b5eb-4f3cfef11a96" /> </p> ### \[Web\] WASM implementation for justified layout calculation 🦀 This release comes with a blazing-fast re-implementation of the justified layout on the web, which makes calculating the size of the thumbnails in each bucket several times faster, significantly improving the rendering performance for a large bucket, i.e., 10s of thousands of assets in a single month ### \[Web\] UI improvement for the review duplicates screen To help you decide which asset to keep in a group of duplicates, more information has been added to the info section below each asset, including date/time, location, and the number of albums the asset is in. The info section has been redesigned to make scanning the information faster, with different properties getting highlighted. We will keep improving on this interface to make it more intuitive <p align="center"> <img width="800" alt="image" src="https://github.com/user-attachments/assets/0bee8443-b44e-4264-a4ab-36a99cef4596" /> </p> ### \[Mobile\] Show albums in the asset’s detail You can view and navigate to the albums that the asset belongs to in the info sheet <p align="center"> <img width="300" alt="image" src="https://github.com/user-attachments/assets/96bb194a-cc54-478b-9958-b6e8eea9b03c" /> </p> ### \[Mobile\] Show similar photos The popular feature “Show similar photos” has made its way to the mobile app. You can use the button in the detail sheet to find similar images to the one you are viewing. <p align="center"> <img width="300" alt="image" src="https://github.com/user-attachments/assets/45cb751d-da22-4fe8-bc47-406dbb9c9cfc" /> </p> ### \[Mobile\] Chat-style for album activity view The album’s activity view now displays the messages and actions in a chat-style view, making it easier to follow <p align="center"> <img width="300" alt="image" src="https://github.com/user-attachments/assets/a5a8a4aa-ebbe-4282-844b-27e9df14a529" /> </p> ### \[Mobile\] High precision seeking for video The progress bar of the video player now has higher precision duration handling. This makes seeking much more fluid than before, as well as making position updates in the progress bar smooth, rather than jumping from second to second. ### \[Mobile\] New UI to present server-client version mismatch As we are now in the stable-era, we want to make the notification of a new version more subtle, less distracting. The update message and icon’s color on the mobile app have been redesigned for that purpose. When your server version is older than the available one, a message with a clickable link is displayed, directing you to the latest release notes. When your mobile app version is older than the one available on the App Store, a message with a clickable link appears, directing you to the App Store to perform the update. | Server update | App update | | - | - | | <img width="300" alt="image" src="https://github.com/user-attachments/assets/c136aab6-ef39-4769-ab35-b6719b188ed5" /> | <img width="300" height="2340" alt="image" src="https://github.com/user-attachments/assets/3bead2e2-f202-48b8-9164-c5c29c999434" /> | ## Support Immich <p align="center"> <img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExbjY2eWc5Y2F0ZW56MmR4aWE0dDhzZXlidXRmYWZyajl1bWZidXZpcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/87CKDqErVfMqY/giphy.gif" width="450" title="SUPPORT THE PROJECT!"> </p> If you find the project helpful, you can support Immich by purchasing a product key at https://buy.immich.app or our merchandise at https://immich.store <!-- Release notes generated using configuration in .github/release.yml at main --> ## What's Changed ### 🔒 Security * fix(server): bump valkey to 8 by @mmomjian in <https://github.com/immich-app/immich/pull/22911> ### 🚀 Features * feat(ml): coreml by @mertalev in <https://github.com/immich-app/immich/pull/17718> * feat(server): Option to configure SMTPS transport by @clementmartin in <https://github.com/immich-app/immich/pull/22833> * feat: show location & date on duplicate asset comparison overview by @adrianjost in <https://github.com/immich-app/immich/pull/22632> * feat: view the user's app version on the user page by @aviv926 in <https://github.com/immich-app/immich/pull/21345> * feat: GHA for iOS release flow by @alextran1502 in <https://github.com/immich-app/immich/pull/23196> * feat(web): add search filter for camera lens model. by @dagstuan in <https://github.com/immich-app/immich/pull/21792> * feat(web): load original videos by @andre-antunesdesa in <https://github.com/immich-app/immich/pull/20041> * feat(cli): add --delete-duplicates option by @RobinJ1995 in <https://github.com/immich-app/immich/pull/20035> * feat: ocr by @flipped-1121 in <https://github.com/immich-app/immich/pull/18836> * feat: show "appears in" albums on asset viewer bottom sheet by @bwees in <https://github.com/immich-app/immich/pull/21925> * feat: getAssetOcr endpoint by @alextran1502 in <https://github.com/immich-app/immich/pull/23331> * feat(mobile): view similar photos by @vitoksmile in <https://github.com/immich-app/immich/pull/22148> * feat(mobile): chat-style album activities timeline by @idubnori in <https://github.com/immich-app/immich/pull/23185> ### 🌟 Enhancements * feat(album): show per-user contributions in shared albums by @Chaoscontrol in <https://github.com/immich-app/immich/pull/21740> * feat: add video auto play setting by @Saschl in <https://github.com/immich-app/immich/pull/20416> * fix(web): improve scrubber behavior on scroll-limited timelines by @midzelis in <https://github.com/immich-app/immich/pull/22917> * feat(web): Download links and Obtainium link generator on Utilities page and onboarding by @NicholasFlamy in <https://github.com/immich-app/immich/pull/20589> * feat(web): create user as admin by @jrasm91 in <https://github.com/immich-app/immich/pull/23026> * chore: rework backup success notification descriptions by @bwees in <https://github.com/immich-app/immich/pull/23024> * feat(mobile): Change the UI of asset activity list to bottom sheet by @idubnori in <https://github.com/immich-app/immich/pull/23075> * feat: improved update messaging on app bar server info by @bwees in <https://github.com/immich-app/immich/pull/22938> * refactor(web): improve date labels in scrubber by @midzelis in <https://github.com/immich-app/immich/pull/23046> * feat: support database dumps for pg18 by @zackpollard in <https://github.com/immich-app/immich/pull/23186> * feat: improvements of thumbnail animations by @Lauritz-Tieste in <https://github.com/immich-app/immich/pull/20300> * feat(web): reactively update shared link expiration by @khanbasharat3a1 in <https://github.com/immich-app/immich/pull/22274> * feat: (mobile) open asset viewer from album activity page by @idubnori in <https://github.com/immich-app/immich/pull/23182> * feat(mobile): high precision seeking by @mertalev in <https://github.com/immich-app/immich/pull/22346> * feat(web): wasm justified layout, sync edition by @mertalev in <https://github.com/immich-app/immich/pull/23194> * feat: logout sessions on password change by @MontejoJorge in <https://github.com/immich-app/immich/pull/23188> * feat(server): enhance metadata reading for video files by @tstachl in <https://github.com/immich-app/immich/pull/23258> * feat: improve UI for resolving duplication detection by @alextran1502 in <https://github.com/immich-app/immich/pull/23145> * feat: toasts by @jrasm91 in <https://github.com/immich-app/immich/pull/23298> * feat: asset copy by @danieldietzler in <https://github.com/immich-app/immich/pull/23172> ### 🐛 Bug fixes * fix(web): prevent photo-only memories showing mute button by @meesfrensel in <https://github.com/immich-app/immich/pull/22802> * fix: get all assets for the Recents album on iOS by @alextran1502 in <https://github.com/immich-app/immich/pull/22956> * fix: tag clean up query and add tests by @MontejoJorge in <https://github.com/immich-app/immich/pull/22633> * fix: unit overlapses value in server stats card by @alextran1502 in <https://github.com/immich-app/immich/pull/22994> * fix: navigate to time action by @midzelis in <https://github.com/immich-app/immich/pull/20928> * fix: remove assets from shared link by @MontejoJorge in <https://github.com/immich-app/immich/pull/22935> * fix(server): only asset owner should see favorite status by @pwojtaszko in <https://github.com/immich-app/immich/pull/20654> * fix(web): render context overlays over the scrollbar by @PaulSonOfLars in <https://github.com/immich-app/immich/pull/23007> * fix(web): two scrollbars in folder view by @YarosMallorca in <https://github.com/immich-app/immich/pull/23045> * fix: skip ML availability check if ML is disabled by @bo0tzz in <https://github.com/immich-app/immich/pull/23053> * chore: skip dialog for single merged asset by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22958> * fix(mobile): notate experimental network features, cleanup mis assigned translation tags by @mmomjian in <https://github.com/immich-app/immich/pull/23021> * fix(ml): pin cudnn version by @mertalev in <https://github.com/immich-app/immich/pull/23110> * fix(server): use GPSLongitudeRef and GPSLatitudeRef EXIF fields by @ruippeixotog in <https://github.com/immich-app/immich/pull/21445> * fix: allow editing all images by @bwees in <https://github.com/immich-app/immich/pull/23144> * fix: isolate freeze app on older ios device by @alextran1502 in <https://github.com/immich-app/immich/pull/22509> * fix: android skip posting hash response after detached from engine by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/23192> * fix: back/forward navigation won't reset scroll in timeline by @midzelis in <https://github.com/immich-app/immich/pull/22838> * fix: handle null bucketId or name in android local sync by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/23224> * fix: fetch original name before upload by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/21877> * fix: focus-trap on safari by @midzelis in <https://github.com/immich-app/immich/pull/23246> * fix(web): disable picture-in-picture on video viewer by @tstachl in <https://github.com/immich-app/immich/pull/23318> * fix: make hitbox on app bar dialog bigger by @bwees in <https://github.com/immich-app/immich/pull/23316> * fix: clear temp cache on iOS before uploads by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/23326> ### 📚 Documentation * fix(web): clarify some transcoding settings by @meesfrensel in <https://github.com/immich-app/immich/pull/22797> * docs: fix small error by @0xflotus in <https://github.com/immich-app/immich/pull/22890> * docs: Expand on OpenVINO WSL HW accel by @Mraedis in <https://github.com/immich-app/immich/pull/21054> * docs: clarify well-known usage by @jrasm91 in <https://github.com/immich-app/immich/pull/23018> * feat: move community projects and guides to immich-aweseome by @jrasm91 in <https://github.com/immich-app/immich/pull/23016> * fix(docs): cli upload json format example by @leepeuker in <https://github.com/immich-app/immich/pull/22858> * docs: update [backup-and-restore.md](http://backup-and-restore.md) by @nickwebcouk in <https://github.com/immich-app/immich/pull/21065> ## New Contributors * @Chaoscontrol made their first contribution in <https://github.com/immich-app/immich/pull/21740> * @meesfrensel made their first contribution in <https://github.com/immich-app/immich/pull/22802> * @0xflotus made their first contribution in <https://github.com/immich-app/immich/pull/22890> * @clementmartin made their first contribution in <https://github.com/immich-app/immich/pull/22833> * @leepeuker made their first contribution in <https://github.com/immich-app/immich/pull/22858> * @nickwebcouk made their first contribution in <https://github.com/immich-app/immich/pull/21065> * @idubnori made their first contribution in <https://github.com/immich-app/immich/pull/23075> * @ruippeixotog made their first contribution in <https://github.com/immich-app/immich/pull/21445> * @Nykri made their first contribution in <https://github.com/immich-app/immich/pull/22888> * @slagiewka made their first contribution in <https://github.com/immich-app/immich/pull/23130> * @khanbasharat3a1 made their first contribution in <https://github.com/immich-app/immich/pull/22274> * @andre-antunesdesa made their first contribution in <https://github.com/immich-app/immich/pull/20041> * @RobinJ1995 made their first contribution in <https://github.com/immich-app/immich/pull/20035> * @flipped-1121 made their first contribution in <https://github.com/immich-app/immich/pull/18836> * @ZacWarham made their first contribution in <https://github.com/immich-app/immich/pull/23275> * @tstachl made their first contribution in <https://github.com/immich-app/immich/pull/23258> **Full Changelog**: <https://github.com/immich-app/immich/compare/v2.1.0...v2.2.0> - # v2.1.0 Welcome to release `v2.1.0` of Immich! It’s been about 2 weeks since our [stable release](https://immich.app/blog/stable-release) :tada: and the celebratory [Retro DVD](https://immich.store/products/immich-retro) :dvd:, which many of you are starting to receive. For those outside the US still waiting for theirs, we're currently awaiting a new batch of DVDs. Hopefully, those start shipping early next week at the latest. We’d like to take a moment to thank everyone for the support, kind words, and otherwise positive feedback. It’s been great to hear, and it means more to us than you know :hearts:. ## Highlights
More…
This release contains mostly bug fixes, with a few minor enhancements. Here are some of the highlights: * Improved slideshow shuffle order (web) * Edit seconds and milliseconds (web) * Upload to stack (web) * Local album event notifications (web) * Notable fix: mobile search page scrolls back to the top As always, this release also contains the latest [translations](https://hosted.weblate.org/projects/immich/immich/). ### Improved slideshow shuffle order (web) This release improves on the algorithm used to implement the `Shuffle` order for the slideshow feature on the web. You should now see a better distribution of photos (fewer repeats). <img width="500" alt="image" src="https://github.com/user-attachments/assets/d1d3a3de-4814-49d5-a4aa-9cf9b3be0fff" /> ### Edit seconds and milliseconds (web) The change date modal on the web now supports the option to specify seconds and milliseconds. <img width="500" alt="image" src="https://github.com/user-attachments/assets/3f6bd91c-b61d-4f53-9cec-cd8480e6acfd" /> ### Upload to stack (web) For stacks, a new menu option has been added: `Add upload to stack`. This action will open a file picker, allowing you to upload directly to the stack. <img width="500" alt="image" src="https://github.com/user-attachments/assets/4a19edd4-0b6d-457d-96ae-f93ef7ffec72" /> ### Local album event notifications (web) This release adds a new in-app notification type: `Shared Album Invitation` and `Shared Album Update`. When you are invited to a shared album, and when a new asset is added to it, all users will receive a notification about the update. You can click on the notification to go directly to the mentioned album. The foundation for in-app (web) notifications was introduced in #17701, and we’re still working on expanding it to include more event types, with the hope of eventually incorporating it into the mobile app as a push notification. <img width="500" alt="image" src="https://github.com/user-attachments/assets/db0735f2-6ef6-48a7-86bc-2fc48aabaf02" /> ### Notable fix: mobile search page scrolls back to the top The search page on mobile uses “infinite scroll”, which means new chunks of assets are automatically loaded in as you scroll down the page. However, prior to this release, the scroll position would reset to the top whenever new chunks were added, resulting in a frustrating user experience. This has been fixed, and the scroll position no longer resets. ## Support Immich <p align="center"> <img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExbjY2eWc5Y2F0ZW56MmR4aWE0dDhzZXlidXRmYWZyajl1bWZidXZpcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/87CKDqErVfMqY/giphy.gif" width="450" title="SUPPORT THE PROJECT!"> </p> If you find the project helpful, you can support Immich by purchasing a product key at https://buy.immich.app or our merchandise at https://immich.store ## What's Changed ### 🌟 Enhancements * feat(server): improve checkAlbumAccess query performance by @skatsubo in <https://github.com/immich-app/immich/pull/22467> * fix(web): do not notify on patch releases by @jrasm91 in <https://github.com/immich-app/immich/pull/22591> * fix(web): Uniform random distribution during shuffle by @Pascal-So in <https://github.com/immich-app/immich/pull/19902> * feat(web): seconds and milliseconds in timestamps by @kaziu687 in <https://github.com/immich-app/immich/pull/20337> * feat(web): Add upload to stack action by @Sese-Schneider in <https://github.com/immich-app/immich/pull/19842> * feat(server): add `immich.users.total` metric by @Tushar-Harsora in <https://github.com/immich-app/immich/pull/21780> * feat: local album events notification by @alextran1502 in <https://github.com/immich-app/immich/pull/22817> ### 🐛 Bug fixes * fix(docs): link to immich docs does not lead correctly to docs by @XavierDupuis in <https://github.com/immich-app/immich/pull/22687> * fix(server): fix chunking Postgres query parameters by @skatsubo in <https://github.com/immich-app/immich/pull/22684> * fix(ml): Resolve IPv6 startup crash and healthcheck failure by @CaptainJack2491 in <https://github.com/immich-app/immich/pull/22387> * fix(server): override reserved color metadata for video thumbnails by @mertalev in <https://github.com/immich-app/immich/pull/22348> * fix(mobile): trash description cut off by @YarosMallorca in <https://github.com/immich-app/immich/pull/22662> * fix(mobile): empty album description does not save by @YarosMallorca in <https://github.com/immich-app/immich/pull/22649> * fix(mobile): video player using ref after disposal by @mertalev in <https://github.com/immich-app/immich/pull/21843> * fix: missing responsive calculation in UserPageLayout by @midzelis in <https://github.com/immich-app/immich/pull/22455> * fix: use full-size image for non-web-compatible panoramas by @grgergo1 in <https://github.com/immich-app/immich/pull/20359> * fix: hide view in timeline button on local timeline by @bwees in <https://github.com/immich-app/immich/pull/22713> * fix: Fix issue fail to download iOS live photos by @CuberL in <https://github.com/immich-app/immich/pull/22708> * fix(mobile): closing editor goes back to main page by @YarosMallorca in <https://github.com/immich-app/immich/pull/22647> * fix: improve the selected sidebar item text color in dark mode by @alextran1502 in <https://github.com/immich-app/immich/pull/22640> * fix: promote to foreground service before starting engine by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22517> * fix: bottom sheet blank with local assets that have remote counterparts by @bwees in <https://github.com/immich-app/immich/pull/22743> * fix: skip local only assets in move to lock action by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22728> * fix: brief flashing when swiping from video by @Saschl in <https://github.com/immich-app/immich/pull/22187> * fix: persist search page scroll offset between rebuilds by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22733> * fix: only cast to device if the asset is a RemoteAsset by @bwees in <https://github.com/immich-app/immich/pull/22805> * fix: ios skip posting hash response after detached from engine by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22695> * fix: shared album control permissions by @bwees in <https://github.com/immich-app/immich/pull/22435> * fix: show dialog before delete local action by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22280> * chore: refactor show view in timeline button by @bwees in <https://github.com/immich-app/immich/pull/22894> ### 📚 Documentation * docs: update Synology install guide by @TDR001 in <https://github.com/immich-app/immich/pull/21996> * docs: add some external library notes by @jrasm91 in <https://github.com/immich-app/immich/pull/22776> * docs: add Immich-Stack to community-projects by @Qhilm in <https://github.com/immich-app/immich/pull/21563> ### 🌐 Translations * chore(web): update translations by @weblate in <https://github.com/immich-app/immich/pull/22623> ## New Contributors * @XavierDupuis made their first contribution in <https://github.com/immich-app/immich/pull/22687> * @adrianjost made their first contribution in <https://github.com/immich-app/immich/pull/22631> * @CaptainJack2491 made their first contribution in <https://github.com/immich-app/immich/pull/22387> * @USBAkimbo made their first contribution in <https://github.com/immich-app/immich/pull/22673> * @MontejoJorge made their first contribution in <https://github.com/immich-app/immich/pull/22702> * @diogotcorreia made their first contribution in <https://github.com/immich-app/immich/pull/21602> * @CuberL made their first contribution in <https://github.com/immich-app/immich/pull/22708> * @TDR001 made their first contribution in <https://github.com/immich-app/immich/pull/21996> * @PeterDaveHello made their first contribution in <https://github.com/immich-app/immich/pull/22703> **Full Changelog**: <https://github.com/immich-app/immich/compare/v2.0.1...v2.1.0> - # v2.0.1 It's such a refreshing feeling to write `v2` for the app's version 😃. Thank you all for the overwhelming support in celebrating this stable release with us. This patch release primarily addresses several bugs in the mobile app. Have a lovely weekend! <!-- Release notes generated using configuration in .github/release.yml at main -->
More…
## What's Changed ### 🐛 Bug fixes * fix: do not delete asset on share by @shenlong-tanwen in https://github.com/immich-app/immich/pull/22578 * fix: remove new timeline version check by @shenlong-tanwen in https://github.com/immich-app/immich/pull/22584 * fix: show only owned assets in places and map by @shenlong-tanwen in https://github.com/immich-app/immich/pull/22585 * fix: show activity in shared albunm by @alextran1502 in https://github.com/immich-app/immich/pull/22589 * fix: compass button overlaps status bar by @YarosMallorca in https://github.com/immich-app/immich/pull/22330 * fix: shrink age view to fit and not overflow by @bwees in https://github.com/immich-app/immich/pull/22405 * fix: mitigate database lock scenario when running full sync in splash screen page by @alextran1502 in https://github.com/immich-app/immich/pull/22608 * fix: bottom navigation bar overlay sheet info by @alextran1502 in https://github.com/immich-app/immich/pull/22610 * fix: respect storage indicator setting by @shenlong-tanwen in https://github.com/immich-app/immich/pull/22596 * fix: do not run multiple engines on cold startup by @shenlong-tanwen in https://github.com/immich-app/immich/pull/22518 * fix: album selector in favorite view by @alextran1502 in https://github.com/immich-app/immich/pull/22612 ### 📚 Documentation * feat(docs): add one-click install docs page by @kennyfuto in https://github.com/immich-app/immich/pull/22553 * chore: replace immich.app/docs with docs.immich.app globally by @gablilli in https://github.com/immich-app/immich/pull/22428 * fix(docs): one-click doc fixes by @kennyfuto in https://github.com/immich-app/immich/pull/22554 ### 🌐 Translations * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/22486 ## New Contributors * @kennyfuto made their first contribution in https://github.com/immich-app/immich/pull/22553 **Full Changelog**: https://github.com/immich-app/immich/compare/v2.0.0... - # v2.0.0 - Stable Release Welcome to the release `v2.0.0` of Immich. This release marks the first stable version of Immich. You can read our announcement blog post [here](https://github.com/immich-app/immich/discussions/22546) to learn what stable means for Immich, what you can expect from a stable version, along with our future plans. Of course, it wouldn't be complete without a few surprises. To update to this version, no special steps are required. Compose pull and compose up, and you are now on `v2.0.0`. Additionally, there are a few noteworthy items that we have been working on in preparation for the stable release: * New homepage * New API documentation * New community metrics
More…
## New homepage The https://immich.app/ website has been recently updated. It’s been rewritten with our very own UI component library, and includes a [blog](https://immich.app/blog) with a few initial posts, including one about [the new mobile sync implementation](https://immich.app/blog/sync-v2). Existing documentation has been moved to https://docs.immich.app/. <img width="800" alt="image" src="https://github.com/user-attachments/assets/911574d2-c8a7-46c6-a6f9-2a00d06baf3e" /> ## Better API documentation We’re also happy to announce a new version of our API documentation, which is now live at https://api.immich.app/. The new docs include more information about authentication, authorization & permissions, a command palette for quick navigation (press `/` or `ctrl+k`), and a built-in method to view live results. <img width="800" alt="image" src="https://github.com/user-attachments/assets/910a3539-cee2-417e-b1f9-77cb0e68e2b9" /> ## New community metrics The <https://data.immich.app/> website has also been updated to include new community metrics that show member growth on our [subreddit](https://www.reddit.com/r/immich/) and [discord server](https://discord.immich.app/). <img width="800" alt="image" src="https://github.com/user-attachments/assets/8fc418ef-cf26-4ad3-b9a6-56bdc07eb97e" /> ## What's Changed ### 🐛 Bug fixes * fix: show un-hashed remainder assets by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22492> * fix(server): Revert update libmimalloc path (#22345) by @alextran1502 in <https://github.com/immich-app/immich/pull/22526> * fix: missing email button padding by @Funk66 in <https://github.com/immich-app/immich/pull/22529> **Full Changelog**: <https://github.com/immich-app/immich/compare/v1.144.1...v2.0.0> - # v1.144.1 _`v1.144.0` has been made a sacrificial object to the Release God_ Welcome to the release `v1.144.1` of Immich. This release marks the end of summer, with many bugs being squashed and the continuous improvement of the upload process on the new timeline. It also comes with enhancements to storage management for iCloud users when uploading a large library. The mobile app now also displays an indicator for LivePhoto or MotionPhoto, making them easier to recognize. <p align="center"> <img width="400" alt="image" src="https://github.com/user-attachments/assets/aaee8542-bb4c-4f81-bca6-3dabd40f9c89" /> </p>
More…
## Support Immich <p align="center"> <img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExbjY2eWc5Y2F0ZW56MmR4aWE0dDhzZXlidXRmYWZyajl1bWZidXZpcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/87CKDqErVfMqY/giphy.gif" width="450" title="SUPPORT THE PROJECT!"> </p> If you find the project helpful, you can support Immich by purchasing a product key at https://buy.immich.app or our merchandise at https://immich.store <!-- Release notes generated using configuration in .github/release.yml at v1.144.1 --> ## What's Changed ### 🚀 Features * feat: show motion photo icon on mobile timeline tile by @bwees in <https://github.com/immich-app/immich/pull/22454> ### 🐛 Bug fixes * fix(server): update libmimalloc path by @mertalev in <https://github.com/immich-app/immich/pull/22345> * fix: ios export sqlite db by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22369> * fix: map attribution and other styling by @bwees in <https://github.com/immich-app/immich/pull/22303> * fix: delete temp file on iOS after upload by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22364> * fix(mobile): load local thumbnails in album timeline by @mertalev in <https://github.com/immich-app/immich/pull/22329> * fix(mobile): scrubbing mode on scroll to date event by @mertalev in <https://github.com/immich-app/immich/pull/22390> * fix: local assets should not be added to album by @bwees in <https://github.com/immich-app/immich/pull/22304> * feat(mobile): add unstack button by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/21869> * fix: prefer remote images in new timeline by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22452> * fix: merged timeline orderby localtime by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22371> * fix: process upload only after successful remote sync by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22360> ### 📚 Documentation * feat: docs.immich.app by @zackpollard in <https://github.com/immich-app/immich/pull/21819> ### 🌐 Translations * chore(web): update translations by @weblate in <https://github.com/immich-app/immich/pull/22343> **Full Changelog**: <https://github.com/immich-app/immich/compare/v1.143.1...v1.144.1> - # v1.143.1 ## What's Changed ### 🐛 Bug fixes * fix: migrate backup delay from old timeline by @shenlong-tanwen in https://github.com/immich-app/immich/pull/22327 ### 🌐 Translations * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/22022 * chore(web): update translations by @weblate in https://github.com/immich-app/immich/pull/22288
More…
**Full Changelog**: https://github.com/immich-app/immich/compare/v1.143.0...v1.143.1 - # v1.143.0 > [!NOTE] > *If you're still experiencing issues with remote assets or albums not showing up on the mobile app, please ensure that your server is updated to the latest version. If you are still having issues, try logging out and back in.* ## Highlights Welcome to release `v1.143.0` of Immich. Like all releases, this one includes the latest batch of translations. A special thanks to everyone who has contributed so far to translating the project. If you are interested in helping translate yourself, check out our project on [Weblate](https://hosted.weblate.org/projects/immich/immich/). Other than that, this release is *mostly* bug fixes, with a few minor enhancements. Now let’s dive right in! * Material 3 switch/toggle (web) #22100
More…
* Bring back configurable backup settings (mobile) #22114 * Concurrent hashing & hashing progress (mobile) #21997 * Download progress (mobile) #22178 * Notable fix: Web modals #22079 * Notable fix: Mobile “freezes” #22111 * Notable fix: Copy image on Safari ### Material 3 switch/toggle (web) The web project has an updated switch/toggle, thanks to @SevereCloud (<https://github.com/immich-app/ui/pull/267>) for that. <img width="400" alt="image" src="https://github.com/user-attachments/assets/9968ec63-1eb8-4e22-a59c-59ed37f11d42" /> ### Bring back configurable backup settings (Android) Just like the previous timeline implementation, the new version now has similar settings for * Backup only while charging * Upload only after a minimum amount of elapsed time ### Concurrent hashing & hashing progress (mobile) Improvements have been made to the client-side hashing implementation, which now enables hashing to happen *concurrently*. This significantly increases throughput, and now the speed is mostly limited by how fast files can be read from internal storage. The hashing process has also been updated to only hash assets from the albums selected for backups, which reduces the number of downloads for iCloud users. <img width="400" src="https://github.com/user-attachments/assets/d20499ae-0764-44fb-8679-2c07318b09e3"/> ### Download progress (mobile) The mobile app now has a built-in download progress indicator, which makes it easy to see the progress of files being downloaded onto the device. <p align="center"> <img width="300" alt="image" src="https://github.com/user-attachments/assets/2372ac4d-f7f5-48e6-9d75-1a0d29ceb7b7" /> <img width="300" alt="image" src="https://github.com/user-attachments/assets/03f63e7e-85cd-4ba3-ada5-9a6774913cae" /> <p/> ### Notable fix: Web modals Previous to this release, the web application would often “freeze” or become unusable after using a modal (creating a shared link, creating an api key, confirming the deletion of assets, etc.). This issue has been fixed. ### Notable fix: Mobile “freezes” This release fixes an issue that the mobile application could occasionally “freeze”, with the thumbnails would stop loading, and certain pages would become unusable until the application was forced closed. This has proved much more challenging to solve. We determined that the cause was due to concurrent access to SQLite from background/foreground processes, which could have put the app into this state. We have taken measures to address these situations and believe the application should be much more *stable*. If you are still running into these types of issues, please let us know! ### Notable fix: Copy image on Safari The “copy image to clipboard” functionality has long worked on non-Safari browsers, but in this release, we were finally able to identify and implement a fix. Copying an image to the clipboard should now also work on Safari. ## Support Immich <p align="center"> <img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExbjY2eWc5Y2F0ZW56MmR4aWE0dDhzZXlidXRmYWZyajl1bWZidXZpcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/87CKDqErVfMqY/giphy.gif" width="450" title="SUPPORT THE PROJECT!"> </p> If you find the project helpful, you can support Immich by purchasing a product key at https://buy.immich.app or our merchandise at https://immich.store <!-- Release notes generated using configuration in .github/release.yml at v1.143.0 --> ## What's Changed ### 🚀 Features * chore: bump immich/ui by @jrasm91 in <https://github.com/immich-app/immich/pull/22100> * feat: add configurable backup on charging only and delay settings for android by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22114> ### 🌟 Enhancements * feat(web): toggle theme shortcut by @jrasm91 in <https://github.com/immich-app/immich/pull/22139> * refactor: hashing service by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/21997> * fix: download feedback by @alextran1502 in <https://github.com/immich-app/immich/pull/22178> * feat: availability checks by @jrasm91 in <https://github.com/immich-app/immich/pull/22185> * feat: show preparing/hashing status in backup page by @alextran1502 in <https://github.com/immich-app/immich/pull/22222> ### 🐛 Bug fixes * fix: close menu anchor on navigation by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22021> * fix: sidebar link hightlight by @alextran1502 in <https://github.com/immich-app/immich/pull/22035> * fix(oauth): omit blank pkce from url when not supported by @uphillcheddar in <https://github.com/immich-app/immich/pull/21976> * fix(server): bulk edit rating by @jrasm91 in <https://github.com/immich-app/immich/pull/21839> * fix: distance of segment label overlapsed scrubber label by @alextran1502 in <https://github.com/immich-app/immich/pull/22043> * fix: navigate to time by @alextran1502 in <https://github.com/immich-app/immich/pull/22078> * fix(web): issue with modal locking the page by @jrasm91 in <https://github.com/immich-app/immich/pull/22079> * fix(mobile): prevent concurrent refresh and processing tasks by @mertalev in <https://github.com/immich-app/immich/pull/22111> * chore(deps): bump flutter to 3.35.3 by @mertalev in <https://github.com/immich-app/immich/pull/22054> * fix: poll counts from DB rather than using callbacks from library by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22117> * fix: beta migration check by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22092> * fix: ensure background worker is scheduled when the app is dismissed by @alextran1502 in <https://github.com/immich-app/immich/pull/22032> * fix: display album image in selection mode by @vitoksmile in <https://github.com/immich-app/immich/pull/22087> * fix: initial size of bottom sheet by @vitoksmile in <https://github.com/immich-app/immich/pull/22085> * fix: Refresh photo after updating featured photo by @stewx in <https://github.com/immich-app/immich/pull/21971> * fix(mobile): load original image by @mertalev in <https://github.com/immich-app/immich/pull/22142> * fix: show delete on device when asset has a local match by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22143> * fix: do not migrate existing users by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22146> * fix(web): download panel by @jrasm91 in <https://github.com/immich-app/immich/pull/22150> * fix(mobile): thumbnail shimmering effect by @mertalev in <https://github.com/immich-app/immich/pull/22158> * fix: asset viewer background isn't shown by @alextran1502 in <https://github.com/immich-app/immich/pull/22161> * fix: show thumbnail instantly when jumping to top of the page by @alextran1502 in <https://github.com/immich-app/immich/pull/22163> * fix(mobile): stack row blocking gestures and not showing up by @mertalev in <https://github.com/immich-app/immich/pull/21854> * chore: refresh backup stats when entering backup page by @alextran1502 in <https://github.com/immich-app/immich/pull/21977> * fix: display thumbnail while scrubbing paused by @alextran1502 in <https://github.com/immich-app/immich/pull/22164> * fix(web): do not upscale small pictures by @jrasm91 in <https://github.com/immich-app/immich/pull/22191> * fix: get scrubber in search view working by @alextran1502 in <https://github.com/immich-app/immich/pull/22175> * fix: sqlite parameters limit by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22119> * fix(mobile): smaller search page size by @jrasm91 in <https://github.com/immich-app/immich/pull/22210> * fix: automatically remove leading/trailing whitespace from search que… by @jrasm91 in <https://github.com/immich-app/immich/pull/22214> * fix(web): show danger/warning when taken dates overlap by @jrasm91 in <https://github.com/immich-app/immich/pull/22213> * fix(web): copy to clipboard on safari by @jrasm91 in <https://github.com/immich-app/immich/pull/22217> * fix(web): only copy images via canvas by @jrasm91 in <https://github.com/immich-app/immich/pull/22225> * fix: local share action not working on iPad by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22238> * fix: retain scroll position on scale update by @shenlong-tanwen in <https://github.com/immich-app/immich/pull/22237> ### 📚 Documentation * docs: add community immich-birthday and immich-stack projects by @sid3windr in <https://github.com/immich-app/immich/pull/21934> * chore(docs): add an updated Podman/Quadlets community guide by @linux-universe in <https://github.com/immich-app/immich/pull/20744> ### 🌐 Translations * chore(web): update translations by @weblate in <https://github.com/immich-app/immich/pull/21842> ## New Contributors * @uphillcheddar made their first contribution in <https://github.com/immich-app/immich/pull/21976> * @sid3windr made their first contribution in <https://github.com/immich-app/immich/pull/21934> * @linux-universe made their first contribution in <https://github.com/immich-app/immich/pull/20744> * @vitoksmile made their first contribution in <https://github.com/immich-app/immich/pull/22087> **Full Changelog**: <https://github.com/immich-app/immich/compare/v1.142.1...v1.143.0>