immich

High performance self-hosted photo and video management solution.

AGPL-3.0 License

Downloads
47.7K
Stars
37.8K
Committers
460

Bot releases are visible (Hide)

immich - v1.112.0 Latest Release

Published by github-actions[bot] 2 months ago

v1.112.0

Highlights

Welcome to the release of v1.112.0 of Immich. This release packs with new UI features and enhancements, and many bugs are getting squashed. We hope you enjoy this release. Some of the key highlights include:

  • Material color theming for the mobile app
  • Open in map view on the web
  • Star rating
  • Screen stays on and auto darkens when performing a long session of foreground upload
  • Notable fix: Uploading assets from iCloud causing the iOS mobile app to crash
  • Notable fix: Photos and videos belonging to a person are now all displayed in the person's view on the mobile app

Material color theming for the mobile app

The app has had a makeover to prepare for the new school year. You can now choose a different primary color in the app, and the new color will be applied across the app's elements. There are a variety of minor tweaks in UI elements to make the app appear more consistent and aesthetically pleasing.

Open in map view on the web

You can now navigate to the map directly from the asset's detail panel by clicking on the map icon at the top right corner of the minimap.

openinmap

Star rating

As one of the most commonly used pieces of information for photographers, the star rating information in EXIF will now be included in the extracted data. You can run the extract metadata job for all to populate this information in your instance.

image

Enabling this feature in User Settings > App Settings > Star Rating lets you view and set the star rating information in the detail panel.

The edited information will be saved in the companion sidecar XMP file.

settings

Always-on screen for foreground upload

When entering the backup screen and running foreground backup, the screen will now stay on and automatically darken after 30 seconds.

New search models

Immich now supports a set of newer models with very competitive performance. See #11468 for details and visualizations.

A special mention goes to ViT-B-16-SigLIP__webli, which outperforms several much larger ViT-L models despite being the same size as the default model. However, it is a bit slower than the default. At the same size, ViT-B-16-SigLIP-384__webli is among the best models period, at the cost of being much slower than other models of its size. It's ideal for memory-constrained environments that still want the best quality.

Support Immich

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

Cheers! 🍻

What's Changed

🚀 Features

🌟 Enhancements

🐛 Bug fixes

📚 Documentation

🌐 Translations

New Contributors

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

immich - v1.111.0

Published by github-actions[bot] 3 months ago

v1.111.0

Highlights

Welcome to release v1.111.0 of Immich; this release focuses on UI enhancement, accessibility, and refactoring and adds a new editor feature to the mobile app, which includes photo rotation and cropping. We hope you like it. Some of the key highlights include:

  • Photo editor on the mobile app
  • Notable fix: Random logout on the mobile app when the connection between the app and server is unstable.

Rotating and cropping on the mobile app

Thanks to @Yuvi-raj-P, we can rotate and crop a photo on the mobile app. The edited new file will be created, which can be selected for upload to the Immich server or for sharing with others.

This is the first round of implementation of this feature, let's us know your feedback and how do you want this to be improved.

Edit option is added to the bottom bar Edit mode (Crop/Rotate)
edit-option-bottom-bar edit-mode
Cropping End result
Cropping end-result

Support Immich

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

Cheers! 🍻

What's Changed

🗄️ Server

📱 Mobile

🖥️ Web

📓 Documentation

🔨 Maintenance

Other changes

New Contributors

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

immich - v1.110.0 - 40_000 stars release

Published by github-actions[bot] 3 months ago

v1.110.0 - 40_000 stars release

Hello, Alex here. I want to thank you all again for your feedback and support. I found a design I made in April 2022 to show off the achievement to my family of getting 1000 stars on GitHub when Immich was still a baby. Now, the project has grown to join the big boy club. Thank you for all the stars and love that you sent us. We are forever grateful.

I hope this release helps clarify our intentions and mission surrounding the financial support for Immich and open-source software in general. We could not have come back with a better solution without you.

If you are interested in watching, here is a video from FUTO addressing many topics and concerns that have been discussed over the past week. I hope you like it and find it informative. Youtube

[!WARNING]
If you use CUDA for machine learning, the minimum NVIDIA driver version is now 545 from 535.

Highlights

Welcome to release v1.110.0 of Immich. This release addresses the wording change in our introduction of a way to purchase Immich, as well as many bug fixes and enhancements. Some of the highlights include

New Immich-Hosted Maps

Previously, our maps were hosted by a third-party provider; however, going forward, that will no longer be the case. We are now hosting the map tiles ourselves at tiles.immich.cloud, and therefore your web or mobile client will no longer reach out to other third parties when browsing the map! This change should be pretty transparent, or if anything hopefully feel faster, however if you do experience problems with the map after this release, please reach out to us on Discord or GitHub!

map-light-mode

map-dark-mode

Wording and minor changes to the purchase mechanism.

As mentioned in our follow-up announcement about the wording changes for the purchase mechanism, we made changes to the following items:

  • The licensed or unlicensed word will now be called "The-Words-Which-Must-Not-Be-Named" in Immich's world 😂
  • Replaced "The-Words-Which-Must-Not-Be-Named" indication with a Buy button.
  • The buy button will only show when the account age is older than 14 days.
  • Added options to allow users to hide the Buy button for 30 days or indefinitely. If you hide the button indefinitely and later change your mind, you can find the option to buy Immich directly under User Settings > Purchase Settings
  • Added more information to clarify our mission and intentions.
  • Replaced the "The-Words-Which-Must-Not-Be-Named" badge with a supporter badge.
  • Added option to hide the supporter badge.

Hide buy button options

Supporter badge

Give it a hover for extra shininess!

supporter-badge

Hide supporter badge options

After activation
User settings

Claiming a product key

For the past financial donors of the project, you can claim your product keys from https://buy.immich.app/claim using your GitHub credentials.

Thank you for your support.

TLS client certificate for the mobile app

With @yjiang-c's contribution, you can now add a custom TLS certificate on the mobile app if your networking is configured to accept one.

https://github.com/immich-app/immich/assets/66518086/c36d548f-a473-4f0c-93ab-23e51cce6f58

Better OpenVINO support

OpenVINO is now faster and works for a wider range of hardware. Previously, it was common for it to fail for either face detection or smart search depending on hardware. Since this involved making changes in the models, if you're using OpenVINO, please delete your model cache volume so it downloads the updated models. You only need to do this if you're using OpenVINO.

Support Immich

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

Cheers! 🍻

What's Changed

🗄️ Server

📱 Mobile

🖥️ Web

🧠 Machine Learning

📓 Documentation

🔨 Maintenance

Other changes

New Contributors

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

immich - v1.109.2

Published by github-actions[bot] 3 months ago

v1.109.2

Hotfixes

  • Fixed license info panel doesn't disappear when moving the mouse outside the box.
  • Fixed server not starting up on ARM devices

What's Changed

🖥️ Web

🔨 Maintenance

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

immich - v1.109.1

Published by github-actions[bot] 3 months ago

v1.109.1

Hotfixes

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

What's Changed

🗄️ Server

Other changes

New Contributors

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

immich - v1.109.0

Published by github-actions[bot] 3 months ago

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: https://github.com/immich-app/immich/compare/v1.108.0...v1.109.0

immich - v1.108.0

Published by github-actions[bot] 3 months ago

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

📓 Documentation

🔨 Maintenance

Other changes

New Contributors

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

immich - v1.107.2

Published by github-actions[bot] 4 months ago

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

📱 Mobile

🖥️ Web

🔨 Maintenance

Other changes

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

immich - v1.107.1

Published by github-actions[bot] 4 months ago

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...

immich - v1.107.0

Published by github-actions[bot] 4 months ago

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

🖥️ Web

🧠 Machine Learning

⚡ CLI

📓 Documentation

🔨 Maintenance

Other changes

New Contributors

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

immich - v1.106.4

Published by github-actions[bot] 4 months ago

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.

https://github.com/immich-app/immich/assets/27055614/70c7a997-96e5-43ba-8d03-03c30559189c

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

📱 Mobile

🖥️ Web

📓 Documentation

Other changes

New Contributors

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

immich - v1.106.3

Published by github-actions[bot] 4 months ago

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.

https://github.com/immich-app/immich/assets/27055614/70c7a997-96e5-43ba-8d03-03c30559189c

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

📱 Mobile

🖥️ Web

📓 Documentation

Other changes

New Contributors

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

immich - v1.106.2

Published by github-actions[bot] 4 months ago

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.

https://github.com/immich-app/immich/assets/27055614/70c7a997-96e5-43ba-8d03-03c30559189c

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

🖥️ Web

🧠 Machine Learning

⚡ CLI

📓 Documentation

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

immich - v1.106.1

Published by github-actions[bot] 4 months ago

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.

https://github.com/immich-app/immich/assets/27055614/70c7a997-96e5-43ba-8d03-03c30559189c

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

🗄️ Server

📱 Mobile

🖥️ Web

🧠 Machine Learning

⚡ CLI

📓 Documentation

🔨 Maintenance

Other changes

New Contributors

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

immich - v1.105.1

Published by github-actions[bot] 5 months ago

v1.105.1

There is no mobile release for this version

[!Caution]
Please update immediately as this bug can put your data at risk if using external libraries.

Hotfixes

  • Fixed a bug where deleting an external library would delete all local files

As always, please consider supporting the project.

🎉 Cheers! 🎉


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

What's Changed

🗄️ Server

📱 Mobile

🔨 Maintenance

New Contributors

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

immich - v1.105.0

Published by github-actions[bot] 5 months ago

v1.105.0

[!CAUTION]

Changes in glob path external library

Library import paths no longer support wildcards (* notation/globs). If your library was previously using this, please update affected paths to point to directories instead.
Note: exclusion paths remain unchanged and still support glob syntax.

Highlights

Welcome to release v1.105.0 of Immich. WOW, 2 releases in 2 days! Immich's full-time core team has taken effect. Slightly kidding there, but we have a lot of bug fixes since the last release that we would like to push out to avoid you all encountering annoying bugs when using the software. Some highlights can be found below:

  • The mobile app now uses a more efficient sync algorithm.
  • Fixed assets status not showing correctly when deleting assets from the server when opening the mobile app.

What's Changed

⚠️ Breaking Changes

🗄️ Server

📱 Mobile

🖥️ Web

📓 Documentation

🔨 Maintenance

New Contributors

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

immich - v1.104.0

Published by github-actions[bot] 5 months ago

v1.104.0

[!CAUTION]

EXTERNAL LIBRARY EDITABILITY

For external library users, you can now manage your assets directly from Immich's user interface, i.e. you can edit date/time, location information, and delete from the web and the mobile app.

If you don't want Immich to handle those operations, please make sure to have the read-only, i.e., :ro flag on your mount point in the docker-compose.yml file.

Live stream - Immich Q&A ft. Eron Wolf & Louis Rossmann from FUTO

Last week, we had a live stream to answer your questions about Immich joining FUTO. You can watch the VOD here.

Highlights

Welcome to release v1.104.0 of Immich. This release includes new features, bug fixes, and improvements. The core team will now focus on tasks to bring us to a stable release. The highlights of this release can be found below.

  • Editability of external library
  • Notification foundation - SMTP Email

Editability of external library

Yes, we've heard you guys! You can now edit date/time and location information and even delete assets in an external library directly from Immich. If you don't want to use this feature, you should make sure to have the :ro flag on your docker mount in the docker-compose.yml file.

Notification - SMTP Email

Thanks, @hitech95, for kickstarting this feature,@jrasm91, and @danieldietzler for finishing it. We now have basic notification built-in, using email. The first mechanism that uses email is to send an email to a new user with information about the account and the instance they were invited to.

What's Changed

⚠️ Breaking Changes

🗄️ Server

📱 Mobile

🖥️ Web

📓 Documentation

🔨 Maintenance

New Contributors

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

immich - v1.103.1

Published by github-actions[bot] 6 months ago

v1.103.1

There is no mobile release for this version

Hotfixes

  • Fixed an issue of being unable to view detailed assets in partner sharing on the web.

Include the v1.103.0 release note for your convenience.


v1.103.0

Highlights

Welcome to the release of v1.103.0 of Immich. This version includes some exciting new features and notable bug fixes. We hope you enjoy this release. Please take a look at the highlights below:

  • Read-only album sharing permission
  • Permanent URL on the web for asset viewer
  • Jump-to-date from memory view on the mobile app
  • Action bar in memory view on the web
  • Improve geocoding location data
  • Notable fix: Occasional logout on iOS
  • Notable fix: Asset's status sync issue on the mobile app
  • Notable fix: Memory leak causing mobile app crashes when swiping continuously in the detail view

Read-only album-sharing permission

When creating a shared album, you can specify whether the shared users can contribute to it or participate as read-only.

Permanent URL on the web for asset viewer

Assets now have a permanent URL on all views, so you can save a URL and refer back later to access a particular photo or video.

Jump-to-date from memory view on the mobile app

There is now an option to jump to a date from the memory viewer on the mobile app.

Action bar in memory view on the web

You can now select the assets in a certain memory and perform actions like adding to an album, deleting, archiving, favorite, etc.

image

Improve geocoding location data

The location data is now more consistent in the same area. To apply this change, you can trigger a metadata extraction job for all.

Before After

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.103.0...v1.103.1

immich - v1.103.0

Published by github-actions[bot] 6 months ago

v1.103.0

Highlights

Welcome to the release of v1.103.0 of Immich. This version includes some exciting new features and notable bug fixes. We hope you enjoy this release. Please take a look at the highlights below:

  • Read-only album sharing permission
  • Permanent URL on the web for asset viewer
  • Jump-to-date from memory view on the mobile app
  • Action bar in memory view on the web
  • Improve geocoding location data
  • Notable fix: Occasional logout on iOS
  • Notable fix: Asset's status sync issue on the mobile app
  • Notable fix: Memory leak causing mobile app crashes when swiping continuously in the detail view

Read-only album-sharing permission

When creating a shared album, you can specify whether the shared users can contribute to it or participate as read-only.

Permanent URL on the web for asset viewer

Assets now have a permanent URL on all views, so you can save a URL and refer back later to access a particular photo or video.

Jump-to-date from memory view on the mobile app

There is now an option to jump to a date from the memory viewer on the mobile app.

Action bar in memory view on the web

You can now select the assets in a certain memory and perform actions like adding to an album, deleting, archiving, favorite, etc.

image

Improve geocoding location data

The location data is now more consistent in the same area. To apply this change, you can trigger a metadata extraction job for all.

Before After

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

⚡ CLI

📓 Documentation

🔨 Maintenance

New Contributors

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

immich - v1.102.3

Published by github-actions[bot] 6 months ago

v1.102.3

There is no mobile release for this version

3 hotfixes in a day - sorry guys

Hotfixes

  • Actual fix for logout issue across the web and the mobile app

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

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