diff options
Diffstat (limited to 'todo.org')
| -rw-r--r-- | todo.org | 55 |
1 files changed, 36 insertions, 19 deletions
@@ -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: |
