Skip to content

Releases: ZnOw01/Veilleuse

v3.4.0 — UI Modernization, Fluid Route Transitions & Robust Error Handling

Choose a tag to compare

@ZnOw01 ZnOw01 released this 02 Sep 14:35

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) between Home, Automation, and Settings routes.
  • 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

Choose a tag to compare

@ZnOw01 ZnOw01 released this 26 Aug 17:29

Highlights in v3.3.0

  • Backend & Core Hardening:

    • File lock descriptor cleanup in scripts/state_utils.py safeguarded against leak edge cases.
    • Added compilation checks for state_utils.py in scripts/check.sh.
    • Configurable PYTHON interpreter resolution across virtual environments and CI workflows.
    • Enhanced cache and temp directory pruning (.ruff_cache, .mypy_cache) in package hygiene gates.
  • Frontend & QML Tokens:

    • Standardized chevron navigation icons to use Icons.glyph() instead of raw literal codepoints.
    • Removed dead operationOrigin property in Panel.qml.
    • Aligned schedule validation locale propagation across editor methods.
  • Documentation & Architecture:

    • Redesigned and streamlined README.md with Mermaid architecture diagrams, module breakdown tables, and dual-localization guides.
    • Removed redundancy and marketing filler for a dense, factual reference.
  • Quality Gates & Tests:

    • 100% test pass rate across 171+ Python tests and 107 Node test assertions.

Veilleuse 3.2.1

Choose a tag to compare

@ZnOw01 ZnOw01 released this 21 Aug 19:20

Highlights

  • Fixed: state_utils.__all__ exported the removed BUILTIN_PRESETS symbol, breaking import * consumers.
  • CI: the workflow now delegates to scripts/check.sh as the single source of truth, eliminating pipeline drift (the Node suite had silently lost icons.test.mjs in 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 removed BUILTIN_PRESETS from __all__ (AttributeError on star-import)

Added

  • Dedicated shortcut_utils test 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_schedule unit table
  • Toggle coverage: public schedule_status() API and per-case error codes (missing_config, malformed_config, ambiguous_config, conflict)
  • Persistence coverage: update_config semantics, history-corruption fail-closed modes, 0700 private 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

Choose a tag to compare

@ZnOw01 ZnOw01 released this 20 Aug 14:47

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

Choose a tag to compare

@ZnOw01 ZnOw01 released this 18 Aug 14:33

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 + rescanPlugins reload step.

Veilleuse 3.1.0

Choose a tag to compare

@ZnOw01 ZnOw01 released this 18 Aug 14:16

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.js and its test suite; the panel only ships UiModel.js.
  • Removed the redundant uiModelV2 test file — its unique cases moved into UiModel.test.js.
  • Marketplace preview restored as preview.png.

Veilleuse 3.0.0

Choose a tag to compare

@ZnOw01 ZnOw01 released this 16 Aug 23:13

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-config commands. 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 in hyprsunset.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 writes identity = 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

Choose a tag to compare

@ZnOw01 ZnOw01 released this 15 Aug 21:11

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

Choose a tag to compare

@ZnOw01 ZnOw01 released this 15 Aug 20:46

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-seconds and reconcile.
  • One shared lock for every hyprsunset.conf writer (schedule set + enable/disable); toggle transactions commit through update_state so concurrent snooze/reconcile writes survive.
  • Shortcut keys require at least one modifier (a bare , V used to capture the V key globally); unavailable nightlight natives no longer report success in preset applies; clear_history decides 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_code on 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/cinema replaced 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

Choose a tag to compare

@ZnOw01 ZnOw01 released this 13 Aug 21:12

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.