Skip to content

Releases: immich-app/immich

v1.139.4

25 Aug 18:31
Compare
Choose a tag to compare

v1.139.4

What's Changed

🐛 Bug fixes

New Contributors

Full Changelog: v1.139.3...v1.139.4

v1.139.3

25 Aug 02:36
Compare
Choose a tag to compare

v1.139.3

What's Changed

🐛 Bug fixes

📚 Documentation

New Contributors

Full Changelog: v1.139.2...v1.139.3

v1.139.2

22 Aug 18:07
Compare
Choose a tag to compare

v1.139.2

v1.139.0 and v1.139.1 have made the ultimate sacrifice for switching from npm to pnpm in our release pipeline


Welcome to release v1.139.2. This version continues to bring improvements to the beta timeline, from fixing bugs to significantly improving the image rendering pipeline, especially on Android. We appreciate users who have helped us test out the beta timeline! We encourage you all to switch to it to help us catch more bugs as the stable release is nigh. Let’s dive into the highlights of this release.

Highlights

  • [beta] New image rendering pipeline
  • [beta] Show remainder assets detail
  • Option to skip in the duplicate resolver tools
  • Add to multiple albums action
  • [beta] Fixed the bug that upload progress doesn’t resume upon app restart (really fix it this time)

[beta] New image rendering pipeline

Thanks to our one and only wizard @mertalev 🧙, the mobile app now uses our own custom image loading and rendering pipeline, featuring multithreading and a series of other optimizations. In particular, this significantly improves displaying of local images on Android. Not only does this improve thumbnail loading speed, but local thumbnails are noticeably higher quality by avoiding compression. The experience of scrolling the timeline should now be on par with the local gallery app. Additionally, remote assets now benefit from request cancellation to avoid downloading thumbnails that are no longer relevant, further improving responsiveness when quickly scrolling the timeline.

[beta] Show assets pending backup

You can now view which assets are in the remaining list of backups. This helps track down problematic assets that cannot be uploaded for some reason. *cough, iCloud assets, cough*

image image

Option to skip an entry in the duplicate resolution utility

You can now navigate back and forth to get to other entries in the duplicate list.

image

Add to multiple albums action

On the web, you can now add assets to multiple albums at once from the album selection modal.

image

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

🌟 Enhancements

🐛 Bug fixes

📚 Documentation

🌐 Translations

New Contributors

Full Changelog: v1.138.1...v1.139.2

v1.138.1

18 Aug 18:51
Compare
Choose a tag to compare

v1.138.1

What's Changed

🐛 Bug fixes

Full Changelog: v1.138.0...v1.138.1

v1.138.0

14 Aug 19:34
Compare
Choose a tag to compare

v1.138.0

Important

For users that are using the beta timeline, please update your server to v1.138.0 so that the sync mechanism can work correctly. v1.138.0 of the mobile app doesn’t sync the data correctly if your server is v1.137.2 or below.

Highlights

Welcome to the release v1.138.0 of Immich, this release adds many bugfixes and brings the beta timeline closer to feature parity; thank you all for helping with testing and giving feedback. Please let us know if the release fixes the issues you are facing. Let’s dive into some of the highlights below

  • Reset PIN code with password
  • Reset the OAuth ID
  • [beta] swipe to delete album
  • [beta] improvement in the upload and sync process
  • [beta] map view with SQLite

Reset PIN code with password

In order to reset a forgotten PIN code, the admin user used to have to click the “Reset PIN code” button for the user. Now, users can reset their own PIN code by supplying their current password.

Note: when password login is disabled, this option is unavailable.

Reset via password

image image

Reset via admin account

image image

Reset OAuth ID

Immich stores some configuration in the database to keep track of which OAuth accounts are linked to which Immich users. When migrating to a new authentication system or provider, this configuration becomes invalid and can prevent the user from logging in with the new system. A button and accompanying reminder now exists in the OAuth settings to clear or reset this configuration for all users.

image image

What's Changed

🚨 Breaking Changes

🚀 Features

🌟 Enhancements

🐛 Bug fixes

📚 Documentation

🌐 Translations

New Contributors

Read more

v1.137.3

01 Aug 15:06
Compare
Choose a tag to compare

v1.137.3

  • Fixes a media location migration issue for people who have IMMICH_MEDIA_LOCATION set. (e.g., Unraid)

What's Changed

🐛 Bug fixes

Full Changelog: v1.137.2...v1.137.3

v1.137.1

31 Jul 23:19
Compare
Choose a tag to compare

v1.137.1

  • Fixes an issue with the /usr/src/app/upload => /data migration if you don't have any assets in the default library

What's Changed

🐛 Bug fixes

Full Changelog: v1.137.0...v1.137.1

v1.137.0

31 Jul 21:02
Compare
Choose a tag to compare

v1.137.0

  • knock, knock
  • Who's there?
  • Breaking
  • Breaking who?
  • Breaking changes woohoo, with a stable-release-is-around-the-corner and coming to a server near you (soon™)

Caution

Breaking Changes

If your current, running version of Immich is v1.132.0 or newer, there is NO ACTION required. If you are updating from version below v1.132.0 continue reading.

Remove TypeORM (#20366)

This update requires applications to have started up at least once on 1.132.0+. See https://immich.app/errors#typeorm-upgrade for more details.

Highlights

Welcome to the release v1.137.0 of Immich. This version adds many bug fixes for the beta timeline, more feature parity with the old timeline, alongside some nifty enhancements to the web and the server as well. As always, new translations have been merged in, and the documentation has been updated at https://immich.app. Now, let’s dive in!

  • The default docker-compose.yml template has changed
  • Beta timeline
  • Shared link custom URL
  • Find large files utility
  • API key permission improvements

docker-compose.yml template change (optional)

The default compose file now uses /data instead of /usr/src/app/upload. This is a completely optional change and NOT a breaking change. Prior versions of Immich will continue to work without any user intervention. For more information, see #20367.

Prior to this change, uploaded media was located at /usr/src/app/upload/upload in the container (notice the double “upload” folders), which often led to confusion. It will now be located at /data/upload, and we hope that makes things easier.

Beta timeline

Thank you to everyone who tried out the beta timeline in the last release! We have gathered a lot of great feedback, and are actively working on incorporating it. We’ve fixed a bunch of bugs and added back a bunch of previous features. Here’s a quick list/overview of beta timeline changes this release:

  • Fix the invalid timeline grouping issue

  • Fix the trash action translation keys

  • Fix the beta timeline switch missing in landscape mode

  • Fix a timeline migration bug on Android

  • Fix the text overflow issue on the action buttons

  • Fix deep links when the beta timeline is enabled

  • Fix search places not working correctly

  • Fix missing hero animation between tabs

  • Fix the backup remainder backup count issue

  • Fix the share to app upload

  • Fix the error navigating back from the backup page

  • Fix the backup indicator

  • Fix the back gesture in multi-select mode

  • Fix user profile images

  • Fix the issue downloading live photo

  • Fix the issue with sync for users with external libraries

  • Fix the issue with storage filling up for users with iCloud photos

    … and more

Shared link custom URL (#19999)

Immich shared links by default are long and hard to guess. This is by design and is a security mechanism to prevent unwanted access. However, the long links can be a bit awkward to use because they are difficult to read. For cases where security is less important, we have added the option to specify a custom URL.

image

Shared links with a custom URL are now also available at /s/<slug> (in addition to /share/<long-random-string>. Naturally, these links don’t share the same security benefits of the long-random-string ones, so please use them accordingly.

Find large files utility (web-only)

This release adds a new, convenient utility to find large files on your instance. You can access it by navigating to the “Utility” page on the web, and clicking “Review large files”. The page shows the largest 250 original files for your user.

image image

Improved API key permissions and documentation

Following up from the last release, we have added fine-grained permissions to more API endpoints, which are now also included in the auto-generated documentation, which can be read here.

Caution

Related to these changes, a few API permissions have been renamed. See #20250 for more details.

On the web, the New API Key form now includes the newly added permissions, as well as a search bar for quicker access.

image

What's Changed

🚨 Breaking Changes

🚀 Features

🌟 Enhancements

🐛 Bug fixes

Read more

v1.136.0 - 69420 stars release

24 Jul 16:42
Compare
Choose a tag to compare

v1.136.0 - 69420 stars release

Caution

BREAKING CHANGES

IMMICH_MEDIA_LOCATION (#19995)

Note: This is a different variable than UPLOAD_LOCATION, which requires no change.

Note: if you DO NOT have IMMICH_MEDIA_LOCATION in your .env file, or if it is set to a path that starts with a / (absolute path), THIS BREAKING CHANGE DOES NOT APPLY TO YOU. Users of the all-in-one image (e.g., the unraid app) for instance are not affected.


If you have a custom IMMICH_MEDIA_LOCATION environment variable set to a relative path, you will have to do the following process:

  1. Stop Immich (docker compose stop):
  2. Update Immich (docker compose pull)
  3. Update the environment variable to an absolute path, for example:
-IMMICH_MEDIA_LOCATION=./my-library
+IMMICH_MEDIA_LOCATION=/usr/src/app/my-library
  1. Start Immich (docker compose up -d --force-recreate)
  2. After the server successfully starts up, connect to it (docker exec ``*-it*`` immich_server /bin/sh) and run immich-admin change-media-location. When prompted, enter the appropriate values. For example:
docker exec -it immich_server /bin/sh

$ immich-admin change-media-location
...
? Enter the previous value of IMMICH_MEDIA_LOCATION: ./my-library
? Enter the new value of IMMICH_MEDIA_LOCATION: /usr/src/app/my-library

  Previous value: ./my-library
  Current value:  /usr/src/app/my-library

  Changing database paths from "my-library/*" to "/usr/src/app/my-library/*"

? Do you want to proceed? [Y/n] y

Matching database file paths were updated successfully! 🎉

You may now set IMMICH_MEDIA_LOCATION=/usr/src/app/my-library and restart!

Background/Motivation

Relative paths have implied ambiguity, as they depend on the current working directory to resolve correctly, leading to issues like (#4465). This change removes this ambiguity and sets up the project to transition away from files living at /usr/src/app/upload entirely. Currently, the upload folder lives at /usr/src/app/upload/upload, which is very confusing… for everyone. This change opens to door for a future migration to something like IMMICH_DATA=/data, which a more sensible setup.

API Key changes (#20113)

Note: This change may affect the use of third-party applications, such as ImmichGo, ImmichKios, or ImmichFrame.

This release includes a change to how API Keys work, specifically when used with routes that don’t require a specific permission. Previously, a scoped API Key could access these routes, but they will now throw a forbidden error. Routes without a declared scope now implicitly require the “all” permission.

Highlights

Welcome to release v1.136.0. This midsummer release is the culmination of the team's labor of love for the Immich community, featuring the introduction of a new timeline and sync mechanism in beta mode, Android widgets, and one of the last breaking changes we want to make before reaching the stable release milestone. Let’s dive right into it.

  • Beta mode for the new timeline, sync, and upload mechanism
  • Android widgets
  • iOS widget improvements
  • Deep links

Beta timeline, sync, and upload mechanism

Note

This is only supported when both the server and the mobile app are updated to v1.136.0

This is a series of work that has been happening for months under the hood, from the changes in the database query engine, server’s queries, and support logic, to integrating a whole new database on the mobile app, and rewriting almost all aspects of the mobile app, you can now try the new timeline with data sync mechanism, and upload rework by go to the App Settings > Toggle the Beta timeline button. After toggling, you will be directed to a screen where data migration is executed automatically. You can then proceed to the new experience.

image

You can distinguish the beta timeline from the old one by the beta symbol next to the Immich logo in the app bar.

image

Why?

Over the past year, the major complaints we've received from users have primarily centered around the mobile app. The app simply doesn't feel premium or responsive—it's often janky and takes too long to become usable when first opened, especially when you have a large number of albums. Users can't even view their local albums unless they've selected them as backup targets. Our technical debt in the data structure has created some truly frustrating behaviors, like forcing users to re-upload everything (only to have it rejected by the server) when they switch phones and end up with a different device ID. Or local photos and videos don’t show up until they are all hashed, which could take a while.

We've realized we can't honestly call the application stable or confidently recommend it to everyone until we resolve these fundamental problems. We genuinely want this app to be excellent. We want the user experience to be seamless and delightful—we want you to feel genuinely happy when you open Immich to browse through your precious memories.

What’s new?

Data sync

  • The data sync is now running in a background thread, separate from the UI thread. This means that during data synchronization, the app will remain smooth to browse.
  • The data sync speed should be improved drastically. The data is being streamed to the mobile app instead of being sent there in a single large chunk. This will help users with a massive library.
  • The calculation of which data needs to be retrieved from the server is now performed on the server, rather than being calculated by the mobile app previously. This means lower CPU usage on the mobile app and quicker incremental sync.
  • The mobile app will now retrieve data from the server and maintain similar database tables within the app. This restructuring enables better offline operation and supports more complex usage behaviors.

Timeline/Display experience

  • The new timeline has been rewritten from the ground up to enhance scrolling and dragging behavior, making it easier for you to navigate the timeline.
  • The detail viewer is now more interactive, allowing you to scroll between photos or videos when the bottom detail sheet is opened.
  • The album views and other collection views are more lively, featuring a parallax effect to make your album/collection feel alive with mesmerizing animation.
  • You can now view all albums on the device, regardless of which album you have selected as the target for backing up. You can view them in the `Library > On this device` section. For users who want to select individual assets to back up to the server, they can perform that operation from here.

Upload

  • The upload mechanism has been rewritten from the ground up.
  • Upload is now handled by the OS, allowing for a better background upload operation. Instead of handling the uploading ourselves, we are now placing the photos and videos in a queue, which will run continuously when the Immich app is opened in the foreground and for a few minutes after it is put into the background. Then the OS will take over and start pulling tasks from the queue, handling the upload process by itself.
  • Starting the upload progress is now invoked from a toggle button

image

  • Uploads are now running in parallel . The new upload detail page displays which assets are being uploaded and whether they are experiencing issues or stuck. You can tap on each item to see exactly which asset is causing the problem.

image

image

  • On Android, there is no longer a virtual Recents album that includes all assets. Instead, there is a button to select all albums for backup.
  • In the backup album selection screen, you can now search for the album you want to back up.

Expectations of the beta version of the mentioned mechanisms

  • The app should be very smooth to browse around during the initial login and subsequent app openings.
  • Collections (favorite, archived, locked folder, etc.) and album views should make you feel nice, cozy, and delighted.
  • Background queuing of newly taken photos is not yet implemented. We will start working on this next.
  • Some views are not yet ported over to the new implementation, such as, but not limited to
    • People view
    • Map view
  • Some mechanisms are still missing from the previous implementation, such as, but not limited to
    • Add to album from multi-selection
    • Album sync when uploading
  • There are still some buggy behaviors/animations we will be ironing out in the coming days.

How can you help us?

  • Use the beta timeline and the new upload rework.
  • Report any bugs and weirdness you experience on GitHub’s issue tracker [beta] <your-title-here> as the title
  • Reach out and provide direct feedback on Discord
  • Feedback from iCloud users is greatly appreciated

Android Widgets

image

This is a follow-up to one of our most requested features: ...

Read more

v1.135.3

20 Jun 20:19
Compare
Choose a tag to compare

v1.135.3

  • Fixed an issue where the database migration fails on some instances with a different default database name

What's Changed

🐛 Bug fixes

  • fix(server): don't hardcode database name in migration by @dotlambda in #19376

Full Changelog: v1.135.2...v1.135.3