Skip to content

Releases: immich-app/immich

v1.134.0

27 May 17:28
Compare
Choose a tag to compare

v1.134.0

Welcome to release v1.134.0 of Immich. This release focuses on bug fixes and enhancements from the previous release. Please find some of the highlights below:

  • Adds a new API endpoint to check the application version status
  • Adds a mechanism to handle startup reindexing after a failed model change
  • Improves pinch-to-zoom action on the mobile app
  • Replaces the administration user edit button with the action button to go straight to the user's detail page
  • Fixes a bug where generated memories include locked assets
  • Fixes a bug where the search filter panel anchors to the top of the page instead of the viewport
  • Fixes a bug where ctrl/cmd + click doesn't open the photo on a new page
  • Fixes various minor issues related to styling and z-index

Support Immich

What's Changed

🌟 Enhancements

🐛 Bug fixes

🌐 Translations

New Contributors

Full Changelog: v1.133.1...v1.134.0

v1.133.1

23 May 18:14
Compare
Choose a tag to compare

v1.133.1

Highlights

  • Lower disk usage during VectorChord migration
  • Adds move to locked album button to more views on the web
  • Fixes a bug where the missing button for the duplicate detection job is not working
  • Fixes a bug where a hard link does not navigate to the asset location on the timeline
  • Fixes a bug where styling information is missing in some cases
  • Fixes a bug where locked assets show up in local album view if it is presented on the phone
  • Fixes some translation issues

What's Changed

🌟 Enhancements

🐛 Bug fixes

📚 Documentation

  • fix(docs): more vchord details by @mmomjian in #18435
  • fix(docs): mention DB_VECTOR_EXTENSION env in pgvector->vchord migration guide by @mertalev in #18508

🌐 Translations

New Contributors

Full Changelog: https://github.com/immich-app/immich/compare/v1.133.0...

v1.133.0

21 May 20:17
Compare
Choose a tag to compare

v1.133.0 - The Hot Summer Release

Caution

BREAKING CHANGES

  1. Mobile app version

    Please make sure to have the mobile app and the server on the same version for this release. Older versions of the mobile app will not work correctly with version v1.133.0 of the server. At the time of this release, the updated version of the mobile app should be available on the app stores.

  2. Upgrading the server from a very old release

    As of 1.133.0, Immich only supports upgrading directly from 1.107.2 or later. If you’re trying to upgrade a version of Immich below this, please upgrade to 1.107.2 first and ensure Immich starts up successfully before continuing to the latest release.

  3. New database vector extension

    We are migrating off the deprecated pgvecto.rs database extension to its successor VectorChord, which comes with performance improvements in almost all aspects. This change is a major milestone we want to perform prior to the stable release.

Before making any other changes, please back up your database. While every effort has been made to make this migration as smooth as possible, there’s always a chance that something can go wrong.

After making a backup, please modify your docker-compose.yml file with the following information.

  [...] 

  database:
    container_name: immich_postgres
-   image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52
+   image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
+     # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs
+     # DB_STORAGE_TYPE: 'HDD'
    volumes:
      # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
-   healthcheck:
-     test: >-
-       pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
-       Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
-       --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
-       echo "checksum failure count is $$Chksum";
-       [ "$$Chksum" = '0' ] || exit 1
-     interval: 5m
-     start_interval: 30s
-     start_period: 5m
-   command: >-
-     postgres
-     -c shared_preload_libraries=vectors.so
-     -c 'search_path="$$user", public, vectors'
-     -c logging_collector=on
-     -c max_wal_size=2GB
-     -c shared_buffers=512MB
-     -c wal_compression=on
    restart: always

    [...]

If you deviated from the defaults of pg14 or pgvectors0.2.0, you must adjust the pg major version and pgvecto.rs version. If you are still using the default docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0 image, you can just follow the changes above. For example, if the previous image is docker.io/tensorchord/pgvecto-rs:pg16-v0.3.0, the new image should be ghcr.io/immich-app/postgres:16-vectorchord0.3.0-pgvectors0.3.0 instead of the image specified in the diff.

After making these changes, you can start Immich as normal. Immich will make some changes to the DB during startup, which can take seconds to minutes to finish, depending on hardware and library size. In particular, it’s normal for the server logs to be seemingly stuck at Reindexing clip_index and Reindexing face_indexfor some time if you have over 100k assets in Immich and/or Immich is on a relatively weak server. If you see these logs and there are no errors, just give it time.

Important

Note: after switching to VectorChord, you should not downgrade Immich below 1.133.0.

Please don’t hesitate to contact us here on GitHub or Discord if you encounter migration issues.

VectorChord FAQ

I have a separate PostgreSQL instance shared with multiple services. How can I switch to VectorChord?

Please see https://immich.app/docs/administration/postgres-standalone#migrating-to-vectorchord for migration instructions. The migration path will be different depending on whether you’re currently using pgvecto.rs or pgvector, as well as whether Immich has superuser DB permissions.

What will happen if I upgrade Immich to 1.133.0 without changing the DB image?

Immich will auto-detect the vector extension available in the DB and continue to work without manual intervention. However, we will drop support for pgvecto.rs in a later release, so please switch at your convenience.

I’m using a different deployment method than Docker Compose. How should I migrate?

If you’re using Immich through turnkey deployment methods such as TrueNAS apps, the respective maintainers will either perform the migration transparently or inform you of what to do if not.

Why are so many lines removed from the docker-compose.yml file? Does this mean the health check is removed?

These lines are now incorporated into the image itself along with some additional tuning.

What does this change mean for my existing DB backups?

The new DB image includes pgvector and pgvecto.rs in addition to VectorChord, so you can use this image to restore from existing backups that used either of these extensions. However, backups made after switching to VectorChord require an image containing VectorChord to restore successfully.

Do I still need pgvecto.rs installed after migrating to VectorChord?

pgvecto.rs only needs to be available during the migration, or if you need to restore from a backup that used pgvecto.rs. For a leaner DB and a smaller image, you can optionally switch to an image variant that doesn’t have pgvecto.rs installed after you’ve performed the migration and started Immich: ghcr.io/immich-app/postgres:14-vectorchord0.3.0, changing the PostgreSQL version as appropriate.

Why does it matter whether my database is on an SSD or an HDD?

These storage mediums have different performance characteristics. As a result, the optimal settings for an SSD are not the same as those for an HDD. Either configuration is compatible with SSD and HDD, but using the right configuration will make Immich snappier. As a general tip, we recommend users store the database on an SSD whenever possible.

Can I use the new database image as a general PostgreSQL image outside of Immich?

It’s a standard PostgreSQL container image that additionally contains the VectorChord, pgvector, and (optionally) pgvecto.rs extensions. If you were using the previous pgvecto.rs image for other purposes, you can similarly do so with this image.

If pgvecto.rs and pgvector still work, why should I switch to VectorChord?

VectorChord is faster, more stable, uses less RAM, and (with the settings Immich uses) offers higher-quality results than pgvector and pgvecto.rs. This translates to better search and facial recognition experiences. In addition, pgvecto.rs support will be dropped in the future, so changing it sooner will avoid disruption.


Highlights

Welcome to the release v1.133.0 of Immich, which is the hottest release yet for this summer, with more than 200 commits since the last version. This version brings you a new database extension, an even more optimized and faster timeline, more unified components on the web, some cool new features that have been requested for a long time, and many bug fixes and improvements. Let’s dive in!

  • VectorChord database extension
  • In-app notification
  • Show map in albums view (web only)
  • Locked folder
  • Google Cast Support (web only)
  • User detail page
  • RTL text support on the web
  • Performance improvement in web timeline
  • Notable fix: thumbnail caching issue on the mobile app
  • Notable fix: For users who use OAuth, you can now configure TOKEN_ENDPOINT_AUTH_METHOD to either client_sect_post or client_secret_basic after entering the CLIENT_SECRET
  • Sneak peek

In-app notification

Introducing an in-app, or internal, notification system. Previously, there was no way to notify you on the client if a database backup failed. Now, the failed backup will show up under a new notification section on the web. This mechanism paves the way for other helpful notifications, such as when a new album is shared with you or when new assets are added to a shared album, directly in the app.

Show map in albums view

On the web, you can now click this button to see the map view that shows the location of all the photos and videos in an album.

Locked folder

Have you ever taken embarrassing selfies that you don’t want anyone to see, and worry that you could accidentally reveal them while showcasing your superb Immich library? Locked folder view got you covered, with a personal PIN code, and an option to use biometric verification on the mobile app. You can access the page from the sidebar on the web or in the Library page on the app

Read more

v1.132.3

28 Apr 14:11
Compare
Choose a tag to compare

v1.132.3

Bug fixes

  • Opt-in delete sync is now available on Android!
    We found an alternative method to achieve this. The feature is now available on Android. We are excited to hear about your experience with the feature. Please read this note about the feature
  • Fixes an issue where the mobile app cannot log in with an instance using Authelia for OAuth.

Important

Please update your Authelia config with the following property

token_endpoint_auth_method: "client_secret_post"
  • Fixes an issue where navigating to the Library page could trigger a location permission request
  • Fixes an issue where the mobile app might rehash some of the assets

What's Changed

🐛 Bug fixes

📚 Documentation

New Contributors

Full Changelog: v1.132.1...v1.132.3

v1.132.1

23 Apr 22:08
Compare
Choose a tag to compare

v1.132.1

Hotfixes

  • Reverting the opt-in delete synchronization in this release 😢. There is an issue with getting the Google PlayStore to approve the app with the new permission needed for this feature. We are exploring alternative routes to preserve this feature and will push out another update as soon as possible
  • Fixes an issue where the server does not start on ARM devices

What's Changed

🐛 Bug fixes

Full Changelog: v1.132.0...v1.132.1

v1.132.0

23 Apr 17:09
Compare
Choose a tag to compare

v1.132.0

Highlights

Note

We are now using Valkey's image for the Redis service in the default docker-compose.yml template. This is not a required change. If you wish to use it, you can download the docker-compose.yml file at the bottom of the release notes and replace the redis image with the new one.

Welcome to version v1.132.0 of Immich.

This release marks an exciting milestone, inching one step closer to the stable release. The server no longer relies on TypeORM (database object-relational mapping); from this point forward, we utilize our own schema and migration management tool, integrated with Kysely. Related, the mobile app will also begin to use a new database, SQLite. Over the next few releases, we plan to roll out a new, efficient sync implementation using SQLite, which should improve startup time and reduce jankiness, especially when working with large media collections.

In addition to the two milestones mentioned above, this release also features new enhancements, bug fixes, and other notable additions. Please see the highlights below.

  • Opt-in web-mobile delete action synchronization on Android
  • Improve web responsive design on mobile devices
  • Migrate mobile app translations to Weblate
  • Improve mobile app map performance

Opt-in web-mobile delete synchronization (Android only)

This update includes a new, optional feature currently in an experimental phase. It aims to synchronize deletion actions between the Immich web interface and your connected Android device.

If you choose to enable this feature (Settings > Advanced > Sync remote deletion), trashing, deleting, or restoring a photo or video through the Immich web interface will result in the corresponding action being taken on the file on your Android phone. This functionality is intended to prevent the need to perform the same trash action separately on both Immich and your phone.

When this feature is active, the sequence of events is as follows:

  1. Your photos get backed up from your phone to Immich.
  2. Later, you use the Immich website to trash some of those photos.
  3. The next time you open the Immich app on your phone, the app will find those photos you trashed on the website and move them to your phone's trash folder for you.
  4. If you choose to restore the asset from Immich’s trash, it will also be moved out of your phone’s trash folder.

Note: The location of the phone's trash folder varies by device. For example, Samsung devices often use the Gallery app's trash, while Google Pixel devices may use the Files app's trash.)

Improve web responsive design on mobile devices.

This release makes significant improvements to the browsing experience of the web app on mobile devices. The sidebar is now collapsible, leaving more space to view the timeline. We’ve also changed the size of the images in the timeline on mobile, with the hope of making more images visible at once.

Just as we thought we had squeezed every ounce of performance out of the timeline scrolling, a wizard in the contributor team pushed it even further. The need for speed is real! We hope you enjoy it.

Mobile app translations have been migrated to Weblate.

The i18n on the mobile app, previously managed with Localizely, has now been migrated to Weblate. Anyone can help with translation without needing to obtain an invitation from us.

Along with those changes, we have made many more improvements to the quality of the server, web, and mobile app. We hope you enjoy those as well.

Support Immich

If you find the project helpful, you can support Immich by purchasing a product key at https://buy.immich.app or purchase our merchandise at https://immich.store

What's Changed

🚨 Breaking Changes

🔒 Security

  • fix: various actions workflow security improvements by @bo0tzz in #17651
  • feat: static analysis job for gha workflows by @bo0tzz in #17688

🚀 Features

🌟 Enhancements

🐛 Bug fixes

Read more

v1.131.3

01 Apr 22:48
Compare
Choose a tag to compare

v1.131.3

Hotfixes

  • Fixes an issue where the mobile app shows incorrect memories.
  • Fixes an issue where the web timeline doesn't load when there is a blank locale.
  • Fixes an issue where the full-size image doesn't migrate correctly.
  • Fixes an issue where the select-all button doesn't reflect the correct selection state.

What's Changed

🐛 Bug fixes

New Contributors

Full Changelog: v1.131.2...v1.131.3

1.131.2

01 Apr 12:04
Compare
Choose a tag to compare

v1.131.2

Fixed an issue with the machine learning healthchecks always showing unhealthy

What's Changed

🐛 Bug fixes

Full Changelog: v1.131.1...v1.131.2

v1.131.1

31 Mar 20:53
Compare
Choose a tag to compare

v1.131.1

Fixes an issue with running migrations in a non-root environments.

What's Changed

🐛 Bug fixes

Full Changelog: v1.131.0...v1.131.1

v1.131.0

31 Mar 19:02
Compare
Choose a tag to compare

v1.131.0

Highlights

Welcome to release v1.131.0 of Immich. This release focuses on more bug fixes from previous performance enhancements, some new changes also managed to sneak in within the short time window that we have 😀. Please find some of the highlights below:

  • New map styles and POI with a globe view
  • Map performance improvements for high asset counts
  • View HEIC, RAW and other image formats in full resolution in the web app
  • Better support for NLLB search models
  • Fixes an issue where users with an external library cannot see all assets on the mobile app
  • Fixes an issue where some exclusion paths were ignored in the external library
  • Fixes an issue where photos randomly appear in album view or person view on the web

New map looks & performance inprovements

The map now comes with updated stylings, which include points of interest (POIs) such as parks, hospitals, schools…etc. On the web, you can now view the map as a globe view (sorry, flat-earthers!)

The map view is now much more performant for large asset counts, no more taking 10 seconds for the map view to respond!

To see the style and poi updates, you may need to clear your browser cache or wait 30 days

Light Dark
image image
Globe view
image

View any image in full resolution in the web app

The Immich web app could previously only display an image in original resolution if the original could be displayed by the browser (JPEG, PNG, etc.). For formats like DNG that aren’t supported by major browsers, the web app could only show the preview image.

This release adds a setting to generate “full size” previews in addition to normal size previews. This means you can zoom into these images and view them in full resolution, even when the browser doesn’t support displaying the original. If the “Display original photos” preference is enabled, it will always display the full size preview if one exists for web incompatible formats.

Note that this setting doesn’t affect the mobile app, which already supports displaying the original for formats like HEIC (albeit not for most RAW formats). It also somewhat increases storage overhead and decreases image processing speed as it’s another (large) image to generate for each relevant asset. It’s an opt-in setting for these reasons.

To take advantage of this setting, go to the Image Settings and enable Full-size Image Settings, then queue all assets for Thumbnail Generation in the Jobs page.

image

Better multilingual searching with NLLB models

The NLLB model family performs the best for most languages excluding English, but Immich didn’t use them optimally. This release lets them perform at their best and brings a new tradeoff for searching: NLLB models give the best results for most languages, in exchange for the model interpreting a user’s searches as being in the user’s UI language.

If your users mainly search in a single non-English language, then these models are definitely worth a look. Each user can search in a different language since it’s based on the user’s UI language, applying to both the web app and mobile app (the latter must be updated to 1.131.0 or later for it to apply). If you’d like the flexibility for the same user to search in different languages, or if your users mainly search in English, then other models will work better for those usages.

See the documentation for more info on how to pick and change the search model.

Support Immich

If you find the project helpful, you can support Immich by purchasing a product key at https://buy.immich.app or purchase our merchandise at https://immich.store

What's Changed

🌟 Enhancements

  • feat: use my.immich.app for externalDomain fallback by @bo0tzz in #17209
  • feat: improve performance for GET /api/album & /api/album/:id by @PathToLife in #17124
  • feat(server): consider JpgFromRaw2 tag for embedded previews by @mertalev in #17123
  • feat(web): increase album collapse click area by @PathToLife in #17213
  • feat(ml): better multilingual search with nllb models by @mertalev in #13567
  • feat: original-sized previews for non-web-friendly images by @eligao in #14446

🐛 Bug fixes

📚 Documentation

🌐 Translations

New Contributors

Full Changelog: v1.130.3...v1.131.0