Skip to content

Releases: immich-app/immich

v1.96.0

27 Feb 20:48
Compare
Choose a tag to compare

v1.96.0

Highlights

Welcome to release v1.96.0 of Immich. This release adds more enhancements for search, optimizes the mobile app and includes a handful of bug fixes. Some of the key highlights include:

  • Search filter form improvement
  • Search by location when editing the place for the asset.
  • Optimization of asset rendering on the mobile app.
  • Slideshow options (web)
  • Notable fix (mobile app): Stop sending users to the login page for unrelated authentication errors.
  • Notable fix: Smart Search when using OpenVINO.

Improved Search Form

After receiving users' feedback, we make the search filter a little more compact with minor UI/UX changes to make the process of selecting/deselecting the filter's content more intuitive.

search-filter

Search location when editing place for the asset.

We have implemented the lookup-on-type mechanism to quicky search for a location on the map when adding or edding location of the asset. This process happens entirely on your server

chrome_DoSJwS1Dlr.mp4

[Web] Slideshow options

We added additional options for the slideshow feature on the web, so you can make it fit your needs when showing of your gallery

image

Optimized asset rendering on the mobile app

We add a blur thumbnail loading step to help the transition from black/white placeholder to the image a more pleasant experience and fix a bug that sometimes the HTTP client would timeout and show the broken icon on the thumbnail.

blurloading.mov

And as always, bugs are fixed, and many other improvements also come with this release.

Please consider supporting the project.

Support

If you find the project helpful, you can support Immich via the following channels.

It is a great way to let me know that you want me to continue developing and working on this project for years to come.

What's Changed

🗄️ Server

📱 Mobile

  • refactor(mobile): Use hooks to manage Chewie controller for video by @martyfuhry in #7008
  • fix(deps): update dependency geolocator to v11 by @renovate in #7249
  • fix(deps): update dependency flutter_udid to v3 by @renovate in #7248
  • fix(mobile): don't crop memories in landscape mode by @hrdl-github in #6907
  • refactor(mobile): move error details to separate DB column by @rovo89 in #6898
  • fix(mobile): remove log message counter by @rovo89 in #6865
  • fix(mobile): Stop sending app to login page for unrelated auth errors by @martyfuhry in #7383
  • refactor(mobile): Use ImmichThumbnail and local thumbnail image provider by @martyfuhry in #7279
  • refactor(mobile): Uses blurhash for memory card instead of blurred thumbnail by @martyfuhry in #7469

🖥️ Web

🧠 Machine Learning

📓 Documentation

🔨 Maintenance

Read more

v1.95.1

21 Feb 04:23
Compare
Choose a tag to compare

v1.95.1

Hotfixes

  • fixed search result not return correctly with the combination of not in album filter and context search
  • fixed search results return archived assets by default
  • fixed flashing issue in memory view on the mobile app
  • fixed presenting add to album modal removes the browser's scroll ability

Include the release note from v1.95.0 below for your convenience.


v1.95.0

Warning

⚠️ Breaking Changes ⚠️

1. Upgrade pgvecto.rs to stable version 0.2.0 for enhanced search

Step 1: Change the docker-compose.yml database image from 0.1.11 to 0.2.0

[...]

  database:
    container_name: immich_postgres
-   image: tensorchord/pgvecto-rs:pg14-v0.1.11@sha256:0335a1a22f8c5dd1b697f14f079934f5152eaaa216c09b61e293be285491f8ee 
+   image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: always

[...]

Step 2: Perform docker compose pull

Step 3:

a) If Immich is a Postgres superuser (default)

Bring the stack up with docker compose up

When the server starts up, it will log a message like this:

WARN [DatabaseService] Could not run vector reindexing checks. If the extension was updated, please restart the Postgres instance.

warn

This is normal. Continue to Step 4.

b) If Immich is not a Postgres superuser

If Immich doesn't have superuser permissions, you'll need to bring up the database and run a few commands manually:

BEGIN;

CREATE SCHEMA IF NOT EXISTS vectors;
ALTER DATABASE immich SET search_path TO "$user", public, vectors;
SET search_path TO "$user", public, vectors;

UPDATE pg_catalog.pg_extension SET extversion = '0.1.11' WHERE extname = 'vectors';
UPDATE pg_catalog.pg_extension SET extrelocatable = true WHERE extname = 'vectors';
ALTER EXTENSION vectors SET SCHEMA vectors;
UPDATE pg_catalog.pg_extension SET extrelocatable = false WHERE extname = 'vectors';
ALTER EXTENSION vectors UPDATE TO '0.2.0';

SELECT pgvectors_upgrade();

COMMIT;

Step 4: Terminate and restart the stack

Bring the stack down (or terminate with ctrl + c) with:

docker compose down

Then bring it back up:

docker compose up

You'll run into a message saying:

[DatabaseRepository] Could not reindex index face_index. Attempting to auto-fix.

image

This is normal. The server will do some magic and start to work.

Step 5: Enjoy the new ✨search enhancements

2. OAuth encryption algorithm setting changes

OAuth setups using HS256 (mainly Authentik) will need to either (1) update the signing algorithm in Immich or (2) specify a signing key in the provider settings (so that it uses RS256 instead).

Specify a signing key in Authentik:

Screencast.from.02-02-2024.12.05.04.AM.webm

New Immich OAuth Setting

image

Background

RS256 is generally better than HS256. RS256 is pretty much the most commonly used algorithm. The client library we use for open-id defaults to RS256. It's very easy to setup Authentik without specifying a signing key, which will default to use HS256. The original implementation added a hack/fallback to HS256 in some conditions to try to handle that situation. The current code removes the fallback, and adds a specific Signing Algortithm setting which can be explicitly set. Alternatively, the issue could be fixed by specifying a signing key in Authentik.

References:

Highlights

Welcome to version v1.95.0 of Immich. This is one of the longest stretches since the last release of Immich for the past year, we only had 150+ PRs merged since the last release. There are many new improvements and features in this release that we are very excited to introduce to you.

  • (Web) Search enhancement - Introduced filter to incorporate advanced search.
  • (Web) Improve user experience in search view - Infinite scrolling and justified layout in search result view.
  • (Web) Show partner's photos and videos on the map - Option to show shared partners assets on the map
  • (Mobile) Playing video in Memory view - Videos now auto play while viewing memories on the mobile app.
  • (Mobile) Gradient placeholder - A much more pleasant placeholder while scrolling through your timeline.
  • (Mobile) iOS background backup on WIFI option - The iOS mobile app can restrict your backups to only work while on WIFI.
  • Notable fix: Issue with unresponsive swiping in gallery view fixed on iOS.

Enhanced search feature

This feature is available on the Web only as of this release

This release adds a highly anticipated feature - advanced search with filters by date, location and more. What's more is that these filters are also compatible with smart search, so you can add text to sort by relevance at the same time.

Results are also no longer capped at 100 - scrolling down will fetch more and more assets.

filter

pgvector compatibility

As part of the upgrade to pgvecto.rs 0.2, we've also added pgvector support for environments where pgvecto.rs can't be used. Adding DB_VECTOR_EXTENSION=pgvector to the .env file will use pgvector instead (assuming your Postgres instance has pgvector installed). We'd like to give a special shoutout to the pgvecto.rs team for adding a compatibility mode that makes it easier for us to support both extensions.

Please note that the extension cannot be changed after a successful startup (i.e., migrations have run). This means you can't switch to pgvector from an existing instance with pgvecto.rs. It must be a new instance or an instance coming from 1.90.2 or older. Additionally, some features may not work quite as well with pgvector.

If you're upgrading from an old version of Immich, the migrations will take some time - don't worry if the server doesn't start up immediately.

Show partner's photos and videos on the map

This feature is available on the Web only as of this release

You can now toggle the option to include partners' assets on the map view.

Gradient placeholder on the mobile app

iOS background backup on WIFI option

You can now toggle this option only to allow background backup while the device is connected to the WIFI network.

External library import path validation

Several users struggle with getting import paths correct with external libraries. This version adds several checks and validations so that the user gets feedback on what went wrong.

image

CLI release

New CLI version 2.0.8. This version supports running inside Docker without needing Node.js installed, which helps on some platforms. Under the hood, it has been migrated to the new API version, uses vitest instead of jest, and has seen several improvements and bug fixes.


And as always, bugs are fixed, and many other improvements also come with this release.

Please consider supporting the project.

Support

If you find the project helpful, you can support Immich via the following channels.

It is a great way to let me know that you want me to continue developing and working on this project for years to come.

What's Changed

🗄️ Server

📱 Mobile

  • fix(mobile): Uses immich thumbnail for background of memory picture by @martyfuhry in #7254

🖥️ Web

  • fix(web): presenting modal removes the browser's scroll ability by @alextran1502 in #7257

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

v1.95.0

20 Feb 17:26
Compare
Choose a tag to compare

v1.95.0

Warning

⚠️ Breaking Changes ⚠️

1. Upgrade pgvecto.rs to stable version 0.2.0 for enhanced search

Step 1: Change the docker-compose.yml database image from 0.1.11 to 0.2.0

[...]

  database:
    container_name: immich_postgres
-   image: tensorchord/pgvecto-rs:pg14-v0.1.11@sha256:0335a1a22f8c5dd1b697f14f079934f5152eaaa216c09b61e293be285491f8ee 
+   image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: always

[...]

Step 2: Perform docker compose pull

Step 3:

a) If Immich is a Postgres superuser (default)

Bring the stack up with docker compose up

When the server starts up, it will log a message like this:

WARN [DatabaseService] Could not run vector reindexing checks. If the extension was updated, please restart the Postgres instance.

warn

This is normal. Continue to Step 4.

b) If Immich is not a Postgres superuser

If Immich doesn't have superuser permissions, you'll need to bring up the database and run a few commands manually:

BEGIN;

CREATE SCHEMA IF NOT EXISTS vectors;
ALTER DATABASE immich SET search_path TO "$user", public, vectors;
SET search_path TO "$user", public, vectors;

UPDATE pg_catalog.pg_extension SET extversion = '0.1.11' WHERE extname = 'vectors';
UPDATE pg_catalog.pg_extension SET extrelocatable = true WHERE extname = 'vectors';
ALTER EXTENSION vectors SET SCHEMA vectors;
UPDATE pg_catalog.pg_extension SET extrelocatable = false WHERE extname = 'vectors';
ALTER EXTENSION vectors UPDATE TO '0.2.0';

SELECT pgvectors_upgrade();

COMMIT;

Step 4: Terminate and restart the stack

Bring the stack down (or terminate with ctrl + c) with:

docker compose down

Then bring it back up:

docker compose up

You'll run into a message saying:

[DatabaseRepository] Could not reindex index face_index. Attempting to auto-fix.

image

This is normal. The server will do some magic and start to work.

Step 5: Enjoy the new ✨search enhancements

2. OAuth encryption algorithm setting changes

OAuth setups using HS256 (mainly Authentik) will need to either (1) update the signing algorithm in Immich or (2) specify a signing key in the provider settings (so that it uses RS256 instead).

Specify a signing key in Authentik:

Screencast.from.02-02-2024.12.05.04.AM.webm

New Immich OAuth Setting

image

Background

RS256 is generally better than HS256. RS256 is pretty much the most commonly used algorithm. The client library we use for open-id defaults to RS256. It's very easy to setup Authentik without specifying a signing key, which will default to use HS256. The original implementation added a hack/fallback to HS256 in some conditions to try to handle that situation. The current code removes the fallback, and adds a specific Signing Algortithm setting which can be explicitly set. Alternatively, the issue could be fixed by specifying a signing key in Authentik.

References:

Highlights

Welcome to version v1.95.0 of Immich. This is one of the longest stretches since the last release of Immich for the past year, we only had 150+ PRs merged since the last release. There are many new improvements and features in this release that we are very excited to introduce to you.

  • (Web) Search enhancement - Introduced filter to incorporate advanced search.
  • (Web) Improve user experience in search view - Infinite scrolling and justified layout in search result view.
  • (Web) Show partner's photos and videos on the map - Option to show shared partners assets on the map
  • (Mobile) Playing video in Memory view - Videos now auto play while viewing memories on the mobile app.
  • (Mobile) Gradient placeholder - A much more pleasant placeholder while scrolling through your timeline.
  • (Mobile) iOS background backup on WIFI option - The iOS mobile app can restrict your backups to only work while on WIFI.
  • Notable fix: Issue with unresponsive swiping in gallery view fixed on iOS.

Enhanced search feature

This feature is available on the Web only as of this release

This release adds a highly anticipated feature - advanced search with filters by date, location and more. What's more is that these filters are also compatible with smart search, so you can add text to sort by relevance at the same time.

Results are also no longer capped at 100 - scrolling down will fetch more and more assets.

filter

pgvector compatibility

As part of the upgrade to pgvecto.rs 0.2, we've also added pgvector support for environments where pgvecto.rs can't be used. Adding DB_VECTOR_EXTENSION=pgvector to the .env file will use pgvector instead (assuming your Postgres instance has pgvector installed). We'd like to give a special shoutout to the pgvecto.rs team for adding a compatibility mode that makes it easier for us to support both extensions.

Please note that the extension cannot be changed after a successful startup (i.e., migrations have run). This means you can't switch to pgvector from an existing instance with pgvecto.rs. It must be a new instance or an instance coming from 1.90.2 or older. Additionally, some features may not work quite as well with pgvector.

If you're upgrading from an old version of Immich, the migrations will take some time - don't worry if the server doesn't start up immediately.

Show partner's photos and videos on the map

This feature is available on the Web only as of this release

You can now toggle the option to include partners' assets on the map view.

Gradient placeholder on the mobile app

iOS background backup on WIFI option

You can now toggle this option only to allow background backup while the device is connected to the WIFI network.

External library import path validation

Several users struggle with getting import paths correct with external libraries. This version adds several checks and validations so that the user gets feedback on what went wrong.

image

CLI release

New CLI version 2.0.8. This version supports running inside Docker without needing Node.js installed, which helps on some platforms. Under the hood, it has been migrated to the new API version, uses vitest instead of jest, and has seen several improvements and bug fixes.


And as always, bugs are fixed, and many other improvements also come with this release.

Please consider supporting the project.

Support

If you find the project helpful, you can support Immich via the following channels.

It is a great way to let me know that you want me to continue developing and working on this project for years to come.

What's Changed

⚠️ Breaking Changes

🗄️ Server

  • fix(server): extract duration from video as ISO time by @alextran1502 in #6863
  • chore(server): Use ChunkedSet in Access repository by @adamantike in #6943
  • feat(server): optimize face re-queueing by @mertalev in #6961
  • fix(server): check if sidecarPath exists by @JW-CH in #6293
  • fix(server): use luxon for deleted date calculation by @manasadepu in #6958
  • feat(server): server-side checking of duplicate import paths and exclusion patterns by @etnoy in #6993
  • feat(server): restore modified at timestamp after upload, preserve when copying by @jextrevor in #7010
  • feat(server, web): smart search filtering and pagination by @mertalev in #6525
  • refa...
Read more

v1.94.1

31 Jan 19:33
Compare
Choose a tag to compare

v1.94.1

Hotfixes

  • Fixed the issue that cannot log in with the OAuth button on the web

And as always, bugs are fixed, and many other improvements also come with this release.

Please consider supporting the project.

Support

If you find the project helpful, you can support Immich via the following channels.

It is a great way to let me know that you want me to continue developing and working on this project for years to come.

What's Changed

🖥️ Web

🔨 Maintenance

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

v1.94.0

31 Jan 17:33
Compare
Choose a tag to compare

1.94.0

Breaking Changes ⚠️

  • The mobile app will no be longer compatible with server version < v1.92 starting from this version. Please make sure to have your server and mobile app on the same version to work correctly.
  • docker-compose.yml content change for hardware acceleration to incorporate hardware acceleration for machine learning
  • The following asset endpoints have been deprecated and will be removed in a future release
    • GET /asset/assetById/:id
    • POST /asset/download/info
    • POST /asset/download/archive
    • POST /asset/download/:id
    • POST /asset/restore
    • POST /asset/trash/empty
    • POST /asset/trash/restore
  • WebSocket connections no longer use "polling". If you see a disconnected status in the web, make sure your reverse proxy allows websockets.

Highlights

Welcome to release v1.94.0 of Immich. This release is packed with bug fixes, quality-of-life improvements, and preparation for migrating to a new search experience. Please find some of the highlights of this release below, and we hope you like it!

  • Automatically update the external libraries when the filesystem changes (experimental)
  • Hardware acceleration for machine learning is now supported for ARM NN, CUDA, and OpenVINO.
  • Search for people on the people page.
  • Additional video transcoding options for audio and video codecs.
  • New combobox component for selecting asset’s timezone on the web.
  • Notable fix: Motion Photo on Samsung is now fixed. Re-run metadata extraction to detect and automatically fix affected files.
  • Notable fix: The blurry memory photo on the mobile app is now fixed.

Automatic library watching (experimental)

External libraries can now automatically import changed files without a full rescan. It will import the file whenever the operating system reports a file change. If your photos are mounted over the network, this does not work, but there is an option to enable polling. Beware, however, that polling can cause high CPU consumption.

You can enable this feature in the Administration page > Settings > Library

image

Library watching is considered experimental at this stage and is disabled by default. Please report how this feature works for you, especially if you have large external libraries.

Sneak peak

image

And as always, bugs are fixed, and many other improvements also come with this release.

Please consider supporting the project.

Support

If you find the project helpful, you can support Immich via the following channels.

It is a great way to let me know that you want me to continue developing and working on this project for years to come.

What's Changed

⚠️ Breaking Changes

🗄️ Server

📱 Mobile

🖥️ Web

🧠 Machine Learning

Read more

v1.93.3

20 Jan 16:40
Compare
Choose a tag to compare

Hotfixes

  • Small fixes for the web

Please consider supporting the project.

Support

If you find the project helpful, you can support Immich via the following channels.

It is a great way to let me know that you want me to continue developing and working on this project for years to come.

What's Changed

🖥️ Web

Full Changelog: v1.93.2...v1.93.3

v1.93.2

19 Jan 19:26
Compare
Choose a tag to compare

v1.93.2

Hotfixes

  • Fixed toggle button doesn't work in some settings forms

Please consider supporting the project.

Support

If you find the project helpful, you can support Immich via the following channels.

It is a great way to let me know that you want me to continue developing and working on this project for years to come.

What's Changed

🗄️ Server

📱 Mobile

🖥️ Web

🔨 Build

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

v1.93.1

19 Jan 15:18
Compare
Choose a tag to compare

v1.93.1

There is no mobile release for this version

Hot fixes

  • Fixed an issue with the toggle slider doesn't have any information/label on the web

Please consider supporting the project.

Support

If you find the project helpful, you can support Immich via the following channels.

It is a great way to let me know that you want me to continue developing and working on this project for years to come.

What's Changed

🖥️ Web

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

v1.93.0

19 Jan 02:53
Compare
Choose a tag to compare

v1.93.0

Announcement 📢

We are running a logo design contest for Immich; please visit the discussion thread and express your ideas if you have any. The contest will close on March 4th

Highlights

Welcome to release v1.93.0 of Immich. There are many updates in this version that we hope you'll like. Some of the key highlights include:

  • Improved face grouping for facial detection - switch to DBSCAN clustering algorithm.
  • New usage quota mechanism for users - specify the maximum storage each user can use on the server.
  • Improve the deletion actions on the mobile app - Present explicit options to clear up confusion about each action.
  • Faster map rendering on the mobile app
  • Force deletion with Shift + Del on the web app
  • Notable fix: The web can now show assets with a date in the future.

New face clustering algorithm

To improve the accuracy of grouping faces, Immich is now using a more advanced clustering algorithm for facial recognition called DBSCAN. This algorithm introduces a concept of density, making facial recognition more precise. To better understand DBSCAN's work, please watch this video for a step-by-step visualization.

In addition to better facial recognition, a feature of this change is the ability to re-run facial recognition without re-processing each asset. This is because the Recognize Faces job has been split into two jobs: Face Detection and Facial Recognition, with only Face Detection processing images with machine learning models. Re-running Facial Recognition (say, after changing facial recognition settings) is much quicker as a result.

image

Usage quota

You can now specify the storage quota for the user as the instance’s admin; once the limit is reached, the user won’t be able to upload to the instance anymore.

user table

edit quota edit quota

Deletion actions on the mobile app

To increase the wife-approval-factor aspect of Immich, we always try to improve the UI/UX, and make the application simpler for non-tech-savvy users. To make the delete action easier to understand, we now have three separate buttons to handle different scenarios that can happen, which are presented in the table below.

image


image

And as always, bugs are fixed, and many other improvements also come with this release.

Please consider supporting the project.


Support

If you find the project helpful, you can support Immich via the following channels.

It is a great way to let me know that you want me to continue developing and working on this project for years to come.

What's Changed

🗄️ Server

📱 Mobile

🖥️ Web

🧠 Machine Learning

⚡ CLI

  • fix(cli): uploadCounters increase only when files are uploaded by @AngelPone in #6357

📓 Documentation

Read more

v1.92.1

08 Jan 15:48
Compare
Choose a tag to compare

v1.92.1

There is no mobile release for this version

Hotfixes

  • Not showing onboarding if the instance uses the config file

Support

If you find the project helpful, you can support Immich via the following channels.

It is a great way to let me know that you want me to continue developing and working on this project for years to come.

What's Changed

Server

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