chore: merge upstream immich-app/immich (2026-03-12)#80
Merged
Conversation
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>
It's not being used right now; can always add it back :P
Videos have recently been changed to support zooming, but this can make the controls in the centre of the screen unergonomic as they will either stay in the centre when dismissing, or stick to the video when zooming. Neither is great. We should align the behaviour with other apps which has the play/pause toggle at the bottom of the screen with the seeker bar instead. Co-authored-by: Alex <alex.tran1502@gmail.com>
immich-app#26807) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
The numbers in the backup page are not monospace, and so changes cause the layout to shift. Using tabular figures (monospace) will prevent that. Refs: immich-app#25021
* feat(mobile): use material design 3 slider The new slider is easier to use, and looks more modern. * chore: add shadow to button and text for better visibility --------- Co-authored-by: Alex <alex.tran1502@gmail.com>
* Add support for showing animated images in AssetViewer with AnimatedImageStreamCompleter * Add GIF overlay to thumbnail tile for animated assets * formatting * require isAnimated parameter in image providers for better asset handling * feat: refactor AnimatedImageStreamCompleter to use streams for codec loading and initial image handling * formatting * add isAnimatedImage property to BaseAsset * remove ApiService.getRequestHeaders() usage
* use cookiejar * cookie duping hook * remove old pref * handle network switching on logout * remove bootstrapCookies * dead code * fix cast * use constants * use new event name * update api
Co-authored-by: Your Name <brendan.ngo@okendo.io> Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
…app#26813) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…h-app#26851) We recently changed the asset viewer to use a gradient. The circle button looks out of place now.
fix(web): fix zoom touch event handling and add clarifying comments - Suppress Safari's synthetic dblclick on double-tap which conflicts with zoom-image's touchstart-based zoom - Add comment explaining pointer-events-none on zoom transform wrapper - Add comments for touchAction and overflow style overrides
…mmich-app#26868) * fix(server): restrict individual shared link asset removal to owners * make open-api
* refactor: move encoded video to asset files table * chore: update
…-app#26831) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…erge # Conflicts: # .github/workflows/docker.yml # mobile/lib/utils/migration.dart # mobile/lib/widgets/asset_viewer/video_controls.dart # pnpm-lock.yaml # server/src/dtos/person.dto.ts # server/src/services/asset-media.service.spec.ts # server/src/services/cli.service.spec.ts # server/src/services/media.service.ts # server/src/services/memory.service.spec.ts # server/src/services/metadata.service.ts # server/src/services/person.service.spec.ts # server/src/services/search.service.spec.ts # server/src/services/session.service.spec.ts # server/src/services/shared-link.service.spec.ts # server/src/services/sync.service.spec.ts # server/src/services/user.service.spec.ts # server/test/factories/types.ts # server/test/small.factory.ts # web/src/lib/actions/zoom-image.ts # web/src/lib/components/admin-settings/StorageTemplateSettings.svelte # web/src/lib/components/asset-viewer/asset-viewer.svelte # web/src/lib/components/asset-viewer/editor/transform-tool/crop-area.spec.ts # web/src/lib/components/asset-viewer/photo-viewer.svelte # web/src/lib/components/assets/thumbnail/video-thumbnail.svelte # web/src/lib/components/memory-page/memory-photo-viewer.svelte # web/src/lib/components/share-page/individual-shared-viewer.svelte # web/src/lib/managers/edit/transform-manager.svelte.ts # web/src/lib/services/asset.service.ts
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Merges 55 upstream commits from
immich-app/immichinto our fork.Key upstream changes
asset_filestable (refactor: move encoded video to asset files table immich-app/immich#26863), test factory refactors (chore: refactor test factories immich-app/immich#26804, refactor: small test factories immich-app/immich#26862), Sony make/model extraction (fix(server): extract make/model from sony video files immich-app/immich#26833), shared link fixes (fix(server): restrict individual shared link asset removal to owners immich-app/immich#26868, fix: add to shared link immich-app/immich#26886)Conflicts resolved (28 files)
.github/workflows/docker.yml— kept fork's custom GHCR workflowserver/src/services/media.service.ts— preserved S3 storage integration (try/finally cleanup), adopted upstream'sasset_filestable pattern (upsertFile/deleteFiles)server/src/services/metadata.service.ts— preserved S3 local file handling, applied upstream's Sony make/model + type fixesserver/src/dtos/person.dto.ts— kept fork'stype/speciesfields, adopted upstream'sasDateStringwrapperserver/test/small.factory.ts— preserved fork factories (partner, session, shared space, person, asset edit, album), merged upstream's structural changesserver/src/services/*.spec.ts(11 files) — restoredfactoryimports lost during merge, added type casts for KyselyShallowDehydrateObjectmismatchesserver/src/repositories/storage-migration.repository.ts— updated to queryasset_filetable instead of removedencodedVideoPathcolumnpnpm-lock.yaml— regenerated from upstream base + fork depsmobile/(2 files) — adopted upstream's migration v25, video control shadowsVerification
Test plan
🤖 Generated with Claude Code