feat(themes): #62 whole-swap CSS self-containment CI gate
Some checks failed
Check / eval (push) Has been cancelled

Add tools/check-theme-wholeswap.py and checks.theme-wholeswap: every
themes/*/waybar.css must @define-color each @name it references (raw
readFile, no palette prepend — neon-glass class), and every preset needs
preview.png + non-empty backgrounds/. README: four waybar.css themes
(drop quarantined neon-glass). Close #62.

Verified: V0 (script + negative fixture + checks.theme-wholeswap + flake check --no-build).
This commit is contained in:
Bernardo Magri
2026-07-10 08:29:30 +01:00
parent 11d6a3df0f
commit f09042adbe
5 changed files with 136 additions and 9 deletions

View File

@@ -113,12 +113,6 @@ gating. Fix: name-agnostic scan aligned with battery-notify. Cost:
small multi-file; `[blocked:hw]` only to confirm on non-BAT* hardware —
logic still ships at V1.
### 62. Optional CI: whole-swap CSS self-containment
Contrast check does not require that a `waybar.css` defines every
`@color` it references, nor that every preset has preview + backgrounds.
A cheap gate would have caught neon-glass. Cost: small tool + flake
check; V0.
### 63. Generated Waybar: identity-bar affordances (powermenu + logo)
Whole-swap bars ship `custom/powermenu` and a left logo → main menu; the
generated `waybar.nix` bar has neither. Optional parity add for
@@ -238,7 +232,7 @@ _(Generated Waybar missing identity-bar affordances → **#63**.)_
executive-slate, and the generated style have. Functional OK;
visual hierarchy weak. Cost: CSS pass; V3.
_(Optional CI: whole-swap CSS self-containment → **#62**.)_
_(Optional CI: whole-swap CSS self-containment → **#62** ✓ 2026-07-10.)_
### Per-theme design audit (2026-07-09)