Skip to content

fix(server): dissolve stack when its non-primary assets are deleted - #29354

Merged
danieldietzler merged 2 commits into
immich-app:mainfrom
justadityaraj:fix/dissolve-stack-on-nonprimary-asset-deletion
Jul 22, 2026
Merged

danieldietzler merged 2 commits into
immich-app:mainfrom
justadityaraj:fix/dissolve-stack-on-nonprimary-asset-deletion

Conversation

@justadityaraj

@justadityaraj justadityaraj commented Jun 27, 2026 •

Copy link
Copy Markdown
Contributor

Description

Stack cleanup in handleAssetDeletion only ran when the primary asset of a stack was deleted (asset.stack?.primaryAssetId === id). Deleting a non-primary asset never re-validated the stack, so a stack could be left holding only its primary asset, lingering in the timeline as an invalid single-asset stack.

This is most visible when deleting an external library: each asset is removed via its own AssetDelete job, and the stack's cover photo stays behind and has to be unstacked manually.

The cleanup now handles non-primary deletions too: if removing a non-primary asset would leave only the primary asset, the stack is dissolved. The primary-deletion behaviour (promote another asset, or delete a would-be single-asset stack) is unchanged.

Fixes #16151

How Has This Been Tested?

  • Added unit test: dissolves the stack when a non-primary asset is deleted and only the primary would remain (confirmed failing against the previous logic, passing with this change).
  • Added unit test: keeps the stack when a non-primary asset is deleted but the primary plus another asset remain.
  • pnpm --filter immich test src/services/asset.service.spec.ts — 54/54 passing.
  • tsc --noEmit and eslint --max-warnings 0 clean on the changed files.

Screenshots (if appropriate)

N/A — server-side logic change, covered by unit tests.

Checklist:

  • I have carefully read CONTRIBUTING.md
  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation if applicable
  • I have no unrelated changes in the PR.
  • I have confirmed that any new dependencies are strictly necessary.
  • I have written tests for new code (if applicable)
  • 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/)

Please describe to which degree, if any, an LLM was used in creating this pull request.

An AI coding assistant was used to help scaffold the unit tests and draft the implementation. The root-cause investigation, the final code, and the design of the fix were directed, reviewed, and verified by me. All tests (asset.service.spec.ts, 54/54), type checks, and lint pass.

@github-actions

Copy link
Copy Markdown
Contributor

This PR has been automatically closed as the description doesn't follow our template. After you edit it to match the template, the PR will automatically be reopened.

Comment thread server/src/services/asset.service.ts Resolved

@danieldietzler danieldietzler left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thank you!

@danieldietzler
danieldietzler requested a review from jrasm91 June 30, 2026 10:48
justadityaraj and others added 2 commits July 22, 2026 12:49
Stack cleanup on asset deletion only ran when the primary asset was
removed. Deleting a non-primary asset never re-validated the stack, so a
stack could be left containing only its primary asset, which lingers in
the timeline as a single-asset stack. This is most visible when deleting
an external library: its assets are removed one by one, and the stack's
cover photo stays behind requiring manual unstacking.

Now a non-primary deletion that would leave only the primary asset
dissolves the stack. The primary-deletion path is unchanged.

Adds unit tests for both the dissolve and keep cases.

Closes immich-app#16151
@danieldietzler
danieldietzler force-pushed the fix/dissolve-stack-on-nonprimary-asset-deletion branch from faa5b0c to 5776b4a Compare July 22, 2026 10:49
@danieldietzler
danieldietzler merged commit a0c7b81 into immich-app:main Jul 22, 2026
49 checks passed
ajgon pushed a commit to deedee-ops/home-ops that referenced this pull request Jul 29, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/immich-app/immich-machine-learning](https://github.com/immich-app/immich) | minor | `v3.0.3` → `v3.1.0` |
| [ghcr.io/immich-app/immich-server](https://github.com/immich-app/immich) | minor | `v3.0.3` → `v3.1.0` |

---

### Release Notes

<details>
<summary>immich-app/immich (ghcr.io/immich-app/immich-machine-learning)</summary>

### [`v3.1.0`](https://github.com/immich-app/immich/releases/tag/v3.1.0)

[Compare Source](immich-app/immich@v3.0.3...v3.1.0)

Welcome to Immich `v3.1.0`!

This release includes several quality of life improvements and another round of bug fixes. Keep reading below for the complete highlights.

##### Highlights

- Upload wakelock (web)
- Undo archive (web)
- Filter assets by server filepath (workflows)
- Quick navigate to maintenance page (web)
- Better slideshow button accessibility (web)
- OIDC role claim sync improvements (OAuth)
- Invalidate sessions on password reset (admin-cli)

##### Upload wakelock (web)

Similar to mobile, the web application will now automatically acquire a wakelock to prevent the screen from dimming while uploads are happening. This feature will require an HTTPS connection.

##### Undo archive (web)

After archiving assets, the success notification now has an “undo” button to undo the action.

![Undo button on success notification](https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/48fe5c0071ecd3700696ea24516267dd.webp)

##### Filter assets by server filepath (workflows)

The asset file filter has a new option “Use path”. When set to true, it will filter based on the actual path on the server rather than the original file name.

![](https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/f75b6701af0ad0acd16f281106e5d571.webp)

##### Filter assets by EXIF metadata (workflows)

A new workflow filter has been added that allows you to filter assets based on their EXIF metadata fields. For now it only supports string comparisons, with numerical comparisons expected to come soon.

<img width="700" alt="Filter by EXIF metadata step configuration options" src="https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/10dbcaddcbeb9bfa7cab1e4029e0f70b.webp" />

##### Quick navigate to maintenance page (web)

The command palette (`CTRL+K` or `/`) now includes an item for the maintenance page.

<img width="600" alt="Command palette with a maintenance page item" src="https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/28134831c6b1a5f1919ceecdadc1ae54.webp" />

##### Better slideshow button visibility (web)

The slideshow buttons on the web are now wrapped in a container with a backdrop blur, making them easier to view when the current asset is very light.

![Slideshow controls on a low contrast image](https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/496215825fbad61a3b2a0c640b5c3aeb.webp)

##### OIDC role claim sync improvements (OAuth)

The OAuth integration in Immich supports setting an initial `isAdmin` value for new users via a role claim. This same process has been updated to now *sync* `isAdmin` on subsequent logins. Additionally, the role claim now supports both single values (`immich_role: 'admin'`) in addition to lists of values ( `immich_role: ["admin", "user"]`), making in more flexible.

##### Invalidate sessions on password reset (admin-cli)

When using the admin command line interface to reset a password, there is now a new option to invalidate existing sessions.

```none
immich-admin reset-admin-password
Found Admin:
- ID=e65e6f88-2a30-4dbe-8dd9-1885f4889b53
- OAuth ID=
- [email protected]
- Name=Immich Admin
? Please choose a new password (optional) immich-is-cool
? Invalidate existing sessions? Yes
The admin password has been updated.
```

##### Date range for map (mobile)

Similar to web, mobile now also supports filtering the map for assets within a given date range.

<img width="500" alt="Mobile map settings page date range options" src="https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/be25f538bcb69574ff21c15c2aa64b27.webp" />

***

<!-- Release notes generated using configuration in .github/release.yml at v3.1.0 -->

##### What's Changed

##### 🚨 Breaking Changes

- chore(mobile): drop support for iOS 14 by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;29780](immich-app/immich#29780)

##### 🚀 Features

- feat(cli): Add --visibility flag to immich CLI upload subcommand by [@&#8203;yuxincs](https://github.com/yuxincs) in [#&#8203;29614](immich-app/immich#29614)
- feat(mobile): custom date range for map by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;26205](immich-app/immich#26205)

##### 🌟 Enhancements

- feat(web): Keep show more open on duplicates by [@&#8203;MontejoJorge](https://github.com/MontejoJorge) in [#&#8203;29734](immich-app/immich#29734)
- fix(server/workflow): add trigger for external libraries AssetCreate by [@&#8203;cratoo](https://github.com/cratoo) in [#&#8203;29597](immich-app/immich#29597)
- chore(seo): remove redundant twitter metadata tags by [@&#8203;cevdetta](https://github.com/cevdetta) in [#&#8203;29801](immich-app/immich#29801)
- feat(web): add wake lock when uploading assets by [@&#8203;diogotcorreia](https://github.com/diogotcorreia) in [#&#8203;29820](immich-app/immich#29820)
- feat(web): undo archive from toast by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;27061](immich-app/immich#27061)
- feat: workflow filter assets by upload path by [@&#8203;benbeckford](https://github.com/benbeckford) in [#&#8203;30000](immich-app/immich#30000)
- feat(web): add maintenance link to command palette by [@&#8203;yamishi13](https://github.com/yamishi13) in [#&#8203;30016](immich-app/immich#30016)
- feat: add album asset event handling by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;29008](immich-app/immich#29008)
- fix(web): improve slideshow controls visibility on bright backgrounds by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29950](immich-app/immich#29950)
- fix: re-evaluate OIDC role claim on every login and support array values by [@&#8203;ImperatorRuscal](https://github.com/ImperatorRuscal) in [#&#8203;29991](immich-app/immich#29991)
- feat: exif metadata workflow filter by [@&#8203;benbeckford](https://github.com/benbeckford) in [#&#8203;29295](immich-app/immich#29295)
- feat: password invalidate sessions by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;30125](immich-app/immich#30125)

##### 🐛 Bug fixes

- fix(mobile): apply exif orientation to remote raw photos on android by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29906](immich-app/immich#29906)
- fix(web): hide stack thumbnail tray in slideshow mode by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29918](immich-app/immich#29918)
- fix(web): use Container component for responsive admin maintenance la… by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29917](immich-app/immich#29917)
- fix(server): updated default CSP config to support videos from V3 player by [@&#8203;l0ll098](https://github.com/l0ll098) in [#&#8203;29830](immich-app/immich#29830)
- fix(server): workflow date filter, make end date inclusive by [@&#8203;kigrup](https://github.com/kigrup) in [#&#8203;29876](immich-app/immich#29876)
- fix(web): URI encode slug and reduce confusion for users by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;29796](immich-app/immich#29796)
- fix(web): clear birth date by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;29959](immich-app/immich#29959)
- fix(server): disable heif security limit by [@&#8203;mertalev](https://github.com/mertalev) in [#&#8203;29954](immich-app/immich#29954)
- fix: zero byte image uploads by [@&#8203;rrrockey](https://github.com/rrrockey) in [#&#8203;29426](immich-app/immich#29426)
- fix(server): return workflow steps in ascending order by [@&#8203;benbeckford](https://github.com/benbeckford) in [#&#8203;29999](immich-app/immich#29999)
- fix(mobile): update album creation to use user-defined name from dialog by [@&#8203;LeLunZ](https://github.com/LeLunZ) in [#&#8203;30002](immich-app/immich#30002)
- fix: long press share quality override preference settings by [@&#8203;alextran1502](https://github.com/alextran1502) in [#&#8203;30030](immich-app/immich#30030)
- fix(web): align ContextMenu z-index with design-system token by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;30015](immich-app/immich#30015)
- fix(web): refresh folder view after asset deletion by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29899](immich-app/immich#29899)
- fix: do not show the whats new page on fresh login by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;30072](immich-app/immich#30072)
- fix(mobile): prevent crash on video widget dispose by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;30078](immich-app/immich#30078)
- fix(web): attach file picker input to DOM so iOS Safari fires change … by [@&#8203;mrxder](https://github.com/mrxder) in [#&#8203;29660](immich-app/immich#29660)
- fix: timebuckets locked permissions by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;30066](immich-app/immich#30066)
- fix: search statistics locked folder permissions by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;30063](immich-app/immich#30063)
- fix(web): fix Country/State filters when set to Unknown by [@&#8203;compscitwilight](https://github.com/compscitwilight) in [#&#8203;30026](immich-app/immich#30026)
- fix(server): file uploads for files with extension only filenames by [@&#8203;compscitwilight](https://github.com/compscitwilight) in [#&#8203;30024](immich-app/immich#30024)
- fix(mobile): stop double close animation when dismissing an asset by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29413](immich-app/immich#29413)
- fix(mobile): back up files moved into a watched folder on android by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29872](immich-app/immich#29872)
- fix(web): lens model search by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;30088](immich-app/immich#30088)
- fix(mobile): add album picker to the partner view bottom sheet by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;30099](immich-app/immich#30099)
- fix(mobile): prevent duplicate album creation during submission by [@&#8203;LeLunZ](https://github.com/LeLunZ) in [#&#8203;30003](immich-app/immich#30003)
- fix(mobile): properly group download tasks for Live Photos by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;29952](immich-app/immich#29952)
- fix(mobile): show real error when an asset can't be added to an album by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29754](immich-app/immich#29754)
- fix(mobile): treat wired ethernet as unmetered on ios by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29351](immich-app/immich#29351)
- fix(server): send id\_token\_hint on OIDC logout by [@&#8203;lorypota](https://github.com/lorypota) in [#&#8203;29720](immich-app/immich#29720)
- fix(mobile): refresh asset stack after deleting viewer item by [@&#8203;PeterOmbodi](https://github.com/PeterOmbodi) in [#&#8203;28164](immich-app/immich#28164)
- fix: limit ocr overlay to images by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;30116](immich-app/immich#30116)
- fix: disable slideshow crossfade on reduced motion by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;29826](immich-app/immich#29826)
- fix(mobile): map unresponsive after viewing asset by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;27036](immich-app/immich#27036)
- fix(mobile): send date-only value for memories query param by [@&#8203;ajuijas](https://github.com/ajuijas) in [#&#8203;30049](immich-app/immich#30049)
- fix: admin user details responsive layout by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;30114](immich-app/immich#30114)
- fix: backup delay translation key parsing by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;30112](immich-app/immich#30112)
- fix(web): use correct date field for shift-click range in Recently Added by [@&#8203;okxint](https://github.com/okxint) in [#&#8203;30071](immich-app/immich#30071)
- fix(server): dissolve stack when its non-primary assets are deleted by [@&#8203;justadityaraj](https://github.com/justadityaraj) in [#&#8203;29354](immich-app/immich#29354)
- fix: always set extension from provided file by [@&#8203;bo0tzz](https://github.com/bo0tzz) in [#&#8203;29839](immich-app/immich#29839)
- fix: locked view and asset view provider by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;30136](immich-app/immich#30136)
- fix(mobile): birthday picker date order follows locale by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29419](immich-app/immich#29419)
- fix(web): restore correct back route when opening person asset via direct URL by [@&#8203;okxint](https://github.com/okxint) in [#&#8203;30129](immich-app/immich#30129)
- fix(web): mirror asset viewer navigation icons in RTL by [@&#8203;noboike](https://github.com/noboike) in [#&#8203;30151](immich-app/immich#30151)
- fix(mobile): allow URL validation to pass when scheme is not provided by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;30142](immich-app/immich#30142)
- fix: run background tasks in root isolate by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;30101](immich-app/immich#30101)
- fix(web): mirror onboarding navigation icons in RTL by [@&#8203;noboike](https://github.com/noboike) in [#&#8203;30158](immich-app/immich#30158)
- fix: min faces user preference by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;30177](immich-app/immich#30177)
- fix(web): use RTL transform origin in AdaptiveImage by [@&#8203;noboike](https://github.com/noboike) in [#&#8203;30182](immich-app/immich#30182)
- fix: don't skip person thumbnail generation if ML is disabled by [@&#8203;bo0tzz](https://github.com/bo0tzz) in [#&#8203;30194](immich-app/immich#30194)
- fix: shared by user detail panel by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;30187](immich-app/immich#30187)
- fix(mobile): prevent timeline scroll to top on unrelated pages by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;30281](immich-app/immich#30281)

##### 📚 Documentation

- chore(security.txt): bump expired Expires field (RFC 9116) by [@&#8203;kobihikri](https://github.com/kobihikri) in [#&#8203;29932](immich-app/immich#29932)
- fix(docs): remove ref to synology channel by [@&#8203;mmomjian](https://github.com/mmomjian) in [#&#8203;30051](immich-app/immich#30051)
- fix: hypertext link to example docker-compose.rootless.yml by [@&#8203;upmcplanetracker](https://github.com/upmcplanetracker) in [#&#8203;30155](immich-app/immich#30155)

##### 🌐 Translations

- feat(docs): add bulgarian readme by [@&#8203;nedevski](https://github.com/nedevski) in [#&#8203;29427](immich-app/immich#29427)
- chore(web): update translations by [@&#8203;weblate](https://github.com/weblate) in [#&#8203;29781](immich-app/immich#29781)

##### New Contributors

- [@&#8203;kobihikri](https://github.com/kobihikri) made their first contribution in [#&#8203;29932](immich-app/immich#29932)
- [@&#8203;kigrup](https://github.com/kigrup) made their first contribution in [#&#8203;29876](immich-app/immich#29876)
- [@&#8203;yuxincs](https://github.com/yuxincs) made their first contribution in [#&#8203;29614](immich-app/immich#29614)
- [@&#8203;cevdetta](https://github.com/cevdetta) made their first contribution in [#&#8203;29801](immich-app/immich#29801)
- [@&#8203;mrxder](https://github.com/mrxder) made their first contribution in [#&#8203;29660](immich-app/immich#29660)
- [@&#8203;compscitwilight](https://github.com/compscitwilight) made their first contribution in [#&#8203;30026](immich-app/immich#30026)
- [@&#8203;nedevski](https://github.com/nedevski) made their first contribution in [#&#8203;29427](immich-app/immich#29427)
- [@&#8203;yamishi13](https://github.com/yamishi13) made their first contribution in [#&#8203;30016](immich-app/immich#30016)
- [@&#8203;lorypota](https://github.com/lorypota) made their first contribution in [#&#8203;29720](immich-app/immich#29720)
- [@&#8203;ImperatorRuscal](https://github.com/ImperatorRuscal) made their first contribution in [#&#8203;29991](immich-app/immich#29991)
- [@&#8203;ajuijas](https://github.com/ajuijas) made their first contribution in [#&#8203;30049](immich-app/immich#30049)
- [@&#8203;justadityaraj](https://github.com/justadityaraj) made their first contribution in [#&#8203;29354](immich-app/immich#29354)
- [@&#8203;pavel-miniutka](https://github.com/pavel-miniutka) made their first contribution in [#&#8203;29939](immich-app/immich#29939)
- [@&#8203;noboike](https://github.com/noboike) made their first contribution in [#&#8203;30151](immich-app/immich#30151)
- [@&#8203;upmcplanetracker](https://github.com/upmcplanetracker) made their first contribution in [#&#8203;30155](immich-app/immich#30155)

**Full Changelog**: <immich-app/immich@v3.0.3...v3.1.0>

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Warsaw)

- 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 becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODUuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI4NS4yIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvbWlub3IiXX0=-->

Reviewed-on: https://git.ajgon.casa/deedee/mark13/pulls/471
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request Jul 29, 2026
…1.0) (#1759)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [immich-app/immich](https://github.com/immich-app/immich) | minor | `v3.0.3` → `v3.1.0` |

---

### Release Notes

<details>
<summary>immich-app/immich (immich-app/immich)</summary>

### [`v3.1.0`](https://github.com/immich-app/immich/releases/tag/v3.1.0)

[Compare Source](immich-app/immich@v3.0.3...v3.1.0)

Welcome to Immich `v3.1.0`!

This release includes several quality of life improvements and another round of bug fixes. Keep reading below for the complete highlights.

##### Highlights

- Upload wakelock (web)
- Undo archive (web)
- Filter assets by server filepath (workflows)
- Quick navigate to maintenance page (web)
- Better slideshow button accessibility (web)
- OIDC role claim sync improvements (OAuth)
- Invalidate sessions on password reset (admin-cli)

##### Upload wakelock (web)

Similar to mobile, the web application will now automatically acquire a wakelock to prevent the screen from dimming while uploads are happening. This feature will require an HTTPS connection.

##### Undo archive (web)

After archiving assets, the success notification now has an “undo” button to undo the action.

![Undo button on success notification](https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/48fe5c0071ecd3700696ea24516267dd.webp)

##### Filter assets by server filepath (workflows)

The asset file filter has a new option “Use path”. When set to true, it will filter based on the actual path on the server rather than the original file name.

![](https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/f75b6701af0ad0acd16f281106e5d571.webp)

##### Filter assets by EXIF metadata (workflows)

A new workflow filter has been added that allows you to filter assets based on their EXIF metadata fields. For now it only supports string comparisons, with numerical comparisons expected to come soon.

<img width="700" alt="Filter by EXIF metadata step configuration options" src="https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/10dbcaddcbeb9bfa7cab1e4029e0f70b.webp" />

##### Quick navigate to maintenance page (web)

The command palette (`CTRL+K` or `/`) now includes an item for the maintenance page.

<img width="600" alt="Command palette with a maintenance page item" src="https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/28134831c6b1a5f1919ceecdadc1ae54.webp" />

##### Better slideshow button visibility (web)

The slideshow buttons on the web are now wrapped in a container with a backdrop blur, making them easier to view when the current asset is very light.

![Slideshow controls on a low contrast image](https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/496215825fbad61a3b2a0c640b5c3aeb.webp)

##### OIDC role claim sync improvements (OAuth)

The OAuth integration in Immich supports setting an initial `isAdmin` value for new users via a role claim. This same process has been updated to now *sync* `isAdmin` on subsequent logins. Additionally, the role claim now supports both single values (`immich_role: 'admin'`) in addition to lists of values ( `immich_role: ["admin", "user"]`), making in more flexible.

##### Invalidate sessions on password reset (admin-cli)

When using the admin command line interface to reset a password, there is now a new option to invalidate existing sessions.

```none
immich-admin reset-admin-password
Found Admin:
- ID=e65e6f88-2a30-4dbe-8dd9-1885f4889b53
- OAuth ID=
- [email protected]
- Name=Immich Admin
? Please choose a new password (optional) immich-is-cool
? Invalidate existing sessions? Yes
The admin password has been updated.
```

##### Date range for map (mobile)

Similar to web, mobile now also supports filtering the map for assets within a given date range.

<img width="500" alt="Mobile map settings page date range options" src="https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/be25f538bcb69574ff21c15c2aa64b27.webp" />

***

<!-- Release notes generated using configuration in .github/release.yml at v3.1.0 -->

##### What's Changed

##### 🚨 Breaking Changes

- chore(mobile): drop support for iOS 14 by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;29780](immich-app/immich#29780)

##### 🚀 Features

- feat(cli): Add --visibility flag to immich CLI upload subcommand by [@&#8203;yuxincs](https://github.com/yuxincs) in [#&#8203;29614](immich-app/immich#29614)
- feat(mobile): custom date range for map by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;26205](immich-app/immich#26205)

##### 🌟 Enhancements

- feat(web): Keep show more open on duplicates by [@&#8203;MontejoJorge](https://github.com/MontejoJorge) in [#&#8203;29734](immich-app/immich#29734)
- fix(server/workflow): add trigger for external libraries AssetCreate by [@&#8203;cratoo](https://github.com/cratoo) in [#&#8203;29597](immich-app/immich#29597)
- chore(seo): remove redundant twitter metadata tags by [@&#8203;cevdetta](https://github.com/cevdetta) in [#&#8203;29801](immich-app/immich#29801)
- feat(web): add wake lock when uploading assets by [@&#8203;diogotcorreia](https://github.com/diogotcorreia) in [#&#8203;29820](immich-app/immich#29820)
- feat(web): undo archive from toast by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;27061](immich-app/immich#27061)
- feat: workflow filter assets by upload path by [@&#8203;benbeckford](https://github.com/benbeckford) in [#&#8203;30000](immich-app/immich#30000)
- feat(web): add maintenance link to command palette by [@&#8203;yamishi13](https://github.com/yamishi13) in [#&#8203;30016](immich-app/immich#30016)
- feat: add album asset event handling by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;29008](immich-app/immich#29008)
- fix(web): improve slideshow controls visibility on bright backgrounds by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29950](immich-app/immich#29950)
- fix: re-evaluate OIDC role claim on every login and support array values by [@&#8203;ImperatorRuscal](https://github.com/ImperatorRuscal) in [#&#8203;29991](immich-app/immich#29991)
- feat: exif metadata workflow filter by [@&#8203;benbeckford](https://github.com/benbeckford) in [#&#8203;29295](immich-app/immich#29295)
- feat: password invalidate sessions by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;30125](immich-app/immich#30125)

##### 🐛 Bug fixes

- fix(mobile): apply exif orientation to remote raw photos on android by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29906](immich-app/immich#29906)
- fix(web): hide stack thumbnail tray in slideshow mode by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29918](immich-app/immich#29918)
- fix(web): use Container component for responsive admin maintenance la… by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29917](immich-app/immich#29917)
- fix(server): updated default CSP config to support videos from V3 player by [@&#8203;l0ll098](https://github.com/l0ll098) in [#&#8203;29830](immich-app/immich#29830)
- fix(server): workflow date filter, make end date inclusive by [@&#8203;kigrup](https://github.com/kigrup) in [#&#8203;29876](immich-app/immich#29876)
- fix(web): URI encode slug and reduce confusion for users by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;29796](immich-app/immich#29796)
- fix(web): clear birth date by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;29959](immich-app/immich#29959)
- fix(server): disable heif security limit by [@&#8203;mertalev](https://github.com/mertalev) in [#&#8203;29954](immich-app/immich#29954)
- fix: zero byte image uploads by [@&#8203;rrrockey](https://github.com/rrrockey) in [#&#8203;29426](immich-app/immich#29426)
- fix(server): return workflow steps in ascending order by [@&#8203;benbeckford](https://github.com/benbeckford) in [#&#8203;29999](immich-app/immich#29999)
- fix(mobile): update album creation to use user-defined name from dialog by [@&#8203;LeLunZ](https://github.com/LeLunZ) in [#&#8203;30002](immich-app/immich#30002)
- fix: long press share quality override preference settings by [@&#8203;alextran1502](https://github.com/alextran1502) in [#&#8203;30030](immich-app/immich#30030)
- fix(web): align ContextMenu z-index with design-system token by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;30015](immich-app/immich#30015)
- fix(web): refresh folder view after asset deletion by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29899](immich-app/immich#29899)
- fix: do not show the whats new page on fresh login by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;30072](immich-app/immich#30072)
- fix(mobile): prevent crash on video widget dispose by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;30078](immich-app/immich#30078)
- fix(web): attach file picker input to DOM so iOS Safari fires change … by [@&#8203;mrxder](https://github.com/mrxder) in [#&#8203;29660](immich-app/immich#29660)
- fix: timebuckets locked permissions by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;30066](immich-app/immich#30066)
- fix: search statistics locked folder permissions by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;30063](immich-app/immich#30063)
- fix(web): fix Country/State filters when set to Unknown by [@&#8203;compscitwilight](https://github.com/compscitwilight) in [#&#8203;30026](immich-app/immich#30026)
- fix(server): file uploads for files with extension only filenames by [@&#8203;compscitwilight](https://github.com/compscitwilight) in [#&#8203;30024](immich-app/immich#30024)
- fix(mobile): stop double close animation when dismissing an asset by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29413](immich-app/immich#29413)
- fix(mobile): back up files moved into a watched folder on android by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29872](immich-app/immich#29872)
- fix(web): lens model search by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;30088](immich-app/immich#30088)
- fix(mobile): add album picker to the partner view bottom sheet by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;30099](immich-app/immich#30099)
- fix(mobile): prevent duplicate album creation during submission by [@&#8203;LeLunZ](https://github.com/LeLunZ) in [#&#8203;30003](immich-app/immich#30003)
- fix(mobile): properly group download tasks for Live Photos by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;29952](immich-app/immich#29952)
- fix(mobile): show real error when an asset can't be added to an album by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29754](immich-app/immich#29754)
- fix(mobile): treat wired ethernet as unmetered on ios by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29351](immich-app/immich#29351)
- fix(server): send id\_token\_hint on OIDC logout by [@&#8203;lorypota](https://github.com/lorypota) in [#&#8203;29720](immich-app/immich#29720)
- fix(mobile): refresh asset stack after deleting viewer item by [@&#8203;PeterOmbodi](https://github.com/PeterOmbodi) in [#&#8203;28164](immich-app/immich#28164)
- fix: limit ocr overlay to images by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;30116](immich-app/immich#30116)
- fix: disable slideshow crossfade on reduced motion by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;29826](immich-app/immich#29826)
- fix(mobile): map unresponsive after viewing asset by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;27036](immich-app/immich#27036)
- fix(mobile): send date-only value for memories query param by [@&#8203;ajuijas](https://github.com/ajuijas) in [#&#8203;30049](immich-app/immich#30049)
- fix: admin user details responsive layout by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;30114](immich-app/immich#30114)
- fix: backup delay translation key parsing by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;30112](immich-app/immich#30112)
- fix(web): use correct date field for shift-click range in Recently Added by [@&#8203;okxint](https://github.com/okxint) in [#&#8203;30071](immich-app/immich#30071)
- fix(server): dissolve stack when its non-primary assets are deleted by [@&#8203;justadityaraj](https://github.com/justadityaraj) in [#&#8203;29354](immich-app/immich#29354)
- fix: always set extension from provided file by [@&#8203;bo0tzz](https://github.com/bo0tzz) in [#&#8203;29839](immich-app/immich#29839)
- fix: locked view and asset view provider by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;30136](immich-app/immich#30136)
- fix(mobile): birthday picker date order follows locale by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29419](immich-app/immich#29419)
- fix(web): restore correct back route when opening person asset via direct URL by [@&#8203;okxint](https://github.com/okxint) in [#&#8203;30129](immich-app/immich#30129)
- fix(web): mirror asset viewer navigation icons in RTL by [@&#8203;noboike](https://github.com/noboike) in [#&#8203;30151](immich-app/immich#30151)
- fix(mobile): allow URL validation to pass when scheme is not provided by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;30142](immich-app/immich#30142)
- fix: run background tasks in root isolate by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;30101](immich-app/immich#30101)
- fix(web): mirror onboarding navigation icons in RTL by [@&#8203;noboike](https://github.com/noboike) in [#&#8203;30158](immich-app/immich#30158)
- fix: min faces user preference by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;30177](immich-app/immich#30177)
- fix(web): use RTL transform origin in AdaptiveImage by [@&#8203;noboike](https://github.com/noboike) in [#&#8203;30182](immich-app/immich#30182)
- fix: don't skip person thumbnail generation if ML is disabled by [@&#8203;bo0tzz](https://github.com/bo0tzz) in [#&#8203;30194](immich-app/immich#30194)
- fix: shared by user detail panel by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;30187](immich-app/immich#30187)
- fix(mobile): prevent timeline scroll to top on unrelated pages by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;30281](immich-app/immich#30281)

##### 📚 Documentation

- chore(security.txt): bump expired Expires field (RFC 9116) by [@&#8203;kobihikri](https://github.com/kobihikri) in [#&#8203;29932](immich-app/immich#29932)
- fix(docs): remove ref to synology channel by [@&#8203;mmomjian](https://github.com/mmomjian) in [#&#8203;30051](immich-app/immich#30051)
- fix: hypertext link to example docker-compose.rootless.yml by [@&#8203;upmcplanetracker](https://github.com/upmcplanetracker) in [#&#8203;30155](immich-app/immich#30155)

##### 🌐 Translations

- feat(docs): add bulgarian readme by [@&#8203;nedevski](https://github.com/nedevski) in [#&#8203;29427](immich-app/immich#29427)
- chore(web): update translations by [@&#8203;weblate](https://github.com/weblate) in [#&#8203;29781](immich-app/immich#29781)

##### New Contributors

- [@&#8203;kobihikri](https://github.com/kobihikri) made their first contribution in [#&#8203;29932](immich-app/immich#29932)
- [@&#8203;kigrup](https://github.com/kigrup) made their first contribution in [#&#8203;29876](immich-app/immich#29876)
- [@&#8203;yuxincs](https://github.com/yuxincs) made their first contribution in [#&#8203;29614](immich-app/immich#29614)
- [@&#8203;cevdetta](https://github.com/cevdetta) made their first contribution in [#&#8203;29801](immich-app/immich#29801)
- [@&#8203;mrxder](https://github.com/mrxder) made their first contribution in [#&#8203;29660](immich-app/immich#29660)
- [@&#8203;compscitwilight](https://github.com/compscitwilight) made their first contribution in [#&#8203;30026](immich-app/immich#30026)
- [@&#8203;nedevski](https://github.com/nedevski) made their first contribution in [#&#8203;29427](immich-app/immich#29427)
- [@&#8203;yamishi13](https://github.com/yamishi13) made their first contribution in [#&#8203;30016](immich-app/immich#30016)
- [@&#8203;lorypota](https://github.com/lorypota) made their first contribution in [#&#8203;29720](immich-app/immich#29720)
- [@&#8203;ImperatorRuscal](https://github.com/ImperatorRuscal) made their first contribution in [#&#8203;29991](immich-app/immich#29991)
- [@&#8203;ajuijas](https://github.com/ajuijas) made their first contribution in [#&#8203;30049](immich-app/immich#30049)
- [@&#8203;justadityaraj](https://github.com/justadityaraj) made their first contribution in [#&#8203;29354](immich-app/immich#29354)
- [@&#8203;pavel-miniutka](https://github.com/pavel-miniutka) made their first contribution in [#&#8203;29939](immich-app/immich#29939)
- [@&#8203;noboike](https://github.com/noboike) made their first contribution in [#&#8203;30151](immich-app/immich#30151)
- [@&#8203;upmcplanetracker](https://github.com/upmcplanetracker) made their first contribution in [#&#8203;30155](immich-app/immich#30155)

**Full Changelog**: <immich-app/immich@v3.0.3...v3.1.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 becomes conflicted, 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:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9naXRodWItcmVsZWFzZSIsInR5cGUvbWlub3IiXX0=-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/1759
dadezzz pushed a commit to dadezzz/infra_docker-compose that referenced this pull request Jul 30, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/immich-app/immich-machine-learning](https://github.com/immich-app/immich) | minor | `v3.0.3` → `v3.1.0` |
| [ghcr.io/immich-app/immich-server](https://github.com/immich-app/immich) | minor | `v3.0.3` → `v3.1.0` |

---

### Release Notes

<details>
<summary>immich-app/immich (ghcr.io/immich-app/immich-machine-learning)</summary>

### [`v3.1.0`](https://github.com/immich-app/immich/releases/tag/v3.1.0)

[Compare Source](immich-app/immich@v3.0.3...v3.1.0)

Welcome to Immich `v3.1.0`!

This release includes several quality of life improvements and another round of bug fixes. Keep reading below for the complete highlights.

##### Highlights

- Upload wakelock (web)
- Undo archive (web)
- Filter assets by server filepath (workflows)
- Quick navigate to maintenance page (web)
- Better slideshow button accessibility (web)
- OIDC role claim sync improvements (OAuth)
- Invalidate sessions on password reset (admin-cli)

##### Upload wakelock (web)

Similar to mobile, the web application will now automatically acquire a wakelock to prevent the screen from dimming while uploads are happening. This feature will require an HTTPS connection.

##### Undo archive (web)

After archiving assets, the success notification now has an “undo” button to undo the action.

![Undo button on success notification](https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/48fe5c0071ecd3700696ea24516267dd.webp)

##### Filter assets by server filepath (workflows)

The asset file filter has a new option “Use path”. When set to true, it will filter based on the actual path on the server rather than the original file name.

![](https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/f75b6701af0ad0acd16f281106e5d571.webp)

##### Filter assets by EXIF metadata (workflows)

A new workflow filter has been added that allows you to filter assets based on their EXIF metadata fields. For now it only supports string comparisons, with numerical comparisons expected to come soon.

<img width="700" alt="Filter by EXIF metadata step configuration options" src="https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/10dbcaddcbeb9bfa7cab1e4029e0f70b.webp" />

##### Quick navigate to maintenance page (web)

The command palette (`CTRL+K` or `/`) now includes an item for the maintenance page.

<img width="600" alt="Command palette with a maintenance page item" src="https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/28134831c6b1a5f1919ceecdadc1ae54.webp" />

##### Better slideshow button visibility (web)

The slideshow buttons on the web are now wrapped in a container with a backdrop blur, making them easier to view when the current asset is very light.

![Slideshow controls on a low contrast image](https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/496215825fbad61a3b2a0c640b5c3aeb.webp)

##### OIDC role claim sync improvements (OAuth)

The OAuth integration in Immich supports setting an initial `isAdmin` value for new users via a role claim. This same process has been updated to now *sync* `isAdmin` on subsequent logins. Additionally, the role claim now supports both single values (`immich_role: 'admin'`) in addition to lists of values ( `immich_role: ["admin", "user"]`), making in more flexible.

##### Invalidate sessions on password reset (admin-cli)

When using the admin command line interface to reset a password, there is now a new option to invalidate existing sessions.

```none
immich-admin reset-admin-password
Found Admin:
- ID=e65e6f88-2a30-4dbe-8dd9-1885f4889b53
- OAuth ID=
- [email protected]
- Name=Immich Admin
? Please choose a new password (optional) immich-is-cool
? Invalidate existing sessions? Yes
The admin password has been updated.
```

##### Date range for map (mobile)

Similar to web, mobile now also supports filtering the map for assets within a given date range.

<img width="500" alt="Mobile map settings page date range options" src="https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/be25f538bcb69574ff21c15c2aa64b27.webp" />

***

<!-- Release notes generated using configuration in .github/release.yml at v3.1.0 -->

##### What's Changed

##### 🚨 Breaking Changes

- chore(mobile): drop support for iOS 14 by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;29780](immich-app/immich#29780)

##### 🚀 Features

- feat(cli): Add --visibility flag to immich CLI upload subcommand by [@&#8203;yuxincs](https://github.com/yuxincs) in [#&#8203;29614](immich-app/immich#29614)
- feat(mobile): custom date range for map by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;26205](immich-app/immich#26205)

##### 🌟 Enhancements

- feat(web): Keep show more open on duplicates by [@&#8203;MontejoJorge](https://github.com/MontejoJorge) in [#&#8203;29734](immich-app/immich#29734)
- fix(server/workflow): add trigger for external libraries AssetCreate by [@&#8203;cratoo](https://github.com/cratoo) in [#&#8203;29597](immich-app/immich#29597)
- chore(seo): remove redundant twitter metadata tags by [@&#8203;cevdetta](https://github.com/cevdetta) in [#&#8203;29801](immich-app/immich#29801)
- feat(web): add wake lock when uploading assets by [@&#8203;diogotcorreia](https://github.com/diogotcorreia) in [#&#8203;29820](immich-app/immich#29820)
- feat(web): undo archive from toast by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;27061](immich-app/immich#27061)
- feat: workflow filter assets by upload path by [@&#8203;benbeckford](https://github.com/benbeckford) in [#&#8203;30000](immich-app/immich#30000)
- feat(web): add maintenance link to command palette by [@&#8203;yamishi13](https://github.com/yamishi13) in [#&#8203;30016](immich-app/immich#30016)
- feat: add album asset event handling by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;29008](immich-app/immich#29008)
- fix(web): improve slideshow controls visibility on bright backgrounds by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29950](immich-app/immich#29950)
- fix: re-evaluate OIDC role claim on every login and support array values by [@&#8203;ImperatorRuscal](https://github.com/ImperatorRuscal) in [#&#8203;29991](immich-app/immich#29991)
- feat: exif metadata workflow filter by [@&#8203;benbeckford](https://github.com/benbeckford) in [#&#8203;29295](immich-app/immich#29295)
- feat: password invalidate sessions by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;30125](immich-app/immich#30125)

##### 🐛 Bug fixes

- fix(mobile): apply exif orientation to remote raw photos on android by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29906](immich-app/immich#29906)
- fix(web): hide stack thumbnail tray in slideshow mode by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29918](immich-app/immich#29918)
- fix(web): use Container component for responsive admin maintenance la… by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29917](immich-app/immich#29917)
- fix(server): updated default CSP config to support videos from V3 player by [@&#8203;l0ll098](https://github.com/l0ll098) in [#&#8203;29830](immich-app/immich#29830)
- fix(server): workflow date filter, make end date inclusive by [@&#8203;kigrup](https://github.com/kigrup) in [#&#8203;29876](immich-app/immich#29876)
- fix(web): URI encode slug and reduce confusion for users by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;29796](immich-app/immich#29796)
- fix(web): clear birth date by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;29959](immich-app/immich#29959)
- fix(server): disable heif security limit by [@&#8203;mertalev](https://github.com/mertalev) in [#&#8203;29954](immich-app/immich#29954)
- fix: zero byte image uploads by [@&#8203;rrrockey](https://github.com/rrrockey) in [#&#8203;29426](immich-app/immich#29426)
- fix(server): return workflow steps in ascending order by [@&#8203;benbeckford](https://github.com/benbeckford) in [#&#8203;29999](immich-app/immich#29999)
- fix(mobile): update album creation to use user-defined name from dialog by [@&#8203;LeLunZ](https://github.com/LeLunZ) in [#&#8203;30002](immich-app/immich#30002)
- fix: long press share quality override preference settings by [@&#8203;alextran1502](https://github.com/alextran1502) in [#&#8203;30030](immich-app/immich#30030)
- fix(web): align ContextMenu z-index with design-system token by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;30015](immich-app/immich#30015)
- fix(web): refresh folder view after asset deletion by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29899](immich-app/immich#29899)
- fix: do not show the whats new page on fresh login by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;30072](immich-app/immich#30072)
- fix(mobile): prevent crash on video widget dispose by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;30078](immich-app/immich#30078)
- fix(web): attach file picker input to DOM so iOS Safari fires change … by [@&#8203;mrxder](https://github.com/mrxder) in [#&#8203;29660](immich-app/immich#29660)
- fix: timebuckets locked permissions by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;30066](immich-app/immich#30066)
- fix: search statistics locked folder permissions by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;30063](immich-app/immich#30063)
- fix(web): fix Country/State filters when set to Unknown by [@&#8203;compscitwilight](https://github.com/compscitwilight) in [#&#8203;30026](immich-app/immich#30026)
- fix(server): file uploads for files with extension only filenames by [@&#8203;compscitwilight](https://github.com/compscitwilight) in [#&#8203;30024](immich-app/immich#30024)
- fix(mobile): stop double close animation when dismissing an asset by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29413](immich-app/immich#29413)
- fix(mobile): back up files moved into a watched folder on android by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29872](immich-app/immich#29872)
- fix(web): lens model search by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;30088](immich-app/immich#30088)
- fix(mobile): add album picker to the partner view bottom sheet by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;30099](immich-app/immich#30099)
- fix(mobile): prevent duplicate album creation during submission by [@&#8203;LeLunZ](https://github.com/LeLunZ) in [#&#8203;30003](immich-app/immich#30003)
- fix(mobile): properly group download tasks for Live Photos by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;29952](immich-app/immich#29952)
- fix(mobile): show real error when an asset can't be added to an album by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29754](immich-app/immich#29754)
- fix(mobile): treat wired ethernet as unmetered on ios by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29351](immich-app/immich#29351)
- fix(server): send id\_token\_hint on OIDC logout by [@&#8203;lorypota](https://github.com/lorypota) in [#&#8203;29720](immich-app/immich#29720)
- fix(mobile): refresh asset stack after deleting viewer item by [@&#8203;PeterOmbodi](https://github.com/PeterOmbodi) in [#&#8203;28164](immich-app/immich#28164)
- fix: limit ocr overlay to images by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;30116](immich-app/immich#30116)
- fix: disable slideshow crossfade on reduced motion by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;29826](immich-app/immich#29826)
- fix(mobile): map unresponsive after viewing asset by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;27036](immich-app/immich#27036)
- fix(mobile): send date-only value for memories query param by [@&#8203;ajuijas](https://github.com/ajuijas) in [#&#8203;30049](immich-app/immich#30049)
- fix: admin user details responsive layout by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;30114](immich-app/immich#30114)
- fix: backup delay translation key parsing by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;30112](immich-app/immich#30112)
- fix(web): use correct date field for shift-click range in Recently Added by [@&#8203;okxint](https://github.com/okxint) in [#&#8203;30071](immich-app/immich#30071)
- fix(server): dissolve stack when its non-primary assets are deleted by [@&#8203;justadityaraj](https://github.com/justadityaraj) in [#&#8203;29354](immich-app/immich#29354)
- fix: always set extension from provided file by [@&#8203;bo0tzz](https://github.com/bo0tzz) in [#&#8203;29839](immich-app/immich#29839)
- fix: locked view and asset view provider by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;30136](immich-app/immich#30136)
- fix(mobile): birthday picker date order follows locale by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29419](immich-app/immich#29419)
- fix(web): restore correct back route when opening person asset via direct URL by [@&#8203;okxint](https://github.com/okxint) in [#&#8203;30129](immich-app/immich#30129)
- fix(web): mirror asset viewer navigation icons in RTL by [@&#8203;noboike](https://github.com/noboike) in [#&#8203;30151](immich-app/immich#30151)
- fix(mobile): allow URL validation to pass when scheme is not provided by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;30142](immich-app/immich#30142)
- fix: run background tasks in root isolate by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;30101](immich-app/immich#30101)
- fix(web): mirror onboarding navigation icons in RTL by [@&#8203;noboike](https://github.com/noboike) in [#&#8203;30158](immich-app/immich#30158)
- fix: min faces user preference by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;30177](immich-app/immich#30177)
- fix(web): use RTL transform origin in AdaptiveImage by [@&#8203;noboike](https://github.com/noboike) in [#&#8203;30182](immich-app/immich#30182)
- fix: don't skip person thumbnail generation if ML is disabled by [@&#8203;bo0tzz](https://github.com/bo0tzz) in [#&#8203;30194](immich-app/immich#30194)
- fix: shared by user detail panel by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;30187](immich-app/immich#30187)
- fix(mobile): prevent timeline scroll to top on unrelated pages by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;30281](immich-app/immich#30281)

##### 📚 Documentation

- chore(security.txt): bump expired Expires field (RFC 9116) by [@&#8203;kobihikri](https://github.com/kobihikri) in [#&#8203;29932](immich-app/immich#29932)
- fix(docs): remove ref to synology channel by [@&#8203;mmomjian](https://github.com/mmomjian) in [#&#8203;30051](immich-app/immich#30051)
- fix: hypertext link to example docker-compose.rootless.yml by [@&#8203;upmcplanetracker](https://github.com/upmcplanetracker) in [#&#8203;30155](immich-app/immich#30155)

##### 🌐 Translations

- feat(docs): add bulgarian readme by [@&#8203;nedevski](https://github.com/nedevski) in [#&#8203;29427](immich-app/immich#29427)
- chore(web): update translations by [@&#8203;weblate](https://github.com/weblate) in [#&#8203;29781](immich-app/immich#29781)

##### New Contributors

- [@&#8203;kobihikri](https://github.com/kobihikri) made their first contribution in [#&#8203;29932](immich-app/immich#29932)
- [@&#8203;kigrup](https://github.com/kigrup) made their first contribution in [#&#8203;29876](immich-app/immich#29876)
- [@&#8203;yuxincs](https://github.com/yuxincs) made their first contribution in [#&#8203;29614](immich-app/immich#29614)
- [@&#8203;cevdetta](https://github.com/cevdetta) made their first contribution in [#&#8203;29801](immich-app/immich#29801)
- [@&#8203;mrxder](https://github.com/mrxder) made their first contribution in [#&#8203;29660](immich-app/immich#29660)
- [@&#8203;compscitwilight](https://github.com/compscitwilight) made their first contribution in [#&#8203;30026](immich-app/immich#30026)
- [@&#8203;nedevski](https://github.com/nedevski) made their first contribution in [#&#8203;29427](immich-app/immich#29427)
- [@&#8203;yamishi13](https://github.com/yamishi13) made their first contribution in [#&#8203;30016](immich-app/immich#30016)
- [@&#8203;lorypota](https://github.com/lorypota) made their first contribution in [#&#8203;29720](immich-app/immich#29720)
- [@&#8203;ImperatorRuscal](https://github.com/ImperatorRuscal) made their first contribution in [#&#8203;29991](immich-app/immich#29991)
- [@&#8203;ajuijas](https://github.com/ajuijas) made their first contribution in [#&#8203;30049](immich-app/immich#30049)
- [@&#8203;justadityaraj](https://github.com/justadityaraj) made their first contribution in [#&#8203;29354](immich-app/immich#29354)
- [@&#8203;pavel-miniutka](https://github.com/pavel-miniutka) made their first contribution in [#&#8203;29939](immich-app/immich#29939)
- [@&#8203;noboike](https://github.com/noboike) made their first contribution in [#&#8203;30151](immich-app/immich#30151)
- [@&#8203;upmcplanetracker](https://github.com/upmcplanetracker) made their first contribution in [#&#8203;30155](immich-app/immich#30155)

**Full Changelog**: <immich-app/immich@v3.0.3...v3.1.0>

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- 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 becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI4MS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
hbjydev pushed a commit to hbjydev/phoebe that referenced this pull request Aug 27, 2026
….0) (#272)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [immich-app/immich](https://github.com/immich-app/immich) | minor | `v3.0.2` → `v3.1.0` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/141) for more information.

---

### Release Notes

<details>
<summary>immich-app/immich (immich-app/immich)</summary>

### [`v3.1.0`](https://github.com/immich-app/immich/releases/tag/v3.1.0)

[Compare Source](immich-app/immich@v3.0.3...v3.1.0)

Welcome to Immich `v3.1.0`!

This release includes several quality of life improvements and another round of bug fixes. Keep reading below for the complete highlights.

#### Highlights

- Upload wakelock (web)
- Undo archive (web)
- Filter assets by server filepath (workflows)
- Quick navigate to maintenance page (web)
- Better slideshow button accessibility (web)
- OIDC role claim sync improvements (OAuth)
- Invalidate sessions on password reset (admin-cli)

##### Upload wakelock (web)

Similar to mobile, the web application will now automatically acquire a wakelock to prevent the screen from dimming while uploads are happening. This feature will require an HTTPS connection.

##### Undo archive (web)

After archiving assets, the success notification now has an “undo” button to undo the action.

![Undo button on success notification](https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/48fe5c0071ecd3700696ea24516267dd.webp)

##### Filter assets by server filepath (workflows)

The asset file filter has a new option “Use path”. When set to true, it will filter based on the actual path on the server rather than the original file name.

![](https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/f75b6701af0ad0acd16f281106e5d571.webp)

##### Filter assets by EXIF metadata (workflows)

A new workflow filter has been added that allows you to filter assets based on their EXIF metadata fields. For now it only supports string comparisons, with numerical comparisons expected to come soon.

<img width="700" alt="Filter by EXIF metadata step configuration options" src="https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/10dbcaddcbeb9bfa7cab1e4029e0f70b.webp" />

##### Quick navigate to maintenance page (web)

The command palette (`CTRL+K` or `/`) now includes an item for the maintenance page.

<img width="600" alt="Command palette with a maintenance page item" src="https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/28134831c6b1a5f1919ceecdadc1ae54.webp" />

##### Better slideshow button visibility (web)

The slideshow buttons on the web are now wrapped in a container with a backdrop blur, making them easier to view when the current asset is very light.

![Slideshow controls on a low contrast image](https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/496215825fbad61a3b2a0c640b5c3aeb.webp)

##### OIDC role claim sync improvements (OAuth)

The OAuth integration in Immich supports setting an initial `isAdmin` value for new users via a role claim. This same process has been updated to now *sync* `isAdmin` on subsequent logins. Additionally, the role claim now supports both single values (`immich_role: 'admin'`) in addition to lists of values ( `immich_role: ["admin", "user"]`), making in more flexible.

##### Invalidate sessions on password reset (admin-cli)

When using the admin command line interface to reset a password, there is now a new option to invalidate existing sessions.

```none
immich-admin reset-admin-password
Found Admin:
- ID=e65e6f88-2a30-4dbe-8dd9-1885f4889b53
- OAuth ID=
- [email protected]
- Name=Immich Admin
? Please choose a new password (optional) immich-is-cool
? Invalidate existing sessions? Yes
The admin password has been updated.
```

##### Date range for map (mobile)

Similar to web, mobile now also supports filtering the map for assets within a given date range.

<img width="500" alt="Mobile map settings page date range options" src="https://static.immich.cloud/blog/48ff8c50-260a-4114-a8a0-117d8989f622/be25f538bcb69574ff21c15c2aa64b27.webp" />

***

<!-- Release notes generated using configuration in .github/release.yml at v3.1.0 -->

#### What's Changed

##### 🚨 Breaking Changes

- chore(mobile): drop support for iOS 14 by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;29780](immich-app/immich#29780)

##### 🚀 Features

- feat(cli): Add --visibility flag to immich CLI upload subcommand by [@&#8203;yuxincs](https://github.com/yuxincs) in [#&#8203;29614](immich-app/immich#29614)
- feat(mobile): custom date range for map by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;26205](immich-app/immich#26205)

##### 🌟 Enhancements

- feat(web): Keep show more open on duplicates by [@&#8203;MontejoJorge](https://github.com/MontejoJorge) in [#&#8203;29734](immich-app/immich#29734)
- fix(server/workflow): add trigger for external libraries AssetCreate by [@&#8203;cratoo](https://github.com/cratoo) in [#&#8203;29597](immich-app/immich#29597)
- chore(seo): remove redundant twitter metadata tags by [@&#8203;cevdetta](https://github.com/cevdetta) in [#&#8203;29801](immich-app/immich#29801)
- feat(web): add wake lock when uploading assets by [@&#8203;diogotcorreia](https://github.com/diogotcorreia) in [#&#8203;29820](immich-app/immich#29820)
- feat(web): undo archive from toast by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;27061](immich-app/immich#27061)
- feat: workflow filter assets by upload path by [@&#8203;benbeckford](https://github.com/benbeckford) in [#&#8203;30000](immich-app/immich#30000)
- feat(web): add maintenance link to command palette by [@&#8203;yamishi13](https://github.com/yamishi13) in [#&#8203;30016](immich-app/immich#30016)
- feat: add album asset event handling by [@&#8203;timonrieger](https://github.com/timonrieger) in [#&#8203;29008](immich-app/immich#29008)
- fix(web): improve slideshow controls visibility on bright backgrounds by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29950](immich-app/immich#29950)
- fix: re-evaluate OIDC role claim on every login and support array values by [@&#8203;ImperatorRuscal](https://github.com/ImperatorRuscal) in [#&#8203;29991](immich-app/immich#29991)
- feat: exif metadata workflow filter by [@&#8203;benbeckford](https://github.com/benbeckford) in [#&#8203;29295](immich-app/immich#29295)
- feat: password invalidate sessions by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;30125](immich-app/immich#30125)

##### 🐛 Bug fixes

- fix(mobile): apply exif orientation to remote raw photos on android by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29906](immich-app/immich#29906)
- fix(web): hide stack thumbnail tray in slideshow mode by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29918](immich-app/immich#29918)
- fix(web): use Container component for responsive admin maintenance la… by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29917](immich-app/immich#29917)
- fix(server): updated default CSP config to support videos from V3 player by [@&#8203;l0ll098](https://github.com/l0ll098) in [#&#8203;29830](immich-app/immich#29830)
- fix(server): workflow date filter, make end date inclusive by [@&#8203;kigrup](https://github.com/kigrup) in [#&#8203;29876](immich-app/immich#29876)
- fix(web): URI encode slug and reduce confusion for users by [@&#8203;meesfrensel](https://github.com/meesfrensel) in [#&#8203;29796](immich-app/immich#29796)
- fix(web): clear birth date by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;29959](immich-app/immich#29959)
- fix(server): disable heif security limit by [@&#8203;mertalev](https://github.com/mertalev) in [#&#8203;29954](immich-app/immich#29954)
- fix: zero byte image uploads by [@&#8203;rrrockey](https://github.com/rrrockey) in [#&#8203;29426](immich-app/immich#29426)
- fix(server): return workflow steps in ascending order by [@&#8203;benbeckford](https://github.com/benbeckford) in [#&#8203;29999](immich-app/immich#29999)
- fix(mobile): update album creation to use user-defined name from dialog by [@&#8203;LeLunZ](https://github.com/LeLunZ) in [#&#8203;30002](immich-app/immich#30002)
- fix: long press share quality override preference settings by [@&#8203;alextran1502](https://github.com/alextran1502) in [#&#8203;30030](immich-app/immich#30030)
- fix(web): align ContextMenu z-index with design-system token by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;30015](immich-app/immich#30015)
- fix(web): refresh folder view after asset deletion by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29899](immich-app/immich#29899)
- fix: do not show the whats new page on fresh login by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;30072](immich-app/immich#30072)
- fix(mobile): prevent crash on video widget dispose by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;30078](immich-app/immich#30078)
- fix(web): attach file picker input to DOM so iOS Safari fires change … by [@&#8203;mrxder](https://github.com/mrxder) in [#&#8203;29660](immich-app/immich#29660)
- fix: timebuckets locked permissions by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;30066](immich-app/immich#30066)
- fix: search statistics locked folder permissions by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;30063](immich-app/immich#30063)
- fix(web): fix Country/State filters when set to Unknown by [@&#8203;compscitwilight](https://github.com/compscitwilight) in [#&#8203;30026](immich-app/immich#30026)
- fix(server): file uploads for files with extension only filenames by [@&#8203;compscitwilight](https://github.com/compscitwilight) in [#&#8203;30024](immich-app/immich#30024)
- fix(mobile): stop double close animation when dismissing an asset by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29413](immich-app/immich#29413)
- fix(mobile): back up files moved into a watched folder on android by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29872](immich-app/immich#29872)
- fix(web): lens model search by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;30088](immich-app/immich#30088)
- fix(mobile): add album picker to the partner view bottom sheet by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;30099](immich-app/immich#30099)
- fix(mobile): prevent duplicate album creation during submission by [@&#8203;LeLunZ](https://github.com/LeLunZ) in [#&#8203;30003](immich-app/immich#30003)
- fix(mobile): properly group download tasks for Live Photos by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;29952](immich-app/immich#29952)
- fix(mobile): show real error when an asset can't be added to an album by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29754](immich-app/immich#29754)
- fix(mobile): treat wired ethernet as unmetered on ios by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29351](immich-app/immich#29351)
- fix(server): send id\_token\_hint on OIDC logout by [@&#8203;lorypota](https://github.com/lorypota) in [#&#8203;29720](immich-app/immich#29720)
- fix(mobile): refresh asset stack after deleting viewer item by [@&#8203;PeterOmbodi](https://github.com/PeterOmbodi) in [#&#8203;28164](immich-app/immich#28164)
- fix: limit ocr overlay to images by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;30116](immich-app/immich#30116)
- fix: disable slideshow crossfade on reduced motion by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;29826](immich-app/immich#29826)
- fix(mobile): map unresponsive after viewing asset by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;27036](immich-app/immich#27036)
- fix(mobile): send date-only value for memories query param by [@&#8203;ajuijas](https://github.com/ajuijas) in [#&#8203;30049](immich-app/immich#30049)
- fix: admin user details responsive layout by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;30114](immich-app/immich#30114)
- fix: backup delay translation key parsing by [@&#8203;YarosMallorca](https://github.com/YarosMallorca) in [#&#8203;30112](immich-app/immich#30112)
- fix(web): use correct date field for shift-click range in Recently Added by [@&#8203;okxint](https://github.com/okxint) in [#&#8203;30071](immich-app/immich#30071)
- fix(server): dissolve stack when its non-primary assets are deleted by [@&#8203;justadityaraj](https://github.com/justadityaraj) in [#&#8203;29354](immich-app/immich#29354)
- fix: always set extension from provided file by [@&#8203;bo0tzz](https://github.com/bo0tzz) in [#&#8203;29839](immich-app/immich#29839)
- fix: locked view and asset view provider by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;30136](immich-app/immich#30136)
- fix(mobile): birthday picker date order follows locale by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29419](immich-app/immich#29419)
- fix(web): restore correct back route when opening person asset via direct URL by [@&#8203;okxint](https://github.com/okxint) in [#&#8203;30129](immich-app/immich#30129)
- fix(web): mirror asset viewer navigation icons in RTL by [@&#8203;noboike](https://github.com/noboike) in [#&#8203;30151](immich-app/immich#30151)
- fix(mobile): allow URL validation to pass when scheme is not provided by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;30142](immich-app/immich#30142)
- fix: run background tasks in root isolate by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;30101](immich-app/immich#30101)
- fix(web): mirror onboarding navigation icons in RTL by [@&#8203;noboike](https://github.com/noboike) in [#&#8203;30158](immich-app/immich#30158)
- fix: min faces user preference by [@&#8203;jrasm91](https://github.com/jrasm91) in [#&#8203;30177](immich-app/immich#30177)
- fix(web): use RTL transform origin in AdaptiveImage by [@&#8203;noboike](https://github.com/noboike) in [#&#8203;30182](immich-app/immich#30182)
- fix: don't skip person thumbnail generation if ML is disabled by [@&#8203;bo0tzz](https://github.com/bo0tzz) in [#&#8203;30194](immich-app/immich#30194)
- fix: shared by user detail panel by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;30187](immich-app/immich#30187)
- fix(mobile): prevent timeline scroll to top on unrelated pages by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;30281](immich-app/immich#30281)

##### 📚 Documentation

- chore(security.txt): bump expired Expires field (RFC 9116) by [@&#8203;kobihikri](https://github.com/kobihikri) in [#&#8203;29932](immich-app/immich#29932)
- fix(docs): remove ref to synology channel by [@&#8203;mmomjian](https://github.com/mmomjian) in [#&#8203;30051](immich-app/immich#30051)
- fix: hypertext link to example docker-compose.rootless.yml by [@&#8203;upmcplanetracker](https://github.com/upmcplanetracker) in [#&#8203;30155](immich-app/immich#30155)

##### 🌐 Translations

- feat(docs): add bulgarian readme by [@&#8203;nedevski](https://github.com/nedevski) in [#&#8203;29427](immich-app/immich#29427)
- chore(web): update translations by [@&#8203;weblate](https://github.com/weblate) in [#&#8203;29781](immich-app/immich#29781)

#### New Contributors

- [@&#8203;kobihikri](https://github.com/kobihikri) made their first contribution in [#&#8203;29932](immich-app/immich#29932)
- [@&#8203;kigrup](https://github.com/kigrup) made their first contribution in [#&#8203;29876](immich-app/immich#29876)
- [@&#8203;yuxincs](https://github.com/yuxincs) made their first contribution in [#&#8203;29614](immich-app/immich#29614)
- [@&#8203;cevdetta](https://github.com/cevdetta) made their first contribution in [#&#8203;29801](immich-app/immich#29801)
- [@&#8203;mrxder](https://github.com/mrxder) made their first contribution in [#&#8203;29660](immich-app/immich#29660)
- [@&#8203;compscitwilight](https://github.com/compscitwilight) made their first contribution in [#&#8203;30026](immich-app/immich#30026)
- [@&#8203;nedevski](https://github.com/nedevski) made their first contribution in [#&#8203;29427](immich-app/immich#29427)
- [@&#8203;yamishi13](https://github.com/yamishi13) made their first contribution in [#&#8203;30016](immich-app/immich#30016)
- [@&#8203;lorypota](https://github.com/lorypota) made their first contribution in [#&#8203;29720](immich-app/immich#29720)
- [@&#8203;ImperatorRuscal](https://github.com/ImperatorRuscal) made their first contribution in [#&#8203;29991](immich-app/immich#29991)
- [@&#8203;ajuijas](https://github.com/ajuijas) made their first contribution in [#&#8203;30049](immich-app/immich#30049)
- [@&#8203;justadityaraj](https://github.com/justadityaraj) made their first contribution in [#&#8203;29354](immich-app/immich#29354)
- [@&#8203;pavel-miniutka](https://github.com/pavel-miniutka) made their first contribution in [#&#8203;29939](immich-app/immich#29939)
- [@&#8203;noboike](https://github.com/noboike) made their first contribution in [#&#8203;30151](immich-app/immich#30151)
- [@&#8203;upmcplanetracker](https://github.com/upmcplanetracker) made their first contribution in [#&#8203;30155](immich-app/immich#30155)

**Full Changelog**: <immich-app/immich@v3.0.3...v3.1.0>

### [`v3.0.3`](https://github.com/immich-app/immich/releases/tag/v3.0.3)

[Compare Source](immich-app/immich@v3.0.2...v3.0.3)

### v3.0.3

- various bug fixes
- we push to our own F-Droid repo at <https://app.futo.org/fdroid/repo> now. If you're using F-Droid, please pull the application from there from now on
- fixes an issue where LivePhotos upload from the background isn't showing up.

> \[!Note]
> In some specific circumstances, newly uploaded Live Photos could have broken thumbnails. If you see any such cases, please run the "missing" job for thumbnails or wait for the respective nightly job to clear it up.

<!-- Release notes generated using configuration in .github/release.yml at v3.0.3 -->

#### What's Changed

##### 🚀 Features

- feat: publish app releases to FUTO F-Droid repo by [@&#8203;bo0tzz](https://github.com/bo0tzz) in [#&#8203;29804](immich-app/immich#29804)

##### 🐛 Bug fixes

- fix(web): closing plugin method picker selects "unknown" method by [@&#8203;benbeckford](https://github.com/benbeckford) in [#&#8203;29784](immich-app/immich#29784)
- fix: unauthorized album owner update by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;29883](immich-app/immich#29883)
- fix: still part of live photo hidden on bg upload by [@&#8203;shenlong-tanwen](https://github.com/shenlong-tanwen) in [#&#8203;29884](immich-app/immich#29884)
- fix: system appbar icon color has incorrect color in asset viewer by [@&#8203;alextran1502](https://github.com/alextran1502) in [#&#8203;29885](immich-app/immich#29885)
- fix: locked visibility in search random endpoint by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;29887](immich-app/immich#29887)
- fix(mobile): send a full datetime from the android memories widget by [@&#8203;santoshakil](https://github.com/santoshakil) in [#&#8203;29689](immich-app/immich#29689)
- fix: memory search date validation by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;29907](immich-app/immich#29907)
- fix(server): set hvc1 tag when using hwa by [@&#8203;mertalev](https://github.com/mertalev) in [#&#8203;29908](immich-app/immich#29908)
- fix(mobile): clear zoom state when swapping assets by [@&#8203;agg23](https://github.com/agg23) in [#&#8203;29909](immich-app/immich#29909)
- fix: Ken Burns effect on sliver app bar jittery on Android by [@&#8203;alextran1502](https://github.com/alextran1502) in [#&#8203;29890](immich-app/immich#29890)

##### 📚 Documentation

- fix(docs): update fdroid link  by [@&#8203;mmomjian](https://github.com/mmomjian) in [#&#8203;29797](immich-app/immich#29797)
- feat: system integrity docs by [@&#8203;danieldietzler](https://github.com/danieldietzler) in [#&#8203;29911](immich-app/immich#29911)

##### 🌐 Translations

- chore(web): update translations by [@&#8203;weblate](https://github.com/weblate) in [#&#8203;29774](immich-app/immich#29774)
- fix(mobile): correct person age singular pluralization by [@&#8203;tech00exploere](https://github.com/tech00exploere) in [#&#8203;29868](immich-app/immich#29868)

#### New Contributors

- [@&#8203;tech00exploere](https://github.com/tech00exploere) made their first contribution in [#&#8203;29868](immich-app/immich#29868)

**Full Changelog**: <immich-app/immich@v3.0.2...v3.0.3>

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/London)

- 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 becomes conflicted, 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 [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNjAuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI2MC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9naXRodWItcmVsZWFzZSIsInR5cGUvbWlub3IiXX0=-->

Reviewed-on: https://forgejo.hayden.moe/hayden/phoebe/pulls/272
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.

[BUG] Stacks not removed on Library deletion

2 participants