Skip to content

chore: merge upstream immich-app/immich (2026-03-09)#57

Merged
Deeds67 merged 19 commits intomainfrom
merge/upstream-2026-03-09
Mar 9, 2026
Merged

chore: merge upstream immich-app/immich (2026-03-09)#57
Deeds67 merged 19 commits intomainfrom
merge/upstream-2026-03-09

Conversation

@Deeds67
Copy link
Collaborator

@Deeds67 Deeds67 commented Mar 9, 2026

Summary

  • Merge 18 commits from upstream immich-app/immich main branch
  • Single conflict resolved in mobile/lib/utils/migration.dart (took upstream's Android platform guard for trashed asset migration)

Upstream changes

  • Audio codec: Rename LibOpusOpus with backwards-compatible migration, DTO transform, and encoder mapping
  • Mobile: Android orientation fix, trashed asset migration restricted to Android, asset edit sync
  • Web: Double-click zoom in photo viewer, album event system improvements, context menu overflow fix, responsive video duration, crop bounds fix, RTL support
  • ML: OpenVINO CPU support enabled, device detection moved to session creation time
  • E2E: resetDatabase() uses TRUNCATE with deadlock retry, improved timeline selector scoping

Fork compatibility

All fork features verified intact: Shared Spaces, Storage Migration, Pet Detection, Image Editing.

Test plan

  • CI checks pass (server tests, web tests, static analysis, SDK generation)
  • No regressions in fork-specific features

🤖 Generated with Claude Code

uhthomas and others added 19 commits March 5, 2026 17:45
The background of the photo view does not extend below the height of the
viewport, and so the asset details fade in over black with the photo
view, and the standard surface colour scheme of the scaffold for the
rest. This leads to a janky animation. We can't change the background of
the scaffold to black, as it in turn makes the iOS bouncing scroll
physics cut off incorrectly. The best fix is to remove background
decoration from the photo view, and defer to the parent to colour the
background.

Co-authored-by: Alex <alex.tran1502@gmail.com>
* feat(mobile): SyncAssetEditV1

* fix: websocket handling

* fix: server version requirement

* fix: revert pubspec changes
Search results use a different provider than the main timeline, and they
appear appear to have diverged a bit. This means that assets can
sometimes look wrong or different in search compared to the main
timeline or albums.
…cing glide exposure (immich-app#26747)

* feat(android): enhance playback style detection using MIME type

* feat(android): improve playback style detection for GIF and WebP formats

* fix(android): make playback style detection faster

* refactor(android): simplify XMP reading logic for API 29 and below

* update playback style detection documentation

* use DefaultImageHeaderParser instead of all available ones for webp playbackStyle type detection
* fix(mobile): correct local asset dimensions

We are constraining the size of videos so that they play nicely with
hero animations, and don't stretch in weird ways. This however caused a
regression as we are not account for local assets on Android which have
un-oriented dimensions.

* post-orientation width and height in local sync

* migration

* no need to handle it in asset viewer

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
immich-app#26736)

* Fix opus handling as accepted audio codec in transcode policy

Fix the issue when opus is among accepted audio codecs in transcode policy
(which is default) but it still triggers transcoding because the codec name
from ffprobe (opus) does not match `libopus` literal in Immich.

Make a distinction between a codec name and encoder:
- codec name: switch to `opus` as the audio codec name. This matches what ffprobe
returns for a media file with opus audio.
- encoder: continue using the `libopus` encoder in ffmpeg.

* Add unit tests for accepted audio codecs and for libopus encoder

* Add db migration for ffmpeg.targetAudioCodec opus

* backward compatibility

* tweak

* noisy logs

* full mapping

* make check happy

* mark deprecated

* update api

* indexOf

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
* Enable OpenVINO CPU acceleration in Immich

* Remove unnecessary debug log

* Removing checking for device_ids for openvino since cpu will always be available

* Find OpenVINOExecutionProvider index instead of assuming index 0

* Fix openvino tests

* Fix failing test mock. OpenVINO expects provider options, but cuda provide doesn't so use that for mocked tests.

* Support empty provider options in OrtSessions in which case ONNXRuntime will use its own defaults

* Use OpenVINOExecutionProvider for test_sets_provider_options_kwarg

* fix mock

* simplify

* unused variable

---------

Co-authored-by: Aleksander <pejcic@adobe.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
…x selectDay selector scoping (immich-app#26776)

fix(e2e): optimize resetDatabase with TRUNCATE and fix selectDay selector scoping
…mich-app#26726)

* fix(migration): restrict trashed asset migration to Android platform

* playbackStyle migration add different log depending on platform
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
…-03-09

# Conflicts:
#	mobile/lib/utils/migration.dart
@Deeds67 Deeds67 added the changelog:skip Skip changelog entry label Mar 9, 2026
@Deeds67 Deeds67 changed the title Merge upstream immich-app/immich (2026-03-09) chore: merge upstream immich-app/immich (2026-03-09) Mar 9, 2026
@Deeds67 Deeds67 merged commit 217735c into main Mar 9, 2026
34 of 35 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.