Skip to content

feat: tap to see next/previous image#20286

Merged
alextran1502 merged 7 commits intoimmich-app:mainfrom
thezeroalpha:mobile/tap-to-next-previous-image
Feb 22, 2026
Merged

feat: tap to see next/previous image#20286
alextran1502 merged 7 commits intoimmich-app:mainfrom
thezeroalpha:mobile/tap-to-next-previous-image

Conversation

@thezeroalpha
Copy link
Contributor

Description

This change enables switching to the next/previous photo in the photo viewer by tapping the left/right quarter of the screen respectively. Videos are not affected.
It's implemented following the feature request in this discussion.
Tapping in the middle area of the screen still shows/hides controls as before.

How Has This Been Tested?

I tested it manually on my phone (Samsung Galaxy S10, beyond1lte) with two Immich servers.

Checklist:

  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation if applicable (no applicable changes)
  • I have no unrelated changes in the PR.
  • I have confirmed that any new dependencies are strictly necessary. (no new dependencies)
  • I have written tests for new code (if applicable) (no applicable automatic tests)
  • I have followed naming conventions/patterns in the surrounding code
  • All code in src/services/ uses repositories implementations for database calls, filesystem operations, etc.
  • All code in src/repositories/ is pretty basic/simple and does not have any immich specific logic (that belongs in src/services/)

@bo0tzz bo0tzz requested a review from shenlong-tanwen July 26, 2025 11:50
@bo0tzz bo0tzz changed the title Feature: tap to see next/previous image feat: tap to see next/previous image Jul 26, 2025
@shenlong-tanwen
Copy link
Member

Thanks a lot for working on this. We are actively migrating away from Isar to Sqlite. asset_viewer.page.dart is the new gallery viewer. Can you make your changes over there as well?

@alextran1502
Copy link
Member

Thank you for the pr. I have a concern about the usability of the PR. The action is quite unexpected from the user pov. Usually in the asset viewer, tapping on the screen is to hide/show the control bars, not for navigation.

I think it will confuse the users, what do you think?

@thezeroalpha
Copy link
Contributor Author

Yes, that's a valid concern which also came up in #8155. I had originally thought to disable this behavior by default, and add a settings toggle to enable it. However, the feedback was that this is unnecessary, also because there are other apps with the same behavior.

I don't have a strong preference; actually, I think when I started using Immich, I expected tapping to work for navigation. But I can implement it either way -- not sure what others think.

@1661410107114145152525
Copy link

Thank you for the pr. I have a concern about the usability of the PR. The action is quite unexpected from the user pov. Usually in the asset viewer, tapping on the screen is to hide/show the control bars, not for navigation.

I think it will confuse the users, what do you think?

As this is meanwhile the default for many popular apps like Google Maps, Instagram Stories or even WhatsApp Stories etc. so intuitivity in General shouldn't be an issue. Tapping at the center should still bring up those bars.

Only thing this limits is the area where double tap to zoom works but I use it since quite a while in F-stop and just double tap more in the center and then move a bit. Depending on the age/tech affinity of most of your users though older people might accidentially skip more often at the beginning.

It further epends on how large the area to skip to the previous or next image is. I used some css overrides to achieve the same for the web app on mobile and it works like a charm. If I hand my smartphone my grandmother she accidentially forwards to another image sometimes but as swiping still works at the same time she was able to recover quickly.

That said I also understand if people want it to be something with a setting to disable it. If this is needed for a v1 (if this switch is a lot of effort, if not maybe someone could pinpoint @thezeroalpha where/how to add it?) or if it could be added quickly in a v2 if issued really arise is something I can't tell/decide.

@alextran1502
Copy link
Member

Yes, that's a valid concern which also came up in #8155. I had originally thought to disable this behavior by default, and add a settings toggle to enable it. However, the feedback was that this is unnecessary, also because there are other apps with the same behavior.

I don't have a strong preference; actually, I think when I started using Immich, I expected tapping to work for navigation. But I can implement it either way -- not sure what others think.

If you don't mind, let's finish the PR, then I will use it in action and gather some feedback

@beposec
Copy link
Contributor

beposec commented Jul 26, 2025

I agree with @alextran1502 here. While tapping to swipe is a common feature in Instagram/WhatsApp Stories, it's quite unexpected for Photos Apps like Apple/Google Photos.

@YarosMallorca
Copy link
Collaborator

YarosMallorca commented Jul 27, 2025

Please disable this by default; this is very unexpected in photo-viewing apps. I usually tap anywhere on the screen to bring up the overlay menus, and switching to another asset like this is kinda weird to me.

This is a great feature for people who want it, but make them enable this feature in settings.

And as @shenlong-tanwen pointed out, please try to implement it in the new gallery viewer.

@thezeroalpha
Copy link
Contributor Author

Thanks for your feedback, the preference is clear. I've added a toggle in the asset viewer settings, and disabled the behavior by default. I've also updated the new gallery viewer. Everything seems to work as expected on my phone. Please let me know if I missed anything, or if I should make further improvements.

@thezeroalpha
Copy link
Contributor Author

Hi, there hasn't been any activity here for a month, so I'd like to ask for a status check. In my opinion the work is complete; the feature is off by default and you can toggle it in the settings.

I understand everyone might be on vacation, busy, etc., and people work on this in their free time. I have no expectations of a schedule -- I'd only like to clarify whether my change will be included in a release as is, whether I still need to improve something, or whether it will not be upstreamed at all and hence I should maintain a fork.

@leleogere
Copy link

leleogere commented Aug 26, 2025

Hi! I'm the original author of #8155. I'm very happy to see someone working on this, and I can't wait to see it integrated into Immich!

I do agree with other points about this not being the default behaviour. While it is true that a lot of social media platforms use left/right taps to navigate through story-like carousels, it is absolutely not intuitive for a gallery to behave like that (the only app I know proposing this feature is F-Stop, and it's not even enabled by default). I'm afraid enabling it by default would cause quite a lot of confusion.

This does not bring much to the discussion, as the current implementation is already disabled by default, but as @alextran1502 wanted to gather some feedback I thought I could still add my view.

EDIT: I have not tested it myself, but I've got a question about videos:

Videos are not affected.

As I understand, taping on the left/rightmost side of a video would not change to previous/next asset, right? (and would only show/hide the video controls) For the original use case I had in mind for this feature, i.e. comparing similar successive images, it does not have any impact. However, @1661410107114145152525 raised another use case in #8155 (comment): being able to quickly fast-forward/backward over assets. For this use case, being stopped at each video and forced to swipe would not be very user-friendly. What are your views on that?

@thezeroalpha
Copy link
Contributor Author

As I understand, taping on the left/rightmost side of a video would not change to previous/next asset, right?

Correct. It only shows/hides controls.

I wanted the feature for the same use case, comparing photos. But I see your point, it could be used to quickly step through assets, and then indeed it would be desirable to also have it work on videos (probably only when not playing), otherwise you'd have to swipe on every video.

I don't have a strong opinion, I won't encounter it often in my workflow. But if there is consensus that it's important enough for this second use case, I can implement it.

@1661410107114145152525
Copy link

Same thoughts as @leleogere , but why don't we do it as F-Stop, so if you press within a small delay you can skip over the video, after the delay it behaves as usual and shows/hides the UI on tap so you need to swipe. :) @thezeroalpha Thank you so much for your effort!

@jrasm91
Copy link
Member

jrasm91 commented Oct 8, 2025

@alextran1502 what's the status of this PR?

@BetaRavener
Copy link

@shenlong-tanwen it seems the PR was updated to work with both asset viewers as requested, along with settings to toggle the behavior. Could this be now merged?

I'm another user that would appreciate such feature, as I find it ergonomically easier to just tap instead of swiping. Another app that supports this is galery view in X-plore file browser. So it's not just IG-style apps.

@bwees
Copy link
Member

bwees commented Feb 2, 2026

If you can rebase this and do a round of testing that would be appreciated. Once that is done I can get another set of eyes on it and determine if this is something we want to merge 😄

@thezeroalpha thezeroalpha force-pushed the mobile/tap-to-next-previous-image branch from 0aa3b5b to a7c9468 Compare February 6, 2026 22:53
This change enables switching to the next/previous photo in the photo
viewer by tapping the left/right quarter of the screen.
Not everyone wants to have tapping for next/previous image enabled, so
this commit adds a settings toggle. Since it might be confusing behavior
for new users, it is disabled by default.
@thezeroalpha thezeroalpha force-pushed the mobile/tap-to-next-previous-image branch from a7c9468 to 9020576 Compare February 6, 2026 22:57
@thezeroalpha
Copy link
Contributor Author

I rebased and re-tested the changes as of #20286 (comment) on my own device, everything still seems to work as expected.

Copy link
Collaborator

@timonrieger timonrieger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tested on iOS, navigation and setting working as expected!

@bwees
Copy link
Member

bwees commented Feb 15, 2026

@alextran1502 will have final say on this so we will wait for an approval from him.

…evious-image

# Conflicts:
#	mobile/lib/presentation/widgets/asset_viewer/asset_viewer.page.dart
@alextran1502 alextran1502 enabled auto-merge (squash) February 22, 2026 05:18
@alextran1502 alextran1502 merged commit 8ba20cb into immich-app:main Feb 22, 2026
48 checks passed
@thezeroalpha
Copy link
Contributor Author

Thank you for adding this!

@thezeroalpha thezeroalpha deleted the mobile/tap-to-next-previous-image branch February 22, 2026 16:01
@1661410107114145152525
Copy link

1661410107114145152525 commented Feb 22, 2026

Thank you for adding this!

Absolutely. And thank you for contributing it @thezeroalpha ! ❤️ Can't wait to try it out! :)

alexlebens pushed a commit to alexlebens/infrastructure that referenced this pull request Mar 20, 2026
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 [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;27016](immich-app/immich#27016)
- fix: ignore errors deleting untitled album by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;27020](immich-app/immich#27020)
- fix(web): wrap long album title by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;27012](immich-app/immich#27012)
- fix(web): stop in-progress uploads on logout by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;27021](immich-app/immich#27021)
- fix: writing empty exif tags by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;27025](immich-app/immich#27025)
- fix(web): disable send button by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;27051](immich-app/immich#27051)
- fix(mobile): server url migration by [@&#8203;mertalev](https://github.com/mertalev) in [#&#8203;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 [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26868](immich-app/immich#26868)
- fix: add to shared link by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;26886](immich-app/immich#26886)

##### 🚀 Features

- feat: shared link login by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;25678](immich-app/immich#25678)
- feat: schema-check by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;25904](immich-app/immich#25904)
- feat: add people deeplink by [@&#8203;arne182](https://github.com/arne182) in [#&#8203;25686](immich-app/immich#25686)
- feat(mobile): inline asset details by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;25952](immich-app/immich#25952)
- feat(mobile): filter by tags by [@&#8203;benjamonnguyen](https://github.com/benjamonnguyen) in [#&#8203;26196](immich-app/immich#26196)
- feat: add .mxf file support by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;24644](immich-app/immich#24644)
- feat: tap to see next/previous image by [@&#8203;thezeroalpha](https://github.com/thezeroalpha) in [#&#8203;20286](immich-app/immich#20286)
- feat(mobile): Allow users to set album cover from mobile app by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;25515](immich-app/immich#25515)
- feat(mobile): Allow users to set profile picture from asset viewer by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;25517](immich-app/immich#25517)
- feat: ROCm 7.2 and MIGraphX support  by [@&#8203;kprinssu](https://github.com/kprinssu) in [#&#8203;26178](immich-app/immich#26178)
- feat(web): map timeline sidepanel by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26532](immich-app/immich#26532)
- feat: add responsive layout to broken asset by [@&#8203;midzelis](https://github.com/midzelis) in [#&#8203;26384](immich-app/immich#26384)
- feat(web): toggle zoom on double-click in photo viewer by [@&#8203;midzelis](https://github.com/midzelis) in [#&#8203;26732](immich-app/immich#26732)
- feat(mobile): show animated images in asset viewer by [@&#8203;LeLunZ](https://github.com/LeLunZ) in [#&#8203;26614](immich-app/immich#26614)
- feat(mobile): open in browser by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;26369](immich-app/immich#26369)

##### 🌟 Enhancements

- feat: verify permissions by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;25647](immich-app/immich#25647)
- feat(web): change link expiration logic & presets  by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;26064](immich-app/immich#26064)
- feat(mobile): dynamic layout in new timeline by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;23837](immich-app/immich#23837)
- feat(cli): change progress bar to display file size by [@&#8203;Nykri](https://github.com/Nykri) in [#&#8203;23328](immich-app/immich#23328)
- feat(mobile): dynamic multi-line album name by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26040](immich-app/immich#26040)
- feat(mobile): hide search by context/OCR if disabled on server ([#&#8203;25472](immich-app/immich#25472)) by [@&#8203;Nacolis](https://github.com/Nacolis) in [#&#8203;26063](immich-app/immich#26063)
- fix(release): add docker-compose.rootless.yml to released assets by [@&#8203;dnozay](https://github.com/dnozay) in [#&#8203;26261](immich-app/immich#26261)
- feat(web): show ocr text boxes in panoramas by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;25727](immich-app/immich#25727)
- feat(web): loop chromecast video by [@&#8203;etnoy](https://github.com/etnoy) in [#&#8203;24410](immich-app/immich#24410)
- chore(web): merge "Add to album" and "Add to shared album" actions into a single action by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;24669](immich-app/immich#24669)
- feat(mobile): timeline - add bottomWidgetBuilder  by [@&#8203;PeterOmbodi](https://github.com/PeterOmbodi) in [#&#8203;25634](immich-app/immich#25634)
- feat(mobile): video zooming in asset viewer by [@&#8203;goalie2002](https://github.com/goalie2002) in [#&#8203;22036](immich-app/immich#22036)
- feat(mobile): Add slug support for shared links by [@&#8203;Lauritz-Tieste](https://github.com/Lauritz-Tieste) in [#&#8203;26441](immich-app/immich#26441)
- feat: warn when losing transparency during thumbnail generation by [@&#8203;midzelis](https://github.com/midzelis) in [#&#8203;26243](immich-app/immich#26243)
- perf(mobile): optimized album sorting by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;25179](immich-app/immich#25179)
- feat(mobile): prompt when deleting from trash by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;26392](immich-app/immich#26392)
- feat: getAssetEdits respond with edit IDs by [@&#8203;bwees](https://github.com/bwees) in [#&#8203;26445](immich-app/immich#26445)
- fix(server): accept showAt and hideAt for creating memories by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;26429](immich-app/immich#26429)
- feat(server): SyncAssetEditV1 by [@&#8203;bwees](https://github.com/bwees) in [#&#8203;26446](immich-app/immich#26446)
- feat: splash screen error page by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;26460](immich-app/immich#26460)
- feat(mobile): add confirmation dialog to permanent delete action by [@&#8203;ByteSizedMarius](https://github.com/ByteSizedMarius) in [#&#8203;26442](immich-app/immich#26442)
- feat: enhance face-editor positioning by [@&#8203;midzelis](https://github.com/midzelis) in [#&#8203;26303](immich-app/immich#26303)
- feat: improve HEIC, HEIF and JPEG XL browser support detection by [@&#8203;nicosemp](https://github.com/nicosemp) in [#&#8203;26122](immich-app/immich#26122)
- refactor(web): remove replaceAsset action by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;26444](immich-app/immich#26444)
- feat(web): bounding box for faces when hovering over the face in photo view by [@&#8203;cratoo](https://github.com/cratoo) in [#&#8203;26667](immich-app/immich#26667)
- feat(mobile): keep search results visible by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26498](immich-app/immich#26498)
- feat(mobile): use shared native client by [@&#8203;mertalev](https://github.com/mertalev) in [#&#8203;25942](immich-app/immich#25942)
- feat(mobile): SyncAssetEditV1 by [@&#8203;bwees](https://github.com/bwees) in [#&#8203;26518](immich-app/immich#26518)
- feat(ml): enable openvino for cpu by [@&#8203;apejcic](https://github.com/apejcic) in [#&#8203;22948](immich-app/immich#22948)
- feat: responsive video duration in thumbnail by [@&#8203;midzelis](https://github.com/midzelis) in [#&#8203;26770](immich-app/immich#26770)
- feat(web): animate zoom toggle with cubicOut easing by [@&#8203;midzelis](https://github.com/midzelis) in [#&#8203;26731](immich-app/immich#26731)
- feat(mobile): consolidate video controls by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26673](immich-app/immich#26673)
- feat(web): add shortcut "p" to open/close the face tag box by [@&#8203;cratoo](https://github.com/cratoo) in [#&#8203;26826](immich-app/immich#26826)
- feat(mobile): use material design 3 slider by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26829](immich-app/immich#26829)
- feat: adaptive progressive image loading for photo viewer by [@&#8203;midzelis](https://github.com/midzelis) in [#&#8203;26636](immich-app/immich#26636)
- fix(server): extract make/model from sony video files by [@&#8203;brendanngo](https://github.com/brendanngo) in [#&#8203;26833](immich-app/immich#26833)
- chore(mobile): remove background from asset viewer back button by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26851](immich-app/immich#26851)
- feat(server): support IDPs that only send the userinfo in the ID token by [@&#8203;Belnadifia](https://github.com/Belnadifia) in [#&#8203;26717](immich-app/immich#26717)
- feat(web): improve OCR overlay text fitting, reactivity, and accessibility by [@&#8203;midzelis](https://github.com/midzelis) in [#&#8203;26678](immich-app/immich#26678)
- fix(web): allow pasting PIN code from clipboard or password manager by [@&#8203;pressslav](https://github.com/pressslav) in [#&#8203;26944](immich-app/immich#26944)

##### 🐛 Bug fixes

- fix: ignore checksum constraint error when logging by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;26113](immich-app/immich#26113)
- fix(web): use locale for date picker by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26125](immich-app/immich#26125)
- fix(web): escape shortcut handling by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26096](immich-app/immich#26096)
- fix(mobile): Login routing on Splash screen by [@&#8203;PeterOmbodi](https://github.com/PeterOmbodi) in [#&#8203;26128](immich-app/immich#26128)
- fix: null local date time in timeline queries by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;26133](immich-app/immich#26133)
- fix(web): prevent event manager from throwing error by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26156](immich-app/immich#26156)
- fix(web): improve api key modal responsiveness by [@&#8203;klenner1](https://github.com/klenner1) in [#&#8203;26151](immich-app/immich#26151)
- fix(web): show correct assets in memory gallery by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26157](immich-app/immich#26157)
- fix(web): add missing [@&#8203;immich/ui](https://github.com/immich/ui) translations by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26143](immich-app/immich#26143)
- fix(mobile): timeline handling on foldable phones + ensuring that images are not cut off by [@&#8203;bkchr](https://github.com/bkchr) in [#&#8203;25088](immich-app/immich#25088)
- fix(mobile): prevent nav bar label text wrapping by [@&#8203;chrislongros](https://github.com/chrislongros) in [#&#8203;26011](immich-app/immich#26011)
- fix(mobile): hide latest version warnings by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26036](immich-app/immich#26036)
- fix(mobile): inconsistent query for people by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;24437](immich-app/immich#24437)
- fix(web): timeline multi select group state by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26180](immich-app/immich#26180)
- fix(web): add checkerboard background for transparent images by [@&#8203;agent-steven](https://github.com/agent-steven) in [#&#8203;26091](immich-app/immich#26091)
- fix(mobile): inherit toolbar opacity by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;25694](immich-app/immich#25694)
- fix(web): focus tag input when modal opens by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26256](immich-app/immich#26256)
- fix(web): clear face boxes when switching assets by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26249](immich-app/immich#26249)
- fix(web): clear unsaved asset description when changing asset by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26255](immich-app/immich#26255)
- fix(web): clear cache when asset changes by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26257](immich-app/immich#26257)
- fix: utc time zone upserts by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;26258](immich-app/immich#26258)
- fix: metadata crash by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;26327](immich-app/immich#26327)
- fix: prevent server crash when extraction of metadata fails if the assets are corrupted by [@&#8203;Devansh-Jani](https://github.com/Devansh-Jani) in [#&#8203;26042](immich-app/immich#26042)
- fix(server): db restore failure when `DB_URL` is set to unix-domain socket connection by [@&#8203;fabio-garavini](https://github.com/fabio-garavini) in [#&#8203;26252](immich-app/immich#26252)
- fix: Download the edited version when downloading multiple photos by [@&#8203;MontejoJorge](https://github.com/MontejoJorge) in [#&#8203;26259](immich-app/immich#26259)
- fix: include `DROP INDEX` in transaction to prevent missing index on rollback by [@&#8203;haoxi911](https://github.com/haoxi911) in [#&#8203;25399](immich-app/immich#25399)
- fix: safari address bar color by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;26346](immich-app/immich#26346)
- fix(web): prevent panorama image reload during asset updates by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26349](immich-app/immich#26349)
- fix(web): favoriting assets opened via GalleryViewer by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26350](immich-app/immich#26350)
- fix(i18n): add translation key for partner's photos by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;26348](immich-app/immich#26348)
- fix(web): single select scroll behavior by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;26358](immich-app/immich#26358)
- perf: add indexes to improve People API response times by [@&#8203;bxtdvd](https://github.com/bxtdvd) in [#&#8203;26337](immich-app/immich#26337)
- fix: pin code reset modal by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;26370](immich-app/immich#26370)
- fix(mobile): Reset "People" search filter chip if no selections are made by [@&#8203;benjamonnguyen](https://github.com/benjamonnguyen) in [#&#8203;26267](immich-app/immich#26267)
- fix(cli): delete sidecar files after upload if requested by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;26353](immich-app/immich#26353)
- fix(web): album description auto height by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26420](immich-app/immich#26420)
- fix(web): prevent side panel overlap during transition by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26398](immich-app/immich#26398)
- fix(web): storage template example by [@&#8203;mmomjian](https://github.com/mmomjian) in [#&#8203;26424](immich-app/immich#26424)
- fix(web): prevent `state_unsafe_mutation` error on people page by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26438](immich-app/immich#26438)
- fix: missing deletedAt and isVisible columns on mobile by [@&#8203;bwees](https://github.com/bwees) in [#&#8203;26414](immich-app/immich#26414)
- fix(mobile): joinLocal on archived timeline by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;26387](immich-app/immich#26387)
- fix: always show library scan button by [@&#8203;etnoy](https://github.com/etnoy) in [#&#8203;26428](immich-app/immich#26428)
- fix: retain asset when either asset is a favorite by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;26473](immich-app/immich#26473)
- fix(web): prevent null folder tree on concurrent load by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26489](immich-app/immich#26489)
- fix(web): toast warning when trying to upload unsupported file type by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;26492](immich-app/immich#26492)
- fix(mobile): birthday picker shows limited months when no date exists by [@&#8203;socksprox](https://github.com/socksprox) in [#&#8203;26407](immich-app/immich#26407)
- fix: consider DAR when extracting video dimension by [@&#8203;alextran1502](https://github.com/alextran1502) in [#&#8203;25293](immich-app/immich#25293)
- feat(mobile): Prevent premature image cache eviction when higher image loading is enabled by [@&#8203;LeLunZ](https://github.com/LeLunZ) in [#&#8203;26208](immich-app/immich#26208)
- refactor: star rating by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;26357](immich-app/immich#26357)
- fix(mobile): set correct initial system-ui mode in asset viewer by [@&#8203;goalie2002](https://github.com/goalie2002) in [#&#8203;26500](immich-app/immich#26500)
- fix(server): Live Photo migration bug when album is in template by [@&#8203;NikhilAlapati](https://github.com/NikhilAlapati) in [#&#8203;25329](immich-app/immich#25329)
- fix(web): handle delete shortcut on shared link page as remove by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;26552](immich-app/immich#26552)
- fix(mobile): prevent video player from being recreated unnecessarily by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26553](immich-app/immich#26553)
- fix(mobile): don't cut off top corners of app bar by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26550](immich-app/immich#26550)
- feat: update onnxruntime-openvino to 1.24.1 and intel drivers by [@&#8203;savely-krasovsky](https://github.com/savely-krasovsky) in [#&#8203;26565](immich-app/immich#26565)
- fix: hide download action for local/merged assets by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;26461](immich-app/immich#26461)
- fix(web): top bar z index on search page by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;26582](immich-app/immich#26582)
- fix(web): show shared link download button when logged in by [@&#8203;Snowknight26](https://github.com/Snowknight26) in [#&#8203;26629](immich-app/immich#26629)
- fix(mobile): asset viewer hero animation by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26545](immich-app/immich#26545)
- fix(web): timeline and asset viewer RTL support by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;26513](immich-app/immich#26513)
- fix(server): clean up edited thumbnail when deleting asset by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26664](immich-app/immich#26664)
- fix: implement existing withStacked on searchAssetBuilder by [@&#8203;babbitt](https://github.com/babbitt) in [#&#8203;26607](immich-app/immich#26607)
- fix(mobile): video state by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26574](immich-app/immich#26574)
- fix(maintenance mode): wait for valid server config on restart by [@&#8203;insertish](https://github.com/insertish) in [#&#8203;26456](immich-app/immich#26456)
- fix(web): inconsistent asset nav bar state after visiting shared link by [@&#8203;Snowknight26](https://github.com/Snowknight26) in [#&#8203;26674](immich-app/immich#26674)
- fix(web): download toast showing wrong filename for motion assets by [@&#8203;Snowknight26](https://github.com/Snowknight26) in [#&#8203;26689](immich-app/immich#26689)
- fix(mobile): add safe area for asset details by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26675](immich-app/immich#26675)
- fix(web): combobox dropdown positioning in modals by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26707](immich-app/immich#26707)
- fix(web): video stealing focus when it plays again when looping by [@&#8203;Snowknight26](https://github.com/Snowknight26) in [#&#8203;26704](immich-app/immich#26704)
- fix(ml): batch size setting by [@&#8203;mertalev](https://github.com/mertalev) in [#&#8203;26524](immich-app/immich#26524)
- fix(server): clarify transcoding bitrate policy by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;26711](immich-app/immich#26711)
- fix: playback style migration by [@&#8203;alextran1502](https://github.com/alextran1502) in [#&#8203;26718](immich-app/immich#26718)
- fix(web): asset viewer showing wrong viewer type when hovering on stack thumbnails by [@&#8203;Snowknight26](https://github.com/Snowknight26) in [#&#8203;26741](immich-app/immich#26741)
- fix(server): opus handling as accepted audio codec in transcode policy by [@&#8203;skatsubo](https://github.com/skatsubo) in [#&#8203;26736](immich-app/immich#26736)
- fix(web): refresh recent albums sidebar after album changes by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26757](immich-app/immich#26757)
- fix(web): show the correct cursor at crop bounds when editing an asset by [@&#8203;Snowknight26](https://github.com/Snowknight26) in [#&#8203;26748](immich-app/immich#26748)
- fix(web): recalculate face bounding boxes by [@&#8203;cratoo](https://github.com/cratoo) in [#&#8203;26737](immich-app/immich#26737)
- fix(web): context menu overflow by [@&#8203;SevereCloud](https://github.com/SevereCloud) in [#&#8203;26760](immich-app/immich#26760)
- fix(web): correct tag rounding in search options by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26814](immich-app/immich#26814)
- fix(web): prevent unrelated assets from appearing in tag view by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26816](immich-app/immich#26816)
- fix(mobile): use tabular figures in backup page by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26830](immich-app/immich#26830)
- fix(mobile): wrap backup error message text by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26834](immich-app/immich#26834)
- fix(server): use correct day ordering in timeline buckets by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26821](immich-app/immich#26821)
- fix(web): face selection box position resetting on browser resize by [@&#8203;Snowknight26](https://github.com/Snowknight26) in [#&#8203;26766](immich-app/immich#26766)
- fix: use correct original URL for 360 video panorama playback by [@&#8203;luis15pt](https://github.com/luis15pt) in [#&#8203;26831](immich-app/immich#26831)
- fix(web): disable drag and drop for internal items by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26897](immich-app/immich#26897)
- fix(web): keep header fixed on individual shared links by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26892](immich-app/immich#26892)
- fix: SMTP over TLS by [@&#8203;nathanielhourt](https://github.com/nathanielhourt) in [#&#8203;26893](immich-app/immich#26893)
- fix(web): copy yearMonth in MonthGroup to avoid shared object reference with asset in [#&#8203;26890](immich-app/immich#26890)
- fix(mobile): use shared auth for background\_downloader by [@&#8203;mertalev](https://github.com/mertalev) in [#&#8203;26911](immich-app/immich#26911)
- fix(web): prevent search page error on missing album filter by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26948](immich-app/immich#26948)
- fix(server): sync files to disk by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26881](immich-app/immich#26881)
- fix(web): jump to primary stacked asset from memory by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26978](immich-app/immich#26978)
- fix(mobile): reflect asset deletions instantly by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26835](immich-app/immich#26835)
- fix: healthcheck by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;26989](immich-app/immich#26989)
- fix(web): escape handling for tagging and adding a face in asset viewer by [@&#8203;cratoo](https://github.com/cratoo) in [#&#8203;26870](immich-app/immich#26870)
- fix: filter after searching by asset id by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;26994](immich-app/immich#26994)
- fix: bounding box return type by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;27014](immich-app/immich#27014)
- fix: validate accept header before returning html by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;27019](immich-app/immich#27019)

##### 📚 Documentation

- chore(docs): Update help channel for developers by [@&#8203;Mraedis](https://github.com/Mraedis) in [#&#8203;26284](immich-app/immich#26284)
- feat(docs): Explain configuration file location for Docker Compose by [@&#8203;keunes](https://github.com/keunes) in [#&#8203;24989](immich-app/immich#24989)
- chore(docs): add quick-start guide for DevPod with docker by [@&#8203;dhlavaty](https://github.com/dhlavaty) in [#&#8203;26213](immich-app/immich#26213)
- feat(docs): Adding information about parameter c= by [@&#8203;aviv926](https://github.com/aviv926) in [#&#8203;26430](https://github.com/immich-app/immich/pull/26430)
- feat: doc links by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;26519](https://github.com/immich-app/immich/pull/26519)
- fix(docs): add ocr to job flow diagram by [@&#8203;niij](https://github.com/niij) in [#&#8203;26505](https://github.com/immich-app/immich/pull/26505)

##### 🌐 Translations

- chore(web): update translations by [@&#8203;weblate](https://github.com/weblate) in [#&#8203;26118](https://github.com/immich-app/immich/pull/26118)
- fix: clarify external domain setting is used for emails too by [@&#8203;chrislongros](https://github.com/chrislongros) in [#&#8203;26009](https://github.com/immich-app/immich/pull/26009)
- chore(web): update translations by [@&#8203;weblate](https://github.com/weblate) in [#&#8203;26167](https://github.com/immich-app/immich/pull/26167)
- fix(web): error page i18n by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;26517](https://github.com/immich-app/immich/pull/26517)
- chore(web): clarify locale settings description by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;25562](https://github.com/immich-app/immich/pull/25562)
- chore(web): update translations by [@&#8203;weblate](https://github.com/weblate) in [#&#8203;26192](https://github.com/immich-app/immich/pull/26192)

#### New Contributors

- [@&#8203;klenner1](https://github.com/klenner1) made their first contribution in [#&#8203;26151](immich-app/immich#26151)
- [@&#8203;bkchr](https://github.com/bkchr) made their first contribution in [#&#8203;25088](immich-app/immich#25088)
- [@&#8203;chrislongros](https://github.com/chrislongros) made their first contribution in [#&#8203;26011](immich-app/immich#26011)
- [@&#8203;agent-steven](https://github.com/agent-steven) made their first contribution in [#&#8203;26091](immich-app/immich#26091)
- [@&#8203;dhlavaty](https://github.com/dhlavaty) made their first contribution in [#&#8203;26238](https://github.com/immich-app/immich/pull/26238)
- [@&#8203;Nacolis](https://github.com/Nacolis) made their first contribution in [#&#8203;26063](immich-app/immich#26063)
- [@&#8203;ewinnd](https://github.com/ewinnd) made their first contribution in [#&#8203;26277](https://github.com/immich-app/immich/pull/26277)
- [@&#8203;dnozay](https://github.com/dnozay) made their first contribution in [#&#8203;26261](immich-app/immich#26261)
- [@&#8203;keunes](https://github.com/keunes) made their first contribution in [#&#8203;24989](immich-app/immich#24989)
- [@&#8203;Devansh-Jani](https://github.com/Devansh-Jani) made their first contribution in [#&#8203;26042](immich-app/immich#26042)
- [@&#8203;benjamonnguyen](https://github.com/benjamonnguyen) made their first contribution in [#&#8203;26196](immich-app/immich#26196)
- [@&#8203;fabio-garavini](https://github.com/fabio-garavini) made their first contribution in [#&#8203;26252](immich-app/immich#26252)
- [@&#8203;haoxi911](https://github.com/haoxi911) made their first contribution in [#&#8203;25399](immich-app/immich#25399)
- [@&#8203;thezeroalpha](https://github.com/thezeroalpha) made their first contribution in [#&#8203;20286](immich-app/immich#20286)
- [@&#8203;socksprox](https://github.com/socksprox) made their first contribution in [#&#8203;26407](immich-app/immich#26407)
- [@&#8203;kprinssu](https://github.com/kprinssu) made their first contribution in [#&#8203;26178](immich-app/immich#26178)
- [@&#8203;babbitt](https://github.com/babbitt) made their first contribution in [#&#8203;26607](immich-app/immich#26607)
- [@&#8203;niij](https://github.com/niij) made their first contribution in [#&#8203;26505](https://github.com/immich-app/immich/pull/26505)
- [@&#8203;cratoo](https://github.com/cratoo) made their first contribution in [#&#8203;26667](immich-app/immich#26667)
- [@&#8203;M123-dev](https://github.com/M123-dev) made their first contribution in [#&#8203;26630](https://github.com/immich-app/immich/pull/26630)
- [@&#8203;apejcic](https://github.com/apejcic) made their first contribution in [#&#8203;22948](immich-app/immich#22948)
- [@&#8203;SevereCloud](https://github.com/SevereCloud) made their first contribution in [#&#8203;26760](immich-app/immich#26760)
- [@&#8203;brendanngo](https://github.com/brendanngo) made their first contribution in [#&#8203;26833](immich-app/immich#26833)
- [@&#8203;luis15pt](https://github.com/luis15pt) made their first contribution in [#&#8203;26831](immich-app/immich#26831)
- [@&#8203;nathanielhourt](https://github.com/nathanielhourt) made their first contribution in [#&#8203;26893](immich-app/immich#26893)
- [@&#8203;Belnadifia](https://github.com/Belnadifia) made their first contribution in [#&#8203;26717](immich-app/immich#26717)
- [@&#8203;pressslav](https://github.com/pressslav) made their first contribution in [#&#8203;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>
alexlebens pushed a commit to alexlebens/infrastructure that referenced this pull request Mar 20, 2026
….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 [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;27016](immich-app/immich#27016)
- fix: ignore errors deleting untitled album by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;27020](immich-app/immich#27020)
- fix(web): wrap long album title by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;27012](immich-app/immich#27012)
- fix(web): stop in-progress uploads on logout by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;27021](immich-app/immich#27021)
- fix: writing empty exif tags by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;27025](immich-app/immich#27025)
- fix(web): disable send button by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;27051](immich-app/immich#27051)
- fix(mobile): server url migration by [@&#8203;mertalev](https://github.com/mertalev) in [#&#8203;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 [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26868](immich-app/immich#26868)
- fix: add to shared link by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;26886](immich-app/immich#26886)

##### 🚀 Features

- feat: shared link login by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;25678](immich-app/immich#25678)
- feat: schema-check by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;25904](immich-app/immich#25904)
- feat: add people deeplink by [@&#8203;arne182](https://github.com/arne182) in [#&#8203;25686](immich-app/immich#25686)
- feat(mobile): inline asset details by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;25952](immich-app/immich#25952)
- feat(mobile): filter by tags by [@&#8203;benjamonnguyen](https://github.com/benjamonnguyen) in [#&#8203;26196](immich-app/immich#26196)
- feat: add .mxf file support by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;24644](immich-app/immich#24644)
- feat: tap to see next/previous image by [@&#8203;thezeroalpha](https://github.com/thezeroalpha) in [#&#8203;20286](immich-app/immich#20286)
- feat(mobile): Allow users to set album cover from mobile app by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;25515](immich-app/immich#25515)
- feat(mobile): Allow users to set profile picture from asset viewer by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;25517](immich-app/immich#25517)
- feat: ROCm 7.2 and MIGraphX support  by [@&#8203;kprinssu](https://github.com/kprinssu) in [#&#8203;26178](immich-app/immich#26178)
- feat(web): map timeline sidepanel by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26532](immich-app/immich#26532)
- feat: add responsive layout to broken asset by [@&#8203;midzelis](https://github.com/midzelis) in [#&#8203;26384](immich-app/immich#26384)
- feat(web): toggle zoom on double-click in photo viewer by [@&#8203;midzelis](https://github.com/midzelis) in [#&#8203;26732](immich-app/immich#26732)
- feat(mobile): show animated images in asset viewer by [@&#8203;LeLunZ](https://github.com/LeLunZ) in [#&#8203;26614](immich-app/immich#26614)
- feat(mobile): open in browser by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;26369](immich-app/immich#26369)

##### 🌟 Enhancements

- feat: verify permissions by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;25647](immich-app/immich#25647)
- feat(web): change link expiration logic & presets  by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;26064](immich-app/immich#26064)
- feat(mobile): dynamic layout in new timeline by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;23837](immich-app/immich#23837)
- feat(cli): change progress bar to display file size by [@&#8203;Nykri](https://github.com/Nykri) in [#&#8203;23328](immich-app/immich#23328)
- feat(mobile): dynamic multi-line album name by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26040](immich-app/immich#26040)
- feat(mobile): hide search by context/OCR if disabled on server ([#&#8203;25472](immich-app/immich#25472)) by [@&#8203;Nacolis](https://github.com/Nacolis) in [#&#8203;26063](immich-app/immich#26063)
- fix(release): add docker-compose.rootless.yml to released assets by [@&#8203;dnozay](https://github.com/dnozay) in [#&#8203;26261](immich-app/immich#26261)
- feat(web): show ocr text boxes in panoramas by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;25727](immich-app/immich#25727)
- feat(web): loop chromecast video by [@&#8203;etnoy](https://github.com/etnoy) in [#&#8203;24410](immich-app/immich#24410)
- chore(web): merge "Add to album" and "Add to shared album" actions into a single action by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;24669](immich-app/immich#24669)
- feat(mobile): timeline - add bottomWidgetBuilder  by [@&#8203;PeterOmbodi](https://github.com/PeterOmbodi) in [#&#8203;25634](immich-app/immich#25634)
- feat(mobile): video zooming in asset viewer by [@&#8203;goalie2002](https://github.com/goalie2002) in [#&#8203;22036](immich-app/immich#22036)
- feat(mobile): Add slug support for shared links by [@&#8203;Lauritz-Tieste](https://github.com/Lauritz-Tieste) in [#&#8203;26441](immich-app/immich#26441)
- feat: warn when losing transparency during thumbnail generation by [@&#8203;midzelis](https://github.com/midzelis) in [#&#8203;26243](immich-app/immich#26243)
- perf(mobile): optimized album sorting by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;25179](immich-app/immich#25179)
- feat(mobile): prompt when deleting from trash by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;26392](immich-app/immich#26392)
- feat: getAssetEdits respond with edit IDs by [@&#8203;bwees](https://github.com/bwees) in [#&#8203;26445](immich-app/immich#26445)
- fix(server): accept showAt and hideAt for creating memories by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;26429](immich-app/immich#26429)
- feat(server): SyncAssetEditV1 by [@&#8203;bwees](https://github.com/bwees) in [#&#8203;26446](immich-app/immich#26446)
- feat: splash screen error page by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;26460](immich-app/immich#26460)
- feat(mobile): add confirmation dialog to permanent delete action by [@&#8203;ByteSizedMarius](https://github.com/ByteSizedMarius) in [#&#8203;26442](immich-app/immich#26442)
- feat: enhance face-editor positioning by [@&#8203;midzelis](https://github.com/midzelis) in [#&#8203;26303](immich-app/immich#26303)
- feat: improve HEIC, HEIF and JPEG XL browser support detection by [@&#8203;nicosemp](https://github.com/nicosemp) in [#&#8203;26122](immich-app/immich#26122)
- refactor(web): remove replaceAsset action by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;26444](immich-app/immich#26444)
- feat(web): bounding box for faces when hovering over the face in photo view by [@&#8203;cratoo](https://github.com/cratoo) in [#&#8203;26667](immich-app/immich#26667)
- feat(mobile): keep search results visible by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26498](immich-app/immich#26498)
- feat(mobile): use shared native client by [@&#8203;mertalev](https://github.com/mertalev) in [#&#8203;25942](immich-app/immich#25942)
- feat(mobile): SyncAssetEditV1 by [@&#8203;bwees](https://github.com/bwees) in [#&#8203;26518](immich-app/immich#26518)
- feat(ml): enable openvino for cpu by [@&#8203;apejcic](https://github.com/apejcic) in [#&#8203;22948](immich-app/immich#22948)
- feat: responsive video duration in thumbnail by [@&#8203;midzelis](https://github.com/midzelis) in [#&#8203;26770](immich-app/immich#26770)
- feat(web): animate zoom toggle with cubicOut easing by [@&#8203;midzelis](https://github.com/midzelis) in [#&#8203;26731](immich-app/immich#26731)
- feat(mobile): consolidate video controls by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26673](immich-app/immich#26673)
- feat(web): add shortcut "p" to open/close the face tag box by [@&#8203;cratoo](https://github.com/cratoo) in [#&#8203;26826](immich-app/immich#26826)
- feat(mobile): use material design 3 slider by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26829](immich-app/immich#26829)
- feat: adaptive progressive image loading for photo viewer by [@&#8203;midzelis](https://github.com/midzelis) in [#&#8203;26636](immich-app/immich#26636)
- fix(server): extract make/model from sony video files by [@&#8203;brendanngo](https://github.com/brendanngo) in [#&#8203;26833](immich-app/immich#26833)
- chore(mobile): remove background from asset viewer back button by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26851](immich-app/immich#26851)
- feat(server): support IDPs that only send the userinfo in the ID token by [@&#8203;Belnadifia](https://github.com/Belnadifia) in [#&#8203;26717](immich-app/immich#26717)
- feat(web): improve OCR overlay text fitting, reactivity, and accessibility by [@&#8203;midzelis](https://github.com/midzelis) in [#&#8203;26678](immich-app/immich#26678)
- fix(web): allow pasting PIN code from clipboard or password manager by [@&#8203;pressslav](https://github.com/pressslav) in [#&#8203;26944](immich-app/immich#26944)

##### 🐛 Bug fixes

- fix: ignore checksum constraint error when logging by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;26113](immich-app/immich#26113)
- fix(web): use locale for date picker by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26125](immich-app/immich#26125)
- fix(web): escape shortcut handling by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26096](immich-app/immich#26096)
- fix(mobile): Login routing on Splash screen by [@&#8203;PeterOmbodi](https://github.com/PeterOmbodi) in [#&#8203;26128](immich-app/immich#26128)
- fix: null local date time in timeline queries by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;26133](immich-app/immich#26133)
- fix(web): prevent event manager from throwing error by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26156](immich-app/immich#26156)
- fix(web): improve api key modal responsiveness by [@&#8203;klenner1](https://github.com/klenner1) in [#&#8203;26151](immich-app/immich#26151)
- fix(web): show correct assets in memory gallery by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26157](immich-app/immich#26157)
- fix(web): add missing [@&#8203;immich/ui](https://github.com/immich/ui) translations by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26143](immich-app/immich#26143)
- fix(mobile): timeline handling on foldable phones + ensuring that images are not cut off by [@&#8203;bkchr](https://github.com/bkchr) in [#&#8203;25088](immich-app/immich#25088)
- fix(mobile): prevent nav bar label text wrapping by [@&#8203;chrislongros](https://github.com/chrislongros) in [#&#8203;26011](immich-app/immich#26011)
- fix(mobile): hide latest version warnings by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26036](immich-app/immich#26036)
- fix(mobile): inconsistent query for people by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;24437](immich-app/immich#24437)
- fix(web): timeline multi select group state by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26180](immich-app/immich#26180)
- fix(web): add checkerboard background for transparent images by [@&#8203;agent-steven](https://github.com/agent-steven) in [#&#8203;26091](immich-app/immich#26091)
- fix(mobile): inherit toolbar opacity by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;25694](immich-app/immich#25694)
- fix(web): focus tag input when modal opens by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26256](immich-app/immich#26256)
- fix(web): clear face boxes when switching assets by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26249](immich-app/immich#26249)
- fix(web): clear unsaved asset description when changing asset by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26255](immich-app/immich#26255)
- fix(web): clear cache when asset changes by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26257](immich-app/immich#26257)
- fix: utc time zone upserts by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;26258](immich-app/immich#26258)
- fix: metadata crash by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;26327](immich-app/immich#26327)
- fix: prevent server crash when extraction of metadata fails if the assets are corrupted by [@&#8203;Devansh-Jani](https://github.com/Devansh-Jani) in [#&#8203;26042](immich-app/immich#26042)
- fix(server): db restore failure when `DB_URL` is set to unix-domain socket connection by [@&#8203;fabio-garavini](https://github.com/fabio-garavini) in [#&#8203;26252](immich-app/immich#26252)
- fix: Download the edited version when downloading multiple photos by [@&#8203;MontejoJorge](https://github.com/MontejoJorge) in [#&#8203;26259](immich-app/immich#26259)
- fix: include `DROP INDEX` in transaction to prevent missing index on rollback by [@&#8203;haoxi911](https://github.com/haoxi911) in [#&#8203;25399](immich-app/immich#25399)
- fix: safari address bar color by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;26346](immich-app/immich#26346)
- fix(web): prevent panorama image reload during asset updates by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26349](immich-app/immich#26349)
- fix(web): favoriting assets opened via GalleryViewer by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26350](immich-app/immich#26350)
- fix(i18n): add translation key for partner's photos by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;26348](immich-app/immich#26348)
- fix(web): single select scroll behavior by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;26358](immich-app/immich#26358)
- perf: add indexes to improve People API response times by [@&#8203;bxtdvd](https://github.com/bxtdvd) in [#&#8203;26337](immich-app/immich#26337)
- fix: pin code reset modal by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;26370](immich-app/immich#26370)
- fix(mobile): Reset "People" search filter chip if no selections are made by [@&#8203;benjamonnguyen](https://github.com/benjamonnguyen) in [#&#8203;26267](immich-app/immich#26267)
- fix(cli): delete sidecar files after upload if requested by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;26353](immich-app/immich#26353)
- fix(web): album description auto height by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26420](immich-app/immich#26420)
- fix(web): prevent side panel overlap during transition by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26398](immich-app/immich#26398)
- fix(web): storage template example by [@&#8203;mmomjian](https://github.com/mmomjian) in [#&#8203;26424](immich-app/immich#26424)
- fix(web): prevent `state_unsafe_mutation` error on people page by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26438](immich-app/immich#26438)
- fix: missing deletedAt and isVisible columns on mobile by [@&#8203;bwees](https://github.com/bwees) in [#&#8203;26414](immich-app/immich#26414)
- fix(mobile): joinLocal on archived timeline by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;26387](immich-app/immich#26387)
- fix: always show library scan button by [@&#8203;etnoy](https://github.com/etnoy) in [#&#8203;26428](immich-app/immich#26428)
- fix: retain asset when either asset is a favorite by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;26473](immich-app/immich#26473)
- fix(web): prevent null folder tree on concurrent load by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26489](immich-app/immich#26489)
- fix(web): toast warning when trying to upload unsupported file type by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;26492](immich-app/immich#26492)
- fix(mobile): birthday picker shows limited months when no date exists by [@&#8203;socksprox](https://github.com/socksprox) in [#&#8203;26407](immich-app/immich#26407)
- fix: consider DAR when extracting video dimension by [@&#8203;alextran1502](https://github.com/alextran1502) in [#&#8203;25293](immich-app/immich#25293)
- feat(mobile): Prevent premature image cache eviction when higher image loading is enabled by [@&#8203;LeLunZ](https://github.com/LeLunZ) in [#&#8203;26208](immich-app/immich#26208)
- refactor: star rating by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;26357](immich-app/immich#26357)
- fix(mobile): set correct initial system-ui mode in asset viewer by [@&#8203;goalie2002](https://github.com/goalie2002) in [#&#8203;26500](immich-app/immich#26500)
- fix(server): Live Photo migration bug when album is in template by [@&#8203;NikhilAlapati](https://github.com/NikhilAlapati) in [#&#8203;25329](immich-app/immich#25329)
- fix(web): handle delete shortcut on shared link page as remove by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;26552](immich-app/immich#26552)
- fix(mobile): prevent video player from being recreated unnecessarily by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26553](immich-app/immich#26553)
- fix(mobile): don't cut off top corners of app bar by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26550](immich-app/immich#26550)
- feat: update onnxruntime-openvino to 1.24.1 and intel drivers by [@&#8203;savely-krasovsky](https://github.com/savely-krasovsky) in [#&#8203;26565](immich-app/immich#26565)
- fix: hide download action for local/merged assets by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;26461](immich-app/immich#26461)
- fix(web): top bar z index on search page by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;26582](immich-app/immich#26582)
- fix(web): show shared link download button when logged in by [@&#8203;Snowknight26](https://github.com/Snowknight26) in [#&#8203;26629](immich-app/immich#26629)
- fix(mobile): asset viewer hero animation by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26545](immich-app/immich#26545)
- fix(web): timeline and asset viewer RTL support by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;26513](immich-app/immich#26513)
- fix(server): clean up edited thumbnail when deleting asset by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26664](immich-app/immich#26664)
- fix: implement existing withStacked on searchAssetBuilder by [@&#8203;babbitt](https://github.com/babbitt) in [#&#8203;26607](immich-app/immich#26607)
- fix(mobile): video state by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26574](immich-app/immich#26574)
- fix(maintenance mode): wait for valid server config on restart by [@&#8203;insertish](https://github.com/insertish) in [#&#8203;26456](immich-app/immich#26456)
- fix(web): inconsistent asset nav bar state after visiting shared link by [@&#8203;Snowknight26](https://github.com/Snowknight26) in [#&#8203;26674](immich-app/immich#26674)
- fix(web): download toast showing wrong filename for motion assets by [@&#8203;Snowknight26](https://github.com/Snowknight26) in [#&#8203;26689](immich-app/immich#26689)
- fix(mobile): add safe area for asset details by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26675](immich-app/immich#26675)
- fix(web): combobox dropdown positioning in modals by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26707](immich-app/immich#26707)
- fix(web): video stealing focus when it plays again when looping by [@&#8203;Snowknight26](https://github.com/Snowknight26) in [#&#8203;26704](immich-app/immich#26704)
- fix(ml): batch size setting by [@&#8203;mertalev](https://github.com/mertalev) in [#&#8203;26524](immich-app/immich#26524)
- fix(server): clarify transcoding bitrate policy by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;26711](immich-app/immich#26711)
- fix: playback style migration by [@&#8203;alextran1502](https://github.com/alextran1502) in [#&#8203;26718](immich-app/immich#26718)
- fix(web): asset viewer showing wrong viewer type when hovering on stack thumbnails by [@&#8203;Snowknight26](https://github.com/Snowknight26) in [#&#8203;26741](immich-app/immich#26741)
- fix(server): opus handling as accepted audio codec in transcode policy by [@&#8203;skatsubo](https://github.com/skatsubo) in [#&#8203;26736](immich-app/immich#26736)
- fix(web): refresh recent albums sidebar after album changes by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26757](immich-app/immich#26757)
- fix(web): show the correct cursor at crop bounds when editing an asset by [@&#8203;Snowknight26](https://github.com/Snowknight26) in [#&#8203;26748](immich-app/immich#26748)
- fix(web): recalculate face bounding boxes by [@&#8203;cratoo](https://github.com/cratoo) in [#&#8203;26737](immich-app/immich#26737)
- fix(web): context menu overflow by [@&#8203;SevereCloud](https://github.com/SevereCloud) in [#&#8203;26760](immich-app/immich#26760)
- fix(web): correct tag rounding in search options by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26814](immich-app/immich#26814)
- fix(web): prevent unrelated assets from appearing in tag view by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26816](immich-app/immich#26816)
- fix(mobile): use tabular figures in backup page by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26830](immich-app/immich#26830)
- fix(mobile): wrap backup error message text by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26834](immich-app/immich#26834)
- fix(server): use correct day ordering in timeline buckets by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26821](immich-app/immich#26821)
- fix(web): face selection box position resetting on browser resize by [@&#8203;Snowknight26](https://github.com/Snowknight26) in [#&#8203;26766](immich-app/immich#26766)
- fix: use correct original URL for 360 video panorama playback by [@&#8203;luis15pt](https://github.com/luis15pt) in [#&#8203;26831](immich-app/immich#26831)
- fix(web): disable drag and drop for internal items by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26897](immich-app/immich#26897)
- fix(web): keep header fixed on individual shared links by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26892](immich-app/immich#26892)
- fix: SMTP over TLS by [@&#8203;nathanielhourt](https://github.com/nathanielhourt) in [#&#8203;26893](immich-app/immich#26893)
- fix(web): copy yearMonth in MonthGroup to avoid shared object reference with asset in [#&#8203;26890](immich-app/immich#26890)
- fix(mobile): use shared auth for background\_downloader by [@&#8203;mertalev](https://github.com/mertalev) in [#&#8203;26911](immich-app/immich#26911)
- fix(web): prevent search page error on missing album filter by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26948](immich-app/immich#26948)
- fix(server): sync files to disk by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26881](immich-app/immich#26881)
- fix(web): jump to primary stacked asset from memory by [@&#8203;michelheusschen](https://github.com/michelheusschen) in [#&#8203;26978](immich-app/immich#26978)
- fix(mobile): reflect asset deletions instantly by [@&#8203;uhthomas](https://github.com/uhthomas) in [#&#8203;26835](immich-app/immich#26835)
- fix: healthcheck by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;26989](immich-app/immich#26989)
- fix(web): escape handling for tagging and adding a face in asset viewer by [@&#8203;cratoo](https://github.com/cratoo) in [#&#8203;26870](immich-app/immich#26870)
- fix: filter after searching by asset id by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;26994](immich-app/immich#26994)
- fix: bounding box return type by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;27014](immich-app/immich#27014)
- fix: validate accept header before returning html by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;27019](immich-app/immich#27019)

##### 📚 Documentation

- chore(docs): Update help channel for developers by [@&#8203;Mraedis](https://github.com/Mraedis) in [#&#8203;26284](immich-app/immich#26284)
- feat(docs): Explain configuration file location for Docker Compose by [@&#8203;keunes](https://github.com/keunes) in [#&#8203;24989](immich-app/immich#24989)
- chore(docs): add quick-start guide for DevPod with docker by [@&#8203;dhlavaty](https://github.com/dhlavaty) in [#&#8203;26213](immich-app/immich#26213)
- feat(docs): Adding information about parameter c= by [@&#8203;aviv926](https://github.com/aviv926) in [#&#8203;26430](https://github.com/immich-app/immich/pull/26430)
- feat: doc links by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;26519](https://github.com/immich-app/immich/pull/26519)
- fix(docs): add ocr to job flow diagram by [@&#8203;niij](https://github.com/niij) in [#&#8203;26505](https://github.com/immich-app/immich/pull/26505)

##### 🌐 Translations

- chore(web): update translations by [@&#8203;weblate](https://github.com/weblate) in [#&#8203;26118](https://github.com/immich-app/immich/pull/26118)
- fix: clarify external domain setting is used for emails too by [@&#8203;chrislongros](https://github.com/chrislongros) in [#&#8203;26009](https://github.com/immich-app/immich/pull/26009)
- chore(web): update translations by [@&#8203;weblate](https://github.com/weblate) in [#&#8203;26167](https://github.com/immich-app/immich/pull/26167)
- fix(web): error page i18n by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;26517](https://github.com/immich-app/immich/pull/26517)
- chore(web): clarify locale settings description by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;25562](https://github.com/immich-app/immich/pull/25562)
- chore(web): update translations by [@&#8203;weblate](https://github.com/weblate) in [#&#8203;26192](https://github.com/immich-app/immich/pull/26192)

#### New Contributors

- [@&#8203;klenner1](https://github.com/klenner1) made their first contribution in [#&#8203;26151](immich-app/immich#26151)
- [@&#8203;bkchr](https://github.com/bkchr) made their first contribution in [#&#8203;25088](immich-app/immich#25088)
- [@&#8203;chrislongros](https://github.com/chrislongros) made their first contribution in [#&#8203;26011](immich-app/immich#26011)
- [@&#8203;agent-steven](https://github.com/agent-steven) made their first contribution in [#&#8203;26091](immich-app/immich#26091)
- [@&#8203;dhlavaty](https://github.com/dhlavaty) made their first contribution in [#&#8203;26238](https://github.com/immich-app/immich/pull/26238)
- [@&#8203;Nacolis](https://github.com/Nacolis) made their first contribution in [#&#8203;26063](immich-app/immich#26063)
- [@&#8203;ewinnd](https://github.com/ewinnd) made their first contribution in [#&#8203;26277](https://github.com/immich-app/immich/pull/26277)
- [@&#8203;dnozay](https://github.com/dnozay) made their first contribution in [#&#8203;26261](immich-app/immich#26261)
- [@&#8203;keunes](https://github.com/keunes) made their first contribution in [#&#8203;24989](immich-app/immich#24989)
- [@&#8203;Devansh-Jani](https://github.com/Devansh-Jani) made their first contribution in [#&#8203;26042](immich-app/immich#26042)
- [@&#8203;benjamonnguyen](https://github.com/benjamonnguyen) made their first contribution in [#&#8203;26196](immich-app/immich#26196)
- [@&#8203;fabio-garavini](https://github.com/fabio-garavini) made their first contribution in [#&#8203;26252](immich-app/immich#26252)
- [@&#8203;haoxi911](https://github.com/haoxi911) made their first contribution in [#&#8203;25399](immich-app/immich#25399)
- [@&#8203;thezeroalpha](https://github.com/thezeroalpha) made their first contribution in [#&#8203;20286](immich-app/immich#20286)
- [@&#8203;socksprox](https://github.com/socksprox) made their first contribution in [#&#8203;26407](immich-app/immich#26407)
- [@&#8203;kprinssu](https://github.com/kprinssu) made their first contribution in [#&#8203;26178](immich-app/immich#26178)
- [@&#8203;babbitt](https://github.com/babbitt) made their first contribution in [#&#8203;26607](immich-app/immich#26607)
- [@&#8203;niij](https://github.com/niij) made their first contribution in [#&#8203;26505](https://github.com/immich-app/immich/pull/26505)
- [@&#8203;cratoo](https://github.com/cratoo) made their first contribution in [#&#8203;26667](immich-app/immich#26667)
- [@&#8203;M123-dev](https://github.com/M123-dev) made their first contribution in [#&#8203;26630](https://github.com/immich-app/immich/pull/26630)
- [@&#8203;apejcic](https://github.com/apejcic) made their first contribution in [#&#8203;22948](immich-app/immich#22948)
- [@&#8203;SevereCloud](https://github.com/SevereCloud) made their first contribution in [#&#8203;26760](immich-app/immich#26760)
- [@&#8203;brendanngo](https://github.com/brendanngo) made their first contribution in [#&#8203;26833](immich-app/immich#26833)
- [@&#8203;luis15pt](https://github.com/luis15pt) made their first contribution in [#&#8203;26831](immich-app/immich#26831)
- [@&#8203;nathanielhourt](https://github.com/nathanielhourt) made their first contribution in [#&#8203;26893](immich-app/immich#26893)
- [@&#8203;Belnadifia](https://github.com/Belnadifia) made their first contribution in [#&#8203;26717](immich-app/immich#26717)
- [@&#8203;pressslav](https://github.com/pressslav) made their first contribution in [#&#8203;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>
renovate bot added a commit to sdwilsh/ansible-playbooks that referenced this pull request Mar 21, 2026
##### [\`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>
sdwilsh pushed a commit to sdwilsh/ansible-playbooks that referenced this pull request Mar 21, 2026
##### [\`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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.