Changelog

Older releases

Everything before the ten most recent releases, from 0.23.0 up to 1.6.1.

v1.6.1

1.6.1

Fixed

  • Immich v3 compatibility: album photos now load correctly for photo slideshows and background rotation (Immich v3 changed its album API, which broke photo fetching)
  • Immich connection status in the editor no longer shows a doubled version prefix like "vv3.0.1" when connected to Immich v3
v1.6.0

1.6.0

New

  • Conditional module visibility: show or hide any module based on live state published by other modules or plugins, using Home Assistant-style conditions (state match, numeric comparisons, and/or/not combinations) with a configurable fallback while the state is still unknown. The editor suggests available state keys and warns when a condition references a key that nothing on the display publishes.
  • Background providers: mark a module as a background provider so its data keeps updating (and the state it publishes stays fresh) even while other screens are showing
  • Plugins can publish state for other modules to react to, so plugin data such as a Home Assistant sensor can drive the visibility of any built-in module
  • Tap-to-check todo lists: an optional interactive mode lets you check items off directly on a touch display, with changes syncing to every display within seconds

Improved

  • Word of the Day now draws from a curated 732-word list in each of the seven supported languages, rotating through every word before repeating (a full two years of daily words); each language gets authentic vocabulary of its own rather than translations of the English list
  • Fullscreen calendar: choose how strongly today is highlighted (full, subtle, minimal, or off, tinted to match your accent color), pick side-by-side or stacked layouts for overlapping events, and optionally wrap long event titles onto a second line
  • Per-module disable toggle: turn off a single module without deleting it; disabled modules stay visible and editable in the editor but skip rendering and data fetches on the display
  • Local-network plugins such as Home Assistant integrations can now make 240 proxy requests per minute instead of 60, allowing near-realtime polling
  • The Google Calendar setup code can be copied with one click, including on kiosk displays served over plain HTTP

Fixed

  • Fixed-date holidays showing on their observed date instead of their actual date, such as Independence Day 2026 appearing on July 3; this also fixes New Year's Day vanishing from January views in years when it is observed on December 31
  • Meal plans, API keys, and chore history are no longer at risk of being silently wiped if their data file becomes corrupted; the system now reports the problem instead of resetting to defaults
v1.5.0

1.5.0

New

  • Multi-language support — the entire UI can now run in English, German, French, Spanish, Dutch, Brazilian Portuguese, or Danish, with dates, numbers, and times that follow each locale's natural conventions (Danish translation thanks to @aoedk)
  • Language picker on the Location settings page (renamed "Location & language") with a separate "Formatting locale" option for households whose display language and date/number format shouldn't match (for example, English UI with European date formats)
  • Plugins can ship their own translations — a plugin's manifest can declare per-locale dictionaries that load automatically so plugin modules localize alongside the built-ins
  • Opt-in update notification — when a newer release is available, the editor shows a toast and the remote control page shows a banner. Dismissals are remembered per version, and the whole feature can be toggled off under System settings.

Improved

  • Shared terms like day-of-week names and common actions (Save, Cancel, Edit, Close…) come from one source per language, so wording stays consistent across every module and settings screen
  • Time and clock displays default to each locale's natural 12- or 24-hour convention instead of forcing 12-hour
  • Switching languages flushes cached plugin dictionaries immediately so plugins follow the new language without a delay
  • Weather provider Test button now works for regional providers like SMHI — it tests against a known in-coverage location so the button confirms the integration is healthy even when your own location is outside the provider's service area
  • Clearer TomTom traffic setup — failed geocodes now show the upstream error message instead of a generic failure, and the settings help text lists the three APIs (Geocoding, Reverse Geocoding, Routing) your key needs enabled
  • Toggle switches in the off state are now visible in light mode

Fixed

  • WiFi networks added through the editor silently disappearing after a reboot because cloud-init was regenerating the network config and deleting them. New installs, fresh images, and every in-app upgrade now persist editor-added WiFi profiles across reboots.
  • Hostname changes silently reverting on reboot because cloud-init kept re-applying the original hostname; new and upgraded installs now persist the hostname you set, and existing devices self-heal the next time you change it
  • SMHI weather provider returning 404 errors after SMHI shut down its older forecast endpoint on 2026-03-31; the provider now uses the current API and reports real precipitation probability instead of a binary value
  • System stats occasionally reporting inconsistent memory numbers (used + free not adding up to total) because free memory was sampled twice during the same response
v1.4.1

1.4.1

Improved

  • Calendar and Fullscreen Calendar modules can now show event descriptions under each event title — toggle per view (daily, agenda, schedule, week list, day timeline) in the editor; off by default so existing screens are unchanged. HTML and entities from ICS and Google feeds are converted to clean plain text.

Fixed

  • Installing a plugin from the marketplace no longer fails on fresh setups where no plugins have been added yet
  • Color picker now accepts `rgba()`, `hsl()`, `hsla()`, named colors, and modern CSS color formats — pasted values with surrounding whitespace also save correctly
v1.4.0

1.4.0

New

  • Shape & Divider module with 15 views — lines (divider, double-line, wave, zigzag, dotted), geometric shapes (rectangle, circle, triangle, polygon, star, arrow), and atmospheric effects (glow, gradient, grid, frame) for adding structure and polish to your screens
  • Icon module with a visual Font Awesome 7 picker — drop any icon onto a screen, self-hosted so no CDN dependency

Improved

  • Text module typography overhaul — 10 built-in fonts with a visual picker, plus weight, italic, line-height, word-spacing, and decoration controls; new outline, drop-shadow, 3D, neon, wave, bounce, shake, and color-cycle effects; per-character animation and reveal-on-rotation
  • Countdown module gains a "stay on the day" option — events stay visible (and yearly events stop rolling forward) until the end of the event day, rendering a "Today!" badge instead of disappearing at midnight
  • Updated core dependencies and resolved a uuid security advisory

Fixed

  • Editor drag-and-drop now lands modules at the correct position when the palette or canvas is scrolled
v1.3.0

1.3.0

New

  • Four new weather providers — Yr.no, SMHI, UK Met Office, and Environment Canada — for better forecast accuracy outside the US
  • Screen-level scheduling — show or hide entire screens by day of week and time window, on top of the existing per-module scheduling. A clock icon marks scheduled screens in the editor.
  • Advanced mode toggle in System settings hides developer-only surfaces (release channel, GitHub token, plugin Developer tab) until you opt in
  • New local-network plugin permission lets opt-in plugins talk to LAN devices like home automation hubs, while still blocking loopback and cloud metadata addresses

Improved

  • /remote now shows the profile pool that actually applies to the selected display, instead of always showing the global list
  • Todoist module — tap a task to mark it complete, and tasks render as plain text instead of raw markdown like `[Watch](url)`
  • Chore ticket balance updates instantly when you check or uncheck a chore
  • Plugin install, backup restore, and plugin fetch paths hardened against malicious bundles, redirect-based SSRF, and plugin-ID collisions
  • Documentation now links to the latest prebuilt Pi image automatically, with improved dark-mode contrast in callouts

Fixed

  • Expired /remote sessions now redirect to the login page instead of silently leaving you on a blank or broken screen
  • Plugin upgrades no longer wipe out the API tokens and other secrets you've configured for the plugin
  • The editor's Preview button opens the display you've selected in the multi-display switcher, instead of always opening the main display
v1.2.0

1.2.0

New

  • Network settings page — scan and connect to WiFi, edit hostname, switch between DHCP and static IP, and run ping/watchdog diagnostics, all from the editor
  • Touch-enabled Display Control module — on-screen buttons to wake, sleep, change brightness, and navigate between screens, targeting either the current Pi, a specific display, or all displays
  • Per-Pi hardware reporting with a redesigned Stats section — each display reports CPU, memory, disk, and temperature, shown as ring dials with clearer section icons
  • Install plugins directly from a URL, alongside the existing upload flow
  • One-time chores — pick a specific date for a chore from the /remote manage view or the editor modal
  • Per-screen rotation duration — override the global rotation time on individual screens, with a pill on the screen tab showing custom values
  • Single-photo mode for the fullscreen photo module

Improved

  • Simpler hardware telemetry setup — the reporter token prompt is gone; the hub now trusts adopted displays reporting from the LAN
  • Install flow parity between USB image creation and `curl | bash`, including a navigation hint for selecting the Raspberry Pi OS Lite image in RPI Imager
  • Property panel polish — grouped controls, cleaner Screen-settings / Background separation, Background picker tucked into an accordion and hidden while a module is selected
  • Plugin install errors now surface clearer messages when something goes wrong
  • Hardened hostname updates, source routing, and rollback lifecycle so a bad network change can't strand a Pi
  • Smoother rotating modules — removed enter/exit transitions that caused visible flicker during screen changes

Fixed

  • Rain map tiles failing to load, recentering incorrectly, and hitting tile-server rate limits
  • Iframe modules failing to load or render correctly on the display
  • Duplicate Chromium windows on the Pi causing display commands to race and misfire
  • Display Control module bugs surfaced during live testing
  • WiFi scan results, password-visibility toggle, and nmcli compatibility on newer Pi OS builds
  • Installer crash from an unbound variable in the bootstrap cleanup trap
v1.1.0

1.1.0

New

  • IP allowlist — restrict access to specific devices on your network using CIDR ranges, or let trusted IPs skip the login password entirely. Lockout protection warns you before saving a rule that would block your own device, and the login page shows a clear message when access is restricted by IP
  • Rewards store view for the fullscreen chore chart — kids browse available rewards, see their ticket balance, and redeem directly from the display. Rewards can be age-gated to specific family members
  • Chore schedule rotation — assign chores to specific family members on specific days of the week, with a visual schedule grid in both the editor and remote control
  • Chore history backdating — admins can mark past days as complete from the remote control so missed check-offs don't get lost. A 90-day history strip makes it easy to scroll back
  • Weather-aware greetings and affirmations — these modules now respond to current weather conditions, showing contextual messages like "Rainy day ahead" beneath the greeting. Disable per-module if you prefer the original behavior
  • Event bus for plugins — plugins can subscribe to live weather conditions, weather alerts, and time-of-day transitions so third-party modules can react to the same data built-in modules use
  • Config validation CLI — run `npm run config:check` to scan your configuration for issues like unknown module types, broken profile references, or out-of-range settings
  • Blog on homescreens.dev with RSS feed, changelog page with jump navigation, and a comparison page versus MagicMirror and Dakboard

Improved

  • Light, dark, and system theme support — the editor and remote control each remember their own theme preference, with semantic color tokens throughout for consistent styling
  • "Points" renamed to "tickets" everywhere — editor, remote control, kid view, and display all use the friendlier term
  • Weather settings redesigned as provider cards — each of the five providers gets its own card with status indicator, API key field, test button, and set-as-default action
  • All API routes now automatically retry on server errors and rate limits with exponential backoff, so a momentary provider outage doesn't leave a blank widget
  • 4X Large fullscreen typography size added for displays viewed from further away
  • GitHub and homescreens.dev links in the editor settings sidebar
  • Faster service restarts on Raspberry Pi — the systemd unit now caps shutdown to 15 seconds instead of the default 90

Fixed

  • Kid view (/chores) unable to toggle chores or redeem rewards when a password was set — the proxy's default-deny was blocking requests that should have been public
  • Login page redirect loop when an authenticated admin's IP was later restricted — now shows a clear "access restricted" message instead of "too many redirects"
  • Chore points rejecting a value of 0 — entering zero defaulted to 1 because of a falsy-check bug
  • Snowstorm weather conditions misclassified as thunderstorms
  • IP allowlist silently dropped when changing or clearing the password
  • Weather-aware modules not working unless a weather widget was also on screen
  • Malformed CIDR entries in a hand-edited config matching unintended IP ranges instead of being safely ignored
v1.0.0

1.0.0

New

  • Multi-display support — run multiple screens from a single hub, each with its own resolution, rotation, and set of screens. A kitchen portrait touchscreen and a landscape living-room TV can coexist without either squashing the other's layout
  • Display-only install mode — set up additional Pis as thin clients that connect to the hub with no Node.js required. Just run `install.sh --display-only` and point it at your hub
  • Display picker in the remote control — target commands (brightness, profiles, sleep/wake, next/prev) at a specific display or broadcast to all of them
  • Per-display settings with inheritance — each display can override defaults like weather location, theme, or active profile, with explicit "Override / Reset to default" controls
  • Per-display owned profiles — assign different screen-rotation profiles to different displays and switch them independently

Improved

  • Settings page reorganized into "Defaults" and "Per display" sections so shared and display-specific settings each have a clear home
  • Display switcher pill in the editor toolbar lets you jump between displays; the canvas automatically adjusts to each display's resolution and rotation
  • Unadopted displays appear in the editor with their self-reported resolution, ready to adopt with one click — no manual IP lookup needed
  • Displays that lose their configured URL auto-recover after a 60-second countdown instead of staying stuck until power-cycled
  • Stale unadopted displays are automatically cleaned up after 2 minutes of silence so powered-off Pis don't linger in the editor
  • Editor shows each display's IP address and last-seen time so you can identify which physical device is which
  • Meal-planner settings now sync across all module instances and the remote control page — change a setting once and it applies everywhere
  • Upgrade pipeline hardened against tampering, and the plugin API proxy has stronger protections against server-side request forgery

Fixed

  • Fullscreen meal planner showing "Now — Breakfast" late in the evening when no meal is active
  • Chore chart timezone handling causing tasks to shift to the wrong day
  • Background rotation silently failing for displays using per-display screens
  • Display-only installer exiting silently when generating a unique ID on some systems
  • Existing screens preserved when adding your first additional display — your current layout stays on the main display instead of disappearing
  • Older installs (v0.25.0) unable to upgrade past v0.26.0 due to a missing cleanup hook
v0.25.0

0.25.0

New

  • Immich photo library integration — browse and display photos from a self-hosted Immich server in slideshows, the fullscreen photo viewer, background rotation, and the background picker
  • Wikipedia as a second source for the history module — events from Wikipedia and MuffinLabs are combined and deduplicated, with independent source toggles in the editor
  • Chore rewards system — kids earn points by completing chores and redeem them for parent-defined rewards
  • Backup reminder — a configurable toast notification in the editor when you haven't backed up recently
  • Backup and restore on the remote control page — download and restore full data backups directly from your phone
  • Touchscreen pause — double-tap the active pagination dot to pause screen rotation
  • Offline indicator — a WiFi icon appears on the display when network connectivity is lost
  • WiFi provisioning via boot partition — configure WiFi by placing a wifi.txt file on the SD card before first boot

Improved

  • Redesigned Integrations settings page with card-based layout, service icons, connection status badges, and category groupings
  • Multi-week meal planning with calendar-based dates, week navigation, and a Today button for planning ahead
  • Emoji picker in the meal form now includes search filtering and a larger grid
  • Fullscreen chore chart member chips size dynamically to prevent overflow at larger text sizes
  • Root URL now redirects to the editor instead of the display for easier initial setup
  • Replaced Cage with labwc compositor for proper cursor hiding on touchscreen displays
  • WiFi reliability hardening for Raspberry Pi — driver stability patches, infinite reconnect retries, connectivity watchdog, and kernel memory reservation

Fixed

  • Invisible unfilled stars in chore chart light mode; Linen, Paper, and Mist light themes are now visually distinct
  • Plymouth boot splash showing squares instead of dots
  • First-boot login prompt on fresh images
  • Kiosk file permissions preventing normal operation after image build
  • Pre-built images could ship with the builder's WiFi credentials
  • Ingredient category dropdown in meal planner invisible against the dark background
  • Update controls in the editor now appear regardless of install method
v0.23.0

0.23.0

New

  • Fullscreen photo viewer and fullscreen meal planner modules with remote control integration
  • Tap-to-complete on the fullscreen chore chart for touchscreen displays

Improved

  • Redesigned meal planner editor with toast notifications and undo support
  • Fullscreen calendar and chore chart now use a shared theme system with more customization options
  • Two new larger typography sizes for fullscreen modules
  • Fullscreen modules grouped into their own category at the top of the module palette
  • Moon phase module shows rise and set times in a cleaner horizontal layout
  • News module with refined bullet styling and better visual hierarchy
  • Garbage day module with a cleaner header and improved text styling
  • Stock and crypto cards use tabular number formatting for better digit alignment
  • Chore form shows validation hints when the submit button is disabled
  • Meal data now included in backup and restore
  • Improved text contrast and divider consistency across all modules
  • WiFi stability improved on Raspberry Pi by disabling unnecessary power management
  • Updated documentation and website for all 38 modules with new screenshots and a remote control showcase

Fixed

  • Backdrop blur effect not visible on module cards
  • Display preview clipping content when the viewport is smaller than the configured resolution
  • Editor canvas not updating immediately after editing meal planner or chore chart data
  • Editing a meal in the library silently cleared its favorite status
  • Empty states in chore chart, meal planner, and countdown appearing too dim due to stacked opacity