feat(theme): capture Boreal picker preview + V2-verify default
All checks were successful
Check / eval (push) Successful in 3m6s

Close the honesty gap on #45. Rendered the full Boreal desktop
headlessly (tools/theme-shot.nix, softGL 1920x1080) and confirmed the
session reads as Boreal — aurora wallpaper, Waybar violet accent
(#B79BE8) workspace pill, GeistMono clock, rofi launcher violet
prompt/selection — not Tokyo Night. Added themes/boreal/preview.png
(480x270, matches the existing 21) so the picker row is no longer
plain-name.

theme-shot: park the cursor bottom-right before the desktop shot so the
frame (which doubles as the preview source) is clean; reusable for the
other two missing previews.

Verified: V0 flake check; V2 theme-shot desktop/menu shots viewed;
contrast 24x7 pass. Preview is a headless bare-desktop capture (not the
floating-terminal composition of the others) — hardware recapture noted.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-07-09 18:28:38 +01:00
parent 7d52d4b5e4
commit 41cd350a52
4 changed files with 50 additions and 26 deletions

View File

@@ -47,22 +47,6 @@ non-empty), laptop charge-threshold sysfs when a limit is set. Spec:
docs/HARDWARE.md §10. Cost: doctor.sh sections; V1 in existing
`checks.doctor` where fakes exist, rest V2/V3.
### 45. V2/V3 verify: Boreal default theme (follow-up to #42 / `351b7ad`)
Code for Boreal-as-default shipped at V0 only (seed JSON + eval
fallbacks; contrast green). **Needs a VM-capable agent** (or hardware)
to close the honesty gap. Checklist:
1. `nix flake check --no-build` green on current `main` (ISO eval can be
slow — let it finish).
2. V1 optional: build template HM or live toplevel if time allows.
3. V2: boot live ISO (`tools/test-live-iso.sh`) or apply template HM —
confirm session/wallpaper/terminal read as **Boreal** (slug
`boreal`, violet accent, GeistMono), not Tokyo Night.
4. Capture `themes/boreal/preview.png` for the theme picker (square
crop per MEMORY rofi icon note) and commit it.
5. V3 optional: append HARDWARE-QUEUE if only a real panel/GPU shows
something headless can't. Delete this item when checklist is done;
journal the tier reached.
### 46. V2 verify: install swap=0 + unattended LUKS fail-closed (`208b8d4`)
Pure `nix-instantiate` on disko subvols passed V0; **full install path
not exercised**. VM agent with KVM:
@@ -152,8 +136,8 @@ implement. Bernardo moves accepted items into a tier.*
Product themes and the release bar live in **VISION**. **NEXT:**
#43 System Firmware · #44 doctor hardware. #42 boreal default
shipped (seed state + eval fallbacks); still missing
`themes/boreal/preview.png` (picker plain-name until captured).
shipped + V2-verified (session reads as Boreal); `preview.png` captured
(headless fallback — hardware recapture nicety noted under theme polish).
Remaining candidate promotions: fingerprint menu · first-boot tips ·
human rebuild errors · neon-glass quarantine.
@@ -304,12 +288,15 @@ human rebuild errors · neon-glass quarantine.
### Theme polish / completeness (codebase exam 2026-07-09)
- **Missing theme picker previews + hand btop for identity themes**
`boreal` (now the default — higher priority), `executive-slate`, and
`neon-glass` lack `preview.png` (picker plain-name rows) and
`btop.theme` (generated btop only). CSS/jsonc for boreal/executive-slate
are solid. Capture boreal preview ASAP for v1.0 bar; others after
neon-glass is fixed/quarantined. Cost: asset capture + optional hand
btop; V3 visual.
`executive-slate` and `neon-glass` lack `preview.png` (picker
plain-name rows). All three still ship generated btop only (no hand
`btop.theme`). `boreal` now has a `preview.png` (2026-07-09) but it's a
**headless theme-shot capture** — a clean bare desktop+bar, not the
floating-terminal (fastfetch+btop) composition the other 21 use; a
real-hardware recapture to match the grid would be nicer (VM is the
documented fallback). CSS/jsonc for boreal/executive-slate are solid.
Capture the other two after neon-glass is fixed/quarantined. Cost:
asset capture + optional hand btop; V3 visual.
- **Generated Waybar missing identity-bar affordances**
Whole-swap bars ship `custom/powermenu` and a left logo → main menu;
@@ -513,6 +500,18 @@ flagged separately from fidelity bugs.*
can ship. Expand to all tracked `*.py` (or at least installer +
tools). Cost: one workflow line; TESTING.md §1 should match.
- **No guard against dead Hyprland rule syntax in the generated conf**
The `windowrule` 0.53-migration bug (fixed 2026-07-09, `ed7fd93`) shipped
a red config-error banner on the *default* desktop for weeks — invisible
to `nix flake check` (the conf builds fine; Hyprland only rejects it at
session start). A cheap `checks.*` could build the generated
`hyprland.conf` and grep for the dead rule-first pattern
(`windowrule\s*=\s*(float|center|size|tile|...)\s*,`) and the
`windowrulev2` keyword, failing on a match. Better still (heavier):
`hyprland --verify`-style parse if one exists. Cost: small runCommand
check; catches the whole class. Pairs with the theme-shot harness that
actually caught this.
- **No automated check for installer pure contracts**
`compose-lock.py`, disko `swapSize`/`withLuks` arg contract, and
hardware-db module names vs `nixos-hardware.nixosModules` have no

View File

@@ -17,6 +17,25 @@ Template:
---
## 2026-07-09 — #45 V2 verify Boreal default + capture preview.png (theme-shot)
- **Task:** NEXT #45 — close the honesty gap on Boreal-as-default (shipped V0
only at #42) and capture the picker preview. VM-capable environment (KVM).
- **Did:** Rendered the full Boreal desktop headlessly via `tools/theme-shot.nix`
(softGL, 1920×1080). Confirmed the session reads as **Boreal** — aurora
wallpaper paints, Waybar violet accent (`#B79BE8`) workspace pill, GeistMono
clock, rofi launcher violet prompt/selection — not Tokyo Night. Captured a
480×270 `themes/boreal/preview.png` (matches the other 21's format) from the
desktop frame; added a cursor-park to theme-shot so the shot is clean. (En
route, found+fixed the windowrule banner — separate commit `ed7fd93`.)
- **Verified:** V0 flake check green; **V2** theme-shot desktop.png + menu.png
viewed (banner gone post-fix, bar+launcher themed). Scripted: contrast 24×7
pass; audit boreal advisory-only.
- **Pending:** preview is a headless bare-desktop capture, not the
floating-terminal composition of the other 21 — hardware recapture noted
under theme polish. V3 (real panel/GPU) not done — not required. The float
rules now parse but weren't exercised on real windows (item 41 territory).
- **Next suggestion:** #46 (install swap=0 / LUKS fail-closed) — driver ready.
## 2026-07-09 — Fix Hyprland windowrule config-error banner (windowrule 0.53 migration)
- **Task:** bug tripped over while doing #45 (VM Boreal verify) — the default
desktop showed a red Hyprland config-error banner on every boot, occluding