• v1.4.2 581f6ee87b

    jessikitty released this 2026-06-10 16:54:03 +10:00 | 2 commits to main since this release

    What's changed

    • Background blur — reduced brightness (0.350.25) and saturation (0.80.4) so the blurred backdrop is a dark, near-monochrome wash that doesn't compete with the main photo
    • Canvas pile photos — applied saturate(0.45) sepia(0.25) brightness(0.88) filter plus a stronger warm amber overlay (rgba(140,110,60,0.35)) giving scattered photos an aged, printed-photo look
    Downloads
  • jessikitty released this 2026-05-22 19:52:12 +10:00 | 48 commits to dev since this release

    Frambe v1.4.0-dev — Server/Client Admin Dashboard

    Admin Dashboard (/admin)

    • Real-time client management via WebSocket
    • Cards for each connected frame showing IP, status (idle/playing/sleeping), and editable name
    • Source selector — dropdown with all albums and people from Immich, plus Random and Favorites
    • Playback controls — Start, Stop, Next, Prev
    • Power controls — Sleep (blacks out screen), Wake, Refresh (reloads page)
    • Slide interval — range slider (5-120s) applied live
    • Toggle switches — Clock, Date, EXIF, Progress bar — all applied instantly
    • Auto-reconnecting WebSocket with connection status indicator
    • Client names persist across reconnects (stored by IP in server memory)

    WebSocket Architecture

    • Server runs WebSocket on /ws (same port as HTTP)
    • Frame clients auto-connect and register with role frame, reporting status and config
    • Admin dashboard connects with role admin and receives live client list updates
    • Commands: setSource, start, stop, next, prev, sleep, wake, refresh, setConfig
    • Clients report status changes back to server, which broadcasts to all admin sessions

    Client Changes

    • WebSocket client connects on init, auto-reconnects every 5s
    • Handles all remote commands from admin
    • Sleep mode: full black overlay at z-index 9999
    • Config changes (clock, exif, timing) applied live without restart
    • Status reported back to server on every state change

    Dependencies

    • Added ws ^8.18.0 for WebSocket server
    Downloads
  • v1.3.0 5a6536c6ca

    jessikitty released this 2026-05-22 14:25:04 +10:00 | 39 commits to main since this release

    Frambe v1.3.0 — Vintage Polaroid Pile Theme

    Major visual overhaul inspired by Apple Photos' vintage photo theme.

    Vintage Polaroid Pile

    • Cumulative canvas background builds a scattered desk of photos as the slideshow runs
    • Each transition drops the previous photo as a small polaroid at a random position with shadow and rotation
    • Pile photos fade in over 1.2s with warm sepia overlay
    • Near-pure sepia background (sepia(1.0), saturate(0.1)) with warm vignette

    Main Frame

    • Nearly full-screen: 93vw × 85vh, slight overhang allowed
    • 1.5° constant rotation for a casual dropped feel
    • Slow single-direction drift (90s linear, no rocking)
    • Flexbox centering — reliable on all screen resolutions
    • Portrait photos get portrait frames (no forced landscape)
    • Polaroid proportions match the pile (3% sides, 10% bottom, #ede8df paper)

    Video Support

    • Videos play inside polaroid frames, auto-advance on end
    • INCLUDE_VIDEOS env var (default: true)
    • /api/assets/:id/video streaming endpoint
    • 2min timeout fallback for long videos

    Person Support

    • ?person=PERSON_UUID URL param for zero-touch launch
    • /api/people and /api/people/:id endpoints

    Other

    • Periodic album refresh (REFRESH_INTERVAL, default 300s)
    • Request logging on all API calls
    • No-cache on HTML/JS/CSS to prevent stale browser cache
    Downloads
  • jessikitty released this 2026-05-22 09:19:10 +10:00 | 53 commits to dev since this release

    Frambe v1.3.0 — Vintage Polaroid Pile Theme

    Major visual overhaul inspired by Apple Photos' vintage photo theme.

    Visual

    • Polaroid pile canvas — each photo transition drops the previous image as a small polaroid onto a cumulative canvas background, building a scattered desk of photos over time
    • Sepia-washed background — near-full sepia filter (sepia(1.0), saturate(0.1), brightness(0.15)) with warm vignette
    • Pile photos fade in over 1.2s with requestAnimationFrame alpha ramp
    • Warm sepia overlay on pile images (rgba(150, 120, 70, 0.2))
    • Matched polaroid proportions — main frame and pile use identical border ratios (3% sides/top, 10% bottom) and paper color (#ede8df)

    Main Frame

    • Nearly full screen93vw × 85vh max (overhang OK), 96vw × 88vh on mobile
    • Flexbox centering — replaced transform: translate(-50%, -50%) with a flex wrapper, fixing centering on lower resolution screens
    • 1.5° constant rotation for that casual dropped-on-table feel
    • Slow single-direction drift — 90s linear animation, no rocking
    • Portrait-correct frame — removed min-width/min-height constraints so the polaroid border hugs the image naturally

    Video Support

    • Videos play in the same polaroid frame as photos (filmstrip removed)
    • Auto-play on display, advance on end or 2min timeout
    • INCLUDE_VIDEOS env var (default: true)
    • /api/assets/:id/video streaming endpoint

    Other

    • Person/face API endpoints and URL param (?person=UUID)
    • Periodic album refresh (REFRESH_INTERVAL, default 300s)
    • Server version 1.3.0 in config and startup log
    Downloads
  • v1.2.2 6943d0c0dd

    jessikitty released this 2026-05-19 16:56:12 +10:00 | 53 commits to main since this release

    Frambe v1.2.2

    Logging & Debugging

    • Startup log is now clean and meaningful — no emojis, shows version, partial API key, all intervals
    • Every /api/* request is logged with method and URL, so you can see exactly what the browser is requesting
    • Album/person/favorites/random fetches log the result count (e.g. Album "Holiday" returned 47 images)
    • Errors log with [Frambe] ERROR: prefix for easy filtering

    Browser Cache Fix

    • HTML, JS, and CSS files now served with no-cache, no-store, must-revalidate headers
    • This was almost certainly the cause of the ?album= param not working — the browser was serving a cached copy of the old app.js that didn't have URL param support
    • Image thumbnails still cached normally (24h) for performance

    Version Tracking

    • Server reports version in startup log and in /api/config response
    • Frontend logs version to browser console on init
    • Makes it easy to confirm the right code is actually running after a rebuild

    Example log output

    [Frambe] --- Frambe v1.2.2 ---
    [Frambe] Server listening on port 3000
    [Frambe] Immich URL: http://10.0.0.40:2283
    [Frambe] API key: configured (abc12345...)
    [Frambe] Slideshow: 30s interval, 2s transition, refresh every 300s
    [Frambe] Waiting for requests...
    [Frambe] API GET /api/config
    [Frambe] API GET /api/server-info
    [Frambe] Immich connection OK, version 1.120.1
    [Frambe] API GET /api/albums/581b3896-1a21-4668-bebc-cfaca1c8edba
    [Frambe] Album "My Album" returned 23 images
    
    Downloads
  • v1.2.1 4d85d58526

    jessikitty released this 2026-05-19 16:37:21 +10:00 | 56 commits to main since this release

    Frambe v1.2.1 — Bugfixes

    Fixes

    • Port mapping: Container now runs internally on port 3000 as expected. Docker Compose maps 3030:3000 (external:internal). Previously the internal port was incorrectly set to 3030.
    • URL param auto-launch: Fixed ?album=UUID (and ?person=, ?favorites, ?random) not starting the slideshow. The slideshow start is now properly awaited during init, preventing silent failures. Also uses 'in' operator for flag-style params (?favorites with no value).
    • Added autoLaunch() helper for cleaner zero-touch startup flow
    • Added console logging during auto-launch and asset loading for easier debugging
    • Better error handling in loadAssets() — checks HTTP status before parsing JSON
    Downloads
  • v1.2.0 3cfcc3f983

    jessikitty released this 2026-05-19 16:02:06 +10:00 | 65 commits to main since this release

    🖼️ Frambe v1.2.0

    New Features

    🔗 URL-based zero-touch launch
    Skip the setup screen entirely by passing query parameters in the URL:

    • ?album=ALBUM_UUID — show a specific album
    • ?person=PERSON_UUID — show photos of a specific person
    • ?favorites — show favorites only
    • ?random — show random photos

    Perfect for bookmarking different frame URLs on different tablets around the house.

    👤 Person/face support
    New API endpoints for Immich's people/face recognition:

    • Browse and display photos by person
    • Works via URL params (?person=UUID) for zero-touch setup

    🔄 Periodic album refresh
    The slideshow now checks for new photos added to the source (album/person/favorites) every 5 minutes by default. New photos are seamlessly merged into the current rotation without restarting. Configurable via REFRESH_INTERVAL env var.

    🎨 App icon

    • Frambe logo displayed on setup screen
    • Favicon and Apple touch icon for home screen bookmarks
    • Place FrambeIcon.png as public/img/icon.png in the container

    Changes

    • Default port changed from 3000 to 3030
    • When launched via URL params, the ✕ button reloads to the setup screen (strips params) instead of going back

    Config

    New environment variable:

    • REFRESH_INTERVAL — seconds between source refresh checks (default: 300)
    Downloads
  • v1.1.0 2409ab882e

    jessikitty released this 2026-05-19 14:54:48 +10:00 | 72 commits to main since this release

    🖼️ Frambe v1.1.0

    Rebrand

    • Renamed project from "ImmichFrame" to Frambe across all files
    • Updated: package.json, server.js, index.html, app.js, Dockerfile, docker-compose.yml, .env.example, README.md
    • Docker service/container name changed from immich-frame to frambe

    No functional changes — all features from v1.0.0 remain identical.

    Downloads
  • v1.0.0 8ad9f94304

    jessikitty released this 2026-05-19 14:31:17 +10:00 | 80 commits to main since this release

    🖼️ ImmichFrame v1.0.0

    Initial release of ImmichFrame — a lightweight Docker web app for displaying Immich photos as a digital photo frame.

    Features

    • 📡 Immich API integration via secure server-side proxy
    • 📁 Album browser with thumbnail previews
    • 🎲 Random photos and Favorites modes
    • 🔄 Smooth crossfade transitions (configurable duration)
    • 🌫️ Background blur behind non-covering images
    • 🕐 Clock and date overlay
    • 📸 EXIF info display (location, date, camera)
    • 📊 Progress bar showing time until next photo
    • 👆 Touch controls (left/right tap to navigate, centre to toggle overlay)
    • ⌨️ Keyboard controls (arrows, space, F, I, Esc)
    • 🔒 Screen wake lock for supported devices
    • Auto-start mode via ALBUM_ID or SHOW_FAVORITES_ONLY
    • 📱 Responsive design for any screen size
    • 🐳 Single Docker container, ~50MB image
    • 🖥️ Designed for older tablets and browsers (vanilla JS, no frameworks)
    Downloads