Skip to content

v1.5.0

Choose a tag to compare

@jeremiaa jeremiaa released this 15 Aug 01:40
· 44 commits to main since this release

CalDAV calendars

Nextcloud, Baïkal, Radicale, Synology, mailbox.org and iCloud calendars connect with a server address and an app password — the calendars on the account are discovered by themselves, and there is no OAuth app to register. Built by @chimmidev in #79. Docs: Calendars.

The Home Assistant add-on grew up

  • One click from the README adds the repository to your own instance — the standard blue button every add-on carries.
  • Magic Frame sits in the sidebar now, with its own icon. Clicking it signs an HA admin straight into the editor — a single-use token, minted only after the add-on has checked with the Supervisor that the requesting HA user really is an admin, valid for 60 seconds. Non-admins get the normal login. Turn it off with the ha_auto_login option.
  • The sidebar opens a launcher page rather than embedding the editor: Next.js bakes its base path in at build time, so full ingress embedding is not possible — and wall tablets keep calling /view/… directly, which behind ingress would demand an HA login they cannot do.

The add-on update appears once the 1.5.0 images are published; existing installs keep running until you press update.

An MCP server — agents can manage the whole configuration

/api/mcp speaks the Model Context Protocol over streamable HTTP. An agent gets the widget catalogue with exact JSON schemas, reads and edits views, sets wallpapers, creates and restores snapshots, and can ask diagnose_ha_action why a display was refused before it happens. Sixteen tools; write tools only for admin tokens, read-only for viewer tokens.

Authentication is the companion token (Editor → Settings) as a Bearer header — no token, no answer, and ?key= is deliberately refused so tokens stay out of URLs. Every agent write runs through the same validation, snapshot and remap pipeline as the editor's own save. Docs: Companion API.

The doorbell camera goes fullscreen by itself

Two people asked for exactly this (#41): a camera revealed by an HA trigger can now open its fullscreen view without anyone touching the screen. Doorbell rings, camera fills the display, and when the pulse ends the view goes back to what it was. Dismissing it by hand keeps it closed while the trigger still holds — the next ring opens it again. Opt-in on the camera widget, and it only appears once a visibility trigger is set.

Notification tiles can follow the state

A lock tile used to look identical locked and unlocked (#47). Per rule, opt-in: the tile shows your colour while the entity is active and a neutral grey while it is not — tap the tile, the lock closes, the tile calms down. Existing rules keep their fixed colours.

A Text widget

A heading or caption for the widgets around it (#69) — two calendars side by side finally get to say which is the meal plan and which is the week. A main line, an optional smaller second line, an icon, uppercase with letter spacing, a divider, and vertical alignment so a heading can sit right on top of the thing it names. Font, size and colour come from the same Text tab every widget has.

The editor on a phone

  • The add-widget sheet scrolls now — with 19 widgets it had grown taller than the screen, and the top entries were out of reach.
  • The toolbar fits again in German; on phone widths the save button is icon-only and answers through colour.
  • iOS no longer zooms into every input field: text fields in the editor and login are at least 16 px on touch devices, which is the threshold that stops the auto-zoom. The wall displays are untouched.
  • The camera's fullscreen switch also sits with the camera's own settings, not only behind the trigger field in the Layout tab.

Under the hood

  • Layout saves are transactional now: a failed save leaves the view exactly as it was, instead of half-written. Saved geometry is validated against the real grid.
  • Auto-save snapshots are capped per view instead of globally, so one busy view can no longer push another view's snapshots out.
  • The clock's mini weather line asks the weather provider you configured instead of always Open-Meteo (#81).
  • A new CI check asserts every widget is registered in all twelve places a widget must be registered, and that every "N widgets" in the docs still counts right.

One honest caveat: the save pipeline now enforces grid bounds. The editor could never produce out-of-range values, so no layout we know of is affected — but if a save of an old view is ever refused after this update, that is what happened: nothing is lost, the display keeps running, and re-placing the widget clears it. Open an issue with the error text if you hit it.