Releases: immichFrame/ImmichFrame
Release list
v1.0.37.0
📦 ImmichFrame Release v1.0.37.0 – July 17, 2026
This release rolls back the memories timezone workaround now that Immich fixes memory date handling upstream.
What's Changed
⚡ Fixes
🐛 Revert memories timezone fix
ImmichFrame previously appended a timezone offset to the Immich memories for query parameter (#660) to work around inconsistent date handling. Immich has since fixed memory search date validation upstream
(immich-app/immich#29907), so that workaround is no longer needed and now conflicts with the server-side behavior. This release reverts it, restoring plain calendar-date filtering so your memories show up correctly again. The bundled Immich
OpenAPI spec was refreshed as part of the revert.
Full Changelog: v1.0.36.0...v1.0.37.0
v1.0.36.0
📦 ImmichFrame Release v1.0.36.0 – July 14, 2026
This release adds a startup guard that fails fast when ImmichFrame is pointed at an incompatible Immich server, logs each server's version, and cleans up how settings are handled internally.
What's Changed
✨ New Features
🚦 Startup version check enforces Immich v3
ImmichFrame already targets the Immich v3 API — this release now enforces it at startup. On boot, it checks the version of every configured Immich server and refuses to start if any server is older than v3, is unreachable, or its version can't be determined. Previously, an incompatible (older) server would let ImmichFrame start but then fail later with a cryptic
deserialization error — for example, Immich changed an asset's duration from a string like "0:00:00.00000" to integer milliseconds, which broke image loading. Now you get a clear critical log message naming the affected server, and the container stops instead of silently misbehaving.
What you need to do: Make sure your Immich server(s) are on v3.0 or newer. If ImmichFrame won't start, check the logs for the offending server.
💡 Tip: In Docker, pair this with a restart policy (e.g.
restart: unless-stopped) so ImmichFrame retries automatically if an Immich server is still coming up during boot.
The bundled Immich OpenAPI spec was also bumped to 3.0.2 as part of this change.
📋 Immich server version logging
ImmichFrame now logs the version of each configured Immich server at startup, so you can confirm compatibility at a glance. Previous startup log noise was trimmed at the same time, making the logs easier to read.
🔨 Maintenance
🔧 Simplified settings handling
Settings are now split into dedicated client and server interfaces. As a result, the /api/Config endpoint is structurally limited to client-safe values only — server-only secrets such as API keys, the webhook URL, the authentication secret, and web-calendar URLs can no longer reach the client. This change also makes the per-account asset tracker (BloomFilter) thread-safe and reworks how the account-selection strategy is constructed for more reliable multi-account setups.
Full Changelog: v1.0.35.0...v1.0.36.0
v1.0.35.0
📦 ImmichFrame Release v1.0.35.0 – July 8, 2026
This release fixes memories failing to load against newer Immich servers, along with a stale QR code/link bug in the info overlay.
What's Changed
⚡ Fixes
🐛 Fixed memories not loading on newer Immich servers
The "on this day" memories row could fail to load entirely against newer Immich servers, which now strictly require a timezone offset on the date sent to the memories endpoint. ImmichFrame was dropping that offset before sending the request, causing Immich to reject it. The request now correctly includes your local timezone offset, so memories load reliably again.
🐛 Fixed stale QR code and "Open in Immich" link during slideshow
The QR code and "Open in Immich" link in the info overlay could get stuck pointing at the first photo shown, even after the slideshow moved on to new images. Opening the info overlay now always shows the QR code and link for the photo currently on screen.
New Contributors
Full Changelog: v1.0.34.0...v1.0.35.0
v1.0.34.0
📦 ImmichFrame Release v1.0.34.0 – July 2, 2026
This release brings ImmichFrame up to date with Immich v3, adds a new per-asset faces API
for richer previews, and fixes long-standing video stall and slideshow transition freezes.
What's Changed
⚠️ Breaking Changes
💥 Update to Immich v3
ImmichFrame now targets the Immich v3 API. This is a major migration that updates the
OpenAPI spec, standardizes asset identifiers to GUIDs across all selection, filtering, and
paging flows, and switches album loading (including excluded albums) to paginated metadata
searches so large libraries are handled reliably. It also adds a new Asset Faces endpoint
that fetches per-asset face details for richer home-page previews, with faces now loaded
only on zoom/pan and skipped for videos. Make sure your Immich server is running v3 or
newer before upgrading.
⚡ Fixes
🐛 Asset transition & video stall freezes
Fixes cases where the slideshow could lock up mid-transition or freeze on a stalled video
(closes #601). Auto-skip now detects
stalled videos and asset load errors and escalates with throttling, a watchdog recovers from
hangs, and transition locking plus resource teardown were hardened to avoid stuck states. A
new asset-error callback lets the frame react cleanly to media load/playback failures.
🐛 Memories date
Corrects the date handling for the Memories feature so memory-based assets are selected and
displayed against the right day.
🔨 Maintenance
🔧 Update NPM packages
Routine dependency bump for the frontend and docs npm packages to keep the build current and
pick up upstream security and bug fixes.
Full Changelog: v1.0.33.0...v1.0.34.0
v1.0.33.0
What's Changed
✨ New Features
🔄 Auto-Refresh on Connection Error
When ImmichFrame can't reach your Immich server, the error screen now shows a pulsing message and automatically reloads the page every 30 seconds until the connection is restored. Previously the frame would just sit on the error screen indefinitely — now it recovers on its own as soon as your server comes back online.
📓 Documentation
📖 Major Rewrite: Frameo Installation Guide
PR #593 by @Torstein-Eide
The Frameo digital photo frame setup instructions have been completely rewritten from the ground up. The guide is now clearer, better structured, and includes new screenshots for both the default app and WebView setup flows — making it much easier to get ImmichFrame running on Frameo devices.
🔨 Maintenance
🔧 Dependency Updates (ImmichFrame & Docusaurus)
Frontend (immichFrame.Web) and documentation (docs) dependencies have been updated to their latest compatible versions.
New Contributors
- 🎉 @Torstein-Eide made their first contribution in #593 — welcome!
Full Changelog: v1.0.32.0...v1.0.33.0
v1.0.32.0
📦 ImmichFrame Release v1.0.32.0 – March 02, 2026
One of the bigger releases in a while — featuring long-awaited video support, a polished animated splash screen, and a handful of quality-of-life improvements and bug fixes.
What's Changed
✨ New Features
🎬 [Experimental] Video Support
ImmichFrame can now display videos from your Immich library. Videos are streamed directly from Immich rather than buffered into memory, keeping resource usage low and handling large files gracefully. A Service Worker injects the Authorization header so video requests are authenticated transparently — no extra configuration required.
Safari and iOS users will appreciate proper range request handling: video scrubbing and seeking now work correctly, as streams are served in a seekable, cacheable format that satisfies Safari's strict media requirements.
To enable video playback, set ShowVideos: true in your config. See the video playback docs for full details and known limitations.
🔒 Basic Auth Support for Calendar
The iCal calendar integration now supports password-protected calendars. Credentials can be passed using the standard URL userinfo format:
https://user:password@calendar.example.com/path/to/calendar.ics
This is optional and fully backwards-compatible — existing calendar URLs without credentials continue to work as before.
✨ Animated Splash Logo
The loading screen now features a smooth animated SVG splash logo, replacing the static one. A small but noticeable polish touch — especially visible on slower devices or cold starts.
🌡️ Cleaner Weather Display
The weather widget now shows only the degree symbol (°) instead of an explicit unit label, reducing visual clutter. Your configured temperature unit is still respected — this is a display-only change.
⚡ Fixes
📅 Calendar Date Search Fix
Calendar event lookup was using DateTime.UtcNow instead of DateTime.Today, which could cause off-by-one date errors depending on the server's timezone. Now correctly uses local date for event matching.
🧠 Memories Date Fix
Resolved an edge case where memory dates were calculated incorrectly, causing the wrong assets to surface in the Memories view. This was a recurring issue that is now properly addressed.
🍎 Range Header Forwarding (Safari/iOS Video Fix)
Safari and iOS require HTTP range requests to load and seek video. This fix ensures range headers are correctly forwarded to Immich and the response is streamed back in a seekable format, resolving playback failures on Apple devices.
📓 Documentation
🤖 Updated Android / Frameo Setup Instructions
Android and Frameo setup instructions have been expanded and improved with clearer steps and a direct APK download link, making it easier to get ImmichFrame running on these platforms.
🚀 Other Changes
🔐 NPM Dependency Security Updates
NPM dependencies in the docs site have been updated to resolve known security vulnerabilities.
New Contributors
Full Changelog: v1.0.31.0...v1.0.32.0
v1.0.31.0
📦 ImmichFrame Release v1.0.31.0 – January 21, 2026
What's Changed
✨ New Features
⚡ Fixes
- Fix asset-info overlap by @RealFinalCode in #531
- Fix: Black background for iOS safe area fix by @3rob3 in #528
- Fix: immichapi client generation by @JW-CH in #542
- Fix: Handle null albums, people, and excluded albums by @jrh3k5 in #535
- Fix: Handle multiple weather icons by @3rob3 in #569
📓 Documentation
🚀 Other changes
- Chore: Update Docusaurus packages and config by @JW-CH in #564
- Chore: Update node version in workflow by @JW-CH in #566
- Chore: Remove unused packages, update npm packages by @JW-CH in #565
New Contributors
- @RealFinalCode made their first contribution in #531
- @jrh3k5 made their first contribution in #535
- @ahal made their first contribution in #537
Full Changelog: v1.0.30.0...v1.0.31.0
v1.0.30.0
📦 ImmichFrame Release v1.0.30.0 – December 10, 2025
What's Changed
✨ New Features
- Manifest and services for Android/Desktop PWA by @3rob3 in #501
- Configurable config path by @jfly in #512
- Add a
ApiKeyFileoption by @jfly in #511
⚡ Fixes
📓 Documentation
- Chore: Update domain to immichframe.dev by @JW-CH in #515
- Add release link to frameo docs by @ddzoan in #520
🔨 Maintenance
- Chore: Fix OpenApi generation with oazapfts by @JW-CH in #498
- Use Central Package Management (cpm), move TargetFramework to BuildProps by @JW-CH in #519
🚀 Other changes
- Bump node-forge from 1.3.1 to 1.3.2 in /docs by @dependabot[bot] in #516
- Bump glob from 10.4.5 to 10.5.0 in /immichFrame.Web by @dependabot[bot] in #517
New Contributors
Full Changelog: v1.0.29.0...v1.0.30.0
v1.0.29.0
📦 ImmichFrame Release v1.0.29.0 – October 12, 2025
What's Changed
✨ New Features
- Feat: Add AssetController test with direct settings DI by @jpg0 in #425
- Feat: Add the weather icon for current conditions by @rgregg in #468
- Feat: Add ClockDateFormat string to format the date on the clock by @rgregg in #467
- Feat: Respect ImageFill configuration in splitview layout by @XanderStrike in #473
- Feat: Update QR Code to redirect to my.immich.app by @leocb in #490
⚡ Fixes
- Fix: Permit RefreshAlbumPeopleInterval of 0 by @jpg0 in #441
- Fix: Memories cache should last one day by @jpg0 in #442
- Fix: Config case-insensitivity by @3rob3 in #457
- Fix: Missing config directory by @JW-CH in #487
- Fix: Transition flickering by @3rob3 in #483
📓 Documentation
- Docs: Add instruction to find frameo webview path by @mammuth in #447
- Docs: Api key permission docs by @3rob3 in #450
- Docs: Update apps.md by @DevilsDesigns in #458
- Docs: Add additional required steps to contribution guide by @rgregg in #469
🔨 Maintenance
- Chore: Bump devalue from 5.1.1 to 5.3.2 in /immichFrame.Web by @dependabot[bot] in #456
- Chore: Update NuGet dependencies by @JW-CH in #486
- Chore: Fix timeout type by @JW-CH in #489
- Chore: Update npm dependencies, update dockerfile by @JW-CH in #488
New Contributors
- @mammuth made their first contribution in #447
- @rgregg made their first contribution in #469
- @XanderStrike made their first contribution in #473
- @leocb made their first contribution in #490
Full Changelog: v1.0.28.0...v1.0.29.0
v1.0.28.0
📦 ImmichFrame Release v1.0.28.0 – July 15, 2025
What's Changed
✨ New Features
⚡ Fixes
- Fix: allow empty general settings by @jpg0 in #430
- Added ImmichServerUrl to AssetResponseDto by @jpg0 in #424
📓 Documentation
🔨 Maintenance
Full Changelog: v1.0.27.2...v1.0.28.0