Releases: immich-app/immich
v3.0.0-rc.2
Warning
Disclaimer
This is a release candidate, not a stable release. It is subject to change and may contain bugs or breaking changes. As always, make sure you have a backup of your database and library before upgrading to this version.
This second release candidate v3.0.0-rc.2 fixes bugs and issues that were found in the last release candidate.
Release notes
Work-in-progress release notes can be found here:
https://pr-558.dev.immich.app/blog/v3.0.0-release
Server
To use this RC version on the server, update the IMMICH_VERSION in your .env file:
IMMICH_VERSION=v3.0.0-rc.2
or
IMMICH_VERSION=v3-rc
Then pull and restart:
docker compose pull && docker compose up -dMobile
To use this RC version on the mobile app, follow the appropriate link for your platform:
Android
You can download the APK in the release note below, or tap on "Join the beta" from the Google Play Immich page
iOS
We are currently having issues with the iOS release. Expect a new version on TestFlight to land early next week at the latest: https://testflight.apple.com/join/JTSTucBd
If you run into any issues, please report them on GitHub so we can address them before the final release. Thank you for helping us test!
What's Changed
π Bug fixes
- fix(server): skip existing users when sharing albums by @jeevan6996 in #28884
- fix: web i18n by @danieldietzler in #29175
- fix(web): shift+click on GPS asset extends range selection in geolocation utility by @timonrieger in #29022
- fix(server): allow non-utc datetime offsets by @timonrieger in #29186
- fix: remove local-only step ids from workflow json by @danieldietzler in #29188
- fix: asset type filter by @danieldietzler in #29190
- fix(mobile): prevent duplicate login pages for unauthenticated share intent warm start by @olildu in #29054
- fix(mobile): refresh memories on resume and day change by @santoshakil in #28983
- fix(mobile): re-lock locked folder when the app is backgrounded by @santoshakil in #29089
- fix(mobile): endless spinner on album selection when device has no albums by @santoshakil in #28994
- fix: rc version check by @danieldietzler in #29194
π Documentation
- docs(mobile-app): add Play App Signing certificate hash by @tlvince in #29168
- docs(mobile): point users towards shared setup docs by @agg23 in #29078
π Translations
New Contributors
- @jeevan6996 made their first contribution in #28884
- @rizwanpatel-gif made their first contribution in #29172
- @olildu made their first contribution in #29054
Full Changelog: v3.0.0-rc.1...v3.0.0-rc.2
v3.0.0-rc.1
v3.0.0-rc.1 β Release Candidate
Warning
Disclaimer
This is a release candidate, not a stable release. It is subject to change and may contain bugs or breaking changes. As always, make sure you have a backup of your database and library before upgrading to this version.
This second release candidate v3.0.0-rc.1 fixes bugs and issues that were found in the last release candidate. You can now use the release candidate tag v3-rc for all the prereleases under v3.
Release notes
Work-in-progress release notes can be found here:
https://pr-558.dev.immich.app/blog/v3.0.0-release
Server
To use this RC version on the server, update the IMMICH_VERSION in your .env file:
IMMICH_VERSION=v3.0.0-rc.1
or
IMMICH_VERSION=v3-rc
Then pull and restart:
docker compose pull && docker compose up -dMobile
To use this RC version on the mobile app, follow the appropriate link for your platform:
Android
You can download the APK in the release note below, or tap on "Join the beta" from the Google Play Immich page
iOS
Use the TestFlight link or scan the QR Code https://testflight.apple.com/join/JTSTucBd
If you run into any issues, please report them on GitHub so we can address them before the final release. Thank you for helping us test!
What's Changed
π Enhancements
- fix(web): show album names in duplicate review by @meesfrensel in #29080
π Bug fixes
- fix(mobile): show like and comment options on album photo deep links by @santoshakil in #29020
- fix(web): correctly handle person search with more than 100 results by @maxinegardenas in #29002
- fix(web): prevent upload status panel from overlapping album action bar by @okxint in #29044
- fix(web): error loading image state by @bwees in #29058
- fix(web): show asset arrows by @timonrieger in #29010
- fix(server): hide partner archived asset locations from map by @timonrieger in #29028
- fix: lock transcoding options by @timonrieger in #29076
- fix(server): do not merge metadata when multiple duplicates are kept by @timonrieger in #29035
- fix: integrity report checksum query by @danieldietzler in #29136
- fix: map settings by @danieldietzler in #29134
- fix: too strict cron expression validation by @danieldietzler in #29138
- fix(web): respect local timezone when building date range for search by @okxint in #29128
- fix(web): language selector by @meesfrensel in #29065
- fix: update datetimeRelative description to minutes instead of seconds by @meesfrensel in #29137
- fix: video thumbnail quality sharing by @bwees in #29104
- fix(mobile): stop sync albums crashing on the main isolate by @santoshakil in #29133
- fix(mobile): show memories with no showAt/hideAt in the timeline lane by @santoshakil in #29158
- fix(mobile): keep toasts off the dynamic island when keyboard is open by @santoshakil in #29159
π Documentation
- docs(server): clarify AssetBulkUploadCheckItem.id is a correlation token by @timonrieger in #29141
π Translations
- feat: languages by @danieldietzler in #29088
- chore(web): update translations by @weblate in #29036
New Contributors
- @maxinegardenas made their first contribution in #29002
Full Changelog: v3.0.0-rc.0...v3.0.0-rc.1
v3.0.0-rc.0
Immich v3.0.0-rc.0 β Release Candidate
Warning
Disclaimer
This is a release candidate, not a stable release. It is subject to change and may contain bugs or breaking changes. As always, make sure you have a backup of your database and library before upgrading to this version.
We're excited to share our first release candidate (RC) for Immich v3: v3.0.0-rc.0. For information about how to use and test the RC, see below.
Release notes
Work in progress release notes can be found here:
https://pr-558.dev.immich.app/blog/v3.0.0-release
Server
To use this RC version on the server update the IMMICH_VERSION in your .env file:
- IMMICH_VERSION=v2
+ IMMICH_VERSION=v3.0.0-rc.0Then pull and restart:
docker compose pull && docker compose up -dMobile
To use this RC version on the mobile app, follow the appropriate link for your platform:
Android
You can download the APK the in release note below, or tap on "Join the beta" from the Google Play Immich page
iOS
Use the TestFlight link or scan the QR Code https://testflight.apple.com/join/JTSTucBd
If you run into any issues, please report them on GitHub so we can address them before the final release. Thank you for helping us test!
What's Changed
π¨ Breaking Changes
- refactor!: migrate class-validator to zod by @timonrieger in #26597
- refactor!: remove replace asset by @jrasm91 in #27022
- refactor!: remove my shared link dto by @jrasm91 in #27023
- chore!: remove deprecated env variables by @jrasm91 in #27802
- chore!: remove getRandom api endpoint by @bwees in #27780
- chore!: remove unused token response param by @jrasm91 in #27805
- refactor: yeet old timeline by @shenlong-tanwen in #27666
- chore!: remove old timeline sync endpoints by @jrasm91 in #27804
- chore!: remove deviceId and deviceAssetId by @danieldietzler in #27818
- chore!: rename API key schemas by @jrasm91 in #27828
- chore!: remove without assets by @jrasm91 in #27835
- fix: oauth issuerUrl validation by @bo0tzz in #27848
- fix!: do not allow insecure oauth requests by default by @bo0tzz in #27844
- fix!: set duration to null when not present by @meesfrensel in #26982
- chore!: remove /api/server/theme endpoint by @jrasm91 in #27880
- chore!: migrate album owner to album_user by @danieldietzler in #27467
- refactor!: change number to integer types by @timonrieger in #27912
- refactor(server)!: move correlationId to X-Correlation-ID response header by @timonrieger in #28139
- refactor(server)!: remove redundant error and statusCode fields from error responses by @timonrieger in #28140
- chore(server)!: drop pgvecto.rs support by @mertalev in #28159
- chore!: duration in milliseconds by @mertalev in #28003
- refactor(server)!: sanitize error messages to avoid leaking resource details by @timonrieger in #28154
- refactor(server)!: structured validation error responses by @timonrieger in #28204
- feat(server)!: add isOwned filter to albums API by @timonrieger in #28213
- chore(ml)!: require numpy 2.4 by @mertalev in #28158
- fix(deps): update dependency nestjs-otel to v8 by @renovate[bot] in #27863
- chore(ml)!: remove deprecated envs by @mertalev in #28326
- chore(server)!: remove libopus enum by @mertalev in #28325
- refactor!: remove asset faces from AssetResponseDto by @bwees in #27779
- refactor(server)!: drop empty string to null conversion by @timonrieger in #28808
- refactor(server)!: remove changeExpiryTime by @timonrieger in #28816
- refactor!: disallow star rating < 1 by @meesfrensel in #27896
π«₯ Deprecated Changes
- refactor(server): deprecate PUT routes in favor of PATCH by @timonrieger in #28859
π Security
π Features
- feat: mobile editing by @bwees in #25397
- feat: album map markers endpoint by @jrasm91 in #27830
- feat(server): added backchannel logout api endpoint by @santanoce in #26235
- feat(server): add OIDC logout URL override option by @LJspice in #27389
- feat: android periodic work manager task by @shenlong-tanwen in #23563
- feat(web): custom video player controls by @meesfrensel in #26183
- feat(web): add full-path search mode to UI by @mws-weekend-projects in #26758
- feat: recently added assets page by @benbeckford in #28272
- feat(mobile): slideshow view by @benbeckford in #28421
- feat(mobile): "Add Tags" asset multiselect option by @benjamonnguyen in #26269
- feat: workflows & plugins by @jrasm91 in #26727
- feat(server): hls with real-time transcoding by @mertalev in #28230
- feat(web): hls player by @mertalev in #28312
- feat(mobile): Android. Immich as a gallery / image viewer app by @PeterOmbodi in #26109
- feat: user upload heatmap by @bondeabhijeet in #28593
- feat(mobile): ocr support by @YarosMallorca in #26523
- feat: geolocation workflow filter by @benbeckford in #28961
- feat: image quality option in sharing by @alextran1502 in #28918
- feat: integrity check jobs (missing files, untracked files, checksums) by @insertish in #24205
π Enhancements
- feat(web): persist state of file path information in details panel by @cratoo in #27770
- feat: commands by @jrasm91 in #27546
- feat: upgrade immich/ui by @jrasm91 in #27792
- feat: filter users on share by @OdinOxin in #27732
- fix(server): render storage template date/time tokens in UTC (#24350) by @migpovrap in #26917
- feat(web): lazy load library and server statistics by @etnoy in #26406
- feat: sort users alphabetically when adding to album by @OdinOxin in #27731
- feat: auth logout page by @jrasm91 in #27831
- chore: improve randomness of /search/random endpoint by @StevenMassaro in #27531
- feat: dynamic languages by @jrasm91 in #27869
- feat: cache shared link by @danieldietzler in #27889
- feat(server): add configurable OAuth prompt parameter by @sparsh985 in #26755
- feat(server): add MPO file type support by @git-akihakune in #27963
- feat(mobile): action bottom sheet on map timeline by @YarosMallorca in #27515
- feat(server): track video metadata by @mertalev in #28023
- feat(enhancement): Navigate stack with up and down arrow keys by @cratoo in #27854
- fix(web): migrate people management component to page, enabling tooltips by @SkyDev125 in #26971
- chore(mobile): add box shadow to asset details by @uhthomas in #27510
- feat: hide hidden person from memories by @sakshamchawla in #20877
- feat(mobile): increased tap area on video player overlay by @YarosMallorca in https://github.com/immich-app/immic...
v2.7.5
v2.7.5
What's Changed
π Bug fixes
- fix(server): add rate limit and deduplication to version check by @zackpollard in #27747
π Translations
Full Changelog: v2.7.4...v2.7.5
v2.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 #27672
- fix(server): hide original filename when not showing metadata by @meesfrensel in #27581
- fix(mobile): fix Flutter cache eviction on thumbnails by @LeLunZ in #27663
- chore: pump cronet version by @shenlong-tanwen in #27685
Full Changelog: v2.7.3...v2.7.4
v2.7.3
v2.7.3
What's Changed
π Bug fixes
- fix(server): avoid false restore failures on large database imports by @ErasmusAndre in #27420
- fix(mobile): improve image load cancellation handling by @LeLunZ in #27624
- fix(server): people search not showing for 3 or less characters by @zackpollard in #27629
- fix(web): don't cache empty search results for people search by @zackpollard in #27632
- fix(mobile): get provider refs before async gaps in backup page by @LeLunZ in #27597
- fix: ssr open graph tags by @jrasm91 in #27639
π Documentation
New Contributors
- @fluffy made their first contribution in #27606
- @ErasmusAndre made their first contribution in #27420
Full Changelog: v2.7.2...v2.7.3
v2.7.2
You knew it was coming π
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
What's Changed
π Bug fixes
- fix: csp quotes by @bo0tzz in #27592
- fix(ml): downgrade numpy by @mertalev in #27591
- fix(server): library import batch size by @mertalev in #27595
Full Changelog: v2.7.0...v2.7.2
v2.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.
Leave your email at the end if you're interested in joining our free closed beta when it's ready.
Known limitations
- The machine learning service on
amd64currently requires the>= x86-64-v2microarchitecture. This will be patched in an upcoming patch release for backward compatibility with very old processors (before ~2010), but it will become a minimum requirement in 3.0.arm64is not affected by this change.
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.
Move to locked folder in the Folder view
Similarly, the folder view now includes the "Move to locked folder" action.
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.
slice.mp4
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
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.
Helmet configuration
You can now opt in to using a Content Security Policy (CSP) in Immich. The new environment variant IMMICH_HELMET_FILE accepts a boolean or a path to a helmet 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, X-Powered-By, 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 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
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: add support for helmet configuration by @jrasm91 in #27058
- feat: create new person in face editor by @alextran1502 in #27364
π Enhancements
- feat(web): add a seperate tooltip for switching from dark to light mode by @Vogeluff in #27297
- feat(web): focus on face-editor search input by @cratoo in #27136
- feat(web): add RemoveFromAlbumAction to asset viewer nav bar by @timonrieger in #27000
- feat(web): add shortcuts to rotate images by @squishykid in #26927
- feat(server): add checksum algorithm field by @etnoy in #26573
- feat(server): resolve duplicates by @Phlogi in #25316
- chore(mobile): reduce spacing on video controls by @uhthomas in #27313
- perf(server): optimize people page query by @ffchung in #27346
- feat(web): dim photo outside hovered face bounding box by @midzelis in #27402
- feat(web): OCR overlay interactivity during zoom by @midzelis in #27039
- feat: add move to lock folder in folder view by @alextran1502 in #27384
- feat(web): highlight active person thumbnail in detail panel and edit faces panel by @midzelis in #27401
- feat: move version checks to our own infrastructure by @zackpollard in #27450
- feat: add preview button when selecting images by @johnmaguire in #27305
- fix: user-agent format by @jrasm91 in #27488
- chore(mobile): reduce buffering timer duration by @uhthomas in #27111
- fix(mobile): use key on video controls by @uhthomas in #27512
- feat(server): Add support for .ts files by @ray in #27529
π Bug fixes
- fix(server): refresh unedited asset dimensions on metadata extraction by @michelheusschen in #27220
- fix(server): memory fragmentation by @mertalev in https://g...
v2.6.3
v2.6.3
What's Changed
π Bug fixes
- fix(mobile): remove upload timeout by @mertalev in #27237
- fix(web): prevent horizontal scroll bar in asset viewer side panel by @michelheusschen in #27270
- fix(web): shifting motion image button by @YarosMallorca in #27275
- chore(docs): withPeople parameter description by @YarosMallorca in #27262
- fix(server): filter out empty search suggestions by @michelheusschen in #27292
- fix: incorrect asset face sync by @bwees in #27243
Full Changelog: v2.6.2...v2.6.3
v2.6.2
v2.6.2
This release addresses the following issues
- Fixed a bug where the shared link would error out when public users upload to the shared link
- Fixed a bug where the URL switching feature doesn't work with external URLs
- Fixed a bug where the "add to album" selection box on the web doesn't include albums that are shared with the user
- Fixed several issues regarding the search filter on the mobile app and the web
What's Changed
π Bug fixes
- fix(mobile): simplified chinese not available by @YarosMallorca in #27066
- fix(web): allow showing combobox items outside modals by @michelheusschen in #27075
- fix(web): preserve album scroll when adding to other albums by @michelheusschen in #27078
- fix(server): queue version check job when config changed by @uhthomas in #27094
- fix: shared link add to album by @jrasm91 in #27063
- fix: svelte reactivity issues by @danieldietzler in #27109
- fix(mobile): cronet image cache clearing on android by @LeLunZ in #27054
- fix(mobile): view similar photos from search by @YarosMallorca in #27149
- fix(mobile): no results before applying filter by @YarosMallorca in #27155
- fix(mobile): star rating always defaults to 0 by @YarosMallorca in #27157
- fix: download original stale cache when edited by @danieldietzler in #27195
- fix(web): restore duplicate viewer arrow key navigation by @michelheusschen in #27176
- fix(web): update upload summary when removing items (#27035) by @Nicolas-micuda-becker in #27139
- fix(mobile): option padding on search dropdowns by @YarosMallorca in #27154
- fix(mobile): add keys to people list by @YarosMallorca in #27112
- fix(mobile): add cookie for auxiliary url by @mertalev in #27209
- fix: album picker show all albums by @danieldietzler in #27211
- fix(server): album permissions for editors by @YarosMallorca in #27214
- fix(mobile/web): album cover buttons consistency by @YarosMallorca in #27213
π Documentation
New Contributors
- @Nicolas-micuda-becker made their first contribution in #27139
Full Changelog: v2.6.1...v2.6.2
