diff options
| author | Craig Jennings <c@cjennings.net> | 2026-07-05 00:49:27 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-07-05 00:49:27 -0500 |
| commit | 0af88d35a6f22c11e346970bec356bae0b74d4a2 (patch) | |
| tree | 34f520f82309b139018924118925f0563381e109 | |
| parent | 157d0ce5943215b7c29e5f124336af562a4fdb2b (diff) | |
| download | archsetup-0af88d35a6f22c11e346970bec356bae0b74d4a2.tar.gz archsetup-0af88d35a6f22c11e346970bec356bae0b74d4a2.zip | |
docs(todo): timer panel shipped — spec IMPLEMENTED, task closed, manual tests filed
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.
| -rw-r--r-- | docs/specs/2026-07-02-timer-panel-spec.org | 7 | ||||
| -rw-r--r-- | todo.org | 43 |
2 files changed, 41 insertions, 9 deletions
diff --git a/docs/specs/2026-07-02-timer-panel-spec.org b/docs/specs/2026-07-02-timer-panel-spec.org index baa1da1..ceb6e03 100644 --- a/docs/specs/2026-07-02-timer-panel-spec.org +++ b/docs/specs/2026-07-02-timer-panel-spec.org @@ -4,16 +4,17 @@ #+TODO: TODO | DONE #+TODO: DRAFT READY DOING | IMPLEMENTED SUPERSEDED CANCELLED -* DOING Timer GTK Panel +* IMPLEMENTED Timer GTK Panel :PROPERTIES: :ID: 25ed5321-f035-42b3-b115-69364d775f41 :END: - 2026-07-04 Sat @ 12:36:56 -0500 — retrofitted by spec-sort; status set to DRAFT (evidence-based, human-confirmed) -* DOING Status +* IMPLEMENTED Status :PROPERTIES: :ID: 1770af2e-b093-4024-a512-ae4324a2869f :END: +- [2026-07-05 Sun] IMPLEMENTED — built and shipped to dotfiles in a no-approvals speedrun (4 commits 1f4f270..78d3cbb): wtimer watch/lap/save; a new timer/ package with a GTK-free PanelModel (62 tests) + the GTK instrument-console panel; bar integration (custom/timer opens the panel, the fuzzel creation flow retired, Hyprland float rule added). Code-complete; live GTK behavior awaits Craig's manual pass (filed under "Manual testing and validation" in todo.org) — a failing check promotes to a bug. - [2026-07-05 Sun] DOING — Craig directed the build (no-approvals speedrun). Folded in the cj input from the sibling waybar-timer-module spec (GTK app styled like the panels; a queue/output-wall auto-sorted by fire time; stopwatch lap/stop + saveable runs; notify integration; 5/25-min configurable+deletable defaults; up to 10 timers; widget-gallery elements) — see Build scope below. Bypassed the READY spec-review step at Craig's direction; the four decisions were already resolved. - [2026-07-04 Sat] DRAFT — all four decisions resolved by Craig (standalone; retire fuzzel once the panel lands; timer chips gain 10m/30m/2h; wtimer watch mode over polling). Decision-complete; ready for a spec-review to flip it READY before build. - [2026-07-02 Thu] DRAFT — initial spec from Craig's roam capture "give the @@ -23,7 +24,7 @@ | Field | Value | |--------+---------------------------------------------------| -| Status | draft | +| Status | implemented | |--------+---------------------------------------------------| | Owner | Craig Jennings | |--------+---------------------------------------------------| @@ -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 <mod> && modprobe <mod>= 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 |
