Releases: ZnOw01/Veilleuse
Release list
v3.4.0 — UI Modernization, Fluid Route Transitions & Robust Error Handling
Release v3.4.0 — UI Modernization, Fluid Route Transitions & Robust Error Handling
What's New
- Fluid Route Transitions: Animated directional slide and cross-fade (
180ms Easing.OutCubic) betweenHome,Automation, andSettingsroutes. - Visual Shortcut Badges: Interactive key modifier chip badges (
SUPER + V, etc.) on the Settings view. - Quick Snooze Pills: Instant 15m, 30m, 1h, and Sunset duration presets on the Automation route.
- Schedule Duration Badges: Real-time calculated duration badges for day and night cycles.
- Auto-Dismissing Alerts: Transient feedback and error toasts (
errorTimer) with automatic 4.5s dismiss and route isolation. - Strict Error Boundary Scoping: Schedule-specific parse warnings remain properly scoped to automation without polluting the main Home banner.
- Enhanced Settings Persistence: Live synchronization of preferred language, monitor targets, and global shortcuts across shell reloads.
- Comprehensive Quality Gates: 179/179 automated tests passing with 0 lint warnings and clean bytecode-free hygiene.
v3.3.0 - Enhanced Verification, QML Tokens & Core Hardening
Highlights in v3.3.0
-
Backend & Core Hardening:
- File lock descriptor cleanup in
scripts/state_utils.pysafeguarded against leak edge cases. - Added compilation checks for
state_utils.pyinscripts/check.sh. - Configurable
PYTHONinterpreter resolution across virtual environments and CI workflows. - Enhanced cache and temp directory pruning (
.ruff_cache,.mypy_cache) in package hygiene gates.
- File lock descriptor cleanup in
-
Frontend & QML Tokens:
- Standardized chevron navigation icons to use
Icons.glyph()instead of raw literal codepoints. - Removed dead
operationOriginproperty inPanel.qml. - Aligned schedule validation locale propagation across editor methods.
- Standardized chevron navigation icons to use
-
Documentation & Architecture:
- Redesigned and streamlined
README.mdwith Mermaid architecture diagrams, module breakdown tables, and dual-localization guides. - Removed redundancy and marketing filler for a dense, factual reference.
- Redesigned and streamlined
-
Quality Gates & Tests:
- 100% test pass rate across 171+ Python tests and 107 Node test assertions.
Veilleuse 3.2.1
Highlights
- Fixed:
state_utils.__all__exported the removedBUILTIN_PRESETSsymbol, breakingimport *consumers. - CI: the workflow now delegates to
scripts/check.shas the single source of truth, eliminating pipeline drift (the Node suite had silently losticons.test.mjsin CI). - Tests: suite grown from 380 to 458 tests (353 Python + 105 JS), all green.
- Docs: new screenshots gallery covering all three panel views (Home, Automation, Settings).
Changes
Fixed
fix(state): drop removedBUILTIN_PRESETSfrom__all__(AttributeErroron star-import)
Added
- Dedicated
shortcut_utilstest suite: key-validation matrix, marker-block byte-exact round-trips, ordered bind/unbind collision semantics, backup-once installs, bounded reload subprocess contract - Automation coverage: latest-wins mid-ramp cancellation, deadline expiry with final-step grace, step dedup, honest mid-ramp apply failures, inclusive snooze bounds,
ramp_scheduleunit table - Toggle coverage: public
schedule_status()API and per-case error codes (missing_config,malformed_config,ambiguous_config,conflict) - Persistence coverage:
update_configsemantics, history-corruption fail-closed modes,0700private directory modes
Removed
- One duplicate automation test and one tautological lock-constant test
Full Changelog: v3.2.0...v3.2.1
Veilleuse 3.2.0
Changes in v3.2.0
• UI & Typography Alignment: Route switcher title is centered between navigation buttons with explicit boundaries and eliding to prevent overlap.
• Automation Hero & Vertical Centering: The schedule header card uses CursorSurface with dynamic centering for both icon and toggle switch across 1-line and 2-line states.
• Icon Standardization: Uniform bounding boxes across all slider and header icons via NerdIcon.qml, centering taller display glyphs without visual jumps or baseline clipping.
• Schedule & Snooze Editor Layout: All number fields now use consistent full-width controls (fieldWidth: width) aligning with text inputs.
• Modernized Documentation: Overhauled README.md with clean badges, complete feature matrix, keyboard navigation guide, CLI reference, and architecture invariants.
• All Checks Passing: 100% test pass rate (105 tests) and strict hygiene gates.
Veilleuse 3.1.1
Fix: Left/Right now adjust the slider the mouse is on
The 3.1.0 keyboard-slider handling only worked while the arrow-key cursor owned a slider row. Mouse hover did not move the panel cursor, so hovering a slider and pressing ←/→ still switched views.
- Mouse hover now moves the panel cursor onto the row under the pointer (the standard Omarchy cursor contract, via
HoverHandler+cursorToSection()on every section of all three routes). - With the cursor on a slider, ←/→ step it: brightness/gamma ±1, temperature ±50 K. Elsewhere they still switch views.
- README documents both behaviors and the
omarchy-plugin-update+rescanPluginsreload step.
Veilleuse 3.1.0
Keyboard sliders
- ←/→ now adjust the slider the cursor is on (brightness +1, temperature +50 K, gamma +1) instead of switching views, matching the pointer behavior.
- Outside the sliders, ←/→ still switch between the Home, Automation, and Settings views.
- Keyboard hints updated in English and Spanish.
Housekeeping
- Removed the legacy v1
Model.jsand its test suite; the panel only shipsUiModel.js. - Removed the redundant
uiModelV2test file — its unique cases moved intoUiModel.test.js. - Marketplace preview restored as
preview.png.
Veilleuse 3.0.0
The preset-free Veilleuse
Veilleuse becomes simpler and sharper: one place per decision, no redundancy,
no leftover machinery. This is a major release — surfaces were removed on
purpose.
Removed
- Presets, end to end. Built-in and custom profiles, the default-preset
setting, the preset CLI and every persistence key are gone. Preset-era
config documents migrate on read (the legacy keys are dropped) instead of
failing. - Transition configuration. No more seconds field in the panel and no
transition/transition-configcommands. Scheduled changes still ramp
internally. - Snooze "until tomorrow" and its midnight explanation. Snooze is now a
number plus an hours / minutes / seconds unit (10 s .. 24 h), with the
remaining time and a cancel shown only while a snooze is active. - Session/persistent scope, default preset and the helper preflight UI
from Settings. Settings is now language and the keyboard shortcut. - The Home status box ("Now · Manual · timestamp"), the "Schedule: night"
meta line, the "Live controls" header, the "View history" button and its
list.
New
- The schedule configures the same three options as Home. Each period —
day and night — sets its time plus temperature, brightness and gamma,
entered as numbers. Temperatures keep living inhyprsunset.conf(atomic,
comments and permissions preserved); brightness and gamma are plugin-owned
and applied by reconcile when the schedule enters a period, or right after
you save. A day temperature of 6000 K or above writesidentity = true. - One absolute brightness write. The helper now sends a single
N%
token confirmed by readback instead of a chain of one-point steps, so the
slider reaches the value under your finger in one shot and never keeps
moving after you release. - Arrows-only navigation. Views switch with on-screen chevrons or the
← →keys;↑ ↓move the cursor, Enter activates, Esc closes. The
j/k/h/l keys are gone. - English is the default language. Spanish remains a first-class choice
in Settings; both dictionaries ship complete.
CLI
veilleuse-control status | preflight | reconcile
veilleuse-control brightness [N] [--monitor focused|NAME]
veilleuse-control nightlight toggle|natural|temperature K|gamma N
veilleuse-control snooze status|set --seconds N|--minutes N|clear
veilleuse-control schedule get|status|enable|disable|set \
--day-time HH:MM --night-time HH:MM --day-temp K --night-temp K \
[--day-brightness N] [--day-gamma N] [--night-brightness N] [--night-gamma N]
veilleuse-control shortcut status|install --keys SPEC|remove
preset, settings, history, transition, transition-config and
snooze until-tomorrow no longer exist. The combined status no longer
carries presets, history or history_status sections.
Upgrading
Nothing to do: existing config and state documents load as-is, the stored
schedule and its paused/disabled transaction survive, and the internal
history audit is kept. omarchy plugin update io.github.znow01.veilleuse
pulls the new version.
Veilleuse 2.1.1
Fixes since 2.1.0
- Panel dead after a shell restart: the debounce guard accessed the helper Process id through the root object, which reads undefined on a freshly started QML engine — every helper call aborted with a TypeError (no status, no slider mutations). Ids now resolve through the component scope, and a layout test pins the rule.
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
Veilleuse 2.0.0
Veilleuse 2.0.0
Rediseño completo para Omarchy Quattro con tres vistas nativas: Inicio, Automatización y Ajustes.
Novedades
- presets integrados y personalizados con selección segura de monitor;
- automatización con horario transaccional, snooze, transición y reconcile;
- historial, preflight y persistencia XDG versionada;
- atajos Lua opcionales, reversibles y con detección de colisiones;
- traducciones completas en español e inglés desde una única fuente;
- geometría estable de los toggles durante carga, clic, foco y navegación;
- preview renovado y controles conectados al helper real.
Seguridad y compatibilidad
- brillo físico limitado a pasos de un punto por operación;
- escrituras atómicas, locking y protección contra symlinks;
schemaVersion: 1, compatible con Omarchy 4;- paquete sin
.git, bytecode ni symlinks.
Validación
- 148 pruebas del helper;
- 46 de automatización, 14 de estado, 13 de presets y 11 de horario;
- 116 pruebas Node/QML/modelo;
qmllint, validador de plugin, higiene y paquete aislado verdes.