diff options
| author | Craig Jennings <c@cjennings.net> | 2026-07-05 00:10:20 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-07-05 00:10:20 -0500 |
| commit | 157d0ce5943215b7c29e5f124336af562a4fdb2b (patch) | |
| tree | 71b9bc078fae2c639516ef0c2767b388d3c862fc /docs/specs | |
| parent | 2f6a8d66de9c09ec9e7cabdfdb5838b28589be2d (diff) | |
| download | archsetup-157d0ce5943215b7c29e5f124336af562a4fdb2b.tar.gz archsetup-157d0ce5943215b7c29e5f124336af562a4fdb2b.zip | |
docs(spec): timer panel to DOING, fold in the cj-comment build scope
Craig directed the build. Consolidated the four resolved decisions with his cj input from the sibling timer-module spec: GTK app in the instrument-console look, a queue/output-wall auto-sorted by fire time, stopwatch lap/stop with saveable runs, notify integration, 5/25-min configurable defaults, up to 10 timers, and widget-gallery elements. wtimer stays the engine; the bar's fuzzel creation flow retires and the module opens the panel.
Diffstat (limited to 'docs/specs')
| -rw-r--r-- | docs/specs/2026-07-02-timer-panel-spec.org | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/docs/specs/2026-07-02-timer-panel-spec.org b/docs/specs/2026-07-02-timer-panel-spec.org index 6368d31..baa1da1 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 -* DRAFT Timer GTK Panel +* DOING 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) -* DRAFT Status +* DOING Status :PROPERTIES: :ID: 1770af2e-b093-4024-a512-ae4324a2869f :END: +- [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 timer a gtk UI/UX like the network panel. spec this out." @@ -91,6 +92,26 @@ click-driven bar path and the keybind/fuzzel path. Until the panel ships the fuzzel flow stays (it's styled and tested); phase 4 removes it after the panel proves out. +* Build scope (consolidated 2026-07-05 — the four decisions plus Craig's cj input) + +The panel is a new =timer/= dotfiles package mirroring =net/= and =audio/= (src-layout, GTK4 + gtk4-layer-shell, humble-object PanelModel, instrument-console faceplate aesthetic — machined plate, engraved section labels, status lamps, console keys). wtimer stays the state engine; the panel is a view over it. + +Create + queue: +- A configure strip (top): pick timer / alarm / stopwatch / pomodoro, set the value (preset chips per decision C + a freeform entry validated by wtimer's parsers, optional label). A =+= adds the configured item to the queue. +- The queue is an output-wall-style list (the instrument-console output well), *auto-sorted by soonest fire time* (the item that notifies next is on top). One row per item: type glyph, label, live countdown / clock time / pomodoro phase+cycle, pause/resume, cancel, click-to-promote (bar glyph slot). +- Up to 10 timers; the two starting timer presets default to 5 min and 25 min, and the preset set is configurable and deletable. + +Stopwatch: +- A running stopwatch row has a Lap button and a Stop button. Lap records the elapsed time at the press; unlimited laps; a lap can optionally be named (non-interruptive — naming never blocks further laps). On stop, the full run (splits + optional names) can be saved to review later. Save target: an org file (default =~/org/stopwatch-runs.org=, override via a config key) — one heading per run with a table of laps. + +Live updates + notifications: +- A new =wtimer watch= subcommand emits state on every change (state-file watch → JSON lines on stdout); the panel subscribes for push updates instead of polling. The bar may adopt it later. +- Notifications for alarms and timers go through the =notify= script (wtimer already fires notify on completion; keep that path the single notification owner). + +UI elements: draw from the panel widget gallery prototype (=docs/prototypes/2026-07-03-panel-widget-gallery-prototype.html= in the archsetup repo) for the console keys, lamps, output-well rows, and chips, matching the shipped net/bt/audio look. + +Retire the old timer: the bar's =custom/timer= on-click drives =wtimer new= (the fuzzel chain). Rewire the bar module's on-click to open this panel, and retire the =wtimer new= fuzzel creation flow (decision B). Keep =wtimer render= as the bar indicator and the wtimer engine as the state source. + * Decisions (Craig) ** DONE Panel scope: standalone timer panel, or a page in the desktop-settings panel? |
