Enhance Home Assistant dashboard configuration by adding new layout rules for sections, including mandatory full-width containers and improved alert row templates. Consolidate layout to eliminate dead space and ensure responsive design. Remove obsolete views for MariaDB and Activity Feed. Update README to reflect new infrastructure observability package. #1561
@ -78,6 +78,8 @@ Tier 2 (fallback, must justify in comments):
- No freeform positioning
- No freeform positioning
- No layout logic embedded in `card-mod`
- No layout logic embedded in `card-mod`
- For dense tile lists in `type: sections` views, keep the outer panel full-width (`column_span: 4`) and make the inner tile grid responsive using `custom:layout-card` (`4` desktop / `2` mobile unless the user asks otherwise).
- For dense tile lists in `type: sections` views, keep the outer panel full-width (`column_span: 4`) and make the inner tile grid responsive using `custom:layout-card` (`4` desktop / `2` mobile unless the user asks otherwise).
- In `type: sections` views, the first section immediately below top chips/badges must be a full-width container (`column_span: 4`) with a single wrapper card that also sets `grid_options.columns: full` to prevent skinny-column whitespace.
- Consolidate upward after removals/moves: do not leave dead space, empty placeholders, or intentionally sparse rows unless the user explicitly asks for whitespace.
Note: If the repo/view uses Home Assistant `type: sections`, treat `sections` as the top-level structure and enforce the same container rules inside each section (sections should contain only `grid`/`vertical-stack` cards and their children).
Note: If the repo/view uses Home Assistant `type: sections`, treat `sections` as the top-level structure and enforce the same container rules inside each section (sections should contain only `grid`/`vertical-stack` cards and their children).
- Convert `stitch_intent` into approved Lovelace structures only (`grid`, `vertical-stack`, Tier 1 cards first).
- Re-map any unsupported Stitch concepts to compliant cards/containers and explain fallback choices inline when Tier 2 is required.
Fallback behavior when Stitch is unavailable:
- Continue with manual ideation using this skill's design system and rules.
- State degraded mode clearly ("Stitch unavailable; proceeding with manual hierarchy/density planning").
- Do not block dashboard work on Stitch availability.
## Workflow (Do This In Order)
## Workflow (Do This In Order)
1. Read the target dashboard/view/partials/templates to understand existing patterns and avoid drift.
1. Read the target dashboard/view/partials/templates to understand existing patterns and avoid drift.
2. Determine intent from the user's request and existing dashboard context: `infra` (NOC), `home`, `energy`, or `environment`. Keep one intent per view.
2. Determine intent from the user's request and existing dashboard context: `infra` (NOC), `home`, `energy`, or `environment`. Keep one intent per view.
3. Validate entities and services before editing:
3. Validate entities and services before editing:
- Prefer the Home Assistant MCP for live entity/service validation (required when available).
- Prefer the Home Assistant MCP for live entity/service validation (required when available).
- Record the MCP validation step in the work notes before writing YAML.
- If MCP is not available, ask the user to confirm entity IDs and services (do not guess).
- If MCP is not available, ask the user to confirm entity IDs and services (do not guess).
4. Draft layout with constraints: a top-level `grid` and optional `vertical-stack` groups.
4. Draft layout with constraints: a top-level `grid` and optional `vertical-stack` groups.
- If using Stitch, first summarize `stitch_intent` and treat it as advisory input to this step.
- After removals, reflow cards/sections upward to collapse gaps and reduce empty rows.
6. If fallback cards are necessary, add an inline comment explaining why Tier 1 cannot satisfy the requirement.
6. If fallback cards are necessary, add an inline comment explaining why Tier 1 cannot satisfy the requirement.
7. Validate:
7. Validate:
@ -155,6 +193,9 @@ Max layout nesting depth: 2. No horizontal-stack inside grid cells.
- If requirements can't be met: state the violated rule and propose a compliant alternative.
- If requirements can't be met: state the violated rule and propose a compliant alternative.
- If validation fails: stop, surface the error output, and propose corrected YAML. Do not leave invalid config applied.
- If validation fails: stop, surface the error output, and propose corrected YAML. Do not leave invalid config applied.
Example flow:
- User asks for redesign inspiration -> Stitch ideation with required constraints -> summarize `stitch_intent` -> translate to Lovelace-safe YAML -> run validation checks.
## References
## References
- Read `references/dashboard_rules.md` when you need the full constraint set and repo-specific mapping notes.
- Read `references/dashboard_rules.md` when you need the full constraint set and repo-specific mapping notes.
@ -25,9 +25,12 @@ Tier 2 (fallback, only when Tier 1 cannot satisfy the requirement; justify inlin
- No freeform positioning
- No freeform positioning
- No layout logic embedded in `card-mod`
- No layout logic embedded in `card-mod`
- For dense status/container lists in `type: sections` views, keep the panel full-width (`column_span: 4`) and use a responsive inner grid (`4` desktop / `2` mobile by default).
- For dense status/container lists in `type: sections` views, keep the panel full-width (`column_span: 4`) and use a responsive inner grid (`4` desktop / `2` mobile by default).
- In `type: sections` views, always place a full-width wrapper section directly below top chips/badges and set the wrapper card to `grid_options.columns: full`.
- Consolidate layout vertically after any move/remove; dead space is disallowed unless explicitly requested.
Sections-mode note:
Sections-mode note:
- If a view uses `type: sections`, treat `sections` as the top-level structure and enforce the same container rules inside each section.
- If a view uses `type: sections`, treat `sections` as the top-level structure and enforce the same container rules inside each section.
- Prefer reducing section count and regrouping cards into earlier rows rather than leaving sparse trailing space.
| [infrastructure_observability.yaml](infrastructure_observability.yaml) | Normalized WAN/DNS/backup/domain/cert health sensors used by the Infrastructure Home + Website Health dashboards. | `binary_sensor.infra_*`, `sensor.infra_*`, `script.send_to_logbook` |
| [mariadb.yaml](mariadb.yaml) | MariaDB recorder health and capacity SQL sensors. | `sensor.mariadb_status`, `sensor.database_size` |
| [mariadb.yaml](mariadb.yaml) | MariaDB recorder health and capacity SQL sensors. | `sensor.mariadb_status`, `sensor.database_size` |