Skip to content

Technical: Dashboard Generation

ccpk1 edited this page Feb 21, 2026 · 4 revisions

Technical: Dashboard generation

Target audience: Developers and advanced maintainers Covers: Generator contract, view model behavior, overwrite semantics, and diagnostics


Purpose

This page is the technical contract for ChoreOps dashboard generation.

Terminology exception note: wiki pages may intentionally retain legacy KidsChores references where they are used for migration/history context.

Use it to:

  • Understand create/update/delete behavior
  • Diagnose missing/stale/broken generated dashboards
  • Build custom UI or automation flows that rely on generated entities/views

Generator entry points

Dashboard generation is managed through ChoreOps Options Flow:

  • Manage DashboardCreate Dashboard
  • Manage DashboardUpdate Dashboard
  • Manage DashboardDelete Dashboard

The generator writes/updates Lovelace dashboard definitions via Home Assistant dashboard APIs.


Generated view model contract

Depending on selected options, the generator can produce:

  • Assignee views (for selected assignees/profiles)
  • Optional admin views

Admin view path conventions commonly include:

  • Shared admin path: admin
  • Per-assignee admin path: admin-<assignee-slug>

Paths may vary when Home Assistant resolves collisions.


Overwrite and update semantics

Generator-managed content is authoritative for generated dashboards.

  • Update Dashboard may replace generated view/card sections
  • Manual edits inside generated sections are not guaranteed to persist
  • Custom long-lived modifications are safer in separately managed custom dashboards

This is the expected tradeoff for deterministic regeneration.


Dependency contract

Generated dashboards rely on frontend cards documented in the canonical prerequisites list:

If dependencies are missing, generation may succeed but Lovelace renders card errors.


Translation sensor contract (localization)

Generated dashboard templates use translation sensors to render localized terms across languages.

  • Dashboard helper entities provide a translation_sensor reference
  • Templates resolve localized strings from the referenced sensor (for example from translation attributes)
  • This allows one generated dashboard model to adapt to different user language settings

If translation-sensor references are missing or stale, labels can fall back to placeholder/error text.


Entity/data contract

Generated cards consume runtime entities and attributes created by ChoreOps.

Primary references:

Do not hardcode assumptions about entity IDs. Resolve from Home Assistant runtime/registry.


Admin selector behavior

Shared admin layouts may depend on a selector entity for assignee context switching.

If admin switching appears broken:

  1. Verify selector entity exists and is enabled
  2. Verify selected assignees still exist and are active
  3. Re-run Update Dashboard

Failure modes and diagnostics

Preflight: confirm integration operations

Before troubleshooting dashboard rendering/layout behavior, verify core ChoreOps operations are healthy:

  1. Confirm core entities are present and updating in Developer Tools
  2. Confirm basic action flows (for example claim/redeem/approve paths) operate correctly
  3. Confirm related helper entities exist for the affected assignee/profile

If these core checks fail, troubleshoot integration state first using:

Generation succeeds but UI shows card errors

Likely missing frontend dependencies. Install cards and reload dashboard.

Expected views are missing

Likely mismatch between selected assignees/admin layout and current options. Re-run update with corrected selections.

Update appears stale

Possible path/name collision or browser cache masking.

  • Check dashboard list and paths in Home Assistant
  • Hard refresh browser
  • Re-run update and inspect logs

Historical duplicate dashboard records

Generator rework includes dedupe/idempotent handling for historical duplicate paths. If behavior still looks inconsistent, run update/delete/create from the generator and re-check dashboard registry state.


Implementation context

For historical implementation detail of the granular generator rework, see:


Related docs


Last Updated: February 2026

Clone this wiki locally