feat(autotheme): fire at the configured sunrise/sunset, not a 15-min poll
All checks were successful
Check / eval (push) Successful in 4m14s
All checks were successful
Check / eval (push) Successful in 4m14s
The timer's OnCalendar now bakes the configured times (falling back like _hhmm_to_min on a hand-edited state), so the switch lands at the configured minute instead of up to 15 minutes late. The original poll's robustness case is covered without it: Persistent catches transitions missed while powered off, systemd fires elapsed calendar timers on resume, and OnStartupSec settles the theme after login. Baked times mean a time edit must rebuild: the menu's Sunrise/Sunset writes now run `auto --force` when enabled (one rebuild re-bakes the timer and lands on the right theme, same as the enable flow). Day and night slugs stay live reads — but with no poll to catch them up, editing the slot currently on screen applies immediately via a plain `auto`. New eval check `auto-theme-timer` asserts the bake state-bridges-style: configured times reach OnCalendar, garbage falls back to 07:00/20:00, disabled installs no unit. Docs + hardware-queue entry updated to the new semantics. V2: checks.auto-theme (KVM VM, passed) covers the auto engine the timer ticks; checks.auto-theme-timer (eval, passed) covers the unit; OnCalendar strings systemd-analyze-validated; the rebuilt menu script passes bash -n with the new branches in place. V3 pending: live timer firing at the exact configured minute on hardware (existing "Auto-theme pair flip" queue entry, refreshed). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -52,11 +52,18 @@ Everything else below stays open; order is convenience, not a gate.
|
||||
summer-day; this is the on-hardware confirmation of the report.
|
||||
- [ ] **Auto-theme pair flip on hardware** — set
|
||||
`settings.autoTheme.{day,night}` to one of the new pairs (e.g.
|
||||
kiln-clay / kiln), force sunrise/sunset around the current time,
|
||||
let the timer flip once each way. Pass = the whole desktop switches
|
||||
in one generation, and nothing leaks from the previous theme —
|
||||
fonts, rounding, terminal opacity all reset (the per-theme
|
||||
appearance block), wallpaper follows.
|
||||
kiln-clay / kiln), set sunset (or sunrise) a few minutes ahead via
|
||||
Look & Feel › Auto theme (the time edit itself rebuilds — since the
|
||||
exact-time revision the timer fires AT the configured minute, no
|
||||
15-min poll), let the timer flip once each way. Pass = (1)
|
||||
`systemctl --user list-timers nomarchy-auto-theme` shows the two
|
||||
configured times as the trigger; (2) the switch lands within ~a
|
||||
minute of the configured time; (3) the whole desktop switches in
|
||||
one generation, and nothing leaks from the previous theme — fonts,
|
||||
rounding, terminal opacity all reset (the per-theme appearance
|
||||
block), wallpaper follows; (4) with autoCommit on, `git -C
|
||||
~/.nomarchy log` shows an `apply theme` commit and state.json is
|
||||
not left dirty (the 0.5.1 pathspec fix).
|
||||
- [ ] **#148 dock-intent enforcement without auto-profiles (dev box, docked)** —
|
||||
after pulling the #148 commit: **log out and back in first** — the
|
||||
watcher is `exec-once`, so `nomarchy-home` alone leaves the old one
|
||||
|
||||
Reference in New Issue
Block a user