aboutsummaryrefslogtreecommitdiff
path: root/todo.org
diff options
context:
space:
mode:
Diffstat (limited to 'todo.org')
-rw-r--r--todo.org55
1 files changed, 36 insertions, 19 deletions
diff --git a/todo.org b/todo.org
index ea8864f..b72e9d4 100644
--- a/todo.org
+++ b/todo.org
@@ -97,19 +97,36 @@ Phases below, dependency order. Engine/unit work is agent-verifiable (=unittest=
+ fakes on PATH, coverage via venv); the live-network and visual states need real
conditions, filed under "Manual testing and validation".
-*** TODO Phase 1 — indicator + console recovery :network:
-Deliverable: =net status= + =net probe= (native cheap captive probe) + the
-=captive= =--json= probe refactor; =waybar-net= replacing =custom/netspeed=;
-split-cadence cache (single-flight flock, atomic write, fresh/stale/expired/unknown
-classes, iface/SSID/UUID invalidation); CSS states (captive/no-internet/degraded/
-rfkill); =net repair= tiers (rfkill/reset/bounce); =net doctor [--fix]= with the
-four terminal classifications; Makefile console-recovery targets (=make online=
-etc.); absorb the airplane state and delete the standalone airplane module
-(=waybar-airplane=, =airplane-mode=, their tests, =custom/airplane= + css).
-Tests: =tests/net/= + =tests/waybar-net/= unittest with fake nmcli/curl/rfkill/
-resolvectl on a temp PATH; doctor-classification fixtures; degraded-under-slow-nmcli
-benchmark; branch coverage ≥90% on pure modules via a throwaway venv; coverage-gap
-pass.
+*** 2026-06-29 Mon @ 20:19:11 -0400 Phase 1 shipped — indicator + console recovery
+Shipped to the dotfiles repo (10 commits, =5254bd8=..=c095a22=, pushed to main).
+The =net= engine is a src-layout Python package in-tree, imported by a bin shim
+that resolves the stow symlink back to the repo — so it runs from a bare TTY with
+no install, which the recovery path depends on.
+
+Landed: =net status= (fast path, one nmcli call + sysfs, degraded fallback in
+budget) + =net probe= (native captive probe, single-flight flock, atomic cache,
+fresh/stale/expired/unknown classes, iface/SSID/UUID invalidation); =waybar-net=
+replacing =custom/netspeed=, throughput → tooltip, CSS states in both themes +
+live; =net diagnose= (read-only steps) + =net repair= (rfkill/reset/bounce/
+dns-test, cleanup-verified) + =net doctor [--fix]= with the four terminal
+classifications; =net portal= + the =captive --probe-json= refactor; redacted
+JSONL event log; Makefile recovery targets (=make online= etc.); =~/.config/net/
+config=. Verified live: =make net-status= reads the real wlp170s0 / @Hyatt_WiFi.
+
+Airplane (Craig's call, option 1): =custom/net= absorbs only the *display* — net
+reads the airplane-mode state file and shows an airplane state/glyph. The
+airplane-mode toggle stays (it's a low-power mode — radios + CPU + brightness +
+services — not a radio switch), now on =custom/net='s right-click + signal 15.
+Deleted: =waybar-airplane=, =waybar-netspeed=, =custom/airplane=, their tests +
+css. =airplane-mode= kept.
+
+Tests: 160 in =tests/net/= (fake nmcli/curl/rfkill/resolvectl/ping/getent/
+systemctl on a temp PATH; doctor-classification fixtures; degraded-under-slow-
+nmcli benchmark) + the =captive= probe-mode tests; full dotfiles suite green (32
+suites). Coverage-gap pass via throwaway venv: pure modules ≥90% branch
+(classify 100%), IO-error branches excused in the test docstring.
+Deferred to Phase 2/3: archsetup deps (gtk4-layer-shell/python-gobject Phase 2,
+speedtest-go-bin Phase 3 — not added before the code that needs them).
Verify (manual, live): see Manual testing and validation.
*** TODO Phase 2 — panel shell + connection management :network:
@@ -788,12 +805,12 @@ rfkill list wifi # confirm Soft blocked: yes
make -C ~/.dotfiles online # or: net doctor --fix
#+end_src
- Expected: doctor reports the rfkill block, runs =rfkill unblock wifi= + =nmcli radio wifi on=, reconnects, and ends "online" — all from the TTY.
-*** Network module Phase 1 — airplane state absorbed, old module gone
-What we're verifying: the airplane toggle/state moved into =custom/net= and the standalone module is removed cleanly.
-- Toggle airplane mode (the keybind / the net module's control).
-- Expected: =custom/net= reflects the airplane state; wifi drops and restores.
-- Check the bar has no separate =custom/airplane= module, and =waybar-airplane= / =airplane-mode= are gone from =~/.local/bin=.
-- Expected: no duplicate airplane indicator; no stale scripts.
+*** Network module Phase 1 — airplane state absorbed, display-only (option 1)
+What we're verifying: =custom/net= shows the airplane state, the toggle stays the airplane-mode low-power script (now on the net module's right-click), and only the redundant *display* pieces were removed. Craig's call: net absorbs the display, not the low-power orchestration.
+- Right-click =custom/net= (it now runs =airplane-mode=).
+- Expected: airplane engages — wifi drops, brightness dims, CPU/services to low-power — and =custom/net= shows the airplane glyph in gold. Right-click again restores everything.
+- Check the bar has no separate =custom/airplane= module, and =waybar-airplane= / =waybar-netspeed= are gone from =~/.local/bin= (dangling symlinks removed).
+- Expected: no duplicate airplane indicator; =airplane-mode= itself is still present (=ls ~/.local/bin/airplane-mode= → exists), since the low-power toggle is not a network concern.
** DOING [#B] Prepare for GitHub open-source release
:PROPERTIES: