Releases: immich-app/immich
v1.106.3
v1.106.3
Hotfixes
This release addresses the following issues:
🗄️ Server
- fix: postgres health check reporting any db without checksums as unhealthy by @mertalev in #10178
- fix: increase pixel limit for thumbnail generation by @mertalev in #10181
- fix: exiftool largefilesupport only set for the first call by @stephen304 in #10167
- fix: only run healthchecks when api worker is running on immich-server by @zackpollard in #10204
- fix: checkExistingAssets by @michelheusschen in #10192
- fix: no floats (replace with doubles) by @jrasm91 in #10218
📱 Mobile
- fix: video player not updating state by @alextran1502 in #10220
🖥️ Web
- fix: multi-file upload in albums by @michelheusschen in #10190
- fix: missing svelte translations by @waclaw66 in #10199
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
, andMACHINE_LEARNING_PORT
were renamed toIMMICH_PORT
HOST
andMACHINE_LEARNING_HOST
were renamed toIMMICH_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.
The Duplicates page is under a new Utilities section in the sidebar. Stay tuned for other features that will go into this section!
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).
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:
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:
- You are added to a shared album.
- 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.
Translation on the web
We have added translation for...
v1.106.2
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
, andMACHINE_LEARNING_PORT
were renamed toIMMICH_PORT
HOST
andMACHINE_LEARNING_HOST
were renamed toIMMICH_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.
The Duplicates page is under a new Utilities section in the sidebar. Stay tuned for other features that will go into this section!
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).
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:
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:
- You are added to a shared album.
- 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.
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
And as always, bugs are fixed, and many other improvements also come with this release.
What's Changed
🗄️ Server
- fix(server): cache-control header missing from / requests by @michelheusschen in #10131
📱 Mobile
- fix(mobile): warning message not resetting when changing server URL by @alextran1502 in https://github...
v1.106.1
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
, andMACHINE_LEARNING_PORT
were renamed toIMMICH_PORT
HOST
andMACHINE_LEARNING_HOST
were renamed toIMMICH_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.
The Duplicates page is under a new Utilities section in the sidebar. Stay tuned for other features that will go into this section!
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).
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:
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:
- You are added to a shared album.
- 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.
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
What's Changed
⚠️ Breaking Changes
- feat: microservices be gone by @zackpollard in #9551
- refactor!: LOG_LEVEL => IMMICH_LOG_LEVEL by @jrasm91 in #9557
- refactor!: port env by @jrasm91 in #9559
- refactor(server): plural endpoints by @jrasm91 in #9667
- refactor(server): user info endpoint by @jrasm91 in #9668
- refactor(server): /user profile endpoint by @jrasm91 in #9669
- refactor(server): user endpoints by @jrasm91 in #9730
- refactor(server)!: move markers and style to dedicated map endpoint/controller by @danieldietzler in #9832...
v1.105.1
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
What's Changed
🗄️ Server
- refactor(server): system config by @jrasm91 in #9484
- refactor(server): feature flags by @jrasm91 in #9492
- fix(server): skip originals when deleting a library by @jrasm91 in #9496
📱 Mobile
- chore(deps): update mobile by @renovate in #9453
- deps(mobile): update dependency auto_route to v8 by @shenlong-tanwen in #9456
- chore(deps): update dependency fastlane to v2.220.0 by @renovate in #9491
- feat(web,mobile) Allow videos to be looped in the detail viewer by @kleinMaggus in #8615
🔨 Maintenance
- chore(deps-dev): bump jinja2 from 3.1.3 to 3.1.4 in /machine-learning by @dependabot in #9483
- chore(deps-dev): bump flask-cors from 4.0.0 to 4.0.1 in /machine-learning by @dependabot in #9485
- chore(deps): update dependency flutter_lints to v4 by @renovate in #9488
- chore(deps): update python:3.11-bookworm docker digest to 96de1ea by @renovate in #9490
New Contributors
- @kleinMaggus made their first contribution in #8615
Full Changelog: https://github.com/immich-app/immich/compare/v1.105.0...
v1.105.0
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
- fix(server): support special characters in library paths by @sushain97 in #9385
🗄️ Server
- fix(server): regenerate (extract) motion videos by @jrasm91 in #9438
- chore(server): remove unused column by @jrasm91 in #9431
- fix(server): addAssets and removeAssets handle duplicate assetIds by @eric-barch in #9436
- refactor(server): logger by @jrasm91 in #9472
- feat(server): run microservices in worker thread by @zackpollard in #9426
- fix(server): new full sync return stacked assets individually by @fyfrey in #9189
- fix(server): sync issue when delete remotes assets by @alextran1502 in #9479
📱 Mobile
🖥️ Web
- fix(web): show w x h correctly when media is rotated by @jrasm91 in #9435
- feat(web): combine auth settings by @jrasm91 in #9427
- Fix typo in error page title by @donebydavid in #9451
- fix(web): decrease asset viewer navigation area size by @Snowknight26 in #9455
- fix(web): admin settings number input validation by @michelheusschen in #9470
📓 Documentation
- fix install.sh add random password for .env by @xiagw in #9282
- docs: remove mention of delete being disabled for external assets by @benmccann in #9465
- docs(server,ml): update nvidia toolkit link by @mertalev in #9477
- Added Swedish translation of README. by @klahr in #9464
🔨 Maintenance
- chore(deps): update node.js to 291e84d by @renovate in #9449
- fix(deps): update typescript-projects by @renovate in #9454
- chore(deps): update node.js to 53108f6 by @renovate in #9450
- chore(deps): update base-image to v20240514 (major) by @renovate in #9469
- fix(deps): update machine-learning by @renovate in #9304
- chore(deps): update machine-learning by @renovate in #9478
- chore(deps-dev): bump werkzeug from 3.0.1 to 3.0.3 in /machine-learning by @dependabot in #9480
- chore(deps): bump tqdm from 4.66.1 to 4.66.3 in /machine-learning by @dependabot in #9481
- fix(deps): update dependency @zoom-image/svelte to v0.2.11 by @renovate in #9482
New Contributors
- @donebydavid made their first contribution in #9451
- @eric-barch made their first contribution in #9436
- @xiagw made their first contribution in #9282
- @klahr made their first contribution in #9464
Full Changelog: v1.104.0...v1.105.0
v1.104.0
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
- feat(server): email notifications by @hitech95 in #8447
- feat(server): immich checksum header by @jrasm91 in #9229
- fix(server, web): reassigning faces by @martabal in #9265
- fix(server): show partners archived photos on mobile timeline by @alextran1502 in #9194
- refactor: create album users by @jrasm91 in #9315
- feat(server) Random Endpoint use querybuilder and return exifInfo by @JW-CH in #9301
- feat(server): optimize person thumbnail generation by @mertalev in #7513
- chore(server): remove unused deps by @jrasm91 in #9334
- refactor(server): auth route metadata by @jrasm91 in #9344
- perf: cache
getConfig
by @mertalev in #9377 - perf: cache transcoding devices by @mertalev in #9381
- chore(server): less rigid transcoding tests by @mertalev in #9401
- feat(server, web): include pictures of shared albums on map by @andreasgerstmayr in #7439
- chore(server): email notification button png by @alextran1502 in #9423
- fix(server): put system config by @jrasm91 in #9425
📱 Mobile
- refactor(mobile): entities and models by @alextran1502 in #9182
- fix(mobile): show all places don't show all places by @alextran1502 in #9193
- feat(mobile): play motion video with long press gesture support by @jzhangdev in #6543
- refactor(mobile): services and providers by @alextran1502 in #9232
- fix(mobile): Reset dropdown values in search by location on mobile by @Tushar-Harsora in #9261
- refactor(mobile): pages by @alextran1502 in #9246
- chore(mobile) Linked pt-BR.json with Mobile app and localizely.yml by @Tushar-Harsora in #9281
- Localizely: Translations update by @alextran1502 in #9287
- fix(mobile): allow select empty album as backup album by @alextran1502 in #9290
- refactor(mobile): widgets by @alextran1502 in #9291
- fix(mobile): add user to album using new dto property by @alextran1502 in #9312
- fix(mobile): fix ca-CA.json file name by @aryiu in #9288
- fix(mobile): Fix asset selector title bar text by @ddshd in #9273
- chore(deps): update mobile by @renovate in #7229
- feat(mobile): Add pull to refresh to sharing page by @ddshd in #9274
- Revert "feat(android) Check server is reachable before starting background backup (#8989)" by @alextran1502 in #9324
- fix(mobile): timeline slider no longer disappears by @ConnerWithAnE in #9358
- refactor(mobile): remove shared module by @alextran1502 in #9363
- Localizely: Translations update by @alextran1502 in #9432
🖥️ Web
- feat(web,a11y): replace IconButton with CircleIconButton by @ben-basten in #9153
- refactor(web): search people by @martabal in #9082
- fix(web): Prevent DELETE key from clearing DateInput in modal by @uniqueeest in #8846
- fix(web): missing add photos button in album when viewed as owner by @alextran1502 in #9183
- fix(web): Configure web's immich sdk to use event.fetch by @midzelis in #9233
- feat(web): determine duplication of upload on client by @truongsinh in #8825
- feat(web): expand usage of CircleIconButton by @ben-basten in #9256
- fix(web): Individual Photo Sharing with Album Link #8887 by @iamamansharma in #9264
- fix(web): click on face in detail-panel by @martabal in #9271
- fix(web): stream 360 video instead of fetching entire video by @TapuCosmo in #9279
- fix(web): allow deselecting all assets from select bar by @Snowknight26 in #9320
- fix(web): Selected face in search filter doesn't show border highlight when hovered in light theme by @Tushar-Harsora in #9348
- fix(web): fix logo size on shared pages by @Snowknight26 in #9346
- fix(web): multiple fixes for people by @martabal in #9343
- fix(web): autofocus change name field by @alextran1502 in #9376
- fix(web): Fixed video unmutes when scrubbing by @Tushar-Harsora in #9382
- fix(web): page down shortcut by @martabal in #9397
- chore(web): icon consistency and improvements by @NicholasFlamy in #9403
- feat(web): hide all unnamed by @martabal in #9378
📓 Documentation
- chore: upgrade docusaurus-preset-openapi to remove axios by @benmccann in #9167
- Docs: New Futo milestones by @aviv926 in #9211
- chore(readme): add Brazilian Portuguese readme by @ryanrpj in #7107
- chore: Remove donation info from readme_i18n by @bo0tzz in #9225
- chore: Remove sponsor link from homepage by @bo0tzz in #9226
- chore(docs): Link to helm chart README by @bo0tzz in #9238
- docs: update post-install-steps documentation by @g-bulgarit in #9239
- Specify PowerShell for win backup/restore by @mmomjian in #9262
- docs: add custom map styles community guide by @vovchykbratyk in #9311
- chore: arabic translations by @Me-Mr in #9325
- docs: update portainer.md by @mtwb47 in #9337
- Chore: Add Arabic translations to readme by @Me-Mr in #9342
- docs: backup restore - add warning to not backup DB_DATA_LOCATION by @mmomjian in #9353
- docs: adds hyperlinks for other readme translations by @Me-Mr in #9345
- chore: put back warning banner by @alextran1502 in #9362
- docs: warn against use on NTFS / WSL by @mmomjian in #9371
- docs: add discord link by...
v1.103.1
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.
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.
- Monthly donation via GitHub Sponsors
- One-time donation via GitHub Sponsors
- Librepay
- buymeacoffee
- Bitcoin: 3QVAb9dCHutquVejeNXitPqZX26Yg5kxb7
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
- fix(web): permanent url for partner page by @alextran1502 in #9158
Full Changelog: v1.103.0...v1.103.1
v1.103.0
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.
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.
- Monthly donation via GitHub Sponsors
- One-time donation via GitHub Sponsors
- Librepay
- buymeacoffee
- Bitcoin: 3QVAb9dCHutquVejeNXitPqZX26Yg5kxb7
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
- chore(server): enable swagger to take class validator rules into account by @danieldietzler in #9022
- feat(server): env variable to skip migrations on startup by @mertalev in #9069
- feat: readonly album sharing by @mgabor3141 in #8720
- fix(server): activity with deleted assets / users by @martabal in #9068
- chore(server): remove unused endpoint/service/interface in asset-v1 by @alextran1502 in #9086
- fix(server): default host binding by @jrasm91 in #9090
- chore(server): remove old asset search by @jrasm91 in #9104
- chore: for redis, use service name as the default by @jrasm91 in #9109
- chore(server): default postgres hostname to compose service name by @jrasm91 in #9118
- refactor(server): repositories by @danieldietzler in #9119
- fix(server): asset count on meta tag of shared links by @nghduc97 in #9107
- feat(server): remove inactive sessions by @jrasm91 in #9121
- fix(server): untracked thumbnail and preview images by @mertalev in #9126
- fix(server): Improve reverse geocoded location metadata by @hermesespinola in #9051
- fix(server): stacked assets for full sync, userIds as array for delta sync by @fyfrey in #9100
- chore: lifecycle metadata by @jrasm91 in #9103
📱 Mobile
- chore(mobile): override appbundle on PlayStore before getting released by @alextran1502 in #8960
- dep(mobile): upgrade gradle by @shenlong-tanwen in #8409
- feat(mobile): add i18n in multiselect-grid and update translation (en and fr) by @clementdelestre in #8993
- feat(android) Check server is reachable before starting background backup by @devjn in #8989
- fix(mobile): ios random logout by @alextran1502 in #8997
- feat(mobile) Add zh-TW.json for Traditional Chinese Language Support by @hdlineage in #9046
- feat(mobile): Added "jump to date" functionality to the memory view by @arnolicious in #7323
- fix(mobile): Fixes memory image cache for local images by @martyfuhry in #9019
- fix(mobile): appBar on home screen animates out and doesnt alter asset grid position by @ConnerWithAnE in #9026
- fix(mobile): show places in Search page on mobile by @alextran1502 in #9085
- fix(mobile): group setting change doesn't propagate across the app by @alextran1502 in #9066
- fix(mobile): restore button in asset viewer by @ConnerWithAnE in #8919
- chore(mobile): add toast notification for "Download Started" by @DeadEnded in #9023
- chore(mobile): Use bulk update endpoint by @alextran1502 in #9110
- fix(mobile): sync issue by @alextran1502 in #9149
- chore(mobile): more logs by @alextran1502 in #9081
🖥️ Web
- feat(web): new look option for slideshow by @martabal in #8924
- fix(web): trash page now auto refreshes by @ConnerWithAnE in #8978
- feat(web): support 360 video (equirectangular) by @truongsinh in #8762
- fix(web): wrong month on timeline scrollbar cursor by @alextran1502 in #8996
- refactor(server, web, mobile): Change wording of memory titles by @rawcomposition in #9025
- fix(web): search people by @martabal in #8955
- fix(web): handle non-http client side page error by @nghduc97 in #8901
- feat(web): display age with months if age is less than 2 by @julianwachholz in #9053
- feat(web): assets now have a permanent URL by @midzelis in #8532
- feat(web): upload json config by @truppelito in #8953
- fix(web): Move stack slideshow container higher in the DOM by @Snowknight26 in #8998
- fix(web): closing asset viewer by @martabal in #8933
- feat(web): permanent url in shared link by @alextran1502 in #9083
- fix(web): the selected tab on the sidebar was not always shown as selected by @ConnerWithAnE in #9084
- fix(web): add debounce to location search by @nghduc97 in #9074
- feat(web,a11y): form and search filter accessibility by @ben-basten in #9087
- feat(web): separate command to build with rollup plugin visualizer by @nghduc97 in #9097
- fix(web): fix no matching export error by @mgabor3141 in #8550
- feat(web): standardize CircleIconButton colors by @ben-basten in #9127
- chore(web): remove CircleIconButton slot by @ben-basten in #9131
- feat(web): add menu bar with action buttons to memory view by @alextran1502 in #9141
⚡ CLI
- fix(cli):
--ignore
getting ignored by @mertalev in #9071 - fix(cli): dry run being inaccurate by @mertalev in #9088
📓 Documentation
- docs: update "move all data" instructions in FAQ by @abernds...
v1.102.3
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.
- Monthly donation via GitHub Sponsors
- One-time donation via GitHub Sponsors
- Librepay
- buymeacoffee
- Bitcoin: 3QVAb9dCHutquVejeNXitPqZX26Yg5kxb7
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
- feat(server): enable AV1 encoding for NVENC by @mertalev in #8959
- fix(server): session refresh by @jrasm91 in #8974
📱 Mobile
- Revert "feat(android) Check server is reachable before starting background backup (#8594)" by @alextran1502 in #8958
Full Changelog: https://github.com/immich-app/immich/compare/v1.102.2...
v1.102.2
v1.102.2
Hotfixes
- Next attempt to fix auto-logout on Android
- Fixed issue with input focus reset on search people page
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.
- Monthly donation via GitHub Sponsors
- One-time donation via GitHub Sponsors
- Librepay
- buymeacoffee
- Bitcoin: 3QVAb9dCHutquVejeNXitPqZX26Yg5kxb7
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
- Revert "fix(mobile): random logout (#8739)" by @alextran1502 in #8954
🖥️ Web
New Contributors
Full Changelog: https://github.com/immich-app/immich/compare/v1.102.1...