test(auto-theme): #79 V2 — simulate sunset in a VM (was mis-framed V3)
All checks were successful
Check / eval (push) Successful in 3m53s
All checks were successful
Check / eval (push) Successful in 3m53s
Bernardo rightly pushed back on deferring #79 to a real session: a simulated sunset IS VM-testable. Add checks.auto-theme, a runNixOSTest that installs nomarchy-theme-sync, points NOMARCHY_DEFAULT_THEMES at the presets, stubs the rebuild via NOMARCHY_REBUILD (a marker), configures the day/night pair + schedule, then WALKS THE VM CLOCK across the boundary: 19:55 -> 20:05 -> 20:06 -> next-day 07:30, asserting the active theme goes summer-day -> night (1 rebuild) -> night (idempotent, still 1) -> day (2 rebuilds). This isolates the auto decision + apply + rebuild-trigger; the actual home-manager switch is stubbed (that generic apply path is exercised by every manual theme change). The only on-hardware residual is the user timer firing on its OnCalendar schedule, which systemd-analyze validates. #79 drops its [blocked:hw] tag — it's V2-verified. ROADMAP updated; lesson recorded in MEMORY (don't default timer/session features to V3: stub the generic step, simulate the clock). Verification: V2 PASS (nix build .#checks.x86_64-linux.auto-theme, fresh, exit 0); V0 flake check green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -17,6 +17,25 @@ Template:
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-10 — #79 V2: checks.auto-theme (simulated sunset) — was mis-framed V3
|
||||
- **Task:** Bernardo challenged the "V3 real-session" framing — a simulated
|
||||
sunset IS VM-testable. He's right; I'd conflated "needs a real desktop"
|
||||
with "needs the generic home-manager switch."
|
||||
- **Did:** Added `checks.auto-theme` runNixOSTest: installs nomarchy-theme-sync,
|
||||
points `NOMARCHY_DEFAULT_THEMES` at presets, stubs the switch via
|
||||
`NOMARCHY_REBUILD` (a marker), configures the pair+schedule, then **walks
|
||||
the VM clock** 19:55→20:05→20:06→next-day 07:30 asserting slug goes
|
||||
summer-day → night (1 rebuild) → night (idempotent, still 1) → day (2). The
|
||||
self-gating I relied on: presets via env, wallpaper/notify no-op headless,
|
||||
run_switch honors NOMARCHY_REBUILD + waybar nudge is check=False.
|
||||
- **Verified:** **V2 PASS** — `nix build .#checks…auto-theme` fresh, exit 0.
|
||||
Dropped #79's `[blocked:hw]`; it's done (V2). Updated ROADMAP.
|
||||
- **Lesson:** don't default "timer/session feature" to V3 — stub only the
|
||||
generic step (the real HM switch, covered elsewhere) and simulate the rest
|
||||
(clock) headlessly. Only the literal timer-fires-on-OnCalendar is on-HW,
|
||||
and its schedule is systemd-analyze-validated.
|
||||
- **Next suggestion:** NEXT head #76 `[blocked:hw]`; else QA / PROPOSED.
|
||||
|
||||
## 2026-07-10 — #79 slice 3: Look & Feel › Auto theme menu (#79 complete)
|
||||
- **Task:** BACKLOG #79 slice 3 — the menu; completes the feature.
|
||||
- **Did:** `rofi.nix` — "Auto theme (on/off)" row in Look & Feel + an
|
||||
|
||||
Reference in New Issue
Block a user