Releases: immich-app/immich
v1.120.0 - 50.000 Stars Release
v1.120.0 - 50.000 Stars Release
Welcome to release v1.120.0
of Immich. We've reached 50.000 stars on GitHub. Thank you for your love, support, and contributions to the project.
This release introduces a new built-in automatic database dump feature as well as bug fixes and enhancements. Some of the highlights include:
- Built-in automatic database backups
- Timeline location indicator on scrolling
- The web is now on Svelte 5
- Faster CPU transcoding for HDR videos
- Notable fix: Slow server start-up time on some systems
Built-in automatic database backups
This release introduces a mechanism that automatically creates a database dump and is enabled by default. It will run at 2 AM server time and keep the last 14 backups, all of which are configurable. You can find the settings in Administration > Settings > Backup Settings
The database zip files are placed at <UPLOAD_LOCATION>/backups
.
Below is an example of a database backup size for a library with 80_000 assets.
Currently, restores must be done manually, and instructions can be found in the documentation
Timeline location indicator on scrolling
The timeline on the web will now show the Month/Year information while scrolling to better indicate the viewport context.
Screen.Recording.2024-11-06.at.08.46.53.mov
Faster CPU transcoding for HDR videos
Immich now uses a faster tone-mapping implementation developed by the Jellyfin team to map colors from HDR to SDR. During testing, overall transcoding speed improved by as much as 69% for a 4K target resolution. The exact improvement will depend on hardware, source video, and transcoding settings.
Note
Note for third-party Immich distributions: as this filter only exists in jellyfin-ffmpeg, please ensure you use this build instead of a standard FFmpeg build.
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
- feat(web): scrubber label and animation by @alextran1502 in #13815
- feat: built-in automatic database backups by @zackpollard in #13773
🌟 Enhancements
- feat: mount checks on a folder level by @zackpollard in #13801
- feat(web): library settings crontab link includes existing expression by @zackpollard in #13807
- feat(web): disable opening image and library sub-items by default by @ITestInProd in #13729
- fix(mobile): Reapply thumbnail image improvements and fix issue #13804 by @dvbthien in #13835
- feat(server): use tonemapx for software tone-mapping by @mertalev in #13785
- feat: render asset path by @cfitzw in #13873
- chore(mobile): upgrade gradle by @alextran1502 in #13901
🐛 Bug fixes
- fix(server): handle N/A duration response from ffprobe by @jrasm91 in #13803
- fix: shutdown api process when another worker exits unexpectedly by @zackpollard in #13802
- fix(mobile): Revert thumbnail image ui improvements (#13655) by @alextran1502 in #13806
- fix(server): keep system config transformations by @jrasm91 in #13796
- fix(mobile): thumbnail not filled area on tablet by @alextran1502 in #13808
- fix(mobile): search page by @alextran1502 in #13833
- fix(mobile): not throwing error when cannot parse orientation value by @alextran1502 in #13853
- fix(mobile): do not removed not backup asset when selecting the correspond options by @yashrajjain726 in #13256
- fix(server): wrong image dimensions for RAW files (RAF, CR2) (also fixes face preview) by @C-Otto in #13377
- fix: healthcheck if custom host is set by @danieldietzler in #13887
- fix: remove duplicateIds on unique assets by @Pranay-Pandey in #13752
📚 Documentation
- chore(docs): update german readme to latest version by @MickLesk in #13824
- chore(docs): Add Immich Public Proxy to the Community Projects list by @alangrainger in #13836
- docs: fail2ban community project by @mmomjian in #13943
🌐 Translations
- chore(web): update translations by @weblate in #13688
- chore(web): update translations by @weblate in #13810
New Contributors
- @ITestInProd made their first contribution in #13729
- @alangrainger made their first contribution in #13836
Full Changelog: v1.119.1...v1.120.0
v1.119.1
v1.119.1
This patch release adds job options to the search view context menu when bulk-selecting assets.
What's Changed
🌟 Enhancements
- feat(web): add job action to search page result by @alextran1502 in #13784
📚 Documentation
- docs: note about Nginx reverse proxy compatibility with Let's Encrypt by @yozik04 in #13764
- docs: Add info about album sync&folder view by @aviv926 in #12371
New Contributors
Full Changelog: v1.119.0...v1.119.1
v1.119.0
v1.119.0
Caution
The env variable for the host binding was erroneously named HOST
instead of IMMICH_HOST
(which is how it was listed in the docs). This has been corrected in this release.
If you were using the HOST
env var in your setup before, please update it to IMMICH_HOST
.
If you are using the built-in Prometheus endpoint for monitoring, please read on. If not, you can ignore this section.
The following env variables have been removed:
IMMICH_METRICS
IMMICH_API_METRICS
IMMICH_HOST_METRICS
IMMICH_IO_METRICS
IMMICH_JOB_METRICS
Use IMMICH_TELEMETRY_INCLUDE
/ IMMICH_TELEMETRY_EXCLUDE
instead.
Examples:
-- IMMICH_METRICS=true
++ IMMICH_TELEMETRY_INCLUDE=all
-- IMMICH_METRICS=true
-- IMMICH_HOST_METRICS=false
++ IMMICH_TELEMETRY_INCLUDE=all
++ IMMICH_TELEMETRY_EXCLUDE=host
-- IMMICH_API_METRICS=true
-- IMMICH_HOST_METRICS=true
++ IMMICH_TELEMETRY_INCLUDE=api,host
Welcome to release v1.119.0
of Immich. This release focuses on fixing issues surrounding video encoding and thumbnail generation for a variety of old and new formats, along with minor improvements across the app. Some of the highlights below:
- Create new OAuth users without passwords
- Debounce email notifications for album changes
- Improve mobile app layout on tablets
- VAAPI hardware decoding
- Notable fix: Face Detection using excessive RAM with OpenVINO
- Notable fix: transcodes not playing in the mobile app in certain situations
VAAPI hardware decoding
Prior to this release, Immich only used VAAPI for video encoding; it still used the CPU for decoding and tone-mapping. This release adds end-to-end acceleration for VAAPI, making transcoding much faster with lower CPU utilization. With this addition, every supported acceleration API now has end-to-end acceleration in Immich.
If you use VAAPI hardware acceleration, you can enable hardware decoding in the transcoding settings to take advantage of this change.
Transcoding fix for mobile
When the source video is Dolby Vision, transcodes sometimes either didn't play in the mobile app, or only the audio was played. In particular, this meant that many videos captured on iOS could not be viewed on Android.
This issue has been fixed. However, existing transcodes of Dolby Vision videos created using Immich 1.114.0 - 1.118.2 will still have the issue and will need to be re-transcoded for correct playback in these cases.
To re-transcode affected videos, you can either select them in the web app and choose the Refresh encoded videos option or go to the Job Status page and click All next to Transcode Videos.
Note: you only need to do this if you encounter playback issues for these videos.
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
🚨 Breaking Changes
- refactor(server): move host env to config repo by @jrasm91 in #13507
- refactor(server): telemetry env variables by @danieldietzler in #13705
🚀 Features
🌟 Enhancements
- feat: show warning when running main branch build by @bo0tzz in #13462
- fix(server): Allow passwordless users when oauth enabled by @jedi04 in #13517
- feat(web): Change relink person icon from minus to pencil by @CrushedAsian255 in #13536
- fix(web): improve photosphere viewer settings by @grgergo1 in #13468
- feat(server): add pcm_s16le accepted audio codec by @pyorot in #13418
- feat(server): wait five minutes before sending email on new album item by @HeyBanditoz in #12223
- chore(mobile): proper new UI layout for tablet by @alextran1502 in #13650
- chore(mobile): thumbnail image ui improvements by @dvbthien in #13655
- feat: Use video thumbnail for GIF types by @Pranay-Pandey in #13677
- feat(ml): configurable batch size for facial recognition by @mertalev in #13689
🐛 Bug fixes
- fix(server): never try to parse Duration from exif data by @jrasm91 in #13497
- fix: person update state inconsistencies by @danieldietzler in #13556
- fix: web search add to album reactivity by @danieldietzler in #13539
- fix(web): intersection observer not triggered to load more people by @alextran1502 in #13589
- fix(server): encodes iPhone 16 Pro video with unknown audio codec by @alextran1502 in #13593
- fix(server): Revert "fix(server): copy video projection metadata for 360 videos (#12376)" by @mertalev in #13611
- fix(mobile): Fix minor issues with downloading assets by @dvbthien in #13609
- fix(web): reset select all button state on escape press by @darrelhong in #13600
- fix(server): only allow absolute import paths by @etnoy in #13642
- feat(web): allow changing shared user role in album options modal by @AnimeshKotka in #13654
- fix(server): add ld_library_path in start.sh by @mertalev in #13686
- fix(server): nan transcoding estimate by @mertalev in #13693
- fix: Add debouncing to the search popup form by @Pranay-Pandey in #13684
- fix(web): add crossorigin to link manifest for PWA by @automaton82 in #13708
- fix: duplicated library scan jobs and api server library watch by @zackpollard in #13734
- fix: X years ago ordering by @darrelhong in #13742
📚 Documentation
- chore(docs): add Thai README by @richeyphu in #13591
- chore(docs): update _storage-template.md by @chriskoch in #13578
- docs: add qsv note for jasper lake cpus by @evie-lau in #13622
- docs: add warning to repair page by @polgarc in #13640
- feat(docs): add mention to purchase to support immich page by @CrushedAsian255 in #13612
- fix: Add DB_DATA_LOCATION config. by @Sweebah in #13754
🌐 Translations
- chore(web): update translations by @weblate in #13443
- chore: move weblate translations to root directory by @ben-basten in #13604
New Contributors
- @jedi04 made their first contribution in #13517
- @CrushedAsian255 made their first contribution in #13536
- @grgergo1 made their first contribution in #13468
- @richeyphu made their first contribution in #13591
- @chriskoch made their first contribution in #13578
- @HeyBanditoz made their first contribution in #12223
- @dvbthien made their first contribution in #13609
- @darrelhong made their first contribution in #13600
- @jrstrunk made their first contribution in #13644
- @evie-lau made their first contribution in #13622
- @polgarc made their first contribution in #13640
- @AnimeshKotka made their first contribution in #13654
- @Pranay-Pandey made their first contribution in #13677
- @automaton82 made their first contribution in #13708
- @Sweebah made their first contribution in #13754
Full Changelog: v1.118.2...v1.119.0
v1.118.2
Warning
Version v1.118.0 contains breaking changes. Read about them here.
Hotfixes
This release fixes images from Whatsapp failing to be processed, as well as an issue with video thumbnail generation failing in some cases. It also includes the FFmpeg 6.0 -> 7.0 upgrade that was scheduled for the next release, but oh well 🙃
What's Changed
🐛 Bug fixes
- fix: styling for last image in person grid by @MananJain-IITJ in #13444
- fix(server): ffmpeg matrices by @lyynd in #13461
New Contributors
- @MananJain-IITJ made their first contribution in #13444
Full Changelog: v1.118.1...v1.118.2
v1.118.1
Warning
Version v1.118.0 contains breaking changes. Read about them here.
Hotfixes
This release fixes some bugs introduced in version v1.118.0, specifically an issue with Google OAuth and mobile.
What's Changed
🐛 Bug fixes
📚 Documentation
New Contributors
Full Changelog: v1.118.0...v1.118.1
v1.118.0
v1.118.0
Welcome to release v1.118.0
of Immich. This version comes with several breaking changes, and also improvements to the mobile app UI and UX, a new documentation home page, as well as bug fixes and enhancements across the app. We hope you enjoy this release!
Warning
Breaking changes
This release includes the following breaking changes:
- Port alignment
- Remove deprecated API endpoints
- Remove deprecated
start.sh
arguments
1. Port alignment
We aligned the internal port of the immich-server
to be similar to the binding port. Please make the following change to your docker-compose.yml
file under the immich-server
section. Reverse proxies using port 3001 also need to be updated to use port 2283.
services:
immich-server:
container_name: immich_server
...
ports:
- - 2283:3001
+ - 2283:2283
...
2. Remove deprecated API endpoints
The following endpoints were previously deprecated and have been removed, if you are a community project maintainer and using one of the endpoints below, please make sure to make changes to your project:
/api/server-info/*
has been removed. Use/api/server/*
instead./api/people/:id/assets
has been removed. Use/api/search/metadata
instead.
Note
This includes /api/server-info/ping
, /api/server-info/version
, /api/server-features
, /api/server-info/config
, /api/server-info/statistics
, and others.
3. Remove deprecated start.sh
arguments
The following docker commands have been removed:
start.sh immich
start.sh microservices
Follow the steps below to align docker-compose.yml
with the default setup.
Note
These steps are only required if you still have the immich-microservices
section in your docker-compose.yml
or didn't follow the previous instructions to remove the command section. If you don't have the mentioned content below, you can ignore this
1. Update docker-compose.yml
Remove the command
line from immich-server
and the entire immich-microservices
service section as shown below.
services:
immich-server:
container_name: immich_server
...
:
- command: [ "start.sh", "immich" ]
...
- immich-microservices:
- container_name: immich_microservices
- ...
- :
- command: [ "start.sh", "microservices" ]
- ...
2. Remove the running immich-microservices
container
Run docker compose down --remove-orphans
after updating docker-compose.yml
to remove the old immich-microservices
container.
Highlights
Some of the highlights for this release include the following:
- Mobile UI/UX improvement
- Option to refresh face detection
- Color filters for editing photos
- Timezone improvements
- Deprecated release notes section
- Better JPEG compression
- Multi-GPU support for ML
Mobile UI/UX improvement
Thank you all for the great feedback from the dicussion we made a month ago about the proposed changes to the mobile app layout. We hope the following changes will provide more fluid experience when browing and managing your photos and videos.
Navigation bar
Photos and albums are the two most used pages. To make them more accessible, we replaced the Sharing
page with a new Albums
page where you can find all of the album related features and functions.

Albums page
This new page allows users to quickly view, sort, search, filter, create, and manage albums.
Library page
The library page now includes quick access buttons to various views, including
- Favorites
- Archived
- Shared links
- Trash
- People
- Places
- Device albums
- Partner sharing
Search page
Many of the items that were previously on this page have been moved to the Library
page, mentioned above. As a result, the search page is less cluttered and includes quick access search chips and queries. Also, clicking on the search navbar item a second time will focus on the search bar and open the keyboard for easy access.
Color filters for editing photos
This release introduces colors filter option in the edit menu on the mobile app. You can apply a set of presets colors to your photo. Thanks @Yuvi-raj-P for your contribution.

Timezone improvements
Images without timezones could previously show up incorrectly in the timeline if the server had a timezone (TZ=...
) set. This has been fixed and can be corrected by running metadata extraction on all assets.
Deprecated release notes section
Future releases will now include a "Deprecated" section in the release notes, including details of API endpoints and other changes that will become breaking changes in a future release. Moving forward, we plan to use this section of the release notes as our primary communication method for these types of changes.
Refresh face detection
Assets now have a Refresh faces
option to update the set of detected faces based on the current face detection threshold. Likewise, there is a new Refresh
button for Face Detection in the Jobs page that does the same for all assets.
Importantly, this does not clear all recognized people like the All
button (renamed to Reset
). If you find that a different detection threshold works better for your library and want to apply that new value to existing assets, Refresh
will simply add or remove faces to apply this change.
It will only ever delete faces detected through machine learning, not EXIF. Speaking of EXIF-sourced faces, they can now be used to recognize detected faces as a result of this feature. This means the facial recognition process can share the same people listed in face metadata instead of duplicating them.
Better JPEG compression
Immich now uses Jpegli, a new library leveraging the advancements of JPEG XL to shrink JPEG file size at the same (or higher) quality. This change narrows the gap between JPEG and WebP compression considerably, especially at high quality.
Multi-GPU support for ML
It is now possible for a single instance of the machine learning service to use more than one GPU. Previously, this required several services and a load balancer in front. See the documentation for instructions.
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
🚨 Breaking Changes
- refactor(server): worker env by @jrasm91 in #13160
- chore: remove deprecated controller by @jrasm91 in #13189
- chore: remove deprecated endpoint by @jrasm91 in #13190
- feat: align compose ports by @jrasm91 in #13185
🚀 Features
- feat(server): refresh face detection by @mertalev in #12335
- feat(mobile): Adding filters feature to mobile image editor by @Yuvi-raj-P in #13174
- feat(ml): round-robin device assignment by @mertalev in #13237
- feat(mobile): new mobile UI by @alextran1502 in #12582
🌟 Enhancements
- feat(doc): new homepage design and font by @alextran1502 in #13084
- chore(mobile): search page minor enhancements by @alextran1502 in #13403
- fix(mobile): more efficient loading local image on ios by @alextran1502 in #13426
🐛 Bug fixes
- fix(mobile): respect orientation on displaying asset dimensions by @Yagnap in #13129
- fix(server): UTC+13 timezones treated as invalid during exif parsing by @C-Otto in #13176
- fix(server): external libraries queueing two transcode jobs by @zackpollard in #13251
- fix(server): Allow commas and braces in import paths by @etnoy in #13259
- fix(server): searching with both
personIds
andwithPeople
by @mertalev in #13254 - fix(web): video player on Safari by @alextran1502 in #13242
- fix(server): timezones by @jrasm91 in https://gi...
v1.117.0
v1.117.0
Warning
Breaking changes
The image
section of the config file structure for thumbnails and previews has changed. If you use a config file and set the image settings to custom values, these will be ignored until updated to the new structure.
…
"image": {
- “previewFormat”: “jpeg”,
- “previewSize”: 1440,
- “quality”: 80,
- “thumbnailFormat”: “webp”,
- “thumbnailSize”: 250,
+ "thumbnail": {
+ "format": "webp",
+ "size": 250,
+ "quality": 80
+ },
+ "preview": {
+ "format": "jpeg",
+ "size": 1440,
+ "quality": 80
+ },
"colorspace": "p3",
"extractEmbedded": false
}
…
Highlights
Welcome to release v1.117.0
of Immich. This release continues to bring bugfixes and additional enhancements to the app. Let's go over some of the highlights below:
- Better folder checks
- Download notifications (mobile)
- Support and feedback links (web)
- Upgrade history
- Asset thumbnail improvements
Better folder checks
This release fixes a few more issues with the .immich
related checks.
- Ignore errors when
.immich
already exists, but mount checks aren't enabled - Add a docs page about System Integrity
- Add an env option to skip mount checks (
IMMICH_IGNORE_MOUNT_CHECK_ERRORS=true
)
Download notifications (mobile)
Downloads now show their progress and can be canceled

Support and feedback links (web)
Links have been added to the Immich web application to help users more easily find our documentation, source code, discord, etc. Also, third party packages have the option to additionally include their own links.
Upgrade history
Clicking on the server build number on the web will now also show upgrade history, in addition to other build information.
In the future we may look at combining this information with the new support/help modal.
Light | Dark |
---|---|
![]() |
![]() |
Asset thumbnail improvements
Combined jobs
Thumbnails are critical to keep Immich feeling snappy. We currently generate a "preview" (large), a "thumbnail" (small), and a "thumbhash" (very small) for each asset. Prior to this release each version for each asset was a separate job. Now they have been combined into a single job, per asset. This makes the jobs page much more accurate and useful. It also means thumbnails generate faster, and use less system resources (see below).
In order from left to right:
- Previews generation start on old version
- Previews generation completed old version (starting thumbnails)
- Thumbnail generation finished old version
- Thumbnail generation started on new version
- Thumbnail generation finished on new version
Common settings
Previews and thumbnails can now both set desired format
, resolution
, and quality
settings.
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
- feat: support and feedback modal with third party support by @zackpollard in #13056
- feat: track upgrade history by @jrasm91 in #13097
🌟 Enhancements
- feat(server): better transcoding logs by @mertalev in #13000
- feat(server): separate quality for thumbnail and preview images by @mertalev in #13006
- feat(server): generate all thumbnails for an asset in one job by @mertalev in #13012
- feat(mobile): enhance download operations by @alextran1502 in #12973
- feat(server): parse offset from "Image_UTC_Data" (Samsung) by @C-Otto in #13080
- feat(server): better mount checks by @jrasm91 in #13092
🐛 Bug fixes
- fix(server): "all" button for facial recognition deleting faces instead of unassigning them by @mertalev in #13042
- fix(server):
/search/random
failing with certain options by @mertalev in #13040 - fix(mobile): share to error by @alextran1502 in #13044
- fix: deletedAt not set for offline assets during 1.116.0 migration by @zackpollard in #13086
- fix(server): offline assets don't restore when coming back online by @zackpollard in #13087
📚 Documentation
- docs: update config file by @mertalev in #13041
- fix(docs): Update TrueNAS installation docs by @PetrSvirak in #13017
🌐 Translations
- chore(web): update translations by @weblate in #12938
- chore: add more languages by @danieldietzler in #13127
New Contributors
- @PetrSvirak made their first contribution in #13017
Full Changelog: v1.116.2...v1.117.0
v1.116.2
v1.116.2
Hotfixes
- Fixed an issue library jobs not working correctly
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
🐛 Bug fixes
- fix: library pagination to 10k to avoid too many postgres query params by @zackpollard in #12993
📚 Documentation
Full Changelog: v1.116.1...v1.116.2
v1.116.1
v1.116.1
Hotfixes
- Fixed an issue of putting the app in the background on the login screen, causing the signing progress to hang on the mobile app
- Fixed an issue of incorrectly getting the original filename on iOS
- Fixed handling of numeric hierarchical subject values in tags
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
🌟 Enhancements
- fix(mobile): navigation panel overlaps with right rotate by @Lauritz-Tieste in #12950
- feat: no slideshow transition by @martabal in #12989
🐛 Bug fixes
- fix(server): handle numeric hierarchical subject values by @jrasm91 in #12949
- fix(mobile): uninitialize provider causes unable to logging in by @alextran1502 in #12970
- fix(mobile): incorrect filename is retrieved during upload by @alextran1502 in #12990
📚 Documentation
- docs: add clarity to non root user section by @GusPrice in #12956
- refactor(docs): fix heading tag, update Vietnamese translation for image alt, formatting features table by @KD-MM2 in #12971
- chore(Brazilian README): fix broken image links and update translation by @ryanrpj in #12980
New Contributors
Full Changelog: https://github.com/immich-app/immich/compare/v1.116.0...
v1.116.0
v1.116.0
Highlights
Welcome to release v1.116.0
of Immich!
This release continues to focus on bug fixes, which is quite typical for us, especially after large releases. Highlights for this release include:
- Improved
.immich
file boot checks - Improved external library scanning
- Timezone improvements
- Tag clean up job
- Better person merge workflow
- Improve settings pages (web)
- Fixed possible startup failure due to .immich files
- Serve
style.json
directly fromtiles.immich.app
- New "random" api for 3rd party apps
- Notable fix: Uncaught error causes the hashing process to abort entirely in the mobile app
Issues with .immich files on boot in 1.115.0
There were a small number of users who experienced problems with booting Immich after upgrading to 1.115.0. This was due to the new .immich file checks that verify your library folders are still mounted and writable. If, and only if you had problems booting 1.115.0 that persist into 1.116.0 with an error of "Unable to write .immich file, already exists", you can fix this by stopping Immich and removing the .immich files in the UPLOAD_LOCATION subfolders (upload, library, thumbnails, etc). If you experience any further problems, please do contact us on discord or via a github discussion.
Improved external library scanning
The external library scan mechanism has been reduced from four seperate options, to one. There is now a single button "Scan" that will handle all cases. Files that are offline (deleted or missing) now get hidden from the timeline and will show in the trash folder. This will become a dedicated screen in a future release. If the file comes back online, then the assets will re-appear in the main timeline and albums they were in previously. If the asset is offline for longer than the trash duration set in the admin config, the assets will be removed from immich automatically
Timezone improvements
Previously, if the timezone of an asset was unknown, it would apply an arbitrary offset by assuming the time was UTC and adjusting it to the viewer's timezone. Now, a timezone will only be shown if it is known for the asset.
Before | After |
---|---|
![]() |
![]() |
Tag cleanup job
If you have tags with no assets in them, you can remove them by running the "Tag clean up" job
here.
Better person merge workflow
The merge page always uses the same direction to merge people together. The "source" gets merged into the "target". However, sometimes the target is an unnamed person. Now, in these situations, the merge direction is automatically reversed, leading to a better user experience.
Serve style.json
directly from tiles.immich.app
Up to this release, the immich server served the style.json
file. That file includes the styling of the map as well as the font/glyphs/tiles provider. However, this also means that tile server updates were always bound to immich server updates. With this change, we decouple the two by serving the (static)style.json
file from the infrastructure we serve the map tiles. This is also in line with pretty much any other map/tile provider. This change will assist us in bringing map improvements to all users in the future, such as map localisation without having to manage multiple different immich versions.
However, note that this does not affect the ability to specify a different style.json
URL in the admin settings.
UI improvement for settings pages
Each setting now has a new design accordion section with a distinguishable icon to help identify it easier as the options get longer. You can also search for the administration settings by their title and subtitle in your native language.
New "random" API
We are deprecating GET /assets/random
in favor of POST /search/random
, which works very similar to the other search endpoints. It includes more relations and filters. In the future, we plan to add an option to search and filter by a specific album ID.
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
🌟 Enhancements
- fix(web): better merge direction by @jrasm91 in #12601
- fix(server): include partner assets in random endpoint by @jrasm91 in #12599
- feat: tag cleanup job by @jrasm91 in #12654
- feat(web): improve UI/UX for settings pages by @alextran1502 in #12626
- feat(server): sort assets randomly from the API 'api/search/metadata' endpoint by including 'order': 'rand' in the API call. by @jschwalbe in #12741
- feat: serve map tile styles from tiles.immich.cloud by @zackpollard in #12858
- feat(web): fixed combobox positioning by @ben-basten in #12848
- refactor(server): library syncing by @etnoy in #12220
🐛 Bug fixes
- fix(web): load original panorama if specified in user settings by @Saschl in #12123
- fix(web): bucket by
localDateTime
by @jrasm91 in #12612 - fix(web): memory viewer by @jrasm91 in #12649
- fix(server): increase person search limit by @jrasm91 in #12619
- fix(web): scrollbar shows when not need by @alextran1502 in #12659
- fix(server): fix modify date extraction by @alextran1502 in #12658
- fix: empty and restore over 1,000 items by @jrasm91 in #12751
- fix(web): upgrade old style theme preference by @jrasm91 in #12775
- fix(web): asset grid with invalid asset id (at) by @jrasm91 in #12772
- fix: creating tags with leading/traling slashes by @danieldietzler in #12778
- fix(web): only show the timezone when it is known by @jrasm91 in #12779
- fix(mobile): Issue Selecting Many Albuns for Backup by @sshubhm in #12784
- fix: rework file handling so we always explicitly create, overwrite or both by @zackpollard in #12812
- fix(mobile): fix uncaught error in getting file cause hashing procses to be aborted entirely by @alextran1502 in #12826
- feat(server): validate rating by @dreadster3 in #12855
- fix(web): Fix same key for delete and stack actions by @Caesiumhydroxid in #12865
- fix: normalize external domain by @danieldietzler in #12831
- fix(server): gracefully handle unknown jobs by @jrasm91 in #12870
- fix: show asset count for unassigned faces by @danieldietzler in #12871
- fix: remove no longer needed LD_LIBRARY_PATH by @jrasm91 in #12872
- fix: set min values for face detection to reasonable values by @danieldietzler in #12877
- fix: album title state weirdness by @danieldietzler in #12874
- fix: do not use trashed assets as album covers by @jrasm91 in #12905
- fix(server): http error parsing on endpoints without a default response by @jrasm91 in #12927
- fix(web): delete non-empty album by @jrasm91 in #12937
📚 Documentation
- docs: scaling immich guide by @bo0tzz in #12593
- docs: add hint for healthcheck.start_interval by @kastl-ars in #12643
- docs: mobile architecture diagram by @fyfrey in #12841
- docs: add section for Traefik Reverse Proxy by @zp33dy in #12813
- fix(docs): typo in remote-access.md by @JonOcto in #12895
- docs: details for windows users how to change docker volume by @mmomjian in #12551
- docs: hidden files cursed knowledge by @jrasm91 in #12929
🌐 Translations
- fix(mobile): fix mn-MN.json file name by @aryiu in #12558
- chore(web): update translations by @weblate in #12590
- chore(web): update translations by @weblate in #12737
...