diff options
| -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 |
