What changed in Immich from 2 to 3
5 releases numbered after v2.7.5 up to and including v3.1.0, stable releases only. v2.7.5 and v3.1.0 are the newest stable releases of 2 and 3 we track; this page follows them as new ones ship.
- 2 mention breaking changes
- 2 remove or deprecate something
68 changes across 5 releases
- Add --visibility flag to immich CLI upload subcommand
- Custom date range for map on mobile
- Add wake lock when uploading assets on web
- Undo archive from toast notification
- Filter workflow assets by upload path
- Add maintenance link to command palette
- Add album asset event handling
- Add EXIF metadata workflow filter
- Add option to invalidate sessions when resetting password via admin-cli
- Publish app releases to FUTO F-Droid repo
- HLS variant configuration
- User agnostic database restore
- Date workflow filter
- Add recently added link in sidebar on web
- Mobile non-destructive editing with cropping, rotating, and adjusting images without modifying the original file
- Workflows preview feature to automate actions in your library by chaining triggers, filters, and actions together with a drag-and-drop builder
- Recently added page
- Integrity checks
- Slideshow on mobile app
- HLS and real-time video transcoding in 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
- Keep show more open on duplicates
- Re-evaluate OIDC role claim on every login and support array values
- F-Droid users should pull the application from https://app.futo.org/fdroid/repo instead of the standard F-Droid repository
- Background backup improvement
- Timeline performance improvement for browsing a large amount of assets in a single month
- Add trigger for external libraries AssetCreate in workflows
- Improve slideshow controls visibility on bright backgrounds
- Apply EXIF orientation to remote raw photos on Android
- Hide stack thumbnail tray in slideshow mode
- Issue where LivePhotos upload from the background isn't showing up
- Closing plugin method picker selects unknown method on web
- Unauthorized album owner update
- System appbar icon color has incorrect color in asset viewer
- Locked visibility in search random endpoint
- Send a full datetime from the Android memories widget
- Memory search date validation
- Set hvc1 tag when using hwa
- Clear zoom state when swapping assets on mobile
- Ken Burns effect on sliver app bar jittery on Android
- Correct person age singular pluralization in mobile translations
- Re-add gCastEnabled negation
- Downmix audio to stereo to fix broken channel layout
- Live transcoding when viewing from a link share
- Web search timeline visibility
- Missing i18n strings
- Chinese browser locales recognition
- 10-bit heic and avif colors on Android
- Mobile scroll to top and tabbar scroll behavior
- Wrap migrations in transaction
- OAuth account linking
- Incorrect grouping of recently added assets
- Integrity checks checksum pagination
- Missing crop options and rotation scaling on mobile
- Properly handle live photos locally on mobile
- Integrity checks dto validation
- HTTP request handling after isolate death on mobile
- Fix albums broken on v2 mobile clients
- Fix setting input field description spacing for description snippet
Original release notes, newest first
The list above is our reading of these notes; the originals from Immich are here, one fold per release.
v3.1.0
Welcome 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)
- 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.
Undo button on success notification
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.
Quick navigate to maintenance page (web)
The command palette (CTRL+K or /) now includes an item for the maintenance page.
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.
Slideshow controls on a low contrast image
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.
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.
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
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.
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
v3.0.2
This patch release addresses various bugs from v3 release and adds an additional filter to workflows
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
- 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
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
🌐 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
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. 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.
How to update
[!WARNING]
v3.0.0drops support for pgvecto.rs. If you run Immich beforev1.133.0and haven't done the migration step yet, see the migration guide here. https://docs.immich.app/install/upgrading/#migrating-to-vectorchord
First, update the IMMICH_VERSION in your .env file to v3:
- IMMICH_VERSION=v2
+ IMMICH_VERSION=v3
Then run the usual update commands:
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).
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
Check it out now at https://immich.store!
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
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 on the web.
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.
Workflows editor
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.
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
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
[!NOTE] Please use this discussion thread 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.
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.
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.
You can configure when and how long the job runs each night.
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.
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 (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.
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
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.
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
You can also pick the option when sharing on-the-fly by long pressing the Share button
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
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
🚨 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-requestsdefault 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