Skip to content

Releases: immich-app/immich

v1.109.1

18 Jul 18:26
Compare
Choose a tag to compare

v1.109.1

Hotfixes

  • Fix an issue to prevent the machine learning container from starting up

What's Changed

🗄️ Server

  • feat: optionally generate thumbnails for invalid images by @Saschl in #11126

Other changes

New Contributors

Full Changelog: v1.109.0...v1.109.1

v1.109.0

18 Jul 16:25
Compare
Choose a tag to compare

v1.109.0

Important

Read our announcement about supporting Immich by buying a license here

Highlights

Welcome to version v1.109.0 of Immich. This release introduces an additional way for you to support Immich financially as well as bug fixes for various issues. Some of the highlights in this release include:

Immich licenses

With the announcement of Immich's licensing, you can now purchase a license to support Immich and open-source software.

In the web app, there is an information box that shows if you are a licensed or unlicensed user. You can click on the box to navigate to the purchase page or to enter the license key directly.

Unlicensed Licensed
Unlicensed Licensed

"My Immich" url forwarder (https://my.immich.app)

To help with future support, we are happy to introduce a "proxy" mechanism to help us navigate you to the exact location on your instance without knowing your instance URL.

The website prompts for your instance URL on the first visit and stores it client-side. It automatically redirects on subsequent visits, making it convenient to link to specific pages in self-hosted instances.

Below are some of the example use cases:

  • Linking directly to relevant pages from the documentation site.
  • Sharing the location of a particular setting in a support thread.
  • Automatically activate your instance after you buy a license.

image

Support Immich

If you find the project helpful, you can support Immich by purchasing a license at https://buy.immich.app.

Cheers! 🍻

Immich team

What's Changed

🗄️ Server

📱 Mobile

🖥️ Web

📓 Documentation

🔨 Maintenance

Other changes

New Contributors

Full Changelog: v1.108.0...v1.109.0

v1.108.0

10 Jul 16:28
Compare
Choose a tag to compare

v1.108.0

Caution

This release includes a security update for Node.js. While we don't think these CVEs affect Immich, we strongly recommend you update. For more details, see https://nodejs.org/en/blog/vulnerability/july-2024-security-releases.

Highlights

Welcome to release v1.108.0 of Immich. This release focuses on bug fixes and improvements across the app. We added a fun section of things we learned when working on Immich. You can take a look here at the Cursed Knowledge page. Some of the highlights in this release include:

  • Notable fix: Use Redis for Websocket state tracking to allow HDD to spin down when inactive
  • Using queue to improve CLI processing

What's Changed

🗄️ Server

📱 Mobile

🖥️ Web

🧠 Machine Learning

⚡ CLI

  • feat(cli): use a queue for duplicate and upload by @masterT in #10750

📓 Documentation

🔨 Maintenance

Other changes

New Contributors

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

v1.107.2

03 Jul 03:29
Compare
Choose a tag to compare

v1.107.2

There is no mobile release for this version

Hotfixes

  • Slow loading on the people page on the web
  • Incorrect translation strings
  • Fixed an issue of able to merge the same person into one

What's Changed

🗄️ Server

  • fix(server): do not allow merging a person into themselves by @jrasm91 in #10776

📱 Mobile

🖥️ Web

🔨 Maintenance

Other changes

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

v1.107.1

02 Jul 19:22
Compare
Choose a tag to compare

v1.107.1

There are no changes on the server. This release is mainly for the mobile app - feel free not to pulling the new images

Hotfixes

After receiving feedback from the community about changing the timeline display's default behavior, we have decided to revert to the previous behavior. We will work on a proper implementation where you can select which album will be displayed on the timeline by default and decouple it from the album selected for backup.

I apologize for the inconvenience this change has caused and we will have a community discussion before such changes in the future.

  • Fixed map crash on Android
  • Reverted all assets are displayed as default on the mobile timeline

Include the v1.107.0 release note below for your convenience.


Highlights

Welcome to version v1.107.0 of Immich. This release includes many bug fixes, new translations from many new languages, and enhancements to the recent new features in the last release, as well as a change in the default timeline display on the mobile app. Check out some of the highlights below:

  • Enhancement to deduplication UI - bulk resolve duplicates, view duplicates in fullscreen.
  • Custom request headers for the mobile app.
  • Facial recognition now recognizes more faces.

Deduplication UI Enhancement

Thank you all for your feedback! The deduplication UI now has two bulk actions that apply to all duplicate groups: deduplicating assets automatically and keeping all duplicates. This makes managing thousands of duplication groups much more efficient.

Additionally, you can now view the duplicates in fullscreen mode, making it easier to decide which asset to keep. We also added the status for favorite photos to the card as well.

image

Custom request headers for the mobile app

Thanks to @matejkramny, you can now add custom headers to all the requests from the mobile app. This mechanism will help many users who use Cloudflare's Zero Trust Service

You can access this setting from the app Settings > Advanced > Custom proxy headers

Facial recognition enhancement

Due to a change in how recognition data is indexed, facial recognition is now more likely to recognize a face as a particular person. This means more assets will have complete facial recognition and the initial clustering will produce fewer duplicate people. Facial recognition is also faster as part of this change.

Clicking the Missing button for Facial Recognition from the job panel will make this change apply to existing assets. (This is also run periodically, so it will soon take effect even without explicitly running facial recognition.)

What's Changed

📱 Mobile

Other changes

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

v1.107.0

02 Jul 14:56
Compare
Choose a tag to compare

v1.107.0

Highlights

Welcome to version v1.107.0 of Immich. This release includes many bug fixes, new translations from many new languages, and enhancements to the recent new features in the last release, as well as a change in the default timeline display on the mobile app. Check out some of the highlights below:

  • Enhancement to deduplication UI - bulk resolve duplicates, view duplicates in fullscreen.
  • Display all local assets on the mobile timeline by default.
  • Custom request headers for the mobile app.
  • Facial recognition now recognizes more faces.

Deduplication UI Enhancement

Thank you all for your feedback! The deduplication UI now has two bulk actions that apply to all duplicate groups: deduplicating assets automatically and keeping all duplicates. This makes managing thousands of duplication groups much more efficient.

Additionally, you can now view the duplicates in fullscreen mode, making it easier to decide which asset to keep. We also added the status for favorite photos to the card as well.

image

Display all local assets on the mobile app timeline

Starting from this release, all local assets will be displayed on the main timeline. This is the first step in refactoring the upload mechanism, simplifying the logic, and introducing similar behaviors to a default gallery app on your phone.

With this change, you can now view, manage, and select a certain group of photos you want to upload to Immich directly from the timeline without the need to select them first on the backup page. The album selection for backup can be used for mass backup selection like before.

Custom request headers for the mobile app

Thanks to @matejkramny, you can now add custom headers to all the requests from the mobile app. This mechanism will help many users who use Cloudflare's Zero Trust Service

You can access this setting from the app Settings > Advanced > Custom proxy headers

Facial recognition enhancement

Due to a change in how recognition data is indexed, facial recognition is now more likely to recognize a face as a particular person. This means more assets will have complete facial recognition and the initial clustering will produce fewer duplicate people. Facial recognition is also faster as part of this change.

Clicking the Missing button for Facial Recognition from the job panel will make this change apply to existing assets. (This is also run periodically, so it will soon take effect even without explicitly running facial recognition.)

What's Changed

🗄️ Server

📱 Mobile

  • chore(deps): update dependency flutter to v3.22.2 by @renovate in #10158
  • fix(app-bar): remove safe area of the app bar in photos page by @RanKKI in #10340
  • fix(mobile): translation for memory title by @RanKKI in #10324
  • fix(mobile): search page by @RanKKI in #10385
  • fix(mobile): my location button on maps not visible due to bottom padding by @RanKKI in #10384
  • fix(mobile): asset description is not shown on the sheet when opened for the first time by @RanKKI in #10377
  • fix(mobile): upgrade maplibre_gl package to fix issue with crash in ios7.4 above simulator by @Mujhtech in #10182
  • feat(mobile): render assets on device by default by @alextran1502 in #10470
  • chore(mobile): remove exclude album mechanism for backup by @alextran1502 in #10552
  • fix(mobile): inconsistent thumbnail's label by @RanKKI in #10589
  • feat(mobile): add additional request headers by @matejkramny in #10588
  • fix(mobile): asset state remain in gallery view after being deleted by @alextran1502 in #10603
  • chore(trans): add zh-CN translations for custom proxy headers by @Triple-Z in #10660
  • chore(mobile): Revert "remove exclude album mechanism for backup (#10552)" by @alextran1502 in #10686

🖥️ Web

Read more

v1.106.4

13 Jun 15:26
Compare
Choose a tag to compare

v1.106.4

Hotfixes

This release addresses the following bugs:

Include the previous release note below for your convenience.


Highlights

BREAKING CHANGES

Warning

1. Underlying API changes

Please ensure your mobile app and server are on the same version. Otherwise, you won't be able to access the app.

We advise you to wait for the mobile app to be reviewed and released from the app stores before updating your instance to avoid disrupting your users.

2. Environment variables

  • SERVER_PORT, MICROSERVICES_PORT, and MACHINE_LEARNING_PORT were renamed to IMMICH_PORT
  • HOST and MACHINE_LEARNING_HOST were renamed to IMMICH_HOST

3. Removal of the immich-microservices container

The microservices container/process can now be deployed within the immich-server container itself and is done so by default.

Please refer to our documentation for a detailed explanation of this change and a way to keep microservices as a separate container.

Please edit your docker-compose.yml file with the following changes. If you use hardware acceleration previously in immich-microservices, you can move the extends block's content to the immich-server service to keep the same functionality.

When you bring the container up, please make sure to include the --remove-orphans flag, so that the immich-microservices container is removed properly. So the full command will be docker compose up -d --remove-orphans

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
-   command: ['start.sh', 'immich']
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - 2283:3001
    depends_on:
      - redis
      - database
    restart: always

-  immich-microservices:
-    container_name: immich_microservices
-    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
-    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/hardware-transcoding
-    #   file: hwaccel.transcoding.yml
-    #   service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
-    command: ['start.sh', 'microservices']
-    volumes:
-      - ${UPLOAD_LOCATION}:/usr/src/app/upload
-      - /etc/localtime:/etc/localtime:ro
-    env_file:
-      - .env
-    depends_on:
-      - redis
-      - database
-    restart: always

Highlights

Welcome to release v1.106.0 of Immich. Woooh, this release is packed with many new features, improvements, and bug fixes. This is one of the longest release stretches we have ever done, with over 230 closed PRs over a month. I hope you enjoy this release as much as we do, and we have more brewing on the horizon; let's go over some of the highlights of the release below:

  • Removal of the immich-microservices container
  • Similar image detection and management
  • End-to-end acceleration for NVENC and QSV transcoding
  • Better video thumbnails
  • Email notifications for album events
  • Per user email notifications settings
  • Send a test email when configuring the SMTP email server
  • Public roadmap (here)
  • Translation on the web
  • Notable fix: Fixed an edge case bug on mobile synchronization when there is a bad file with date time information. Thanks @fyfrey so much!

Removal of the immich-microservices container

"microservices be gone" - Zack

Actually, it is still there but in a true microservices manner where we spawn it in a separate process. Woohoo, one more container down to simplify the official setup of Immich!

This change is one of many pieces of upcoming work to change how we handle jobs. Microservices were always a patch for the problem that we couldn't run background tasks within the main server, which would introduce contention for the API itself. Using workers, we can now have these within the same container, separated into different V8 engines. Moving forward, we will be looking to split out "microservices" into actual microservices such as transcoding, thumbnails, etc., allowing such things as distributing transcoding alone to another instance.

Architecture

The immich-server container contains multiple workers:

  • api: responds to API requests for data and files for the web and mobile app.
  • microservices: handles most other work, such as thumbnail generation and video encoding, in the form of jobs. Simply put, a job is a request to process data in the background.

Split workers [Optional]

If you prefer to throttle or distribute the workers, you can use the environment variables to specify which container should pick up which tasks.

For example, for a simple setup with one container for the Web/API and one for all other microservices, you can do the following:

Copy the entire immich-server block as a new service and make the following changes to the copy:

- immich-server:
-   container_name: immich_server
...
-   ports:
-     - 2283:3001
+ immich-microservices:
+   container_name: immich_microservices

Once you have two copies of the immich-server service, make the following changes to each one. This will allow one container only to serve the web UI and API and the other one to handle all other tasks.

services:
  immich-server:
    ...
+   environment:
+     IMMICH_WORKERS_INCLUDE: 'api'

  immich-microservices:
    ...
+   environment:
+     IMMICH_WORKERS_EXCLUDE: 'api'

Similar image detection

This release adds the much-anticipated ability to detect duplicate assets that aren't exactly identical, whether because of a difference in resolution, compression or metadata. To give you control over which asset(s) to keep, the assets aren't deduplicated immediately. Instead, there's a new Duplicates page where you can review duplicates to keep or trash them. An asset with the largest file size is selected by default.

Deduplication-action.mp4

To get started, you can run the new duplicate detection job on all assets. You won't need to do this for new assets, as they'll be automatically processed.

image

The Duplicates page is under a new Utilities section in the sidebar. Stay tuned for other features that will go into this section!

image

End-to-end hardware-accelerated transcoding

Until now, hardware acceleration for most backends only applied to encoding; decoding and tone-mapping were still done on the CPU. There's now an opt-in hardware decoding toggle that allows you to accelerate the full transcoding process for NVENC, QSV, and RKMPP. Some testing showed a 10x speed improvement compared to accelerated encoding alone (results are subject to your hardware and the video itself, of course).

hwdecodingchart

Keep in mind that hardware and video compatibility becomes more relevant with this setting, which is why it's currently opt-in.

Special thanks to Jellyfin's @nyanmisaka for their helpful tips and suggestions for this feature!

Better video thumbnails

Immich now tries to find a descriptive video thumbnail instead of simply using the first frame. No more black images for thumbnails!

Before:

video-thumbnail-before

After:

video-thumbnail-after

This change won't apply retroactively to existing videos. To update video thumbnails, you can either select them and choose Refresh Thumbnails from the overflow menu or re-run thumbnail generation on all assets through the job panel to update all of them.

Additional email notifications

Two new event types have been added for which email notifications can be sent out:

  1. You are added to a shared album.
  2. New media is added to an album.

Also, users can now control their notification settings for each event. Notification preferences can be viewed on the web account settings page.

image

Translation on the web

We have added translation for Immich on the web. You can help us translate the web to your native language by accessing our Weblate project here.

You can change the app to your language from the Account Settings > App Settings > Language

image

What's Changed

🗄️ Server

  • fix(server): use preview image when generating person thumbnail from video by @mertalev in #10240
  • fix: load original image for gifs by @michelheusschen in #10252
  • chore(server): optional originalMimeType in asset response payload by @alextran1502 in http...
Read more

v1.106.3

12 Jun 18:39
Compare
Choose a tag to compare

v1.106.3

Hotfixes

This release addresses the following issues:

🗄️ Server

📱 Mobile

🖥️ Web

Include the previous release note below for your convenience.


Highlights

BREAKING CHANGES

Warning

1. Underlying API changes

Please ensure your mobile app and server are on the same version. Otherwise, you won't be able to access the app.

We advise you to wait for the mobile app to be reviewed and released from the app stores before updating your instance to avoid disrupting your users.

2. Environment variables

  • SERVER_PORT, MICROSERVICES_PORT, and MACHINE_LEARNING_PORT were renamed to IMMICH_PORT
  • HOST and MACHINE_LEARNING_HOST were renamed to IMMICH_HOST

3. Removal of the immich-microservices container

The microservices container/process can now be deployed within the immich-server container itself and is done so by default.

Please refer to our documentation for a detailed explanation of this change and a way to keep microservices as a separate container.

Please edit your docker-compose.yml file with the following changes. If you use hardware acceleration previously in immich-microservices, you can move the extends block's content to the immich-server service to keep the same functionality.

When you bring the container up, please make sure to include the --remove-orphans flag, so that the immich-microservices container is removed properly. So the full command will be docker compose up -d --remove-orphans

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
-   command: ['start.sh', 'immich']
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - 2283:3001
    depends_on:
      - redis
      - database
    restart: always

-  immich-microservices:
-    container_name: immich_microservices
-    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
-    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/hardware-transcoding
-    #   file: hwaccel.transcoding.yml
-    #   service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
-    command: ['start.sh', 'microservices']
-    volumes:
-      - ${UPLOAD_LOCATION}:/usr/src/app/upload
-      - /etc/localtime:/etc/localtime:ro
-    env_file:
-      - .env
-    depends_on:
-      - redis
-      - database
-    restart: always

Highlights

Welcome to release v1.106.0 of Immich. Woooh, this release is packed with many new features, improvements, and bug fixes. This is one of the longest release stretches we have ever done, with over 230 closed PRs over a month. I hope you enjoy this release as much as we do, and we have more brewing on the horizon; let's go over some of the highlights of the release below:

  • Removal of the immich-microservices container
  • Similar image detection and management
  • End-to-end acceleration for NVENC and QSV transcoding
  • Better video thumbnails
  • Email notifications for album events
  • Per user email notifications settings
  • Send a test email when configuring the SMTP email server
  • Public roadmap (here)
  • Translation on the web
  • Notable fix: Fixed an edge case bug on mobile synchronization when there is a bad file with date time information. Thanks @fyfrey so much!

Removal of the immich-microservices container

"microservices be gone" - Zack

Actually, it is still there but in a true microservices manner where we spawn it in a separate process. Woohoo, one more container down to simplify the official setup of Immich!

This change is one of many pieces of upcoming work to change how we handle jobs. Microservices were always a patch for the problem that we couldn't run background tasks within the main server, which would introduce contention for the API itself. Using workers, we can now have these within the same container, separated into different V8 engines. Moving forward, we will be looking to split out "microservices" into actual microservices such as transcoding, thumbnails, etc., allowing such things as distributing transcoding alone to another instance.

Architecture

The immich-server container contains multiple workers:

  • api: responds to API requests for data and files for the web and mobile app.
  • microservices: handles most other work, such as thumbnail generation and video encoding, in the form of jobs. Simply put, a job is a request to process data in the background.

Split workers [Optional]

If you prefer to throttle or distribute the workers, you can use the environment variables to specify which container should pick up which tasks.

For example, for a simple setup with one container for the Web/API and one for all other microservices, you can do the following:

Copy the entire immich-server block as a new service and make the following changes to the copy:

- immich-server:
-   container_name: immich_server
...
-   ports:
-     - 2283:3001
+ immich-microservices:
+   container_name: immich_microservices

Once you have two copies of the immich-server service, make the following changes to each one. This will allow one container only to serve the web UI and API and the other one to handle all other tasks.

services:
  immich-server:
    ...
+   environment:
+     IMMICH_WORKERS_INCLUDE: 'api'

  immich-microservices:
    ...
+   environment:
+     IMMICH_WORKERS_EXCLUDE: 'api'

Similar image detection

This release adds the much-anticipated ability to detect duplicate assets that aren't exactly identical, whether because of a difference in resolution, compression or metadata. To give you control over which asset(s) to keep, the assets aren't deduplicated immediately. Instead, there's a new Duplicates page where you can review duplicates to keep or trash them. An asset with the largest file size is selected by default.

Deduplication-action.mp4

To get started, you can run the new duplicate detection job on all assets. You won't need to do this for new assets, as they'll be automatically processed.

image

The Duplicates page is under a new Utilities section in the sidebar. Stay tuned for other features that will go into this section!

image

End-to-end hardware-accelerated transcoding

Until now, hardware acceleration for most backends only applied to encoding; decoding and tone-mapping were still done on the CPU. There's now an opt-in hardware decoding toggle that allows you to accelerate the full transcoding process for NVENC, QSV, and RKMPP. Some testing showed a 10x speed improvement compared to accelerated encoding alone (results are subject to your hardware and the video itself, of course).

hwdecodingchart

Keep in mind that hardware and video compatibility becomes more relevant with this setting, which is why it's currently opt-in.

Special thanks to Jellyfin's @nyanmisaka for their helpful tips and suggestions for this feature!

Better video thumbnails

Immich now tries to find a descriptive video thumbnail instead of simply using the first frame. No more black images for thumbnails!

Before:

video-thumbnail-before

After:

video-thumbnail-after

This change won't apply retroactively to existing videos. To update video thumbnails, you can either select them and choose Refresh Thumbnails from the overflow menu or re-run thumbnail generation on all assets through the job panel to update all of them.

Additional email notifications

Two new event types have been added for which email notifications can be sent out:

  1. You are added to a shared album.
  2. New media is added to an album.

Also, users can now control their notification settings for each event. Notification preferences can be viewed on the web account settings page.

image

Translation on the web

We have added translation for...

Read more

v1.106.2

11 Jun 19:25
Compare
Choose a tag to compare

v1.106.2

This is a hot fixes release that addresses the following bugs.

  • fix(server): cache-control header missing from / requests #10131
  • fix(mobile): warning message not resetting when changing server #10112
  • fix(#9467): Motion Photos stopping music #10151
  • fix(#10113): cannot perform duplication actions as normal user #10115
  • fix(#10117): cannot click on explore places #10121
  • fix(#10130): cannot view image when metadata sharing is turned off for public sharing #10145
  • fix(web): backward asset navigation in GalleryViewer #10132

Include the previous release note below for your convenience.


Highlights

BREAKING CHANGES

Warning

1. Underlying API changes

Please ensure your mobile app and server are on the same version. Otherwise, you won't be able to access the app.

We advise you to wait for the mobile app to be reviewed and released from the app stores before updating your instance to avoid disrupting your users.

2. Environment variables

  • SERVER_PORT, MICROSERVICES_PORT, and MACHINE_LEARNING_PORT were renamed to IMMICH_PORT
  • HOST and MACHINE_LEARNING_HOST were renamed to IMMICH_HOST

3. Removal of the immich-microservices container

The microservices container/process can now be deployed within the immich-server container itself and is done so by default.

Please refer to our documentation for a detailed explanation of this change and a way to keep microservices as a separate container.

Please edit your docker-compose.yml file with the following changes. If you use hardware acceleration previously in immich-microservices, you can move the extends block's content to the immich-server service to keep the same functionality.

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
-   command: ['start.sh', 'immich']
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - 2283:3001
    depends_on:
      - redis
      - database
    restart: always

-  immich-microservices:
-    container_name: immich_microservices
-    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
-    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/hardware-transcoding
-    #   file: hwaccel.transcoding.yml
-    #   service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
-    command: ['start.sh', 'microservices']
-    volumes:
-      - ${UPLOAD_LOCATION}:/usr/src/app/upload
-      - /etc/localtime:/etc/localtime:ro
-    env_file:
-      - .env
-    depends_on:
-      - redis
-      - database
-    restart: always

Highlights

Welcome to release v1.106.0 of Immich. Woooh, this release is packed with many new features, improvements, and bug fixes. This is one of the longest release stretches we have ever done, with over 230 closed PRs over a month. I hope you enjoy this release as much as we do, and we have more brewing on the horizon; let's go over some of the highlights of the release below:

  • Removal of the immich-microservices container
  • Similar image detection and management
  • End-to-end acceleration for NVENC and QSV transcoding
  • Better video thumbnails
  • Email notifications for album events
  • Per user email notifications settings
  • Send a test email when configuring the SMTP email server
  • Public roadmap (here)
  • Translation on the web
  • Notable fix: Fixed an edge case bug on mobile synchronization when there is a bad file with date time information. Thanks @fyfrey so much!

Removal of the immich-microservices container

"microservices be gone" - Zack

Actually, it is still there but in a true microservices manner where we spawn it in a separate process. Woohoo, one more container down to simplify the official setup of Immich!

This change is one of many pieces of upcoming work to change how we handle jobs. Microservices were always a patch for the problem that we couldn't run background tasks within the main server, which would introduce contention for the API itself. Using workers, we can now have these within the same container, separated into different V8 engines. Moving forward, we will be looking to split out "microservices" into actual microservices such as transcoding, thumbnails, etc., allowing such things as distributing transcoding alone to another instance.

Architecture

The immich-server container contains multiple workers:

  • api: responds to API requests for data and files for the web and mobile app.
  • microservices: handles most other work, such as thumbnail generation and video encoding, in the form of jobs. Simply put, a job is a request to process data in the background.

Split workers [Optional]

If you prefer to throttle or distribute the workers, you can use the environment variables to specify which container should pick up which tasks.

For example, for a simple setup with one container for the Web/API and one for all other microservices, you can do the following:

Copy the entire immich-server block as a new service and make the following changes to the copy:

- immich-server:
-   container_name: immich_server
...
-   ports:
-     - 2283:3001
+ immich-microservices:
+   container_name: immich_microservices

Once you have two copies of the immich-server service, make the following changes to each one. This will allow one container only to serve the web UI and API and the other one to handle all other tasks.

services:
  immich-server:
    ...
+   environment:
+     IMMICH_WORKERS_INCLUDE: 'api'

  immich-microservices:
    ...
+   environment:
+     IMMICH_WORKERS_EXCLUDE: 'api'

Similar image detection

This release adds the much-anticipated ability to detect duplicate assets that aren't exactly identical, whether because of a difference in resolution, compression or metadata. To give you control over which asset(s) to keep, the assets aren't deduplicated immediately. Instead, there's a new Duplicates page where you can review duplicates to keep or trash them. An asset with the largest file size is selected by default.

Deduplication-action.mp4

To get started, you can run the new duplicate detection job on all assets. You won't need to do this for new assets, as they'll be automatically processed.

image

The Duplicates page is under a new Utilities section in the sidebar. Stay tuned for other features that will go into this section!

image

End-to-end hardware-accelerated transcoding

Until now, hardware acceleration for most backends only applied to encoding; decoding and tone-mapping were still done on the CPU. There's now an opt-in hardware decoding toggle that allows you to accelerate the full transcoding process for NVENC, QSV, and RKMPP. Some testing showed a 10x speed improvement compared to accelerated encoding alone (results are subject to your hardware and the video itself, of course).

hwdecodingchart

Keep in mind that hardware and video compatibility becomes more relevant with this setting, which is why it's currently opt-in.

Special thanks to Jellyfin's @nyanmisaka for their helpful tips and suggestions for this feature!

Better video thumbnails

Immich now tries to find a descriptive video thumbnail instead of simply using the first frame. No more black images for thumbnails!

Before:

video-thumbnail-before

After:

video-thumbnail-after

This change won't apply retroactively to existing videos. To update video thumbnails, you can either select them and choose Refresh Thumbnails from the overflow menu or re-run thumbnail generation on all assets through the job panel to update all of them.

Additional email notifications

Two new event types have been added for which email notifications can be sent out:

  1. You are added to a shared album.
  2. New media is added to an album.

Also, users can now control their notification settings for each event. Notification preferences can be viewed on the web account settings page.

image

Translation on the web

We have added translation for Immich on the web. You can help us translate the web to your native language by accessing our Weblate project here.

You can change the app to your language from the Account Settings > App Settings > Language

image

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

What's Changed

🗄️ Server

📱 Mobile

Read more

v1.106.1

11 Jun 10:03
Compare
Choose a tag to compare

v1.106.1

Note: We skip v1.106.0 and push straight to v1.106.1 since we discovered and fixed some more bugs while waiting for the v1.106.0 mobile releases to be approved for synchronized publishing across all platforms

BREAKING CHANGES

Warning

1. Underlying API changes

Please ensure your mobile app and server are on the same version. Otherwise, you won't be able to access the app.

We advise you to wait for the mobile app to be reviewed and released from the app stores before updating your instance to avoid disrupting your users.

2. Environment variables

  • SERVER_PORT, MICROSERVICES_PORT, and MACHINE_LEARNING_PORT were renamed to IMMICH_PORT
  • HOST and MACHINE_LEARNING_HOST were renamed to IMMICH_HOST

3. Removal of the immich-microservices container

The microservices container/process can now be deployed within the immich-server container itself and is done so by default.

Please refer to our documentation for a detailed explanation of this change and a way to keep microservices as a separate container.

Please edit your docker-compose.yml file with the following changes. If you use hardware acceleration previously in immich-microservices, you can move the extends block's content to the immich-server service to keep the same functionality.

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
-   command: ['start.sh', 'immich']
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - 2283:3001
    depends_on:
      - redis
      - database
    restart: always

-  immich-microservices:
-    container_name: immich_microservices
-    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
-    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/hardware-transcoding
-    #   file: hwaccel.transcoding.yml
-    #   service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
-    command: ['start.sh', 'microservices']
-    volumes:
-      - ${UPLOAD_LOCATION}:/usr/src/app/upload
-      - /etc/localtime:/etc/localtime:ro
-    env_file:
-      - .env
-    depends_on:
-      - redis
-      - database
-    restart: always

Highlights

Welcome to release v1.106.0 of Immich. Woooh, this release is packed with many new features, improvements, and bug fixes. This is one of the longest release stretches we have ever done, with over 230 closed PRs over a month. I hope you enjoy this release as much as we do, and we have more brewing on the horizon; let's go over some of the highlights of the release below:

  • Removal of the immich-microservices container
  • Similar image detection and management
  • End-to-end acceleration for NVENC and QSV transcoding
  • Better video thumbnails
  • Email notifications for album events
  • Per user email notifications settings
  • Send a test email when configuring the SMTP email server
  • Public roadmap (here)
  • Translation on the web
  • Notable fix: Fixed an edge case bug on mobile synchronization when there is a bad file with date time information. Thanks @fyfrey so much!

Removal of the immich-microservices container

"microservices be gone" - Zack

Actually, it is still there but in a true microservices manner where we spawn it in a separate process. Woohoo, one more container down to simplify the official setup of Immich!

This change is one of many pieces of upcoming work to change how we handle jobs. Microservices were always a patch for the problem that we couldn't run background tasks within the main server, which would introduce contention for the API itself. Using workers, we can now have these within the same container, separated into different V8 engines. Moving forward, we will be looking to split out "microservices" into actual microservices such as transcoding, thumbnails, etc., allowing such things as distributing transcoding alone to another instance.

Architecture

The immich-server container contains multiple workers:

  • api: responds to API requests for data and files for the web and mobile app.
  • microservices: handles most other work, such as thumbnail generation and video encoding, in the form of jobs. Simply put, a job is a request to process data in the background.

Split workers [Optional]

If you prefer to throttle or distribute the workers, you can use the environment variables to specify which container should pick up which tasks.

For example, for a simple setup with one container for the Web/API and one for all other microservices, you can do the following:

Copy the entire immich-server block as a new service and make the following changes to the copy:

- immich-server:
-   container_name: immich_server
...
-   ports:
-     - 2283:3001
+ immich-microservices:
+   container_name: immich_microservices

Once you have two copies of the immich-server service, make the following changes to each one. This will allow one container only to serve the web UI and API and the other one to handle all other tasks.

services:
  immich-server:
    ...
+   environment:
+     IMMICH_WORKERS_INCLUDE: 'api'

  immich-microservices:
    ...
+   environment:
+     IMMICH_WORKERS_EXCLUDE: 'api'

Similar image detection

This release adds the much-anticipated ability to detect duplicate assets that aren't exactly identical, whether because of a difference in resolution, compression or metadata. To give you control over which asset(s) to keep, the assets aren't deduplicated immediately. Instead, there's a new Duplicates page where you can review duplicates to keep or trash them. An asset with the largest file size is selected by default.

Deduplication-action.mp4

To get started, you can run the new duplicate detection job on all assets. You won't need to do this for new assets, as they'll be automatically processed.

image

The Duplicates page is under a new Utilities section in the sidebar. Stay tuned for other features that will go into this section!

image

End-to-end hardware-accelerated transcoding

Until now, hardware acceleration for most backends only applied to encoding; decoding and tone-mapping were still done on the CPU. There's now an opt-in hardware decoding toggle that allows you to accelerate the full transcoding process for NVENC, QSV, and RKMPP. Some testing showed a 10x speed improvement compared to accelerated encoding alone (results are subject to your hardware and the video itself, of course).

hwdecodingchart

Keep in mind that hardware and video compatibility becomes more relevant with this setting, which is why it's currently opt-in.

Special thanks to Jellyfin's @nyanmisaka for their helpful tips and suggestions for this feature!

Better video thumbnails

Immich now tries to find a descriptive video thumbnail instead of simply using the first frame. No more black images for thumbnails!

Before:

video-thumbnail-before

After:

video-thumbnail-after

This change won't apply retroactively to existing videos. To update video thumbnails, you can either select them and choose Refresh Thumbnails from the overflow menu or re-run thumbnail generation on all assets through the job panel to update all of them.

Additional email notifications

Two new event types have been added for which email notifications can be sent out:

  1. You are added to a shared album.
  2. New media is added to an album.

Also, users can now control their notification settings for each event. Notification preferences can be viewed on the web account settings page.

image

Translation on the web

We have added translation for Immich on the web. You can help us translate the web to your native language by accessing our Weblate project here.

You can change the app to your language from the Account Settings > App Settings > Language

image

What's Changed

⚠️ Breaking Changes

Read more