feat: warn when losing transparency during thumbnail generation#26243
feat: warn when losing transparency during thumbnail generation#26243
Conversation
df1f2a1 to
7b461ff
Compare
7b461ff to
dd9fd08
Compare
danieldietzler
left a comment
There was a problem hiding this comment.
This seems pretty good, nice!
dd9fd08 to
89d8fb1
Compare
|
Sorry for intruding into this pr :) Would it be possible to store (Just wanted to ask If this is possible and wanted by the immich team, as with this we can show the reverted checkerboard background conditionally, and not on every asset) |
|
The adaptive image PR has support for alpha channel images now. Instead of checkboard, a 50% gray solid background is used as it's a little more aesthetically pleasing. (note: It's actually slightly lighter/darker than 50% depending on dark/light theme) |
|
@mertalev - thoughts on adding hasAlpha to the db table (like isProgressive) |
Sure, I think this is a useful thing to add. It should try to avoid unnecessary DB updates like the existing code. Also, |
6542b30 to
118bc08
Compare
| let hasAlpha = false; | ||
| if (canHaveAlpha) { | ||
| const metadata = await pipeline.metadata(); | ||
| hasAlpha = metadata.hasAlpha ?? false; | ||
| } |
There was a problem hiding this comment.
I suggested decodeImage since I figured this was in the OutputInfo, but it might be better to do this in the service instead. getImageDimensions already exists and could just be getMetadata.
server/src/services/media.service.ts
Outdated
| await this.assetRepository.upsertFiles(toUpsert); | ||
| await this.assetRepository.upsertFiles( | ||
| toUpsert.map(({ assetId, type, path, isEdited, isProgressive }) => ({ | ||
| assetId, | ||
| type, | ||
| path, | ||
| isEdited, | ||
| isProgressive, | ||
| })), | ||
| ); |
There was a problem hiding this comment.
I had added format to UpsertFileOptions - to get returned from the getImageFile function - but I didn't want it to be actually added to the db. But, based on your comment about moving metadata to the service instead of the repo, I'll revert this.
server/src/services/media.service.ts
Outdated
| const path = StorageCore.getImagePath(asset, options); | ||
| private getImageFile( | ||
| asset: ThumbnailPathEntity, | ||
| options: ImagePathOptions & { sourceHasAlpha?: boolean; progressive?: boolean | null }, |
There was a problem hiding this comment.
The options should be required. I think these are also separate concerns. The format etc. is supposed to flow from the job to the helpers, making getImageFile override the format seems unexpected.
118bc08 to
f525e3e
Compare
Sure - this will be in a diff PR |
f525e3e to
4089ffe
Compare
1ad1f3b to
6a86548
Compare
|
Sorry, late to the party, and I don't want to hold up this PR - but does it not make more sense to use transparent/transparency instead of alpha? hasAlpha/isAlpha and 'alpha capable formats' seem contrived, whereas isTransparent and transparency capable is immediately clear. Do whatever you want with this comment, no need to reply if both of you think alpha is fine! |
jrasm91
left a comment
There was a problem hiding this comment.
I also like the suggestion to use isTransparent everywhere instead of hasAlpha
server/src/services/media.service.ts
Outdated
| private resolveFinalImageFormat(sourceHasAlpha: boolean, format: ImageFormat, assetId: string): ImageFormat { | ||
| if (sourceHasAlpha && format === ImageFormat.Jpeg) { | ||
| this.logger.debug( | ||
| `Overriding output format from ${format} to ${ImageFormat.Webp} to preserve alpha channel for asset ${assetId}`, | ||
| ); | ||
| return ImageFormat.Webp; | ||
| } | ||
| return format; | ||
| } |
There was a problem hiding this comment.
The default thumbnail settings uses Webp. If the user has explicitly changed this to Jpeg I don't think we should ignore that and use Webp anyways. We should not deviate from the settings the user has explicitly chosen. It would be fine to log a warning and making it clear that Webp would be preferred because it supports transparency.
There was a problem hiding this comment.
If we don't automatically preserve transparent, then I think it should be a user setting - called 'Preserve Transparency' or similar. If a user wants JPG previews (because they want progressive previews for example) - but they have also have some images that are transparent, this would mean they would need to use WEBP for all previews. Automatically doing this (or allowing the option) - allow the user to continue to get the benefits of JPG, but also the benefits of transparent on a image-by-image basis. Thoughts?
There was a problem hiding this comment.
We thought about it but it's too niche to have as an option. It's basically an edge case which can be mostly addressed by changing the target format.
server/src/services/media.service.ts
Outdated
| } | ||
|
|
||
| private async decodeImage(thumbSource: string | Buffer, exifInfo: Exif, targetSize?: number) { | ||
| private async decodeImage(thumbSource: string | Buffer, exifInfo: Exif, targetSize?: number, checkAlpha?: boolean) { |
There was a problem hiding this comment.
| private async decodeImage(thumbSource: string | Buffer, exifInfo: Exif, targetSize?: number, checkAlpha?: boolean) { | |
| private async decodeImage(thumbSource: string | Buffer, exifInfo: Exif, targetSize: number | undefined, checkAlpha: boolean) { |
6a86548 to
aaac6a4
Compare
mertalev
left a comment
There was a problem hiding this comment.
LGTM aside from the tiny nit
9089af6 to
6216859
Compare
|
Renamed method per @mertalev request |
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [immich-app/immich](https://github.com/immich-app/immich) | minor | `v2.5.6` → `v2.6.1` | --- >⚠️ **Warning** > > Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/2) for more information. --- ### Release Notes <details> <summary>immich-app/immich (immich-app/immich)</summary> ### [`v2.6.1`](https://github.com/immich-app/immich/releases/tag/v2.6.1) [Compare Source](immich-app/immich@v2.6.0...v2.6.1) ### v2.6.1 #### Hot fixes - Fixed a failed migration issue on the mobile app when the URL Switching feature is used #### What's Changed ##### 🐛 Bug fixes - fix(server): fallback to email when name is empty by [@​jrasm91](https://github.com/jrasm91) in [#​27016](immich-app/immich#27016) - fix: ignore errors deleting untitled album by [@​jrasm91](https://github.com/jrasm91) in [#​27020](immich-app/immich#27020) - fix(web): wrap long album title by [@​jrasm91](https://github.com/jrasm91) in [#​27012](immich-app/immich#27012) - fix(web): stop in-progress uploads on logout by [@​jrasm91](https://github.com/jrasm91) in [#​27021](immich-app/immich#27021) - fix: writing empty exif tags by [@​danieldietzler](https://github.com/danieldietzler) in [#​27025](immich-app/immich#27025) - fix(web): disable send button by [@​jrasm91](https://github.com/jrasm91) in [#​27051](immich-app/immich#27051) - fix(mobile): server url migration by [@​mertalev](https://github.com/mertalev) in [#​27050](immich-app/immich#27050) **Full Changelog**: <immich-app/immich@v2.6.0...v2.6.1> ### [`v2.6.0`](https://github.com/immich-app/immich/releases/tag/v2.6.0) [Compare Source](immich-app/immich@v2.5.6...v2.6.0) ### v2.6.0 Welcome to Immich `v2.6.0`, This release is a collection of more than *350 commits over 6 weeks*. I know, it is an eternity between releases compared to our previous era. This version focuses on bug fixes and enhancements across the app to provide a more delightful and smoother experience to you. This release also prepares for the next major release in the coming month, which will remove the old timeline implementation. Let's dive into the highlights of the release: > \[!WARNING] > For those who are still using the old timeline, please switch to the new timeline to avoid interruption, as the old timeline will be removed in the next release. > > ps: The old timeline has an exclamation icon next to the logo. <img width="525" height="120" alt="image" src="https://github.com/user-attachments/assets/ed36ea22-b16e-472f-961c-c19501712ba5" /> ### Highlights - Map side panel (web) - Pick album cover (mobile) - Shared link slugs (mobile) - Shared link presets (web) - Native HTTP clients (mobile) - Video player and asset viewer improvements (mobile) - Improved search results (mobile) - `schema-check`: a new `immich-admin` command - Read profile claims from ID token (OAuth) - Notable fix: cast videos now automatically loop - Notable fix: correctly extract make and model from Sony XAVC video files - Notable fix: escape key handling on web - Notable fix: healthcheck endpoint in maintenance mode - Notable fix: timeline rendering for RTL languages like Arabic and Hebrew - Notable fix: prevent server crash when extracting invalid metadata #### Map side panel (web) The map view on the web now opens a mini-timeline component as a side panel when you click on a cluster of assets. This makes it easier to view the cluster at a glance and enables bulk actions, such as adding to favorites and adding to an album. <img width="800" alt="image" src="https://github.com/user-attachments/assets/6f90b04d-4aa7-4f68-b59c-c2b912e638f7" /> #### Pick album cover (mobile) Users can now pick a new album cover directly from the mobile app. <https://github.com/user-attachments/assets/7f99dc80-21c6-4ce6-9f75-8e6b0163dcaa> #### Shared link slugs (mobile) The mobile app now also supports setting a shared link slug, a feature that's been available on the web for a while. <https://github.com/user-attachments/assets/5420995a-cfd4-471d-a3ac-db4fa45de780> #### Shared link presets (web) The expiration form input on the web was always a bit confusing, but it's been updated to make it easier to see and understand when a shared link will expire. <img width="400" alt="image" src="https://github.com/user-attachments/assets/9d6124a9-eec2-43e8-b228-e1ac6c0415e8" /> #### Native HTTP clients (mobile) The mobile app now uses native HTTP clients across both Android and iOS, with support for mTLS, self-signed certificates, basic auth, and custom headers. These features should now be more reliable and extend to background tasks, video playback, and other parts of the app. This also improves the app's overall network request performance thanks to HTTP/2 and HTTP/3, multiplexing, and caching. #### Video player and asset viewer improvements (mobile) The asset viewer has undergone many improvements under the hood to make it simpler, faster and more reliable. We've also added playback support for GIFs, enabled video zooming, and made many more bug fixes and tweaks. ##### The asset viewer now uses a gradient for actions, and video controls have been restyled <img width="300" alt="image" src="https://github.com/user-attachments/assets/9a4e0892-f178-45fc-812c-10a6cba3f48b" /> ##### Inline asset details This used to be a bottom sheet and had a lot of glue for alignment. The new version is much more responsive and less buggy. ##### Before <https://github.com/user-attachments/assets/43b59b59-7d6a-48d0-94d7-84b8cae1c2a9> ##### After <https://github.com/user-attachments/assets/9217b6f4-1c92-40b0-bd95-a0681307cf38> #### Improved search results (mobile) The search results page now loads more results without rebuilding the entire grid, and should now load much faster. There are also new screens for when there are no search results and when all results have been loaded. <https://github.com/user-attachments/assets/42ce69d4-1618-48ee-9cb9-91ec22e12b27> #### `schema-check`: a new `immich-admin` command A new `immich-admin` command has been added in this release: `schema-check`. The command runs a report on the database to check if any indexes, constraints, tables, or columns are missing. This check also runs automatically on startup. #### Read profile claims from `idToken` (OAuth) Prior to `v2.6.0`, Immich resolved the `email` and other claims from the [userinfo](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo) endpoint. Now, Immich also supports reading those claims directly from the `idToken`. This makes it possible to use providers such as Microsoft ADFS that do not support the userinfo endpoint. *** As always, there are many more QoL improvements, bug fixes, and enhancements in this release. Please find the full release note below #### Support Immich <p align="center"> <img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExbjY2eWc5Y2F0ZW56MmR4aWE0dDhzZXlidXRmYWZyajl1bWZidXZpcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/87CKDqErVfMqY/giphy.gif" width="450" title="SUPPORT THE PROJECT!"> </p> If you find the project helpful, you can support Immich by purchasing a product key at <https://buy.immich.app> or our merchandise at <https://immich.store> *** <!-- Release notes generated using configuration in .github/release.yml at v2.6.0 --> #### What's Changed ##### 🔒 Security - fix(server): restrict individual shared link asset removal to owners by [@​michelheusschen](https://github.com/michelheusschen) in [#​26868](immich-app/immich#26868) - fix: add to shared link by [@​jrasm91](https://github.com/jrasm91) in [#​26886](immich-app/immich#26886) ##### 🚀 Features - feat: shared link login by [@​jrasm91](https://github.com/jrasm91) in [#​25678](immich-app/immich#25678) - feat: schema-check by [@​jrasm91](https://github.com/jrasm91) in [#​25904](immich-app/immich#25904) - feat: add people deeplink by [@​arne182](https://github.com/arne182) in [#​25686](immich-app/immich#25686) - feat(mobile): inline asset details by [@​uhthomas](https://github.com/uhthomas) in [#​25952](immich-app/immich#25952) - feat(mobile): filter by tags by [@​benjamonnguyen](https://github.com/benjamonnguyen) in [#​26196](immich-app/immich#26196) - feat: add .mxf file support by [@​timonrieger](https://github.com/timonrieger) in [#​24644](immich-app/immich#24644) - feat: tap to see next/previous image by [@​thezeroalpha](https://github.com/thezeroalpha) in [#​20286](immich-app/immich#20286) - feat(mobile): Allow users to set album cover from mobile app by [@​timonrieger](https://github.com/timonrieger) in [#​25515](immich-app/immich#25515) - feat(mobile): Allow users to set profile picture from asset viewer by [@​timonrieger](https://github.com/timonrieger) in [#​25517](immich-app/immich#25517) - feat: ROCm 7.2 and MIGraphX support by [@​kprinssu](https://github.com/kprinssu) in [#​26178](immich-app/immich#26178) - feat(web): map timeline sidepanel by [@​michelheusschen](https://github.com/michelheusschen) in [#​26532](immich-app/immich#26532) - feat: add responsive layout to broken asset by [@​midzelis](https://github.com/midzelis) in [#​26384](immich-app/immich#26384) - feat(web): toggle zoom on double-click in photo viewer by [@​midzelis](https://github.com/midzelis) in [#​26732](immich-app/immich#26732) - feat(mobile): show animated images in asset viewer by [@​LeLunZ](https://github.com/LeLunZ) in [#​26614](immich-app/immich#26614) - feat(mobile): open in browser by [@​YarosMallorca](https://github.com/YarosMallorca) in [#​26369](immich-app/immich#26369) ##### 🌟 Enhancements - feat: verify permissions by [@​jrasm91](https://github.com/jrasm91) in [#​25647](immich-app/immich#25647) - feat(web): change link expiration logic & presets by [@​YarosMallorca](https://github.com/YarosMallorca) in [#​26064](immich-app/immich#26064) - feat(mobile): dynamic layout in new timeline by [@​shenlong-tanwen](https://github.com/shenlong-tanwen) in [#​23837](immich-app/immich#23837) - feat(cli): change progress bar to display file size by [@​Nykri](https://github.com/Nykri) in [#​23328](immich-app/immich#23328) - feat(mobile): dynamic multi-line album name by [@​uhthomas](https://github.com/uhthomas) in [#​26040](immich-app/immich#26040) - feat(mobile): hide search by context/OCR if disabled on server ([#​25472](immich-app/immich#25472)) by [@​Nacolis](https://github.com/Nacolis) in [#​26063](immich-app/immich#26063) - fix(release): add docker-compose.rootless.yml to released assets by [@​dnozay](https://github.com/dnozay) in [#​26261](immich-app/immich#26261) - feat(web): show ocr text boxes in panoramas by [@​meesfrensel](https://github.com/meesfrensel) in [#​25727](immich-app/immich#25727) - feat(web): loop chromecast video by [@​etnoy](https://github.com/etnoy) in [#​24410](immich-app/immich#24410) - chore(web): merge "Add to album" and "Add to shared album" actions into a single action by [@​timonrieger](https://github.com/timonrieger) in [#​24669](immich-app/immich#24669) - feat(mobile): timeline - add bottomWidgetBuilder by [@​PeterOmbodi](https://github.com/PeterOmbodi) in [#​25634](immich-app/immich#25634) - feat(mobile): video zooming in asset viewer by [@​goalie2002](https://github.com/goalie2002) in [#​22036](immich-app/immich#22036) - feat(mobile): Add slug support for shared links by [@​Lauritz-Tieste](https://github.com/Lauritz-Tieste) in [#​26441](immich-app/immich#26441) - feat: warn when losing transparency during thumbnail generation by [@​midzelis](https://github.com/midzelis) in [#​26243](immich-app/immich#26243) - perf(mobile): optimized album sorting by [@​YarosMallorca](https://github.com/YarosMallorca) in [#​25179](immich-app/immich#25179) - feat(mobile): prompt when deleting from trash by [@​YarosMallorca](https://github.com/YarosMallorca) in [#​26392](immich-app/immich#26392) - feat: getAssetEdits respond with edit IDs by [@​bwees](https://github.com/bwees) in [#​26445](immich-app/immich#26445) - fix(server): accept showAt and hideAt for creating memories by [@​meesfrensel](https://github.com/meesfrensel) in [#​26429](immich-app/immich#26429) - feat(server): SyncAssetEditV1 by [@​bwees](https://github.com/bwees) in [#​26446](immich-app/immich#26446) - feat: splash screen error page by [@​shenlong-tanwen](https://github.com/shenlong-tanwen) in [#​26460](immich-app/immich#26460) - feat(mobile): add confirmation dialog to permanent delete action by [@​ByteSizedMarius](https://github.com/ByteSizedMarius) in [#​26442](immich-app/immich#26442) - feat: enhance face-editor positioning by [@​midzelis](https://github.com/midzelis) in [#​26303](immich-app/immich#26303) - feat: improve HEIC, HEIF and JPEG XL browser support detection by [@​nicosemp](https://github.com/nicosemp) in [#​26122](immich-app/immich#26122) - refactor(web): remove replaceAsset action by [@​timonrieger](https://github.com/timonrieger) in [#​26444](immich-app/immich#26444) - feat(web): bounding box for faces when hovering over the face in photo view by [@​cratoo](https://github.com/cratoo) in [#​26667](immich-app/immich#26667) - feat(mobile): keep search results visible by [@​uhthomas](https://github.com/uhthomas) in [#​26498](immich-app/immich#26498) - feat(mobile): use shared native client by [@​mertalev](https://github.com/mertalev) in [#​25942](immich-app/immich#25942) - feat(mobile): SyncAssetEditV1 by [@​bwees](https://github.com/bwees) in [#​26518](immich-app/immich#26518) - feat(ml): enable openvino for cpu by [@​apejcic](https://github.com/apejcic) in [#​22948](immich-app/immich#22948) - feat: responsive video duration in thumbnail by [@​midzelis](https://github.com/midzelis) in [#​26770](immich-app/immich#26770) - feat(web): animate zoom toggle with cubicOut easing by [@​midzelis](https://github.com/midzelis) in [#​26731](immich-app/immich#26731) - feat(mobile): consolidate video controls by [@​uhthomas](https://github.com/uhthomas) in [#​26673](immich-app/immich#26673) - feat(web): add shortcut "p" to open/close the face tag box by [@​cratoo](https://github.com/cratoo) in [#​26826](immich-app/immich#26826) - feat(mobile): use material design 3 slider by [@​uhthomas](https://github.com/uhthomas) in [#​26829](immich-app/immich#26829) - feat: adaptive progressive image loading for photo viewer by [@​midzelis](https://github.com/midzelis) in [#​26636](immich-app/immich#26636) - fix(server): extract make/model from sony video files by [@​brendanngo](https://github.com/brendanngo) in [#​26833](immich-app/immich#26833) - chore(mobile): remove background from asset viewer back button by [@​uhthomas](https://github.com/uhthomas) in [#​26851](immich-app/immich#26851) - feat(server): support IDPs that only send the userinfo in the ID token by [@​Belnadifia](https://github.com/Belnadifia) in [#​26717](immich-app/immich#26717) - feat(web): improve OCR overlay text fitting, reactivity, and accessibility by [@​midzelis](https://github.com/midzelis) in [#​26678](immich-app/immich#26678) - fix(web): allow pasting PIN code from clipboard or password manager by [@​pressslav](https://github.com/pressslav) in [#​26944](immich-app/immich#26944) ##### 🐛 Bug fixes - fix: ignore checksum constraint error when logging by [@​jrasm91](https://github.com/jrasm91) in [#​26113](immich-app/immich#26113) - fix(web): use locale for date picker by [@​michelheusschen](https://github.com/michelheusschen) in [#​26125](immich-app/immich#26125) - fix(web): escape shortcut handling by [@​michelheusschen](https://github.com/michelheusschen) in [#​26096](immich-app/immich#26096) - fix(mobile): Login routing on Splash screen by [@​PeterOmbodi](https://github.com/PeterOmbodi) in [#​26128](immich-app/immich#26128) - fix: null local date time in timeline queries by [@​shenlong-tanwen](https://github.com/shenlong-tanwen) in [#​26133](immich-app/immich#26133) - fix(web): prevent event manager from throwing error by [@​michelheusschen](https://github.com/michelheusschen) in [#​26156](immich-app/immich#26156) - fix(web): improve api key modal responsiveness by [@​klenner1](https://github.com/klenner1) in [#​26151](immich-app/immich#26151) - fix(web): show correct assets in memory gallery by [@​michelheusschen](https://github.com/michelheusschen) in [#​26157](immich-app/immich#26157) - fix(web): add missing [@​immich/ui](https://github.com/immich/ui) translations by [@​michelheusschen](https://github.com/michelheusschen) in [#​26143](immich-app/immich#26143) - fix(mobile): timeline handling on foldable phones + ensuring that images are not cut off by [@​bkchr](https://github.com/bkchr) in [#​25088](immich-app/immich#25088) - fix(mobile): prevent nav bar label text wrapping by [@​chrislongros](https://github.com/chrislongros) in [#​26011](immich-app/immich#26011) - fix(mobile): hide latest version warnings by [@​uhthomas](https://github.com/uhthomas) in [#​26036](immich-app/immich#26036) - fix(mobile): inconsistent query for people by [@​YarosMallorca](https://github.com/YarosMallorca) in [#​24437](immich-app/immich#24437) - fix(web): timeline multi select group state by [@​michelheusschen](https://github.com/michelheusschen) in [#​26180](immich-app/immich#26180) - fix(web): add checkerboard background for transparent images by [@​agent-steven](https://github.com/agent-steven) in [#​26091](immich-app/immich#26091) - fix(mobile): inherit toolbar opacity by [@​uhthomas](https://github.com/uhthomas) in [#​25694](immich-app/immich#25694) - fix(web): focus tag input when modal opens by [@​michelheusschen](https://github.com/michelheusschen) in [#​26256](immich-app/immich#26256) - fix(web): clear face boxes when switching assets by [@​michelheusschen](https://github.com/michelheusschen) in [#​26249](immich-app/immich#26249) - fix(web): clear unsaved asset description when changing asset by [@​michelheusschen](https://github.com/michelheusschen) in [#​26255](immich-app/immich#26255) - fix(web): clear cache when asset changes by [@​michelheusschen](https://github.com/michelheusschen) in [#​26257](immich-app/immich#26257) - fix: utc time zone upserts by [@​danieldietzler](https://github.com/danieldietzler) in [#​26258](immich-app/immich#26258) - fix: metadata crash by [@​jrasm91](https://github.com/jrasm91) in [#​26327](immich-app/immich#26327) - fix: prevent server crash when extraction of metadata fails if the assets are corrupted by [@​Devansh-Jani](https://github.com/Devansh-Jani) in [#​26042](immich-app/immich#26042) - fix(server): db restore failure when `DB_URL` is set to unix-domain socket connection by [@​fabio-garavini](https://github.com/fabio-garavini) in [#​26252](immich-app/immich#26252) - fix: Download the edited version when downloading multiple photos by [@​MontejoJorge](https://github.com/MontejoJorge) in [#​26259](immich-app/immich#26259) - fix: include `DROP INDEX` in transaction to prevent missing index on rollback by [@​haoxi911](https://github.com/haoxi911) in [#​25399](immich-app/immich#25399) - fix: safari address bar color by [@​jrasm91](https://github.com/jrasm91) in [#​26346](immich-app/immich#26346) - fix(web): prevent panorama image reload during asset updates by [@​michelheusschen](https://github.com/michelheusschen) in [#​26349](immich-app/immich#26349) - fix(web): favoriting assets opened via GalleryViewer by [@​michelheusschen](https://github.com/michelheusschen) in [#​26350](immich-app/immich#26350) - fix(i18n): add translation key for partner's photos by [@​timonrieger](https://github.com/timonrieger) in [#​26348](immich-app/immich#26348) - fix(web): single select scroll behavior by [@​timonrieger](https://github.com/timonrieger) in [#​26358](immich-app/immich#26358) - perf: add indexes to improve People API response times by [@​bxtdvd](https://github.com/bxtdvd) in [#​26337](immich-app/immich#26337) - fix: pin code reset modal by [@​jrasm91](https://github.com/jrasm91) in [#​26370](immich-app/immich#26370) - fix(mobile): Reset "People" search filter chip if no selections are made by [@​benjamonnguyen](https://github.com/benjamonnguyen) in [#​26267](immich-app/immich#26267) - fix(cli): delete sidecar files after upload if requested by [@​timonrieger](https://github.com/timonrieger) in [#​26353](immich-app/immich#26353) - fix(web): album description auto height by [@​michelheusschen](https://github.com/michelheusschen) in [#​26420](immich-app/immich#26420) - fix(web): prevent side panel overlap during transition by [@​michelheusschen](https://github.com/michelheusschen) in [#​26398](immich-app/immich#26398) - fix(web): storage template example by [@​mmomjian](https://github.com/mmomjian) in [#​26424](immich-app/immich#26424) - fix(web): prevent `state_unsafe_mutation` error on people page by [@​michelheusschen](https://github.com/michelheusschen) in [#​26438](immich-app/immich#26438) - fix: missing deletedAt and isVisible columns on mobile by [@​bwees](https://github.com/bwees) in [#​26414](immich-app/immich#26414) - fix(mobile): joinLocal on archived timeline by [@​YarosMallorca](https://github.com/YarosMallorca) in [#​26387](immich-app/immich#26387) - fix: always show library scan button by [@​etnoy](https://github.com/etnoy) in [#​26428](immich-app/immich#26428) - fix: retain asset when either asset is a favorite by [@​shenlong-tanwen](https://github.com/shenlong-tanwen) in [#​26473](immich-app/immich#26473) - fix(web): prevent null folder tree on concurrent load by [@​michelheusschen](https://github.com/michelheusschen) in [#​26489](immich-app/immich#26489) - fix(web): toast warning when trying to upload unsupported file type by [@​meesfrensel](https://github.com/meesfrensel) in [#​26492](immich-app/immich#26492) - fix(mobile): birthday picker shows limited months when no date exists by [@​socksprox](https://github.com/socksprox) in [#​26407](immich-app/immich#26407) - fix: consider DAR when extracting video dimension by [@​alextran1502](https://github.com/alextran1502) in [#​25293](immich-app/immich#25293) - feat(mobile): Prevent premature image cache eviction when higher image loading is enabled by [@​LeLunZ](https://github.com/LeLunZ) in [#​26208](immich-app/immich#26208) - refactor: star rating by [@​meesfrensel](https://github.com/meesfrensel) in [#​26357](immich-app/immich#26357) - fix(mobile): set correct initial system-ui mode in asset viewer by [@​goalie2002](https://github.com/goalie2002) in [#​26500](immich-app/immich#26500) - fix(server): Live Photo migration bug when album is in template by [@​NikhilAlapati](https://github.com/NikhilAlapati) in [#​25329](immich-app/immich#25329) - fix(web): handle delete shortcut on shared link page as remove by [@​meesfrensel](https://github.com/meesfrensel) in [#​26552](immich-app/immich#26552) - fix(mobile): prevent video player from being recreated unnecessarily by [@​uhthomas](https://github.com/uhthomas) in [#​26553](immich-app/immich#26553) - fix(mobile): don't cut off top corners of app bar by [@​uhthomas](https://github.com/uhthomas) in [#​26550](immich-app/immich#26550) - feat: update onnxruntime-openvino to 1.24.1 and intel drivers by [@​savely-krasovsky](https://github.com/savely-krasovsky) in [#​26565](immich-app/immich#26565) - fix: hide download action for local/merged assets by [@​YarosMallorca](https://github.com/YarosMallorca) in [#​26461](immich-app/immich#26461) - fix(web): top bar z index on search page by [@​YarosMallorca](https://github.com/YarosMallorca) in [#​26582](immich-app/immich#26582) - fix(web): show shared link download button when logged in by [@​Snowknight26](https://github.com/Snowknight26) in [#​26629](immich-app/immich#26629) - fix(mobile): asset viewer hero animation by [@​uhthomas](https://github.com/uhthomas) in [#​26545](immich-app/immich#26545) - fix(web): timeline and asset viewer RTL support by [@​meesfrensel](https://github.com/meesfrensel) in [#​26513](immich-app/immich#26513) - fix(server): clean up edited thumbnail when deleting asset by [@​michelheusschen](https://github.com/michelheusschen) in [#​26664](immich-app/immich#26664) - fix: implement existing withStacked on searchAssetBuilder by [@​babbitt](https://github.com/babbitt) in [#​26607](immich-app/immich#26607) - fix(mobile): video state by [@​uhthomas](https://github.com/uhthomas) in [#​26574](immich-app/immich#26574) - fix(maintenance mode): wait for valid server config on restart by [@​insertish](https://github.com/insertish) in [#​26456](immich-app/immich#26456) - fix(web): inconsistent asset nav bar state after visiting shared link by [@​Snowknight26](https://github.com/Snowknight26) in [#​26674](immich-app/immich#26674) - fix(web): download toast showing wrong filename for motion assets by [@​Snowknight26](https://github.com/Snowknight26) in [#​26689](immich-app/immich#26689) - fix(mobile): add safe area for asset details by [@​uhthomas](https://github.com/uhthomas) in [#​26675](immich-app/immich#26675) - fix(web): combobox dropdown positioning in modals by [@​michelheusschen](https://github.com/michelheusschen) in [#​26707](immich-app/immich#26707) - fix(web): video stealing focus when it plays again when looping by [@​Snowknight26](https://github.com/Snowknight26) in [#​26704](immich-app/immich#26704) - fix(ml): batch size setting by [@​mertalev](https://github.com/mertalev) in [#​26524](immich-app/immich#26524) - fix(server): clarify transcoding bitrate policy by [@​meesfrensel](https://github.com/meesfrensel) in [#​26711](immich-app/immich#26711) - fix: playback style migration by [@​alextran1502](https://github.com/alextran1502) in [#​26718](immich-app/immich#26718) - fix(web): asset viewer showing wrong viewer type when hovering on stack thumbnails by [@​Snowknight26](https://github.com/Snowknight26) in [#​26741](immich-app/immich#26741) - fix(server): opus handling as accepted audio codec in transcode policy by [@​skatsubo](https://github.com/skatsubo) in [#​26736](immich-app/immich#26736) - fix(web): refresh recent albums sidebar after album changes by [@​michelheusschen](https://github.com/michelheusschen) in [#​26757](immich-app/immich#26757) - fix(web): show the correct cursor at crop bounds when editing an asset by [@​Snowknight26](https://github.com/Snowknight26) in [#​26748](immich-app/immich#26748) - fix(web): recalculate face bounding boxes by [@​cratoo](https://github.com/cratoo) in [#​26737](immich-app/immich#26737) - fix(web): context menu overflow by [@​SevereCloud](https://github.com/SevereCloud) in [#​26760](immich-app/immich#26760) - fix(web): correct tag rounding in search options by [@​michelheusschen](https://github.com/michelheusschen) in [#​26814](immich-app/immich#26814) - fix(web): prevent unrelated assets from appearing in tag view by [@​michelheusschen](https://github.com/michelheusschen) in [#​26816](immich-app/immich#26816) - fix(mobile): use tabular figures in backup page by [@​uhthomas](https://github.com/uhthomas) in [#​26830](immich-app/immich#26830) - fix(mobile): wrap backup error message text by [@​uhthomas](https://github.com/uhthomas) in [#​26834](immich-app/immich#26834) - fix(server): use correct day ordering in timeline buckets by [@​michelheusschen](https://github.com/michelheusschen) in [#​26821](immich-app/immich#26821) - fix(web): face selection box position resetting on browser resize by [@​Snowknight26](https://github.com/Snowknight26) in [#​26766](immich-app/immich#26766) - fix: use correct original URL for 360 video panorama playback by [@​luis15pt](https://github.com/luis15pt) in [#​26831](immich-app/immich#26831) - fix(web): disable drag and drop for internal items by [@​michelheusschen](https://github.com/michelheusschen) in [#​26897](immich-app/immich#26897) - fix(web): keep header fixed on individual shared links by [@​michelheusschen](https://github.com/michelheusschen) in [#​26892](immich-app/immich#26892) - fix: SMTP over TLS by [@​nathanielhourt](https://github.com/nathanielhourt) in [#​26893](immich-app/immich#26893) - fix(web): copy yearMonth in MonthGroup to avoid shared object reference with asset in [#​26890](immich-app/immich#26890) - fix(mobile): use shared auth for background\_downloader by [@​mertalev](https://github.com/mertalev) in [#​26911](immich-app/immich#26911) - fix(web): prevent search page error on missing album filter by [@​michelheusschen](https://github.com/michelheusschen) in [#​26948](immich-app/immich#26948) - fix(server): sync files to disk by [@​uhthomas](https://github.com/uhthomas) in [#​26881](immich-app/immich#26881) - fix(web): jump to primary stacked asset from memory by [@​michelheusschen](https://github.com/michelheusschen) in [#​26978](immich-app/immich#26978) - fix(mobile): reflect asset deletions instantly by [@​uhthomas](https://github.com/uhthomas) in [#​26835](immich-app/immich#26835) - fix: healthcheck by [@​jrasm91](https://github.com/jrasm91) in [#​26989](immich-app/immich#26989) - fix(web): escape handling for tagging and adding a face in asset viewer by [@​cratoo](https://github.com/cratoo) in [#​26870](immich-app/immich#26870) - fix: filter after searching by asset id by [@​jrasm91](https://github.com/jrasm91) in [#​26994](immich-app/immich#26994) - fix: bounding box return type by [@​jrasm91](https://github.com/jrasm91) in [#​27014](immich-app/immich#27014) - fix: validate accept header before returning html by [@​jrasm91](https://github.com/jrasm91) in [#​27019](immich-app/immich#27019) ##### 📚 Documentation - chore(docs): Update help channel for developers by [@​Mraedis](https://github.com/Mraedis) in [#​26284](immich-app/immich#26284) - feat(docs): Explain configuration file location for Docker Compose by [@​keunes](https://github.com/keunes) in [#​24989](immich-app/immich#24989) - chore(docs): add quick-start guide for DevPod with docker by [@​dhlavaty](https://github.com/dhlavaty) in [#​26213](immich-app/immich#26213) - feat(docs): Adding information about parameter c= by [@​aviv926](https://github.com/aviv926) in [#​26430](https://github.com/immich-app/immich/pull/26430) - feat: doc links by [@​jrasm91](https://github.com/jrasm91) in [#​26519](https://github.com/immich-app/immich/pull/26519) - fix(docs): add ocr to job flow diagram by [@​niij](https://github.com/niij) in [#​26505](https://github.com/immich-app/immich/pull/26505) ##### 🌐 Translations - chore(web): update translations by [@​weblate](https://github.com/weblate) in [#​26118](https://github.com/immich-app/immich/pull/26118) - fix: clarify external domain setting is used for emails too by [@​chrislongros](https://github.com/chrislongros) in [#​26009](https://github.com/immich-app/immich/pull/26009) - chore(web): update translations by [@​weblate](https://github.com/weblate) in [#​26167](https://github.com/immich-app/immich/pull/26167) - fix(web): error page i18n by [@​meesfrensel](https://github.com/meesfrensel) in [#​26517](https://github.com/immich-app/immich/pull/26517) - chore(web): clarify locale settings description by [@​meesfrensel](https://github.com/meesfrensel) in [#​25562](https://github.com/immich-app/immich/pull/25562) - chore(web): update translations by [@​weblate](https://github.com/weblate) in [#​26192](https://github.com/immich-app/immich/pull/26192) #### New Contributors - [@​klenner1](https://github.com/klenner1) made their first contribution in [#​26151](immich-app/immich#26151) - [@​bkchr](https://github.com/bkchr) made their first contribution in [#​25088](immich-app/immich#25088) - [@​chrislongros](https://github.com/chrislongros) made their first contribution in [#​26011](immich-app/immich#26011) - [@​agent-steven](https://github.com/agent-steven) made their first contribution in [#​26091](immich-app/immich#26091) - [@​dhlavaty](https://github.com/dhlavaty) made their first contribution in [#​26238](https://github.com/immich-app/immich/pull/26238) - [@​Nacolis](https://github.com/Nacolis) made their first contribution in [#​26063](immich-app/immich#26063) - [@​ewinnd](https://github.com/ewinnd) made their first contribution in [#​26277](https://github.com/immich-app/immich/pull/26277) - [@​dnozay](https://github.com/dnozay) made their first contribution in [#​26261](immich-app/immich#26261) - [@​keunes](https://github.com/keunes) made their first contribution in [#​24989](immich-app/immich#24989) - [@​Devansh-Jani](https://github.com/Devansh-Jani) made their first contribution in [#​26042](immich-app/immich#26042) - [@​benjamonnguyen](https://github.com/benjamonnguyen) made their first contribution in [#​26196](immich-app/immich#26196) - [@​fabio-garavini](https://github.com/fabio-garavini) made their first contribution in [#​26252](immich-app/immich#26252) - [@​haoxi911](https://github.com/haoxi911) made their first contribution in [#​25399](immich-app/immich#25399) - [@​thezeroalpha](https://github.com/thezeroalpha) made their first contribution in [#​20286](immich-app/immich#20286) - [@​socksprox](https://github.com/socksprox) made their first contribution in [#​26407](immich-app/immich#26407) - [@​kprinssu](https://github.com/kprinssu) made their first contribution in [#​26178](immich-app/immich#26178) - [@​babbitt](https://github.com/babbitt) made their first contribution in [#​26607](immich-app/immich#26607) - [@​niij](https://github.com/niij) made their first contribution in [#​26505](https://github.com/immich-app/immich/pull/26505) - [@​cratoo](https://github.com/cratoo) made their first contribution in [#​26667](immich-app/immich#26667) - [@​M123-dev](https://github.com/M123-dev) made their first contribution in [#​26630](https://github.com/immich-app/immich/pull/26630) - [@​apejcic](https://github.com/apejcic) made their first contribution in [#​22948](immich-app/immich#22948) - [@​SevereCloud](https://github.com/SevereCloud) made their first contribution in [#​26760](immich-app/immich#26760) - [@​brendanngo](https://github.com/brendanngo) made their first contribution in [#​26833](immich-app/immich#26833) - [@​luis15pt](https://github.com/luis15pt) made their first contribution in [#​26831](immich-app/immich#26831) - [@​nathanielhourt](https://github.com/nathanielhourt) made their first contribution in [#​26893](immich-app/immich#26893) - [@​Belnadifia](https://github.com/Belnadifia) made their first contribution in [#​26717](immich-app/immich#26717) - [@​pressslav](https://github.com/pressslav) made their first contribution in [#​26944](immich-app/immich#26944) **Full Changelog**: <immich-app/immich@v2.5.6...v2.6.0> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=--> Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4886 Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net> Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
….6.1 (#4887) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/immich-app/immich-server](https://github.com/immich-app/immich) | minor | `v2.5.6` → `v2.6.1` | --- >⚠️ **Warning** > > Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/2) for more information. --- ### Release Notes <details> <summary>immich-app/immich (ghcr.io/immich-app/immich-server)</summary> ### [`v2.6.1`](https://github.com/immich-app/immich/releases/tag/v2.6.1) [Compare Source](immich-app/immich@v2.6.0...v2.6.1) ### v2.6.1 #### Hot fixes - Fixed a failed migration issue on the mobile app when the URL Switching feature is used #### What's Changed ##### 🐛 Bug fixes - fix(server): fallback to email when name is empty by [@​jrasm91](https://github.com/jrasm91) in [#​27016](immich-app/immich#27016) - fix: ignore errors deleting untitled album by [@​jrasm91](https://github.com/jrasm91) in [#​27020](immich-app/immich#27020) - fix(web): wrap long album title by [@​jrasm91](https://github.com/jrasm91) in [#​27012](immich-app/immich#27012) - fix(web): stop in-progress uploads on logout by [@​jrasm91](https://github.com/jrasm91) in [#​27021](immich-app/immich#27021) - fix: writing empty exif tags by [@​danieldietzler](https://github.com/danieldietzler) in [#​27025](immich-app/immich#27025) - fix(web): disable send button by [@​jrasm91](https://github.com/jrasm91) in [#​27051](immich-app/immich#27051) - fix(mobile): server url migration by [@​mertalev](https://github.com/mertalev) in [#​27050](immich-app/immich#27050) **Full Changelog**: <immich-app/immich@v2.6.0...v2.6.1> ### [`v2.6.0`](https://github.com/immich-app/immich/releases/tag/v2.6.0) [Compare Source](immich-app/immich@v2.5.6...v2.6.0) ### v2.6.0 Welcome to Immich `v2.6.0`, This release is a collection of more than *350 commits over 6 weeks*. I know, it is an eternity between releases compared to our previous era. This version focuses on bug fixes and enhancements across the app to provide a more delightful and smoother experience to you. This release also prepares for the next major release in the coming month, which will remove the old timeline implementation. Let's dive into the highlights of the release: > \[!WARNING] > For those who are still using the old timeline, please switch to the new timeline to avoid interruption, as the old timeline will be removed in the next release. > > ps: The old timeline has an exclamation icon next to the logo. <img width="525" height="120" alt="image" src="https://github.com/user-attachments/assets/ed36ea22-b16e-472f-961c-c19501712ba5" /> ### Highlights - Map side panel (web) - Pick album cover (mobile) - Shared link slugs (mobile) - Shared link presets (web) - Native HTTP clients (mobile) - Video player and asset viewer improvements (mobile) - Improved search results (mobile) - `schema-check`: a new `immich-admin` command - Read profile claims from ID token (OAuth) - Notable fix: cast videos now automatically loop - Notable fix: correctly extract make and model from Sony XAVC video files - Notable fix: escape key handling on web - Notable fix: healthcheck endpoint in maintenance mode - Notable fix: timeline rendering for RTL languages like Arabic and Hebrew - Notable fix: prevent server crash when extracting invalid metadata #### Map side panel (web) The map view on the web now opens a mini-timeline component as a side panel when you click on a cluster of assets. This makes it easier to view the cluster at a glance and enables bulk actions, such as adding to favorites and adding to an album. <img width="800" alt="image" src="https://github.com/user-attachments/assets/6f90b04d-4aa7-4f68-b59c-c2b912e638f7" /> #### Pick album cover (mobile) Users can now pick a new album cover directly from the mobile app. <https://github.com/user-attachments/assets/7f99dc80-21c6-4ce6-9f75-8e6b0163dcaa> #### Shared link slugs (mobile) The mobile app now also supports setting a shared link slug, a feature that's been available on the web for a while. <https://github.com/user-attachments/assets/5420995a-cfd4-471d-a3ac-db4fa45de780> #### Shared link presets (web) The expiration form input on the web was always a bit confusing, but it's been updated to make it easier to see and understand when a shared link will expire. <img width="400" alt="image" src="https://github.com/user-attachments/assets/9d6124a9-eec2-43e8-b228-e1ac6c0415e8" /> #### Native HTTP clients (mobile) The mobile app now uses native HTTP clients across both Android and iOS, with support for mTLS, self-signed certificates, basic auth, and custom headers. These features should now be more reliable and extend to background tasks, video playback, and other parts of the app. This also improves the app's overall network request performance thanks to HTTP/2 and HTTP/3, multiplexing, and caching. #### Video player and asset viewer improvements (mobile) The asset viewer has undergone many improvements under the hood to make it simpler, faster and more reliable. We've also added playback support for GIFs, enabled video zooming, and made many more bug fixes and tweaks. ##### The asset viewer now uses a gradient for actions, and video controls have been restyled <img width="300" alt="image" src="https://github.com/user-attachments/assets/9a4e0892-f178-45fc-812c-10a6cba3f48b" /> ##### Inline asset details This used to be a bottom sheet and had a lot of glue for alignment. The new version is much more responsive and less buggy. ##### Before <https://github.com/user-attachments/assets/43b59b59-7d6a-48d0-94d7-84b8cae1c2a9> ##### After <https://github.com/user-attachments/assets/9217b6f4-1c92-40b0-bd95-a0681307cf38> #### Improved search results (mobile) The search results page now loads more results without rebuilding the entire grid, and should now load much faster. There are also new screens for when there are no search results and when all results have been loaded. <https://github.com/user-attachments/assets/42ce69d4-1618-48ee-9cb9-91ec22e12b27> #### `schema-check`: a new `immich-admin` command A new `immich-admin` command has been added in this release: `schema-check`. The command runs a report on the database to check if any indexes, constraints, tables, or columns are missing. This check also runs automatically on startup. #### Read profile claims from `idToken` (OAuth) Prior to `v2.6.0`, Immich resolved the `email` and other claims from the [userinfo](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo) endpoint. Now, Immich also supports reading those claims directly from the `idToken`. This makes it possible to use providers such as Microsoft ADFS that do not support the userinfo endpoint. *** As always, there are many more QoL improvements, bug fixes, and enhancements in this release. Please find the full release note below #### Support Immich <p align="center"> <img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExbjY2eWc5Y2F0ZW56MmR4aWE0dDhzZXlidXRmYWZyajl1bWZidXZpcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/87CKDqErVfMqY/giphy.gif" width="450" title="SUPPORT THE PROJECT!"> </p> If you find the project helpful, you can support Immich by purchasing a product key at <https://buy.immich.app> or our merchandise at <https://immich.store> *** <!-- Release notes generated using configuration in .github/release.yml at v2.6.0 --> #### What's Changed ##### 🔒 Security - fix(server): restrict individual shared link asset removal to owners by [@​michelheusschen](https://github.com/michelheusschen) in [#​26868](immich-app/immich#26868) - fix: add to shared link by [@​jrasm91](https://github.com/jrasm91) in [#​26886](immich-app/immich#26886) ##### 🚀 Features - feat: shared link login by [@​jrasm91](https://github.com/jrasm91) in [#​25678](immich-app/immich#25678) - feat: schema-check by [@​jrasm91](https://github.com/jrasm91) in [#​25904](immich-app/immich#25904) - feat: add people deeplink by [@​arne182](https://github.com/arne182) in [#​25686](immich-app/immich#25686) - feat(mobile): inline asset details by [@​uhthomas](https://github.com/uhthomas) in [#​25952](immich-app/immich#25952) - feat(mobile): filter by tags by [@​benjamonnguyen](https://github.com/benjamonnguyen) in [#​26196](immich-app/immich#26196) - feat: add .mxf file support by [@​timonrieger](https://github.com/timonrieger) in [#​24644](immich-app/immich#24644) - feat: tap to see next/previous image by [@​thezeroalpha](https://github.com/thezeroalpha) in [#​20286](immich-app/immich#20286) - feat(mobile): Allow users to set album cover from mobile app by [@​timonrieger](https://github.com/timonrieger) in [#​25515](immich-app/immich#25515) - feat(mobile): Allow users to set profile picture from asset viewer by [@​timonrieger](https://github.com/timonrieger) in [#​25517](immich-app/immich#25517) - feat: ROCm 7.2 and MIGraphX support by [@​kprinssu](https://github.com/kprinssu) in [#​26178](immich-app/immich#26178) - feat(web): map timeline sidepanel by [@​michelheusschen](https://github.com/michelheusschen) in [#​26532](immich-app/immich#26532) - feat: add responsive layout to broken asset by [@​midzelis](https://github.com/midzelis) in [#​26384](immich-app/immich#26384) - feat(web): toggle zoom on double-click in photo viewer by [@​midzelis](https://github.com/midzelis) in [#​26732](immich-app/immich#26732) - feat(mobile): show animated images in asset viewer by [@​LeLunZ](https://github.com/LeLunZ) in [#​26614](immich-app/immich#26614) - feat(mobile): open in browser by [@​YarosMallorca](https://github.com/YarosMallorca) in [#​26369](immich-app/immich#26369) ##### 🌟 Enhancements - feat: verify permissions by [@​jrasm91](https://github.com/jrasm91) in [#​25647](immich-app/immich#25647) - feat(web): change link expiration logic & presets by [@​YarosMallorca](https://github.com/YarosMallorca) in [#​26064](immich-app/immich#26064) - feat(mobile): dynamic layout in new timeline by [@​shenlong-tanwen](https://github.com/shenlong-tanwen) in [#​23837](immich-app/immich#23837) - feat(cli): change progress bar to display file size by [@​Nykri](https://github.com/Nykri) in [#​23328](immich-app/immich#23328) - feat(mobile): dynamic multi-line album name by [@​uhthomas](https://github.com/uhthomas) in [#​26040](immich-app/immich#26040) - feat(mobile): hide search by context/OCR if disabled on server ([#​25472](immich-app/immich#25472)) by [@​Nacolis](https://github.com/Nacolis) in [#​26063](immich-app/immich#26063) - fix(release): add docker-compose.rootless.yml to released assets by [@​dnozay](https://github.com/dnozay) in [#​26261](immich-app/immich#26261) - feat(web): show ocr text boxes in panoramas by [@​meesfrensel](https://github.com/meesfrensel) in [#​25727](immich-app/immich#25727) - feat(web): loop chromecast video by [@​etnoy](https://github.com/etnoy) in [#​24410](immich-app/immich#24410) - chore(web): merge "Add to album" and "Add to shared album" actions into a single action by [@​timonrieger](https://github.com/timonrieger) in [#​24669](immich-app/immich#24669) - feat(mobile): timeline - add bottomWidgetBuilder by [@​PeterOmbodi](https://github.com/PeterOmbodi) in [#​25634](immich-app/immich#25634) - feat(mobile): video zooming in asset viewer by [@​goalie2002](https://github.com/goalie2002) in [#​22036](immich-app/immich#22036) - feat(mobile): Add slug support for shared links by [@​Lauritz-Tieste](https://github.com/Lauritz-Tieste) in [#​26441](immich-app/immich#26441) - feat: warn when losing transparency during thumbnail generation by [@​midzelis](https://github.com/midzelis) in [#​26243](immich-app/immich#26243) - perf(mobile): optimized album sorting by [@​YarosMallorca](https://github.com/YarosMallorca) in [#​25179](immich-app/immich#25179) - feat(mobile): prompt when deleting from trash by [@​YarosMallorca](https://github.com/YarosMallorca) in [#​26392](immich-app/immich#26392) - feat: getAssetEdits respond with edit IDs by [@​bwees](https://github.com/bwees) in [#​26445](immich-app/immich#26445) - fix(server): accept showAt and hideAt for creating memories by [@​meesfrensel](https://github.com/meesfrensel) in [#​26429](immich-app/immich#26429) - feat(server): SyncAssetEditV1 by [@​bwees](https://github.com/bwees) in [#​26446](immich-app/immich#26446) - feat: splash screen error page by [@​shenlong-tanwen](https://github.com/shenlong-tanwen) in [#​26460](immich-app/immich#26460) - feat(mobile): add confirmation dialog to permanent delete action by [@​ByteSizedMarius](https://github.com/ByteSizedMarius) in [#​26442](immich-app/immich#26442) - feat: enhance face-editor positioning by [@​midzelis](https://github.com/midzelis) in [#​26303](immich-app/immich#26303) - feat: improve HEIC, HEIF and JPEG XL browser support detection by [@​nicosemp](https://github.com/nicosemp) in [#​26122](immich-app/immich#26122) - refactor(web): remove replaceAsset action by [@​timonrieger](https://github.com/timonrieger) in [#​26444](immich-app/immich#26444) - feat(web): bounding box for faces when hovering over the face in photo view by [@​cratoo](https://github.com/cratoo) in [#​26667](immich-app/immich#26667) - feat(mobile): keep search results visible by [@​uhthomas](https://github.com/uhthomas) in [#​26498](immich-app/immich#26498) - feat(mobile): use shared native client by [@​mertalev](https://github.com/mertalev) in [#​25942](immich-app/immich#25942) - feat(mobile): SyncAssetEditV1 by [@​bwees](https://github.com/bwees) in [#​26518](immich-app/immich#26518) - feat(ml): enable openvino for cpu by [@​apejcic](https://github.com/apejcic) in [#​22948](immich-app/immich#22948) - feat: responsive video duration in thumbnail by [@​midzelis](https://github.com/midzelis) in [#​26770](immich-app/immich#26770) - feat(web): animate zoom toggle with cubicOut easing by [@​midzelis](https://github.com/midzelis) in [#​26731](immich-app/immich#26731) - feat(mobile): consolidate video controls by [@​uhthomas](https://github.com/uhthomas) in [#​26673](immich-app/immich#26673) - feat(web): add shortcut "p" to open/close the face tag box by [@​cratoo](https://github.com/cratoo) in [#​26826](immich-app/immich#26826) - feat(mobile): use material design 3 slider by [@​uhthomas](https://github.com/uhthomas) in [#​26829](immich-app/immich#26829) - feat: adaptive progressive image loading for photo viewer by [@​midzelis](https://github.com/midzelis) in [#​26636](immich-app/immich#26636) - fix(server): extract make/model from sony video files by [@​brendanngo](https://github.com/brendanngo) in [#​26833](immich-app/immich#26833) - chore(mobile): remove background from asset viewer back button by [@​uhthomas](https://github.com/uhthomas) in [#​26851](immich-app/immich#26851) - feat(server): support IDPs that only send the userinfo in the ID token by [@​Belnadifia](https://github.com/Belnadifia) in [#​26717](immich-app/immich#26717) - feat(web): improve OCR overlay text fitting, reactivity, and accessibility by [@​midzelis](https://github.com/midzelis) in [#​26678](immich-app/immich#26678) - fix(web): allow pasting PIN code from clipboard or password manager by [@​pressslav](https://github.com/pressslav) in [#​26944](immich-app/immich#26944) ##### 🐛 Bug fixes - fix: ignore checksum constraint error when logging by [@​jrasm91](https://github.com/jrasm91) in [#​26113](immich-app/immich#26113) - fix(web): use locale for date picker by [@​michelheusschen](https://github.com/michelheusschen) in [#​26125](immich-app/immich#26125) - fix(web): escape shortcut handling by [@​michelheusschen](https://github.com/michelheusschen) in [#​26096](immich-app/immich#26096) - fix(mobile): Login routing on Splash screen by [@​PeterOmbodi](https://github.com/PeterOmbodi) in [#​26128](immich-app/immich#26128) - fix: null local date time in timeline queries by [@​shenlong-tanwen](https://github.com/shenlong-tanwen) in [#​26133](immich-app/immich#26133) - fix(web): prevent event manager from throwing error by [@​michelheusschen](https://github.com/michelheusschen) in [#​26156](immich-app/immich#26156) - fix(web): improve api key modal responsiveness by [@​klenner1](https://github.com/klenner1) in [#​26151](immich-app/immich#26151) - fix(web): show correct assets in memory gallery by [@​michelheusschen](https://github.com/michelheusschen) in [#​26157](immich-app/immich#26157) - fix(web): add missing [@​immich/ui](https://github.com/immich/ui) translations by [@​michelheusschen](https://github.com/michelheusschen) in [#​26143](immich-app/immich#26143) - fix(mobile): timeline handling on foldable phones + ensuring that images are not cut off by [@​bkchr](https://github.com/bkchr) in [#​25088](immich-app/immich#25088) - fix(mobile): prevent nav bar label text wrapping by [@​chrislongros](https://github.com/chrislongros) in [#​26011](immich-app/immich#26011) - fix(mobile): hide latest version warnings by [@​uhthomas](https://github.com/uhthomas) in [#​26036](immich-app/immich#26036) - fix(mobile): inconsistent query for people by [@​YarosMallorca](https://github.com/YarosMallorca) in [#​24437](immich-app/immich#24437) - fix(web): timeline multi select group state by [@​michelheusschen](https://github.com/michelheusschen) in [#​26180](immich-app/immich#26180) - fix(web): add checkerboard background for transparent images by [@​agent-steven](https://github.com/agent-steven) in [#​26091](immich-app/immich#26091) - fix(mobile): inherit toolbar opacity by [@​uhthomas](https://github.com/uhthomas) in [#​25694](immich-app/immich#25694) - fix(web): focus tag input when modal opens by [@​michelheusschen](https://github.com/michelheusschen) in [#​26256](immich-app/immich#26256) - fix(web): clear face boxes when switching assets by [@​michelheusschen](https://github.com/michelheusschen) in [#​26249](immich-app/immich#26249) - fix(web): clear unsaved asset description when changing asset by [@​michelheusschen](https://github.com/michelheusschen) in [#​26255](immich-app/immich#26255) - fix(web): clear cache when asset changes by [@​michelheusschen](https://github.com/michelheusschen) in [#​26257](immich-app/immich#26257) - fix: utc time zone upserts by [@​danieldietzler](https://github.com/danieldietzler) in [#​26258](immich-app/immich#26258) - fix: metadata crash by [@​jrasm91](https://github.com/jrasm91) in [#​26327](immich-app/immich#26327) - fix: prevent server crash when extraction of metadata fails if the assets are corrupted by [@​Devansh-Jani](https://github.com/Devansh-Jani) in [#​26042](immich-app/immich#26042) - fix(server): db restore failure when `DB_URL` is set to unix-domain socket connection by [@​fabio-garavini](https://github.com/fabio-garavini) in [#​26252](immich-app/immich#26252) - fix: Download the edited version when downloading multiple photos by [@​MontejoJorge](https://github.com/MontejoJorge) in [#​26259](immich-app/immich#26259) - fix: include `DROP INDEX` in transaction to prevent missing index on rollback by [@​haoxi911](https://github.com/haoxi911) in [#​25399](immich-app/immich#25399) - fix: safari address bar color by [@​jrasm91](https://github.com/jrasm91) in [#​26346](immich-app/immich#26346) - fix(web): prevent panorama image reload during asset updates by [@​michelheusschen](https://github.com/michelheusschen) in [#​26349](immich-app/immich#26349) - fix(web): favoriting assets opened via GalleryViewer by [@​michelheusschen](https://github.com/michelheusschen) in [#​26350](immich-app/immich#26350) - fix(i18n): add translation key for partner's photos by [@​timonrieger](https://github.com/timonrieger) in [#​26348](immich-app/immich#26348) - fix(web): single select scroll behavior by [@​timonrieger](https://github.com/timonrieger) in [#​26358](immich-app/immich#26358) - perf: add indexes to improve People API response times by [@​bxtdvd](https://github.com/bxtdvd) in [#​26337](immich-app/immich#26337) - fix: pin code reset modal by [@​jrasm91](https://github.com/jrasm91) in [#​26370](immich-app/immich#26370) - fix(mobile): Reset "People" search filter chip if no selections are made by [@​benjamonnguyen](https://github.com/benjamonnguyen) in [#​26267](immich-app/immich#26267) - fix(cli): delete sidecar files after upload if requested by [@​timonrieger](https://github.com/timonrieger) in [#​26353](immich-app/immich#26353) - fix(web): album description auto height by [@​michelheusschen](https://github.com/michelheusschen) in [#​26420](immich-app/immich#26420) - fix(web): prevent side panel overlap during transition by [@​michelheusschen](https://github.com/michelheusschen) in [#​26398](immich-app/immich#26398) - fix(web): storage template example by [@​mmomjian](https://github.com/mmomjian) in [#​26424](immich-app/immich#26424) - fix(web): prevent `state_unsafe_mutation` error on people page by [@​michelheusschen](https://github.com/michelheusschen) in [#​26438](immich-app/immich#26438) - fix: missing deletedAt and isVisible columns on mobile by [@​bwees](https://github.com/bwees) in [#​26414](immich-app/immich#26414) - fix(mobile): joinLocal on archived timeline by [@​YarosMallorca](https://github.com/YarosMallorca) in [#​26387](immich-app/immich#26387) - fix: always show library scan button by [@​etnoy](https://github.com/etnoy) in [#​26428](immich-app/immich#26428) - fix: retain asset when either asset is a favorite by [@​shenlong-tanwen](https://github.com/shenlong-tanwen) in [#​26473](immich-app/immich#26473) - fix(web): prevent null folder tree on concurrent load by [@​michelheusschen](https://github.com/michelheusschen) in [#​26489](immich-app/immich#26489) - fix(web): toast warning when trying to upload unsupported file type by [@​meesfrensel](https://github.com/meesfrensel) in [#​26492](immich-app/immich#26492) - fix(mobile): birthday picker shows limited months when no date exists by [@​socksprox](https://github.com/socksprox) in [#​26407](immich-app/immich#26407) - fix: consider DAR when extracting video dimension by [@​alextran1502](https://github.com/alextran1502) in [#​25293](immich-app/immich#25293) - feat(mobile): Prevent premature image cache eviction when higher image loading is enabled by [@​LeLunZ](https://github.com/LeLunZ) in [#​26208](immich-app/immich#26208) - refactor: star rating by [@​meesfrensel](https://github.com/meesfrensel) in [#​26357](immich-app/immich#26357) - fix(mobile): set correct initial system-ui mode in asset viewer by [@​goalie2002](https://github.com/goalie2002) in [#​26500](immich-app/immich#26500) - fix(server): Live Photo migration bug when album is in template by [@​NikhilAlapati](https://github.com/NikhilAlapati) in [#​25329](immich-app/immich#25329) - fix(web): handle delete shortcut on shared link page as remove by [@​meesfrensel](https://github.com/meesfrensel) in [#​26552](immich-app/immich#26552) - fix(mobile): prevent video player from being recreated unnecessarily by [@​uhthomas](https://github.com/uhthomas) in [#​26553](immich-app/immich#26553) - fix(mobile): don't cut off top corners of app bar by [@​uhthomas](https://github.com/uhthomas) in [#​26550](immich-app/immich#26550) - feat: update onnxruntime-openvino to 1.24.1 and intel drivers by [@​savely-krasovsky](https://github.com/savely-krasovsky) in [#​26565](immich-app/immich#26565) - fix: hide download action for local/merged assets by [@​YarosMallorca](https://github.com/YarosMallorca) in [#​26461](immich-app/immich#26461) - fix(web): top bar z index on search page by [@​YarosMallorca](https://github.com/YarosMallorca) in [#​26582](immich-app/immich#26582) - fix(web): show shared link download button when logged in by [@​Snowknight26](https://github.com/Snowknight26) in [#​26629](immich-app/immich#26629) - fix(mobile): asset viewer hero animation by [@​uhthomas](https://github.com/uhthomas) in [#​26545](immich-app/immich#26545) - fix(web): timeline and asset viewer RTL support by [@​meesfrensel](https://github.com/meesfrensel) in [#​26513](immich-app/immich#26513) - fix(server): clean up edited thumbnail when deleting asset by [@​michelheusschen](https://github.com/michelheusschen) in [#​26664](immich-app/immich#26664) - fix: implement existing withStacked on searchAssetBuilder by [@​babbitt](https://github.com/babbitt) in [#​26607](immich-app/immich#26607) - fix(mobile): video state by [@​uhthomas](https://github.com/uhthomas) in [#​26574](immich-app/immich#26574) - fix(maintenance mode): wait for valid server config on restart by [@​insertish](https://github.com/insertish) in [#​26456](immich-app/immich#26456) - fix(web): inconsistent asset nav bar state after visiting shared link by [@​Snowknight26](https://github.com/Snowknight26) in [#​26674](immich-app/immich#26674) - fix(web): download toast showing wrong filename for motion assets by [@​Snowknight26](https://github.com/Snowknight26) in [#​26689](immich-app/immich#26689) - fix(mobile): add safe area for asset details by [@​uhthomas](https://github.com/uhthomas) in [#​26675](immich-app/immich#26675) - fix(web): combobox dropdown positioning in modals by [@​michelheusschen](https://github.com/michelheusschen) in [#​26707](immich-app/immich#26707) - fix(web): video stealing focus when it plays again when looping by [@​Snowknight26](https://github.com/Snowknight26) in [#​26704](immich-app/immich#26704) - fix(ml): batch size setting by [@​mertalev](https://github.com/mertalev) in [#​26524](immich-app/immich#26524) - fix(server): clarify transcoding bitrate policy by [@​meesfrensel](https://github.com/meesfrensel) in [#​26711](immich-app/immich#26711) - fix: playback style migration by [@​alextran1502](https://github.com/alextran1502) in [#​26718](immich-app/immich#26718) - fix(web): asset viewer showing wrong viewer type when hovering on stack thumbnails by [@​Snowknight26](https://github.com/Snowknight26) in [#​26741](immich-app/immich#26741) - fix(server): opus handling as accepted audio codec in transcode policy by [@​skatsubo](https://github.com/skatsubo) in [#​26736](immich-app/immich#26736) - fix(web): refresh recent albums sidebar after album changes by [@​michelheusschen](https://github.com/michelheusschen) in [#​26757](immich-app/immich#26757) - fix(web): show the correct cursor at crop bounds when editing an asset by [@​Snowknight26](https://github.com/Snowknight26) in [#​26748](immich-app/immich#26748) - fix(web): recalculate face bounding boxes by [@​cratoo](https://github.com/cratoo) in [#​26737](immich-app/immich#26737) - fix(web): context menu overflow by [@​SevereCloud](https://github.com/SevereCloud) in [#​26760](immich-app/immich#26760) - fix(web): correct tag rounding in search options by [@​michelheusschen](https://github.com/michelheusschen) in [#​26814](immich-app/immich#26814) - fix(web): prevent unrelated assets from appearing in tag view by [@​michelheusschen](https://github.com/michelheusschen) in [#​26816](immich-app/immich#26816) - fix(mobile): use tabular figures in backup page by [@​uhthomas](https://github.com/uhthomas) in [#​26830](immich-app/immich#26830) - fix(mobile): wrap backup error message text by [@​uhthomas](https://github.com/uhthomas) in [#​26834](immich-app/immich#26834) - fix(server): use correct day ordering in timeline buckets by [@​michelheusschen](https://github.com/michelheusschen) in [#​26821](immich-app/immich#26821) - fix(web): face selection box position resetting on browser resize by [@​Snowknight26](https://github.com/Snowknight26) in [#​26766](immich-app/immich#26766) - fix: use correct original URL for 360 video panorama playback by [@​luis15pt](https://github.com/luis15pt) in [#​26831](immich-app/immich#26831) - fix(web): disable drag and drop for internal items by [@​michelheusschen](https://github.com/michelheusschen) in [#​26897](immich-app/immich#26897) - fix(web): keep header fixed on individual shared links by [@​michelheusschen](https://github.com/michelheusschen) in [#​26892](immich-app/immich#26892) - fix: SMTP over TLS by [@​nathanielhourt](https://github.com/nathanielhourt) in [#​26893](immich-app/immich#26893) - fix(web): copy yearMonth in MonthGroup to avoid shared object reference with asset in [#​26890](immich-app/immich#26890) - fix(mobile): use shared auth for background\_downloader by [@​mertalev](https://github.com/mertalev) in [#​26911](immich-app/immich#26911) - fix(web): prevent search page error on missing album filter by [@​michelheusschen](https://github.com/michelheusschen) in [#​26948](immich-app/immich#26948) - fix(server): sync files to disk by [@​uhthomas](https://github.com/uhthomas) in [#​26881](immich-app/immich#26881) - fix(web): jump to primary stacked asset from memory by [@​michelheusschen](https://github.com/michelheusschen) in [#​26978](immich-app/immich#26978) - fix(mobile): reflect asset deletions instantly by [@​uhthomas](https://github.com/uhthomas) in [#​26835](immich-app/immich#26835) - fix: healthcheck by [@​jrasm91](https://github.com/jrasm91) in [#​26989](immich-app/immich#26989) - fix(web): escape handling for tagging and adding a face in asset viewer by [@​cratoo](https://github.com/cratoo) in [#​26870](immich-app/immich#26870) - fix: filter after searching by asset id by [@​jrasm91](https://github.com/jrasm91) in [#​26994](immich-app/immich#26994) - fix: bounding box return type by [@​jrasm91](https://github.com/jrasm91) in [#​27014](immich-app/immich#27014) - fix: validate accept header before returning html by [@​jrasm91](https://github.com/jrasm91) in [#​27019](immich-app/immich#27019) ##### 📚 Documentation - chore(docs): Update help channel for developers by [@​Mraedis](https://github.com/Mraedis) in [#​26284](immich-app/immich#26284) - feat(docs): Explain configuration file location for Docker Compose by [@​keunes](https://github.com/keunes) in [#​24989](immich-app/immich#24989) - chore(docs): add quick-start guide for DevPod with docker by [@​dhlavaty](https://github.com/dhlavaty) in [#​26213](immich-app/immich#26213) - feat(docs): Adding information about parameter c= by [@​aviv926](https://github.com/aviv926) in [#​26430](https://github.com/immich-app/immich/pull/26430) - feat: doc links by [@​jrasm91](https://github.com/jrasm91) in [#​26519](https://github.com/immich-app/immich/pull/26519) - fix(docs): add ocr to job flow diagram by [@​niij](https://github.com/niij) in [#​26505](https://github.com/immich-app/immich/pull/26505) ##### 🌐 Translations - chore(web): update translations by [@​weblate](https://github.com/weblate) in [#​26118](https://github.com/immich-app/immich/pull/26118) - fix: clarify external domain setting is used for emails too by [@​chrislongros](https://github.com/chrislongros) in [#​26009](https://github.com/immich-app/immich/pull/26009) - chore(web): update translations by [@​weblate](https://github.com/weblate) in [#​26167](https://github.com/immich-app/immich/pull/26167) - fix(web): error page i18n by [@​meesfrensel](https://github.com/meesfrensel) in [#​26517](https://github.com/immich-app/immich/pull/26517) - chore(web): clarify locale settings description by [@​meesfrensel](https://github.com/meesfrensel) in [#​25562](https://github.com/immich-app/immich/pull/25562) - chore(web): update translations by [@​weblate](https://github.com/weblate) in [#​26192](https://github.com/immich-app/immich/pull/26192) #### New Contributors - [@​klenner1](https://github.com/klenner1) made their first contribution in [#​26151](immich-app/immich#26151) - [@​bkchr](https://github.com/bkchr) made their first contribution in [#​25088](immich-app/immich#25088) - [@​chrislongros](https://github.com/chrislongros) made their first contribution in [#​26011](immich-app/immich#26011) - [@​agent-steven](https://github.com/agent-steven) made their first contribution in [#​26091](immich-app/immich#26091) - [@​dhlavaty](https://github.com/dhlavaty) made their first contribution in [#​26238](https://github.com/immich-app/immich/pull/26238) - [@​Nacolis](https://github.com/Nacolis) made their first contribution in [#​26063](immich-app/immich#26063) - [@​ewinnd](https://github.com/ewinnd) made their first contribution in [#​26277](https://github.com/immich-app/immich/pull/26277) - [@​dnozay](https://github.com/dnozay) made their first contribution in [#​26261](immich-app/immich#26261) - [@​keunes](https://github.com/keunes) made their first contribution in [#​24989](immich-app/immich#24989) - [@​Devansh-Jani](https://github.com/Devansh-Jani) made their first contribution in [#​26042](immich-app/immich#26042) - [@​benjamonnguyen](https://github.com/benjamonnguyen) made their first contribution in [#​26196](immich-app/immich#26196) - [@​fabio-garavini](https://github.com/fabio-garavini) made their first contribution in [#​26252](immich-app/immich#26252) - [@​haoxi911](https://github.com/haoxi911) made their first contribution in [#​25399](immich-app/immich#25399) - [@​thezeroalpha](https://github.com/thezeroalpha) made their first contribution in [#​20286](immich-app/immich#20286) - [@​socksprox](https://github.com/socksprox) made their first contribution in [#​26407](immich-app/immich#26407) - [@​kprinssu](https://github.com/kprinssu) made their first contribution in [#​26178](immich-app/immich#26178) - [@​babbitt](https://github.com/babbitt) made their first contribution in [#​26607](immich-app/immich#26607) - [@​niij](https://github.com/niij) made their first contribution in [#​26505](https://github.com/immich-app/immich/pull/26505) - [@​cratoo](https://github.com/cratoo) made their first contribution in [#​26667](immich-app/immich#26667) - [@​M123-dev](https://github.com/M123-dev) made their first contribution in [#​26630](https://github.com/immich-app/immich/pull/26630) - [@​apejcic](https://github.com/apejcic) made their first contribution in [#​22948](immich-app/immich#22948) - [@​SevereCloud](https://github.com/SevereCloud) made their first contribution in [#​26760](immich-app/immich#26760) - [@​brendanngo](https://github.com/brendanngo) made their first contribution in [#​26833](immich-app/immich#26833) - [@​luis15pt](https://github.com/luis15pt) made their first contribution in [#​26831](immich-app/immich#26831) - [@​nathanielhourt](https://github.com/nathanielhourt) made their first contribution in [#​26893](immich-app/immich#26893) - [@​Belnadifia](https://github.com/Belnadifia) made their first contribution in [#​26717](immich-app/immich#26717) - [@​pressslav](https://github.com/pressslav) made their first contribution in [#​26944](immich-app/immich#26944) **Full Changelog**: <immich-app/immich@v2.5.6...v2.6.0> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=--> Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4887 Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net> Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
##### [\`v2.6.1\`](https://github.com/immich-app/immich/releases/tag/v2.6.1) ##### v2.6.1 ##### Hot fixes - Fixed a failed migration issue on the mobile app when the URL Switching feature is used ##### What's Changed ##### 🐛 Bug fixes - fix(server): fallback to email when name is empty by [@jrasm91](https://github.com/jrasm91) in [#27016](immich-app/immich#27016) - fix: ignore errors deleting untitled album by [@jrasm91](https://github.com/jrasm91) in [#27020](immich-app/immich#27020) - fix(web): wrap long album title by [@jrasm91](https://github.com/jrasm91) in [#27012](immich-app/immich#27012) - fix(web): stop in-progress uploads on logout by [@jrasm91](https://github.com/jrasm91) in [#27021](immich-app/immich#27021) - fix: writing empty exif tags by [@danieldietzler](https://github.com/danieldietzler) in [#27025](immich-app/immich#27025) - fix(web): disable send button by [@jrasm91](https://github.com/jrasm91) in [#27051](immich-app/immich#27051) - fix(mobile): server url migration by [@mertalev](https://github.com/mertalev) in [#27050](immich-app/immich#27050) **Full Changelog**: <immich-app/immich@v2.6.0...v2.6.1> --- ##### [\`v2.6.0\`](https://github.com/immich-app/immich/releases/tag/v2.6.0) ##### v2.6.0 Welcome to Immich `v2.6.0`, This release is a collection of more than *350 commits over 6 weeks*. I know, it is an eternity between releases compared to our previous era. This version focuses on bug fixes and enhancements across the app to provide a more delightful and smoother experience to you. This release also prepares for the next major release in the coming month, which will remove the old timeline implementation. Let's dive into the highlights of the release: > \[!WARNING] > For those who are still using the old timeline, please switch to the new timeline to avoid interruption, as the old timeline will be removed in the next release. > > ps: The old timeline has an exclamation icon next to the logo. <img width="525" height="120" alt="image" src="https://github.com/user-attachments/assets/ed36ea22-b16e-472f-961c-c19501712ba5" /> ##### Highlights - Map side panel (web) - Pick album cover (mobile) - Shared link slugs (mobile) - Shared link presets (web) - Native HTTP clients (mobile) - Video player and asset viewer improvements (mobile) - Improved search results (mobile) - `schema-check`: a new `immich-admin` command - Read profile claims from ID token (OAuth) - Notable fix: cast videos now automatically loop - Notable fix: correctly extract make and model from Sony XAVC video files - Notable fix: escape key handling on web - Notable fix: healthcheck endpoint in maintenance mode - Notable fix: timeline rendering for RTL languages like Arabic and Hebrew - Notable fix: prevent server crash when extracting invalid metadata ##### Map side panel (web) The map view on the web now opens a mini-timeline component as a side panel when you click on a cluster of assets. This makes it easier to view the cluster at a glance and enables bulk actions, such as adding to favorites and adding to an album. <img width="800" alt="image" src="https://github.com/user-attachments/assets/6f90b04d-4aa7-4f68-b59c-c2b912e638f7" /> ##### Pick album cover (mobile) Users can now pick a new album cover directly from the mobile app. <https://github.com/user-attachments/assets/7f99dc80-21c6-4ce6-9f75-8e6b0163dcaa> ##### Shared link slugs (mobile) The mobile app now also supports setting a shared link slug, a feature that's been available on the web for a while. <https://github.com/user-attachments/assets/5420995a-cfd4-471d-a3ac-db4fa45de780> ##### Shared link presets (web) The expiration form input on the web was always a bit confusing, but it's been updated to make it easier to see and understand when a shared link will expire. <img width="400" alt="image" src="https://github.com/user-attachments/assets/9d6124a9-eec2-43e8-b228-e1ac6c0415e8" /> ##### Native HTTP clients (mobile) The mobile app now uses native HTTP clients across both Android and iOS, with support for mTLS, self-signed certificates, basic auth, and custom headers. These features should now be more reliable and extend to background tasks, video playback, and other parts of the app. This also improves the app's overall network request performance thanks to HTTP/2 and HTTP/3, multiplexing, and caching. ##### Video player and asset viewer improvements (mobile) The asset viewer has undergone many improvements under the hood to make it simpler, faster and more reliable. We've also added playback support for GIFs, enabled video zooming, and made many more bug fixes and tweaks. ##### The asset viewer now uses a gradient for actions, and video controls have been restyled <img width="300" alt="image" src="https://github.com/user-attachments/assets/9a4e0892-f178-45fc-812c-10a6cba3f48b" /> ##### Inline asset details This used to be a bottom sheet and had a lot of glue for alignment. The new version is much more responsive and less buggy. ##### Before <https://github.com/user-attachments/assets/43b59b59-7d6a-48d0-94d7-84b8cae1c2a9> ##### After <https://github.com/user-attachments/assets/9217b6f4-1c92-40b0-bd95-a0681307cf38> ##### Improved search results (mobile) The search results page now loads more results without rebuilding the entire grid, and should now load much faster. There are also new screens for when there are no search results and when all results have been loaded. <https://github.com/user-attachments/assets/42ce69d4-1618-48ee-9cb9-91ec22e12b27> ##### `schema-check`: a new `immich-admin` command A new `immich-admin` command has been added in this release: `schema-check`. The command runs a report on the database to check if any indexes, constraints, tables, or columns are missing. This check also runs automatically on startup. ##### Read profile claims from `idToken` (OAuth) Prior to `v2.6.0`, Immich resolved the `email` and other claims from the [userinfo](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo) endpoint. Now, Immich also supports reading those claims directly from the `idToken`. This makes it possible to use providers such as Microsoft ADFS that do not support the userinfo endpoint. *** As always, there are many more QoL improvements, bug fixes, and enhancements in this release. Please find the full release note below ##### Support Immich <p align="center"> <img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExbjY2eWc5Y2F0ZW56MmR4aWE0dDhzZXlidXRmYWZyajl1bWZidXZpcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/87CKDqErVfMqY/giphy.gif" width="450" title="SUPPORT THE PROJECT!"> </p> If you find the project helpful, you can support Immich by purchasing a product key at <https://buy.immich.app> or our merchandise at <https://immich.store> *** <!-- Release notes generated using configuration in .github/release.yml at v2.6.0 --> ##### What's Changed ##### 🔒 Security - fix(server): restrict individual shared link asset removal to owners by [@michelheusschen](https://github.com/michelheusschen) in [#26868](immich-app/immich#26868) - fix: add to shared link by [@jrasm91](https://github.com/jrasm91) in [#26886](immich-app/immich#26886) ##### 🚀 Features - feat: shared link login by [@jrasm91](https://github.com/jrasm91) in [#25678](immich-app/immich#25678) - feat: schema-check by [@jrasm91](https://github.com/jrasm91) in [#25904](immich-app/immich#25904) - feat: add people deeplink by [@arne182](https://github.com/arne182) in [#25686](immich-app/immich#25686) - feat(mobile): inline asset details by [@uhthomas](https://github.com/uhthomas) in [#25952](immich-app/immich#25952) - feat(mobile): filter by tags by [@benjamonnguyen](https://github.com/benjamonnguyen) in [#26196](immich-app/immich#26196) - feat: add .mxf file support by [@timonrieger](https://github.com/timonrieger) in [#24644](immich-app/immich#24644) - feat: tap to see next/previous image by [@thezeroalpha](https://github.com/thezeroalpha) in [#20286](immich-app/immich#20286) - feat(mobile): Allow users to set album cover from mobile app by [@timonrieger](https://github.com/timonrieger) in [#25515](immich-app/immich#25515) - feat(mobile): Allow users to set profile picture from asset viewer by [@timonrieger](https://github.com/timonrieger) in [#25517](immich-app/immich#25517) - feat: ROCm 7.2 and MIGraphX support by [@kprinssu](https://github.com/kprinssu) in [#26178](immich-app/immich#26178) - feat(web): map timeline sidepanel by [@michelheusschen](https://github.com/michelheusschen) in [#26532](immich-app/immich#26532) - feat: add responsive layout to broken asset by [@midzelis](https://github.com/midzelis) in [#26384](immich-app/immich#26384) - feat(web): toggle zoom on double-click in photo viewer by [@midzelis](https://github.com/midzelis) in [#26732](immich-app/immich#26732) - feat(mobile): show animated images in asset viewer by [@LeLunZ](https://github.com/LeLunZ) in [#26614](immich-app/immich#26614) - feat(mobile): open in browser by [@YarosMallorca](https://github.com/YarosMallorca) in [#26369](immich-app/immich#26369) ##### 🌟 Enhancements - feat: verify permissions by [@jrasm91](https://github.com/jrasm91) in [#25647](immich-app/immich#25647) - feat(web): change link expiration logic & presets by [@YarosMallorca](https://github.com/YarosMallorca) in [#26064](immich-app/immich#26064) - feat(mobile): dynamic layout in new timeline by [@shenlong-tanwen](https://github.com/shenlong-tanwen) in [#23837](immich-app/immich#23837) - feat(cli): change progress bar to display file size by [@Nykri](https://github.com/Nykri) in [#23328](immich-app/immich#23328) - feat(mobile): dynamic multi-line album name by [@uhthomas](https://github.com/uhthomas) in [#26040](immich-app/immich#26040) - feat(mobile): hide search by context/OCR if disabled on server ([#25472](immich-app/immich#25472)) by [@Nacolis](https://github.com/Nacolis) in [#26063](immich-app/immich#26063) - fix(release): add docker-compose.rootless.yml to released assets by [@dnozay](https://github.com/dnozay) in [#26261](immich-app/immich#26261) - feat(web): show ocr text boxes in panoramas by [@meesfrensel](https://github.com/meesfrensel) in [#25727](immich-app/immich#25727) - feat(web): loop chromecast video by [@etnoy](https://github.com/etnoy) in [#24410](immich-app/immich#24410) - chore(web): merge "Add to album" and "Add to shared album" actions into a single action by [@timonrieger](https://github.com/timonrieger) in [#24669](immich-app/immich#24669) - feat(mobile): timeline - add bottomWidgetBuilder by [@PeterOmbodi](https://github.com/PeterOmbodi) in [#25634](immich-app/immich#25634) - feat(mobile): video zooming in asset viewer by [@goalie2002](https://github.com/goalie2002) in [#22036](immich-app/immich#22036) - feat(mobile): Add slug support for shared links by [@Lauritz-Tieste](https://github.com/Lauritz-Tieste) in [#26441](immich-app/immich#26441) - feat: warn when losing transparency during thumbnail generation by [@midzelis](https://github.com/midzelis) in [#26243](immich-app/immich#26243) - perf(mobile): optimized album sorting by [@YarosMallorca](https://github.com/YarosMallorca) in [#25179](immich-app/immich#25179) - feat(mobile): prompt when deleting from trash by [@YarosMallorca](https://github.com/YarosMallorca) in [#26392](immich-app/immich#26392) - feat: getAssetEdits respond with edit IDs by [@bwees](https://github.com/bwees) in [#26445](immich-app/immich#26445) - fix(server): accept showAt and hideAt for creating memories by [@meesfrensel](https://github.com/meesfrensel) in [#26429](immich-app/immich#26429) - feat(server): SyncAssetEditV1 by [@bwees](https://github.com/bwees) in [#26446](immich-app/immich#26446) - feat: splash screen error page by [@shenlong-tanwen](https://github.com/shenlong-tanwen) in [#26460](immich-app/immich#26460) - feat(mobile): add confirmation dialog to permanent delete action by [@ByteSizedMarius](https://github.com/ByteSizedMarius) in [#26442](immich-app/immich#26442) - feat: enhance face-editor positioning by [@midzelis](https://github.com/midzelis) in [#26303](immich-app/immich#26303) - feat: improve HEIC, HEIF and JPEG XL browser support detection by [@nicosemp](https://github.com/nicosemp) in [#26122](immich-app/immich#26122) - refactor(web): remove replaceAsset action by [@timonrieger](https://github.com/timonrieger) in [#26444](immich-app/immich#26444) - feat(web): bounding box for faces when hovering over the face in photo view by [@cratoo](https://github.com/cratoo) in [#26667](immich-app/immich#26667) - feat(mobile): keep search results visible by [@uhthomas](https://github.com/uhthomas) in [#26498](immich-app/immich#26498) - feat(mobile): use shared native client by [@mertalev](https://github.com/mertalev) in [#25942](immich-app/immich#25942) - feat(mobile): SyncAssetEditV1 by [@bwees](https://github.com/bwees) in [#26518](immich-app/immich#26518) - feat(ml): enable openvino for cpu by [@apejcic](https://github.com/apejcic) in [#22948](immich-app/immich#22948) - feat: responsive video duration in thumbnail by [@midzelis](https://github.com/midzelis) in [#26770](immich-app/immich#26770) - feat(web): animate zoom toggle with cubicOut easing by [@midzelis](https://github.com/midzelis) in [#26731](immich-app/immich#26731) - feat(mobile): consolidate video controls by [@uhthomas](https://github.com/uhthomas) in [#26673](immich-app/immich#26673) - feat(web): add shortcut "p" to open/close the face tag box by [@cratoo](https://github.com/cratoo) in [#26826](immich-app/immich#26826) - feat(mobile): use material design 3 slider by [@uhthomas](https://github.com/uhthomas) in [#26829](immich-app/immich#26829) - feat: adaptive progressive image loading for photo viewer by [@midzelis](https://github.com/midzelis) in [#26636](immich-app/immich#26636) - fix(server): extract make/model from sony video files by [@brendanngo](https://github.com/brendanngo) in [#26833](immich-app/immich#26833) - chore(mobile): remove background from asset viewer back button by [@uhthomas](https://github.com/uhthomas) in [#26851](immich-app/immich#26851) - feat(server): support IDPs that only send the userinfo in the ID token by [@Belnadifia](https://github.com/Belnadifia) in [#26717](immich-app/immich#26717) - feat(web): improve OCR overlay text fitting, reactivity, and accessibility by [@midzelis](https://github.com/midzelis) in [#26678](immich-app/immich#26678) - fix(web): allow pasting PIN code from clipboard or password manager by [@pressslav](https://github.com/pressslav) in [#26944](immich-app/immich#26944) ##### 🐛 Bug fixes - fix: ignore checksum constraint error when logging by [@jrasm91](https://github.com/jrasm91) in [#26113](immich-app/immich#26113) - fix(web): use locale for date picker by [@michelheusschen](https://github.com/michelheusschen) in [#26125](immich-app/immich#26125) - fix(web): escape shortcut handling by [@michelheusschen](https://github.com/michelheusschen) in [#26096](immich-app/immich#26096) - fix(mobile): Login routing on Splash screen by [@PeterOmbodi](https://github.com/PeterOmbodi) in [#26128](immich-app/immich#26128) - fix: null local date time in timeline queries by [@shenlong-tanwen](https://github.com/shenlong-tanwen) in [#26133](immich-app/immich#26133) - fix(web): prevent event manager from throwing error by [@michelheusschen](https://github.com/michelheusschen) in [#26156](immich-app/immich#26156) - fix(web): improve api key modal responsiveness by [@klenner1](https://github.com/klenner1) in [#26151](immich-app/immich#26151) - fix(web): show correct assets in memory gallery by [@michelheusschen](https://github.com/michelheusschen) in [#26157](immich-app/immich#26157) - fix(web): add missing [@immich/ui](https://github.com/immich/ui) translations by [@michelheusschen](https://github.com/michelheusschen) in [#26143](immich-app/immich#26143) - fix(mobile): timeline handling on foldable phones + ensuring that images are not cut off by [@bkchr](https://github.com/bkchr) in [#25088](immich-app/immich#25088) - fix(mobile): prevent nav bar label text wrapping by [@chrislongros](https://github.com/chrislongros) in [#26011](immich-app/immich#26011) - fix(mobile): hide latest version warnings by [@uhthomas](https://github.com/uhthomas) in [#26036](immich-app/immich#26036) - fix(mobile): inconsistent query for people by [@YarosMallorca](https://github.com/YarosMallorca) in [#24437](immich-app/immich#24437) - fix(web): timeline multi select group state by [@michelheusschen](https://github.com/michelheusschen) in [#26180](immich-app/immich#26180) - fix(web): add checkerboard background for transparent images by [@agent-steven](https://github.com/agent-steven) in [#26091](immich-app/immich#26091) - fix(mobile): inherit toolbar opacity by [@uhthomas](https://github.com/uhthomas) in [#25694](immich-app/immich#25694) - fix(web): focus tag input when modal opens by [@michelheusschen](https://github.com/michelheusschen) in [#26256](immich-app/immich#26256) - fix(web): clear face boxes when switching assets by [@michelheusschen](https://github.com/michelheusschen) in [#26249](immich-app/immich#26249) - fix(web): clear unsaved asset description when changing asset by [@michelheusschen](https://github.com/michelheusschen) in [#26255](immich-app/immich#26255) - fix(web): clear cache when asset changes by [@michelheusschen](https://github.com/michelheusschen) in [#26257](immich-app/immich#26257) - fix: utc time zone upserts by [@danieldietzler](https://github.com/danieldietzler) in [#26258](immich-app/immich#26258) - fix: metadata crash by [@jrasm91](https://github.com/jrasm91) in [#26327](immich-app/immich#26327) - fix: prevent server crash when extraction of metadata fails if the assets are corrupted by [@Devansh-Jani](https://github.com/Devansh-Jani) in [#26042](immich-app/immich#26042) - fix(server): db restore failure when `DB_URL` is set to unix-domain socket connection by [@fabio-garavini](https://github.com/fabio-garavini) in [#26252](immich-app/immich#26252) - fix: Download the edited version when downloading multiple photos by [@MontejoJorge](https://github.com/MontejoJorge) in [#26259](immich-app/immich#26259) - fix: include `DROP INDEX` in transaction to prevent missing index on rollback by [@haoxi911](https://github.com/haoxi911) in [#25399](immich-app/immich#25399) - fix: safari address bar color by [@jrasm91](https://github.com/jrasm91) in [#26346](immich-app/immich#26346) - fix(web): prevent panorama image reload during asset updates by [@michelheusschen](https://github.com/michelheusschen) in [#26349](immich-app/immich#26349) - fix(web): favoriting assets opened via GalleryViewer by [@michelheusschen](https://github.com/michelheusschen) in [#26350](immich-app/immich#26350) - fix(i18n): add translation key for partner's photos by [@timonrieger](https://github.com/timonrieger) in [#26348](immich-app/immich#26348) - fix(web): single select scroll behavior by [@timonrieger](https://github.com/timonrieger) in [#26358](immich-app/immich#26358) - perf: add indexes to improve People API response times by [@bxtdvd](https://github.com/bxtdvd) in [#26337](immich-app/immich#26337) - fix: pin code reset modal by [@jrasm91](https://github.com/jrasm91) in [#26370](immich-app/immich#26370) - fix(mobile): Reset "People" search filter chip if no selections are made by [@benjamonnguyen](https://github.com/benjamonnguyen) in [#26267](immich-app/immich#26267) - fix(cli): delete sidecar files after upload if requested by [@timonrieger](https://github.com/timonrieger) in [#26353](immich-app/immich#26353) - fix(web): album description auto height by [@michelheusschen](https://github.com/michelheusschen) in [#26420](immich-app/immich#26420) - fix(web): prevent side panel overlap during transition by [@michelheusschen](https://github.com/michelheusschen) in [#26398](immich-app/immich#26398) - fix(web): storage template example by [@mmomjian](https://github.com/mmomjian) in [#26424](immich-app/immich#26424) - fix(web): prevent `state_unsafe_mutation` error on people page by [@michelheusschen](https://github.com/michelheusschen) in [#26438](immich-app/immich#26438) - fix: missing deletedAt and isVisible columns on mobile by [@bwees](https://github.com/bwees) in [#26414](immich-app/immich#26414) - fix(mobile): joinLocal on archived timeline by [@YarosMallorca](https://github.com/YarosMallorca) in [#26387](immich-app/immich#26387) - fix: always show library scan button by [@etnoy](https://github.com/etnoy) in [#26428](immich-app/immich#26428) - fix: retain asset when either asset is a favorite by [@shenlong-tanwen](https://github.com/shenlong-tanwen) in [#26473](immich-app/immich#26473) - fix(web): prevent null folder tree on concurrent load by [@michelheusschen](https://github.com/michelheusschen) in [#26489](immich-app/immich#26489) - fix(web): toast warning when trying to upload unsupported file type by [@meesfrensel](https://github.com/meesfrensel) in [#26492](immich-app/immich#26492) - fix(mobile): birthday picker shows limited months when no date exists by [@socksprox](https://github.com/socksprox) in [#26407](immich-app/immich#26407) - fix: consider DAR when extracting video dimension by [@alextran1502](https://github.com/alextran1502) in [#25293](immich-app/immich#25293) - feat(mobile): Prevent premature image cache eviction when higher image loading is enabled by [@LeLunZ](https://github.com/LeLunZ) in [#26208](immich-app/immich#26208) - refactor: star rating by [@meesfrensel](https://github.com/meesfrensel) in [#26357](immich-app/immich#26357) - fix(mobile): set correct initial system-ui mode in asset viewer by [@goalie2002](https://github.com/goalie2002) in [#26500](immich-app/immich#26500) - fix(server): Live Photo migration bug when album is in template by [@NikhilAlapati](https://github.com/NikhilAlapati) in [#25329](immich-app/immich#25329) - fix(web): handle delete shortcut on shared link page as remove by [@meesfrensel](https://github.com/meesfrensel) in [#26552](immich-app/immich#26552) - fix(mobile): prevent video player from being recreated unnecessarily by [@uhthomas](https://github.com/uhthomas) in [#26553](immich-app/immich#26553) - fix(mobile): don't cut off top corners of app bar by [@uhthomas](https://github.com/uhthomas) in [#26550](immich-app/immich#26550) - feat: update onnxruntime-openvino to 1.24.1 and intel drivers by [@savely-krasovsky](https://github.com/savely-krasovsky) in [#26565](immich-app/immich#26565) - fix: hide download action for local/merged assets by [@YarosMallorca](https://github.com/YarosMallorca) in [#26461](immich-app/immich#26461) - fix(web): top bar z index on search page by [@YarosMallorca](https://github.com/YarosMallorca) in [#26582](immich-app/immich#26582) - fix(web): show shared link download button when logged in by [@Snowknight26](https://github.com/Snowknight26) in [#26629](immich-app/immich#26629) - fix(mobile): asset viewer hero animation by [@uhthomas](https://github.com/uhthomas) in [#26545](immich-app/immich#26545) - fix(web): timeline and asset viewer RTL support by [@meesfrensel](https://github.com/meesfrensel) in [#26513](immich-app/immich#26513) - fix(server): clean up edited thumbnail when deleting asset by [@michelheusschen](https://github.com/michelheusschen) in [#26664](immich-app/immich#26664) - fix: implement existing withStacked on searchAssetBuilder by [@babbitt](https://github.com/babbitt) in [#26607](immich-app/immich#26607) - fix(mobile): video state by [@uhthomas](https://github.com/uhthomas) in [#26574](immich-app/immich#26574) - fix(maintenance mode): wait for valid server config on restart by [@insertish](https://github.com/insertish) in [#26456](immich-app/immich#26456) - fix(web): inconsistent asset nav bar state after visiting shared link by [@Snowknight26](https://github.com/Snowknight26) in [#26674](immich-app/immich#26674) - fix(web): download toast showing wrong filename for motion assets by [@Snowknight26](https://github.com/Snowknight26) in [#26689](immich-app/immich#26689) - fix(mobile): add safe area for asset details by [@uhthomas](https://github.com/uhthomas) in [#26675](immich-app/immich#26675) - fix(web): combobox dropdown positioning in modals by [@michelheusschen](https://github.com/michelheusschen) in [#26707](immich-app/immich#26707) - fix(web): video stealing focus when it plays again when looping by [@Snowknight26](https://github.com/Snowknight26) in [#26704](immich-app/immich#26704) - fix(ml): batch size setting by [@mertalev](https://github.com/mertalev) in [#26524](immich-app/immich#26524) - fix(server): clarify transcoding bitrate policy by [@meesfrensel](https://github.com/meesfrensel) in [#26711](immich-app/immich#26711) - fix: playback style migration by [@alextran1502](https://github.com/alextran1502) in [#26718](immich-app/immich#26718) - fix(web): asset viewer showing wrong viewer type when hovering on stack thumbnails by [@Snowknight26](https://github.com/Snowknight26) in [#26741](immich-app/immich#26741) - fix(server): opus handling as accepted audio codec in transcode policy by [@skatsubo](https://github.com/skatsubo) in [#26736](immich-app/immich#26736) - fix(web): refresh recent albums sidebar after album changes by [@michelheusschen](https://github.com/michelheusschen) in [#26757](immich-app/immich#26757) - fix(web): show the correct cursor at crop bounds when editing an asset by [@Snowknight26](https://github.com/Snowknight26) in [#26748](immich-app/immich#26748) - fix(web): recalculate face bounding boxes by [@cratoo](https://github.com/cratoo) in [#26737](immich-app/immich#26737) - fix(web): context menu overflow by [@SevereCloud](https://github.com/SevereCloud) in [#26760](immich-app/immich#26760) - fix(web): correct tag rounding in search options by [@michelheusschen](https://github.com/michelheusschen) in [#26814](immich-app/immich#26814) - fix(web): prevent unrelated assets from appearing in tag view by [@michelheusschen](https://github.com/michelheusschen) in [#26816](immich-app/immich#26816) - fix(mobile): use tabular figures in backup page by [@uhthomas](https://github.com/uhthomas) in [#26830](immich-app/immich#26830) - fix(mobile): wrap backup error message text by [@uhthomas](https://github.com/uhthomas) in [#26834](immich-app/immich#26834) - fix(server): use correct day ordering in timeline buckets by [@michelheusschen](https://github.com/michelheusschen) in [#26821](immich-app/immich#26821) - fix(web): face selection box position resetting on browser resize by [@Snowknight26](https://github.com/Snowknight26) in [#26766](immich-app/immich#26766) - fix: use correct original URL for 360 video panorama playback by [@luis15pt](https://github.com/luis15pt) in [#26831](immich-app/immich#26831) - fix(web): disable drag and drop for internal items by [@michelheusschen](https://github.com/michelheusschen) in [#26897](immich-app/immich#26897) - fix(web): keep header fixed on individual shared links by [@michelheusschen](https://github.com/michelheusschen) in [#26892](immich-app/immich#26892) - fix: SMTP over TLS by [@nathanielhourt](https://github.com/nathanielhourt) in [#26893](immich-app/immich#26893) - fix(web): copy yearMonth in MonthGroup to avoid shared object reference with asset in [#26890](immich-app/immich#26890) - fix(mobile): use shared auth for background\_downloader by [@mertalev](https://github.com/mertalev) in [#26911](immich-app/immich#26911) - fix(web): prevent search page error on missing album filter by [@michelheusschen](https://github.com/michelheusschen) in [#26948](immich-app/immich#26948) - fix(server): sync files to disk by [@uhthomas](https://github.com/uhthomas) in [#26881](immich-app/immich#26881) - fix(web): jump to primary stacked asset from memory by [@michelheusschen](https://github.com/michelheusschen) in [#26978](immich-app/immich#26978) - fix(mobile): reflect asset deletions instantly by [@uhthomas](https://github.com/uhthomas) in [#26835](immich-app/immich#26835) - fix: healthcheck by [@jrasm91](https://github.com/jrasm91) in [#26989](immich-app/immich#26989) - fix(web): escape handling for tagging and adding a face in asset viewer by [@cratoo](https://github.com/cratoo) in [#26870](immich-app/immich#26870) - fix: filter after searching by asset id by [@jrasm91](https://github.com/jrasm91) in [#26994](immich-app/immich#26994) - fix: bounding box return type by [@jrasm91](https://github.com/jrasm91) in [#27014](immich-app/immich#27014) - fix: validate accept header before returning html by [@jrasm91](https://github.com/jrasm91) in [#27019](immich-app/immich#27019) ##### 📚 Documentation - chore(docs): Update help channel for developers by [@Mraedis](https://github.com/Mraedis) in [#26284](immich-app/immich#26284) - feat(docs): Explain configuration file location for Docker Compose by [@keunes](https://github.com/keunes) in [#24989](immich-app/immich#24989) - chore(docs): add quick-start guide for DevPod with docker by [@dhlavaty](https://github.com/dhlavaty) in [#26213](immich-app/immich#26213) - feat(docs): Adding information about parameter c= by [@aviv926](https://github.com/aviv926) in [#26430](immich-app/immich#26430) - feat: doc links by [@jrasm91](https://github.com/jrasm91) in [#26519](immich-app/immich#26519) - fix(docs): add ocr to job flow diagram by [@niij](https://github.com/niij) in [#26505](immich-app/immich#26505) ##### 🌐 Translations - chore(web): update translations by [@weblate](https://github.com/weblate) in [#26118](immich-app/immich#26118) - fix: clarify external domain setting is used for emails too by [@chrislongros](https://github.com/chrislongros) in [#26009](immich-app/immich#26009) - chore(web): update translations by [@weblate](https://github.com/weblate) in [#26167](immich-app/immich#26167) - fix(web): error page i18n by [@meesfrensel](https://github.com/meesfrensel) in [#26517](immich-app/immich#26517) - chore(web): clarify locale settings description by [@meesfrensel](https://github.com/meesfrensel) in [#25562](immich-app/immich#25562) - chore(web): update translations by [@weblate](https://github.com/weblate) in [#26192](immich-app/immich#26192) ##### New Contributors - [@klenner1](https://github.com/klenner1) made their first contribution in [#26151](immich-app/immich#26151) - [@bkchr](https://github.com/bkchr) made their first contribution in [#25088](immich-app/immich#25088) - [@chrislongros](https://github.com/chrislongros) made their first contribution in [#26011](immich-app/immich#26011) - [@agent-steven](https://github.com/agent-steven) made their first contribution in [#26091](immich-app/immich#26091) - [@dhlavaty](https://github.com/dhlavaty) made their first contribution in [#26238](immich-app/immich#26238) - [@Nacolis](https://github.com/Nacolis) made their first contribution in [#26063](immich-app/immich#26063) - [@ewinnd](https://github.com/ewinnd) made their first contribution in [#26277](immich-app/immich#26277) - [@dnozay](https://github.com/dnozay) made their first contribution in [#26261](immich-app/immich#26261) - [@keunes](https://github.com/keunes) made their first contribution in [#24989](immich-app/immich#24989) - [@Devansh-Jani](https://github.com/Devansh-Jani) made their first contribution in [#26042](immich-app/immich#26042) - [@benjamonnguyen](https://github.com/benjamonnguyen) made their first contribution in [#26196](immich-app/immich#26196) - [@fabio-garavini](https://github.com/fabio-garavini) made their first contribution in [#26252](immich-app/immich#26252) - [@haoxi911](https://github.com/haoxi911) made their first contribution in [#25399](immich-app/immich#25399) - [@thezeroalpha](https://github.com/thezeroalpha) made their first contribution in [#20286](immich-app/immich#20286) - [@socksprox](https://github.com/socksprox) made their first contribution in [#26407](immich-app/immich#26407) - [@kprinssu](https://github.com/kprinssu) made their first contribution in [#26178](immich-app/immich#26178) - [@babbitt](https://github.com/babbitt) made their first contribution in [#26607](immich-app/immich#26607) - [@niij](https://github.com/niij) made their first contribution in [#26505](immich-app/immich#26505) - [@cratoo](https://github.com/cratoo) made their first contribution in [#26667](immich-app/immich#26667) - [@M123-dev](https://github.com/M123-dev) made their first contribution in [#26630](immich-app/immich#26630) - [@apejcic](https://github.com/apejcic) made their first contribution in [#22948](immich-app/immich#22948) - [@SevereCloud](https://github.com/SevereCloud) made their first contribution in [#26760](immich-app/immich#26760) - [@brendanngo](https://github.com/brendanngo) made their first contribution in [#26833](immich-app/immich#26833) - [@luis15pt](https://github.com/luis15pt) made their first contribution in [#26831](immich-app/immich#26831) - [@nathanielhourt](https://github.com/nathanielhourt) made their first contribution in [#26893](immich-app/immich#26893) - [@Belnadifia](https://github.com/Belnadifia) made their first contribution in [#26717](immich-app/immich#26717) - [@pressslav](https://github.com/pressslav) made their first contribution in [#26944](immich-app/immich#26944) **Full Changelog**: <immich-app/immich@v2.5.6...v2.6.0>
##### [\`v2.6.1\`](https://github.com/immich-app/immich/releases/tag/v2.6.1) ##### v2.6.1 ##### Hot fixes - Fixed a failed migration issue on the mobile app when the URL Switching feature is used ##### What's Changed ##### 🐛 Bug fixes - fix(server): fallback to email when name is empty by [@jrasm91](https://github.com/jrasm91) in [#27016](immich-app/immich#27016) - fix: ignore errors deleting untitled album by [@jrasm91](https://github.com/jrasm91) in [#27020](immich-app/immich#27020) - fix(web): wrap long album title by [@jrasm91](https://github.com/jrasm91) in [#27012](immich-app/immich#27012) - fix(web): stop in-progress uploads on logout by [@jrasm91](https://github.com/jrasm91) in [#27021](immich-app/immich#27021) - fix: writing empty exif tags by [@danieldietzler](https://github.com/danieldietzler) in [#27025](immich-app/immich#27025) - fix(web): disable send button by [@jrasm91](https://github.com/jrasm91) in [#27051](immich-app/immich#27051) - fix(mobile): server url migration by [@mertalev](https://github.com/mertalev) in [#27050](immich-app/immich#27050) **Full Changelog**: <immich-app/immich@v2.6.0...v2.6.1> --- ##### [\`v2.6.0\`](https://github.com/immich-app/immich/releases/tag/v2.6.0) ##### v2.6.0 Welcome to Immich `v2.6.0`, This release is a collection of more than *350 commits over 6 weeks*. I know, it is an eternity between releases compared to our previous era. This version focuses on bug fixes and enhancements across the app to provide a more delightful and smoother experience to you. This release also prepares for the next major release in the coming month, which will remove the old timeline implementation. Let's dive into the highlights of the release: > \[!WARNING] > For those who are still using the old timeline, please switch to the new timeline to avoid interruption, as the old timeline will be removed in the next release. > > ps: The old timeline has an exclamation icon next to the logo. <img width="525" height="120" alt="image" src="https://github.com/user-attachments/assets/ed36ea22-b16e-472f-961c-c19501712ba5" /> ##### Highlights - Map side panel (web) - Pick album cover (mobile) - Shared link slugs (mobile) - Shared link presets (web) - Native HTTP clients (mobile) - Video player and asset viewer improvements (mobile) - Improved search results (mobile) - `schema-check`: a new `immich-admin` command - Read profile claims from ID token (OAuth) - Notable fix: cast videos now automatically loop - Notable fix: correctly extract make and model from Sony XAVC video files - Notable fix: escape key handling on web - Notable fix: healthcheck endpoint in maintenance mode - Notable fix: timeline rendering for RTL languages like Arabic and Hebrew - Notable fix: prevent server crash when extracting invalid metadata ##### Map side panel (web) The map view on the web now opens a mini-timeline component as a side panel when you click on a cluster of assets. This makes it easier to view the cluster at a glance and enables bulk actions, such as adding to favorites and adding to an album. <img width="800" alt="image" src="https://github.com/user-attachments/assets/6f90b04d-4aa7-4f68-b59c-c2b912e638f7" /> ##### Pick album cover (mobile) Users can now pick a new album cover directly from the mobile app. <https://github.com/user-attachments/assets/7f99dc80-21c6-4ce6-9f75-8e6b0163dcaa> ##### Shared link slugs (mobile) The mobile app now also supports setting a shared link slug, a feature that's been available on the web for a while. <https://github.com/user-attachments/assets/5420995a-cfd4-471d-a3ac-db4fa45de780> ##### Shared link presets (web) The expiration form input on the web was always a bit confusing, but it's been updated to make it easier to see and understand when a shared link will expire. <img width="400" alt="image" src="https://github.com/user-attachments/assets/9d6124a9-eec2-43e8-b228-e1ac6c0415e8" /> ##### Native HTTP clients (mobile) The mobile app now uses native HTTP clients across both Android and iOS, with support for mTLS, self-signed certificates, basic auth, and custom headers. These features should now be more reliable and extend to background tasks, video playback, and other parts of the app. This also improves the app's overall network request performance thanks to HTTP/2 and HTTP/3, multiplexing, and caching. ##### Video player and asset viewer improvements (mobile) The asset viewer has undergone many improvements under the hood to make it simpler, faster and more reliable. We've also added playback support for GIFs, enabled video zooming, and made many more bug fixes and tweaks. ##### The asset viewer now uses a gradient for actions, and video controls have been restyled <img width="300" alt="image" src="https://github.com/user-attachments/assets/9a4e0892-f178-45fc-812c-10a6cba3f48b" /> ##### Inline asset details This used to be a bottom sheet and had a lot of glue for alignment. The new version is much more responsive and less buggy. ##### Before <https://github.com/user-attachments/assets/43b59b59-7d6a-48d0-94d7-84b8cae1c2a9> ##### After <https://github.com/user-attachments/assets/9217b6f4-1c92-40b0-bd95-a0681307cf38> ##### Improved search results (mobile) The search results page now loads more results without rebuilding the entire grid, and should now load much faster. There are also new screens for when there are no search results and when all results have been loaded. <https://github.com/user-attachments/assets/42ce69d4-1618-48ee-9cb9-91ec22e12b27> ##### `schema-check`: a new `immich-admin` command A new `immich-admin` command has been added in this release: `schema-check`. The command runs a report on the database to check if any indexes, constraints, tables, or columns are missing. This check also runs automatically on startup. ##### Read profile claims from `idToken` (OAuth) Prior to `v2.6.0`, Immich resolved the `email` and other claims from the [userinfo](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo) endpoint. Now, Immich also supports reading those claims directly from the `idToken`. This makes it possible to use providers such as Microsoft ADFS that do not support the userinfo endpoint. *** As always, there are many more QoL improvements, bug fixes, and enhancements in this release. Please find the full release note below ##### Support Immich <p align="center"> <img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExbjY2eWc5Y2F0ZW56MmR4aWE0dDhzZXlidXRmYWZyajl1bWZidXZpcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/87CKDqErVfMqY/giphy.gif" width="450" title="SUPPORT THE PROJECT!"> </p> If you find the project helpful, you can support Immich by purchasing a product key at <https://buy.immich.app> or our merchandise at <https://immich.store> *** <!-- Release notes generated using configuration in .github/release.yml at v2.6.0 --> ##### What's Changed ##### 🔒 Security - fix(server): restrict individual shared link asset removal to owners by [@michelheusschen](https://github.com/michelheusschen) in [#26868](immich-app/immich#26868) - fix: add to shared link by [@jrasm91](https://github.com/jrasm91) in [#26886](immich-app/immich#26886) ##### 🚀 Features - feat: shared link login by [@jrasm91](https://github.com/jrasm91) in [#25678](immich-app/immich#25678) - feat: schema-check by [@jrasm91](https://github.com/jrasm91) in [#25904](immich-app/immich#25904) - feat: add people deeplink by [@arne182](https://github.com/arne182) in [#25686](immich-app/immich#25686) - feat(mobile): inline asset details by [@uhthomas](https://github.com/uhthomas) in [#25952](immich-app/immich#25952) - feat(mobile): filter by tags by [@benjamonnguyen](https://github.com/benjamonnguyen) in [#26196](immich-app/immich#26196) - feat: add .mxf file support by [@timonrieger](https://github.com/timonrieger) in [#24644](immich-app/immich#24644) - feat: tap to see next/previous image by [@thezeroalpha](https://github.com/thezeroalpha) in [#20286](immich-app/immich#20286) - feat(mobile): Allow users to set album cover from mobile app by [@timonrieger](https://github.com/timonrieger) in [#25515](immich-app/immich#25515) - feat(mobile): Allow users to set profile picture from asset viewer by [@timonrieger](https://github.com/timonrieger) in [#25517](immich-app/immich#25517) - feat: ROCm 7.2 and MIGraphX support by [@kprinssu](https://github.com/kprinssu) in [#26178](immich-app/immich#26178) - feat(web): map timeline sidepanel by [@michelheusschen](https://github.com/michelheusschen) in [#26532](immich-app/immich#26532) - feat: add responsive layout to broken asset by [@midzelis](https://github.com/midzelis) in [#26384](immich-app/immich#26384) - feat(web): toggle zoom on double-click in photo viewer by [@midzelis](https://github.com/midzelis) in [#26732](immich-app/immich#26732) - feat(mobile): show animated images in asset viewer by [@LeLunZ](https://github.com/LeLunZ) in [#26614](immich-app/immich#26614) - feat(mobile): open in browser by [@YarosMallorca](https://github.com/YarosMallorca) in [#26369](immich-app/immich#26369) ##### 🌟 Enhancements - feat: verify permissions by [@jrasm91](https://github.com/jrasm91) in [#25647](immich-app/immich#25647) - feat(web): change link expiration logic & presets by [@YarosMallorca](https://github.com/YarosMallorca) in [#26064](immich-app/immich#26064) - feat(mobile): dynamic layout in new timeline by [@shenlong-tanwen](https://github.com/shenlong-tanwen) in [#23837](immich-app/immich#23837) - feat(cli): change progress bar to display file size by [@Nykri](https://github.com/Nykri) in [#23328](immich-app/immich#23328) - feat(mobile): dynamic multi-line album name by [@uhthomas](https://github.com/uhthomas) in [#26040](immich-app/immich#26040) - feat(mobile): hide search by context/OCR if disabled on server ([#25472](immich-app/immich#25472)) by [@Nacolis](https://github.com/Nacolis) in [#26063](immich-app/immich#26063) - fix(release): add docker-compose.rootless.yml to released assets by [@dnozay](https://github.com/dnozay) in [#26261](immich-app/immich#26261) - feat(web): show ocr text boxes in panoramas by [@meesfrensel](https://github.com/meesfrensel) in [#25727](immich-app/immich#25727) - feat(web): loop chromecast video by [@etnoy](https://github.com/etnoy) in [#24410](immich-app/immich#24410) - chore(web): merge "Add to album" and "Add to shared album" actions into a single action by [@timonrieger](https://github.com/timonrieger) in [#24669](immich-app/immich#24669) - feat(mobile): timeline - add bottomWidgetBuilder by [@PeterOmbodi](https://github.com/PeterOmbodi) in [#25634](immich-app/immich#25634) - feat(mobile): video zooming in asset viewer by [@goalie2002](https://github.com/goalie2002) in [#22036](immich-app/immich#22036) - feat(mobile): Add slug support for shared links by [@Lauritz-Tieste](https://github.com/Lauritz-Tieste) in [#26441](immich-app/immich#26441) - feat: warn when losing transparency during thumbnail generation by [@midzelis](https://github.com/midzelis) in [#26243](immich-app/immich#26243) - perf(mobile): optimized album sorting by [@YarosMallorca](https://github.com/YarosMallorca) in [#25179](immich-app/immich#25179) - feat(mobile): prompt when deleting from trash by [@YarosMallorca](https://github.com/YarosMallorca) in [#26392](immich-app/immich#26392) - feat: getAssetEdits respond with edit IDs by [@bwees](https://github.com/bwees) in [#26445](immich-app/immich#26445) - fix(server): accept showAt and hideAt for creating memories by [@meesfrensel](https://github.com/meesfrensel) in [#26429](immich-app/immich#26429) - feat(server): SyncAssetEditV1 by [@bwees](https://github.com/bwees) in [#26446](immich-app/immich#26446) - feat: splash screen error page by [@shenlong-tanwen](https://github.com/shenlong-tanwen) in [#26460](immich-app/immich#26460) - feat(mobile): add confirmation dialog to permanent delete action by [@ByteSizedMarius](https://github.com/ByteSizedMarius) in [#26442](immich-app/immich#26442) - feat: enhance face-editor positioning by [@midzelis](https://github.com/midzelis) in [#26303](immich-app/immich#26303) - feat: improve HEIC, HEIF and JPEG XL browser support detection by [@nicosemp](https://github.com/nicosemp) in [#26122](immich-app/immich#26122) - refactor(web): remove replaceAsset action by [@timonrieger](https://github.com/timonrieger) in [#26444](immich-app/immich#26444) - feat(web): bounding box for faces when hovering over the face in photo view by [@cratoo](https://github.com/cratoo) in [#26667](immich-app/immich#26667) - feat(mobile): keep search results visible by [@uhthomas](https://github.com/uhthomas) in [#26498](immich-app/immich#26498) - feat(mobile): use shared native client by [@mertalev](https://github.com/mertalev) in [#25942](immich-app/immich#25942) - feat(mobile): SyncAssetEditV1 by [@bwees](https://github.com/bwees) in [#26518](immich-app/immich#26518) - feat(ml): enable openvino for cpu by [@apejcic](https://github.com/apejcic) in [#22948](immich-app/immich#22948) - feat: responsive video duration in thumbnail by [@midzelis](https://github.com/midzelis) in [#26770](immich-app/immich#26770) - feat(web): animate zoom toggle with cubicOut easing by [@midzelis](https://github.com/midzelis) in [#26731](immich-app/immich#26731) - feat(mobile): consolidate video controls by [@uhthomas](https://github.com/uhthomas) in [#26673](immich-app/immich#26673) - feat(web): add shortcut "p" to open/close the face tag box by [@cratoo](https://github.com/cratoo) in [#26826](immich-app/immich#26826) - feat(mobile): use material design 3 slider by [@uhthomas](https://github.com/uhthomas) in [#26829](immich-app/immich#26829) - feat: adaptive progressive image loading for photo viewer by [@midzelis](https://github.com/midzelis) in [#26636](immich-app/immich#26636) - fix(server): extract make/model from sony video files by [@brendanngo](https://github.com/brendanngo) in [#26833](immich-app/immich#26833) - chore(mobile): remove background from asset viewer back button by [@uhthomas](https://github.com/uhthomas) in [#26851](immich-app/immich#26851) - feat(server): support IDPs that only send the userinfo in the ID token by [@Belnadifia](https://github.com/Belnadifia) in [#26717](immich-app/immich#26717) - feat(web): improve OCR overlay text fitting, reactivity, and accessibility by [@midzelis](https://github.com/midzelis) in [#26678](immich-app/immich#26678) - fix(web): allow pasting PIN code from clipboard or password manager by [@pressslav](https://github.com/pressslav) in [#26944](immich-app/immich#26944) ##### 🐛 Bug fixes - fix: ignore checksum constraint error when logging by [@jrasm91](https://github.com/jrasm91) in [#26113](immich-app/immich#26113) - fix(web): use locale for date picker by [@michelheusschen](https://github.com/michelheusschen) in [#26125](immich-app/immich#26125) - fix(web): escape shortcut handling by [@michelheusschen](https://github.com/michelheusschen) in [#26096](immich-app/immich#26096) - fix(mobile): Login routing on Splash screen by [@PeterOmbodi](https://github.com/PeterOmbodi) in [#26128](immich-app/immich#26128) - fix: null local date time in timeline queries by [@shenlong-tanwen](https://github.com/shenlong-tanwen) in [#26133](immich-app/immich#26133) - fix(web): prevent event manager from throwing error by [@michelheusschen](https://github.com/michelheusschen) in [#26156](immich-app/immich#26156) - fix(web): improve api key modal responsiveness by [@klenner1](https://github.com/klenner1) in [#26151](immich-app/immich#26151) - fix(web): show correct assets in memory gallery by [@michelheusschen](https://github.com/michelheusschen) in [#26157](immich-app/immich#26157) - fix(web): add missing [@immich/ui](https://github.com/immich/ui) translations by [@michelheusschen](https://github.com/michelheusschen) in [#26143](immich-app/immich#26143) - fix(mobile): timeline handling on foldable phones + ensuring that images are not cut off by [@bkchr](https://github.com/bkchr) in [#25088](immich-app/immich#25088) - fix(mobile): prevent nav bar label text wrapping by [@chrislongros](https://github.com/chrislongros) in [#26011](immich-app/immich#26011) - fix(mobile): hide latest version warnings by [@uhthomas](https://github.com/uhthomas) in [#26036](immich-app/immich#26036) - fix(mobile): inconsistent query for people by [@YarosMallorca](https://github.com/YarosMallorca) in [#24437](immich-app/immich#24437) - fix(web): timeline multi select group state by [@michelheusschen](https://github.com/michelheusschen) in [#26180](immich-app/immich#26180) - fix(web): add checkerboard background for transparent images by [@agent-steven](https://github.com/agent-steven) in [#26091](immich-app/immich#26091) - fix(mobile): inherit toolbar opacity by [@uhthomas](https://github.com/uhthomas) in [#25694](immich-app/immich#25694) - fix(web): focus tag input when modal opens by [@michelheusschen](https://github.com/michelheusschen) in [#26256](immich-app/immich#26256) - fix(web): clear face boxes when switching assets by [@michelheusschen](https://github.com/michelheusschen) in [#26249](immich-app/immich#26249) - fix(web): clear unsaved asset description when changing asset by [@michelheusschen](https://github.com/michelheusschen) in [#26255](immich-app/immich#26255) - fix(web): clear cache when asset changes by [@michelheusschen](https://github.com/michelheusschen) in [#26257](immich-app/immich#26257) - fix: utc time zone upserts by [@danieldietzler](https://github.com/danieldietzler) in [#26258](immich-app/immich#26258) - fix: metadata crash by [@jrasm91](https://github.com/jrasm91) in [#26327](immich-app/immich#26327) - fix: prevent server crash when extraction of metadata fails if the assets are corrupted by [@Devansh-Jani](https://github.com/Devansh-Jani) in [#26042](immich-app/immich#26042) - fix(server): db restore failure when `DB_URL` is set to unix-domain socket connection by [@fabio-garavini](https://github.com/fabio-garavini) in [#26252](immich-app/immich#26252) - fix: Download the edited version when downloading multiple photos by [@MontejoJorge](https://github.com/MontejoJorge) in [#26259](immich-app/immich#26259) - fix: include `DROP INDEX` in transaction to prevent missing index on rollback by [@haoxi911](https://github.com/haoxi911) in [#25399](immich-app/immich#25399) - fix: safari address bar color by [@jrasm91](https://github.com/jrasm91) in [#26346](immich-app/immich#26346) - fix(web): prevent panorama image reload during asset updates by [@michelheusschen](https://github.com/michelheusschen) in [#26349](immich-app/immich#26349) - fix(web): favoriting assets opened via GalleryViewer by [@michelheusschen](https://github.com/michelheusschen) in [#26350](immich-app/immich#26350) - fix(i18n): add translation key for partner's photos by [@timonrieger](https://github.com/timonrieger) in [#26348](immich-app/immich#26348) - fix(web): single select scroll behavior by [@timonrieger](https://github.com/timonrieger) in [#26358](immich-app/immich#26358) - perf: add indexes to improve People API response times by [@bxtdvd](https://github.com/bxtdvd) in [#26337](immich-app/immich#26337) - fix: pin code reset modal by [@jrasm91](https://github.com/jrasm91) in [#26370](immich-app/immich#26370) - fix(mobile): Reset "People" search filter chip if no selections are made by [@benjamonnguyen](https://github.com/benjamonnguyen) in [#26267](immich-app/immich#26267) - fix(cli): delete sidecar files after upload if requested by [@timonrieger](https://github.com/timonrieger) in [#26353](immich-app/immich#26353) - fix(web): album description auto height by [@michelheusschen](https://github.com/michelheusschen) in [#26420](immich-app/immich#26420) - fix(web): prevent side panel overlap during transition by [@michelheusschen](https://github.com/michelheusschen) in [#26398](immich-app/immich#26398) - fix(web): storage template example by [@mmomjian](https://github.com/mmomjian) in [#26424](immich-app/immich#26424) - fix(web): prevent `state_unsafe_mutation` error on people page by [@michelheusschen](https://github.com/michelheusschen) in [#26438](immich-app/immich#26438) - fix: missing deletedAt and isVisible columns on mobile by [@bwees](https://github.com/bwees) in [#26414](immich-app/immich#26414) - fix(mobile): joinLocal on archived timeline by [@YarosMallorca](https://github.com/YarosMallorca) in [#26387](immich-app/immich#26387) - fix: always show library scan button by [@etnoy](https://github.com/etnoy) in [#26428](immich-app/immich#26428) - fix: retain asset when either asset is a favorite by [@shenlong-tanwen](https://github.com/shenlong-tanwen) in [#26473](immich-app/immich#26473) - fix(web): prevent null folder tree on concurrent load by [@michelheusschen](https://github.com/michelheusschen) in [#26489](immich-app/immich#26489) - fix(web): toast warning when trying to upload unsupported file type by [@meesfrensel](https://github.com/meesfrensel) in [#26492](immich-app/immich#26492) - fix(mobile): birthday picker shows limited months when no date exists by [@socksprox](https://github.com/socksprox) in [#26407](immich-app/immich#26407) - fix: consider DAR when extracting video dimension by [@alextran1502](https://github.com/alextran1502) in [#25293](immich-app/immich#25293) - feat(mobile): Prevent premature image cache eviction when higher image loading is enabled by [@LeLunZ](https://github.com/LeLunZ) in [#26208](immich-app/immich#26208) - refactor: star rating by [@meesfrensel](https://github.com/meesfrensel) in [#26357](immich-app/immich#26357) - fix(mobile): set correct initial system-ui mode in asset viewer by [@goalie2002](https://github.com/goalie2002) in [#26500](immich-app/immich#26500) - fix(server): Live Photo migration bug when album is in template by [@NikhilAlapati](https://github.com/NikhilAlapati) in [#25329](immich-app/immich#25329) - fix(web): handle delete shortcut on shared link page as remove by [@meesfrensel](https://github.com/meesfrensel) in [#26552](immich-app/immich#26552) - fix(mobile): prevent video player from being recreated unnecessarily by [@uhthomas](https://github.com/uhthomas) in [#26553](immich-app/immich#26553) - fix(mobile): don't cut off top corners of app bar by [@uhthomas](https://github.com/uhthomas) in [#26550](immich-app/immich#26550) - feat: update onnxruntime-openvino to 1.24.1 and intel drivers by [@savely-krasovsky](https://github.com/savely-krasovsky) in [#26565](immich-app/immich#26565) - fix: hide download action for local/merged assets by [@YarosMallorca](https://github.com/YarosMallorca) in [#26461](immich-app/immich#26461) - fix(web): top bar z index on search page by [@YarosMallorca](https://github.com/YarosMallorca) in [#26582](immich-app/immich#26582) - fix(web): show shared link download button when logged in by [@Snowknight26](https://github.com/Snowknight26) in [#26629](immich-app/immich#26629) - fix(mobile): asset viewer hero animation by [@uhthomas](https://github.com/uhthomas) in [#26545](immich-app/immich#26545) - fix(web): timeline and asset viewer RTL support by [@meesfrensel](https://github.com/meesfrensel) in [#26513](immich-app/immich#26513) - fix(server): clean up edited thumbnail when deleting asset by [@michelheusschen](https://github.com/michelheusschen) in [#26664](immich-app/immich#26664) - fix: implement existing withStacked on searchAssetBuilder by [@babbitt](https://github.com/babbitt) in [#26607](immich-app/immich#26607) - fix(mobile): video state by [@uhthomas](https://github.com/uhthomas) in [#26574](immich-app/immich#26574) - fix(maintenance mode): wait for valid server config on restart by [@insertish](https://github.com/insertish) in [#26456](immich-app/immich#26456) - fix(web): inconsistent asset nav bar state after visiting shared link by [@Snowknight26](https://github.com/Snowknight26) in [#26674](immich-app/immich#26674) - fix(web): download toast showing wrong filename for motion assets by [@Snowknight26](https://github.com/Snowknight26) in [#26689](immich-app/immich#26689) - fix(mobile): add safe area for asset details by [@uhthomas](https://github.com/uhthomas) in [#26675](immich-app/immich#26675) - fix(web): combobox dropdown positioning in modals by [@michelheusschen](https://github.com/michelheusschen) in [#26707](immich-app/immich#26707) - fix(web): video stealing focus when it plays again when looping by [@Snowknight26](https://github.com/Snowknight26) in [#26704](immich-app/immich#26704) - fix(ml): batch size setting by [@mertalev](https://github.com/mertalev) in [#26524](immich-app/immich#26524) - fix(server): clarify transcoding bitrate policy by [@meesfrensel](https://github.com/meesfrensel) in [#26711](immich-app/immich#26711) - fix: playback style migration by [@alextran1502](https://github.com/alextran1502) in [#26718](immich-app/immich#26718) - fix(web): asset viewer showing wrong viewer type when hovering on stack thumbnails by [@Snowknight26](https://github.com/Snowknight26) in [#26741](immich-app/immich#26741) - fix(server): opus handling as accepted audio codec in transcode policy by [@skatsubo](https://github.com/skatsubo) in [#26736](immich-app/immich#26736) - fix(web): refresh recent albums sidebar after album changes by [@michelheusschen](https://github.com/michelheusschen) in [#26757](immich-app/immich#26757) - fix(web): show the correct cursor at crop bounds when editing an asset by [@Snowknight26](https://github.com/Snowknight26) in [#26748](immich-app/immich#26748) - fix(web): recalculate face bounding boxes by [@cratoo](https://github.com/cratoo) in [#26737](immich-app/immich#26737) - fix(web): context menu overflow by [@SevereCloud](https://github.com/SevereCloud) in [#26760](immich-app/immich#26760) - fix(web): correct tag rounding in search options by [@michelheusschen](https://github.com/michelheusschen) in [#26814](immich-app/immich#26814) - fix(web): prevent unrelated assets from appearing in tag view by [@michelheusschen](https://github.com/michelheusschen) in [#26816](immich-app/immich#26816) - fix(mobile): use tabular figures in backup page by [@uhthomas](https://github.com/uhthomas) in [#26830](immich-app/immich#26830) - fix(mobile): wrap backup error message text by [@uhthomas](https://github.com/uhthomas) in [#26834](immich-app/immich#26834) - fix(server): use correct day ordering in timeline buckets by [@michelheusschen](https://github.com/michelheusschen) in [#26821](immich-app/immich#26821) - fix(web): face selection box position resetting on browser resize by [@Snowknight26](https://github.com/Snowknight26) in [#26766](immich-app/immich#26766) - fix: use correct original URL for 360 video panorama playback by [@luis15pt](https://github.com/luis15pt) in [#26831](immich-app/immich#26831) - fix(web): disable drag and drop for internal items by [@michelheusschen](https://github.com/michelheusschen) in [#26897](immich-app/immich#26897) - fix(web): keep header fixed on individual shared links by [@michelheusschen](https://github.com/michelheusschen) in [#26892](immich-app/immich#26892) - fix: SMTP over TLS by [@nathanielhourt](https://github.com/nathanielhourt) in [#26893](immich-app/immich#26893) - fix(web): copy yearMonth in MonthGroup to avoid shared object reference with asset in [#26890](immich-app/immich#26890) - fix(mobile): use shared auth for background\_downloader by [@mertalev](https://github.com/mertalev) in [#26911](immich-app/immich#26911) - fix(web): prevent search page error on missing album filter by [@michelheusschen](https://github.com/michelheusschen) in [#26948](immich-app/immich#26948) - fix(server): sync files to disk by [@uhthomas](https://github.com/uhthomas) in [#26881](immich-app/immich#26881) - fix(web): jump to primary stacked asset from memory by [@michelheusschen](https://github.com/michelheusschen) in [#26978](immich-app/immich#26978) - fix(mobile): reflect asset deletions instantly by [@uhthomas](https://github.com/uhthomas) in [#26835](immich-app/immich#26835) - fix: healthcheck by [@jrasm91](https://github.com/jrasm91) in [#26989](immich-app/immich#26989) - fix(web): escape handling for tagging and adding a face in asset viewer by [@cratoo](https://github.com/cratoo) in [#26870](immich-app/immich#26870) - fix: filter after searching by asset id by [@jrasm91](https://github.com/jrasm91) in [#26994](immich-app/immich#26994) - fix: bounding box return type by [@jrasm91](https://github.com/jrasm91) in [#27014](immich-app/immich#27014) - fix: validate accept header before returning html by [@jrasm91](https://github.com/jrasm91) in [#27019](immich-app/immich#27019) ##### 📚 Documentation - chore(docs): Update help channel for developers by [@Mraedis](https://github.com/Mraedis) in [#26284](immich-app/immich#26284) - feat(docs): Explain configuration file location for Docker Compose by [@keunes](https://github.com/keunes) in [#24989](immich-app/immich#24989) - chore(docs): add quick-start guide for DevPod with docker by [@dhlavaty](https://github.com/dhlavaty) in [#26213](immich-app/immich#26213) - feat(docs): Adding information about parameter c= by [@aviv926](https://github.com/aviv926) in [#26430](immich-app/immich#26430) - feat: doc links by [@jrasm91](https://github.com/jrasm91) in [#26519](immich-app/immich#26519) - fix(docs): add ocr to job flow diagram by [@niij](https://github.com/niij) in [#26505](immich-app/immich#26505) ##### 🌐 Translations - chore(web): update translations by [@weblate](https://github.com/weblate) in [#26118](immich-app/immich#26118) - fix: clarify external domain setting is used for emails too by [@chrislongros](https://github.com/chrislongros) in [#26009](immich-app/immich#26009) - chore(web): update translations by [@weblate](https://github.com/weblate) in [#26167](immich-app/immich#26167) - fix(web): error page i18n by [@meesfrensel](https://github.com/meesfrensel) in [#26517](immich-app/immich#26517) - chore(web): clarify locale settings description by [@meesfrensel](https://github.com/meesfrensel) in [#25562](immich-app/immich#25562) - chore(web): update translations by [@weblate](https://github.com/weblate) in [#26192](immich-app/immich#26192) ##### New Contributors - [@klenner1](https://github.com/klenner1) made their first contribution in [#26151](immich-app/immich#26151) - [@bkchr](https://github.com/bkchr) made their first contribution in [#25088](immich-app/immich#25088) - [@chrislongros](https://github.com/chrislongros) made their first contribution in [#26011](immich-app/immich#26011) - [@agent-steven](https://github.com/agent-steven) made their first contribution in [#26091](immich-app/immich#26091) - [@dhlavaty](https://github.com/dhlavaty) made their first contribution in [#26238](immich-app/immich#26238) - [@Nacolis](https://github.com/Nacolis) made their first contribution in [#26063](immich-app/immich#26063) - [@ewinnd](https://github.com/ewinnd) made their first contribution in [#26277](immich-app/immich#26277) - [@dnozay](https://github.com/dnozay) made their first contribution in [#26261](immich-app/immich#26261) - [@keunes](https://github.com/keunes) made their first contribution in [#24989](immich-app/immich#24989) - [@Devansh-Jani](https://github.com/Devansh-Jani) made their first contribution in [#26042](immich-app/immich#26042) - [@benjamonnguyen](https://github.com/benjamonnguyen) made their first contribution in [#26196](immich-app/immich#26196) - [@fabio-garavini](https://github.com/fabio-garavini) made their first contribution in [#26252](immich-app/immich#26252) - [@haoxi911](https://github.com/haoxi911) made their first contribution in [#25399](immich-app/immich#25399) - [@thezeroalpha](https://github.com/thezeroalpha) made their first contribution in [#20286](immich-app/immich#20286) - [@socksprox](https://github.com/socksprox) made their first contribution in [#26407](immich-app/immich#26407) - [@kprinssu](https://github.com/kprinssu) made their first contribution in [#26178](immich-app/immich#26178) - [@babbitt](https://github.com/babbitt) made their first contribution in [#26607](immich-app/immich#26607) - [@niij](https://github.com/niij) made their first contribution in [#26505](immich-app/immich#26505) - [@cratoo](https://github.com/cratoo) made their first contribution in [#26667](immich-app/immich#26667) - [@M123-dev](https://github.com/M123-dev) made their first contribution in [#26630](immich-app/immich#26630) - [@apejcic](https://github.com/apejcic) made their first contribution in [#22948](immich-app/immich#22948) - [@SevereCloud](https://github.com/SevereCloud) made their first contribution in [#26760](immich-app/immich#26760) - [@brendanngo](https://github.com/brendanngo) made their first contribution in [#26833](immich-app/immich#26833) - [@luis15pt](https://github.com/luis15pt) made their first contribution in [#26831](immich-app/immich#26831) - [@nathanielhourt](https://github.com/nathanielhourt) made their first contribution in [#26893](immich-app/immich#26893) - [@Belnadifia](https://github.com/Belnadifia) made their first contribution in [#26717](immich-app/immich#26717) - [@pressslav](https://github.com/pressslav) made their first contribution in [#26944](immich-app/immich#26944) **Full Changelog**: <immich-app/immich@v2.5.6...v2.6.0>
When source format has alpha transparency(i.e. WEBP), but target format does not (JPG) - and the image has alpha channel, instead of losing the alpha channel, override the target format to be WEBP.
Only for images with an actual alpha channel.