From 0af88d35a6f22c11e346970bec356bae0b74d4a2 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 5 Jul 2026 00:49:27 -0500 Subject: docs(todo): timer panel shipped — spec IMPLEMENTED, task closed, manual tests filed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The timer GTK panel built and shipped to dotfiles (4 commits). Flipped the spec to IMPLEMENTED, closed the Timer GTK panel task, and filed the live-verification checklist (bar-opens-panel, create/validate, fire-time sort, pause/cancel/promote, stopwatch lap/stop/save, 10-cap + live countdown) under Manual testing and validation. --- todo.org | 43 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) (limited to 'todo.org') diff --git a/todo.org b/todo.org index dafc5a3..259ed6f 100644 --- a/todo.org +++ b/todo.org @@ -198,13 +198,11 @@ From the 2026-07-04 roam capture. The waybar collapse mechanism (click the trian :END: Follow-up from the 2026-07-04 net-panel hardening speedrun (Craig's cj question on the no-WiFi item). The shipped no-wifi-hardware verdict covers "no adapter at all." This tier covers "adapter present but the driver is wedged": read-only health signals — =ip link= (device present but no-carrier / down), =dmesg= / =journalctl -k= for firmware-load failures, =rfkill= for a hard block, =modinfo= / =lsmod= for the driver module — classified before a generic reset. Remedy actions: a privileged =modprobe -r && modprobe = reload of the wifi driver, and a firmware-package pointer when the failure is a missing/failed firmware load. Dotfiles net-package work (handled per the archsetup-owns-dotfiles rule). Design pass first to decide whether it's worth a repair tier vs a needs-user-action pointer. -** TODO [#B] Timer GTK panel :feature:waybar: -:PROPERTIES: -:LAST_REVIEWED: 2026-07-02 -:END: -Initial spec written 2026-07-02: [[file:docs/specs/2026-07-02-timer-panel-spec.org]] (DRAFT — four decisions await Craig's review before build; net-panel Blueprint/GTK4 stack, wtimer stays the state owner). +** DONE [#B] Timer GTK panel :feature:waybar: +CLOSED: [2026-07-05 Sun] +Built and shipped to dotfiles 2026-07-05 in a no-approvals speedrun (4 commits =1f4f270=..=78d3cbb=): wtimer gained watch/lap/save; a new =timer/= package holds a GTK-free PanelModel (62 tests) and the GTK instrument-console panel; the bar's =custom/timer= now opens the panel and the fuzzel creation flow retired. Spec: [[file:docs/specs/2026-07-02-timer-panel-spec.org]] (IMPLEMENTED). Code-complete; live GTK verification filed under Manual testing and validation below. -From Craig's roam capture 2026-07-02: give the timer a GTK UI/UX like the network panel. +From Craig's roam capture 2026-07-02: give the timer a GTK UI/UX like the network panel. Scope expanded via a later cj comment (queue/output-wall auto-sorted by fire time, stopwatch lap/stop + saveable runs, 5/25 configurable defaults, up to 10 timers, widget-gallery elements) — folded into the spec's Build scope and shipped. ** TODO [#B] Desktop-settings dropdown panel :waybar: :PROPERTIES: @@ -609,6 +607,39 @@ Parse yay errors and provide specific, actionable fixes instead of generic error Enhance existing indicators to show what's happening in real-time ** TODO Manual testing and validation +*** Timer panel: apply the new package + configs, then reboot (precondition for the timer tests) +What we're verifying: the new =timer/= package, the =timer= / =timer-panel= bin shims, and the waybar + hyprland edits are live. New files need a restow (a plain =git pull= doesn't symlink them). Quit Hyprland or run from a TTY. +#+begin_src sh :results output +cd ~/.dotfiles && git pull && make restow hyprland +#+end_src +Then reboot (picks up the float rule, the 2px border, the Super+P/Shift+P + Control_R keybinds, and the bar rewire). +*** Timer panel opens from the bar, fuzzel retired +What we're verifying: the bar module opens the GTK panel, not the old fuzzel menu. +- Click the timer module on the bar. +Expected: the instrument-console timer panel opens floating, top-right; the old fuzzel type-menu does not appear. +- Press q or Escape. +Expected: the panel closes. +*** Create a timer (preset + freeform validation) +- Open the panel, pick the timer type, click the 5m chip, click +. +Expected: a 5:00 timer appears in the queue and counts down live. +- Type a bad value (e.g. "xyz") in the freeform entry. +Expected: an inline reject reason shows and + is blocked; a valid value (e.g. "25m") adds on +. +*** Queue auto-sorts by fire time +- Add a 25m timer, then a 5m timer, then an alarm a few minutes out. +Expected: the queue orders soonest-first (5m above 25m; the alarm placed by its fire time). +*** Per-item controls: pause / cancel / promote +- On a running timer: pause then resume; cancel; click the row to promote. +Expected: pause freezes the value and resume continues; cancel removes it; promote makes it the bar's primary glyph. +*** Stopwatch lap / stop / save +- Add a stopwatch, hit Lap two or three times (name one lap via the popover), then Stop. +Expected: laps record; Stop saves the run. Then: +#+begin_src sh :results output +cat ~/org/stopwatch-runs.org +#+end_src +Expected: an org heading for the run with a lap table (split / cumulative / optional name). +*** 10-item cap + live countdown +- Queue items until 10 exist. +Expected: + disables with a reason at 10; running countdowns advance live in the panel (the wtimer watch subscription). *** Audio panel: apply the new shims + configs (precondition for the tests below) What we're verifying: the new =audio=/=audio-panel=/=waybar-audio= bin shims and the hyprland.conf + waybar config edits are live. New files need a restow (a plain =git pull= doesn't symlink them). Quit Hyprland or run from a TTY — restowing live Hyprland writes a stub hyprland.conf. #+begin_src sh :results output -- cgit v1.2.3