Configuration
Model
An HA profile contains the complete dashboard. The device override is an RFC 7396 merge patch: objects merge recursively, arrays are replaced and null deletes a value. Draft, validation and publishing are separate; twenty immutable revisions are retained. Missing providers block publishing while temporarily absent entities warn.
Example
{
"schema_version": 1,
"theme": {"background_color": "#121212", "primary_color": "#2d2d2d", "accent_color": "#80c100", "text_color": "#ffffff", "padding": 8, "gap": 6},
"app": {"language": "en", "keep_screen_on": true, "screensaver": {"enabled": true, "idle_seconds": 120, "provider_id": "family-photos"}},
"voice_assistant": {"enabled": true, "push_to_talk": true, "tts_output": "ha_stream"},
"tabs": [
{
"id": "home",
"title": "Home",
"columns": 2,
"widgets": [{"id": "light", "type": "light", "entity_id": "light.living_room"}]
}
]
}
Themes are objects for colors, spacing and typography; light and dark are not replacement configurations. Tabs have stable IDs, titles, columns, badges and widgets. Widgets accept grid placement, colspan, rowspan, theme override and HA-state conditions. Providers are referenced only through provider_id or connection_id; dashboard secrets are rejected. HA is the sole source for dashboard and device functions on paired devices. Only the local HA URL, routing override and certificate-exception fields required to establish the connection remain editable.
Editor and preview
JSON is the default with syntax highlighting, line numbers, validation, and profile, override and effective views. The visual editor covers themes, tabs, grids and native widgets while preserving unknown advanced blocks. Device selection uses reported pixels, activity area, orientation, density, font scale and insets. The enlargeable preview proportionally scales the fixed device layout and uses neutral placeholders for unavailable media. HA states are real; native Android rendering remains authoritative.
Offline operation
A valid new revision is saved in private preferences and acknowledged only after the UI swap succeeds. On error the previous version remains active. Offline HA controls show unavailable; notifications and actions are not replayed later.