aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--todo.org46
1 files changed, 36 insertions, 10 deletions
diff --git a/todo.org b/todo.org
index 8a2893c..1e69fbf 100644
--- a/todo.org
+++ b/todo.org
@@ -55,6 +55,12 @@ Every module's hover tooltip should list its keyboard shortcut(s), for discovera
** TODO [#C] Smooth waybar expansion animation :waybar:
The cluster expansion jumps instead of animating, and a few systray icons pop in one-by-one afterward, which reads as glitchy. Animate the expansion smoothly if waybar allows it — width transitions are limited, so feasibility is uncertain (hence [#C]). Origin: roam inbox capture.
+** TODO [#C] Optional label on timer/alarm/stopwatch items :feature:waybar:
+Let each wtimer item carry an optional short text label. The data model already supports it (=add_timer/add_alarm/add_stopwatch/add_pomodoro= all take =label=""=, and =_describe= shows =label or type=); the gap is the fuzzel-driven creation flow, which doesn't prompt for a label. Add the optional label prompt on create. Origin: roam inbox capture.
+
+** TODO [#C] Open meeting links in the browser instead of the Zoom app :feature:
+Route Zoom (and similar) meeting links to the browser web client rather than launching the native Zoom app — e.g. firefox/chrome extensions, or a =zoommtg://= URL handler / desktop-file override that rewrites to the web-client URL. Decide the mechanism (extension vs handler) before building. Origin: roam inbox capture.
+
** DONE [#C] Alarm tooltip shows time remaining, not alarm time :bug:waybar:quick:
CLOSED: [2026-07-01 Wed]
The =wtimer= alarm tooltip displays the countdown (time remaining) instead of the alarm's wall-clock fire time. For an alarm set to 2:00pm, the tooltip should name the target time, not "1h 23m left". Fix the tooltip rendering in =wtimer= (dotfiles repo). Origin: roam inbox capture.
@@ -194,16 +200,36 @@ contract for what diagnose must detect and what the panel must say.
- Missing speedtest backend — Detect: speedtest-go absent. Report: "Install speedtest-go to run a speed test."
- Privileged op fails (helper missing / sudo declined) — Detect: helper exits non-zero or absent. Report: "Couldn't get admin rights for this repair — <install/fix the helper>."
-*** TODO Sudo helper + NOPASSWD sudoers (gates everything; archsetup-installed)
-Root-owned =/usr/local/bin/net-priv= (or similar), NOT stowed/user-writable, dispatching net's
-fixed privileged verbs; narrow NOPASSWD sudoers scoped to that helper only. =repair.py= calls
-=sudo net-priv <verb>=. Must also fix the latent bug it unblocks: the detached
-=portal_restore_watch= runs with no tty and can't prompt, so today =_restore_dot= silently fails
-when sudo creds aren't cached, leaving DNS unencrypted until a manual =net portal --restore=.
-Separately reconcile where velox's DoT actually lives (currently -DNSOverTLS, no drop-in, so the
-"drop DoT" step is a no-op there; =NET_DOT_CONF= overrides the path) — decide whether velox should
-run DoT at all.
-*** TODO Merged Diagnostics panel + nav restructure (Connections | Diagnostics | Performance)
+*** 2026-07-01 Wed @ 13:02 -0400 net-priv helper landed (V2.1)
+Craig's call: stowed (not root-owned), low security on locked-down single-user machines.
+Shipped =net.priv= module + stowed =net-priv= bin (dotfiles =00aac1e=): a fixed 12-verb set
+(rfkill/radio/mac-random/conn-up/net-off/net-on/restart-nm/dns-set/dns-revert/restart-resolved/
+dot-disable/dot-enable) with per-arg validation (uuid/iface/ipv4/resolved.conf.d-path, injection
+rejected). =repair.py= now routes every privileged op through =priv.run(verb)= in-process instead
+of scattered inline sudo — which also fixes the detached DoT-restore watcher (runs privileged ops
+with no tty) and closes the gap where rfkill repair ran unprivileged. 244 net + 33 dotfiles suites
+green. NO new sudoers needed: archsetup already grants =%<user> ALL=(ALL) NOPASSWD: ALL=
+(archsetup:1089), so every build's primary user already runs net-priv's commands passwordless;
+"replicate in archsetup" is already satisfied. net-priv rides =make stow hyprland=; hand-linked on
+velox. The velox DoT-path reconcile (whether velox should run DoT at all) stays open — folded into
+the deeper reconcile, low priority since the guard makes it a no-op.
+*** 2026-07-01 Wed @ 14:05:47 -0400 Shipped V2.2 — merged Diagnostics panel + nav restructure, no terminals
+Built the V2 panel (dotfiles =75ed825=, pushed): three top tabs Connections |
+Diagnostics | Performance; Diagnostics merges the old Diagnose + Repair pages into a
+sub-row (Diagnose | Get me online | Advanced) over a shared area that shows diagnose
+rows AND streams repair progress in-panel. net-popup deleted entirely; repairs run on
+a worker thread through net-priv (no tty). doctor grew an =on_step= callback so Get me
+online streams each escalation step live. Connections groups Saved / Available now /
+Wired with a golden group header and joins from a row (=join_plan= auth matrix +
+=manage.join= one-step connect, secret to NM only); the Add modal became the hidden-network
+affordance. Every diagnose/repair/speed run offers a Copy/Open redacted report
+(=report.py=, MAC/IP scrubbed). Waybar visual contract applied (dark capsule, golden
+border, monospace) via a CssProvider. =net-fix= opens the panel on Diagnostics instead of
+a terminal; middle-click runs =net portal= directly. TDD: 34 new GTK-free tests (grouping,
+join_plan, join, report, on_step, eventlog.tail); 278 net + 33 dotfiles suites green.
+Live-verified: AT-SPI panel_smoke passes end-to-end + screenshots confirm both pages and
+the visual contract. DAILY-DRIVER: waybar config + net-fix are stow symlinks (live on
+disk); ratio needs =git pull= + waybar restart; velox waybar picks up on next restart.
**** 2026-06-30 Tue @ 17:36 -0400 Dispositioned the 4th-review findings into the spec
Codex's 9 fourth-review findings (8 accept, 1 modify) are folded into the spec's
"V2 panel UX — the target design" section (cookie [40/40]): single nav target,