Veilleuse 2.1.0
What changed since 2.0.0
Backend hardening (18 audited bugs)
- Critical: gradual transitions no longer abort near the end — ramp steps are scheduled at absolute times so per-step IPC cost is absorbed, and the final exact-target step gets a bounded grace. This fixed
transition,preset apply --transition-secondsandreconcile. - One shared lock for every
hyprsunset.confwriter (schedule set + enable/disable); toggle transactions commit throughupdate_stateso concurrent snooze/reconcile writes survive. - Shortcut keys require at least one modifier (a bare
, Vused to capture the V key globally); unavailable nightlight natives no longer report success in preset applies;clear_historydecides existence under the lock. - DST-correct snooze-until-tomorrow for fixed-offset zones; day/night ownership markers emitted by the schedule renderer; 5900 K day threshold for the enabled flag; module load failures surface on stderr; stable
error_codeon every CLI error path.
UI review applied in full
- Single status box (no duplicated "last applied"), one history affordance with the latest three entries, "Edit automation" removed from Home.
- Live controls moved above saved configuration; visual order now matches keyboard order.
- Applied preset carries a "●" marker; preset deletion names its target and confirms with a second click; the refresh action is labeled.
- Schedule caption shows the programmed window ("Runs · 06:00 → 15:30"); snooze actions sit in an even 2×2 grid; preflight result is a badge next to its button; apply scope explains Session vs Persistent.
- Active snooze shows its remaining minutes; every helper call answers with a visible "Applying…" line; a keyboard-hints line keeps j/k/h/l discoverable; icon-only and preset controls carry Accessible names.
Smoother sliders
- Numeric labels track the drag target like the knob (no more lag-then-snap); temperature wheel/keyboard steps drop from 100 K to 50 K.
Time-of-day presets
reading/work/cinemareplaced by day (6000 K), evening (4500 K), night (3200 K) — the ladder the schedule already speaks. Existing configs migrate: legacy defaults map to the closest warmth (reading/cinema→ night,work→ evening).
Packaging
- README in English, refreshed preview, internal docs out of the shipped package, broader
.gitignore.
Upgrade: omarchy plugin update io.github.znow01.veilleuse --yes