aboutsummaryrefslogtreecommitdiff
path: root/assets/2026-07-03-instrument-console-panels-build-summary.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-03 06:56:37 -0400
committerCraig Jennings <c@cjennings.net>2026-07-03 06:56:37 -0400
commit6cbef920c55ed39df19015fc4aa6bd10e346bd4e (patch)
treefc2598f724e9e30344c887cfcbdfc57f0da43400 /assets/2026-07-03-instrument-console-panels-build-summary.org
parent9ea9ce4c6fa9795e8a7cac366970fc962cb54f7f (diff)
downloadarchsetup-6cbef920c55ed39df19015fc4aa6bd10e346bd4e.tar.gz
archsetup-6cbef920c55ed39df19015fc4aa6bd10e346bd4e.zip
chore(todo): instrument-console rebuild complete, spec IMPLEMENTED
Closed out the panel rebuild. Both panels verified live on velox: 46 suites and both AT-SPI smokes green, the dead-code removal shipped in dotfiles f4e688e, and the render carries the phase-3/4/5 screenshots since no view code changed. Flipped the parent task and its three folded children (network panel redesign, bt switch placement, bt rename) to DONE, ticked the spec's last phase, and flipped the spec to IMPLEMENTED. Filed the approved prototype and the build summary flat into assets/ with dated names, updated the inbound links, and dropped the working dir. The real-device bt interactions (pair, rename, connect, forget, discoverable, power, low-batt badge) can't be auto-driven, so they're a manual-test checklist.
Diffstat (limited to 'assets/2026-07-03-instrument-console-panels-build-summary.org')
-rw-r--r--assets/2026-07-03-instrument-console-panels-build-summary.org107
1 files changed, 107 insertions, 0 deletions
diff --git a/assets/2026-07-03-instrument-console-panels-build-summary.org b/assets/2026-07-03-instrument-console-panels-build-summary.org
new file mode 100644
index 0000000..a7a3768
--- /dev/null
+++ b/assets/2026-07-03-instrument-console-panels-build-summary.org
@@ -0,0 +1,107 @@
+#+TITLE: Instrument-Console Panel Rebuild — Build Summary
+#+DATE: 2026-07-03
+#+AUTHOR: Craig Jennings & Claude
+
+Findings summary for the no-approvals speedrun that rebuilt the net and
+bluetooth waybar panels as single-screen instrument consoles. Spec:
+[[file:../docs/design/2026-07-03-instrument-console-panels-spec.org][2026-07-03-instrument-console-panels-spec.org]] (ID e73877f5, IMPLEMENTED).
+Normative design: [[file:2026-07-03-instrument-console-panels-prototype.html][2026-07-03-instrument-console-panels-prototype.html]]
+(Craig approved through five prototype iterations).
+
+* What shipped
+
+Both panels went from a tabbed Blueprint UI (Connections / Diagnostics /
+Performance style tabs) to one always-visible instrument console: a faceplate
+with a state lamp and word, engraved section labels, scrolled lamp rows for
+the live entities, a row of console keys, cairo dial meters, and an output
+well that streams diagnostics in place. No terminals, no tabs.
+
+Six phases, each committed and pushed on landing:
+
+| Phase | Commit (dotfiles) | What landed |
+|-------+----------------------+-------------------------------------------------|
+| 1 | (spec + task wiring) | Spec authored, parent task wired with :SPEC_ID: |
+|-------+----------------------+-------------------------------------------------|
+| 2 | 81ec9c3 | Net GTK-free presenter layer + engine verbs |
+| | | (52 new tests) |
+|-------+----------------------+-------------------------------------------------|
+| 3+4 | 800ef60 | Net view rebuilt as the console + all |
+| | | interactions wired |
+|-------+----------------------+-------------------------------------------------|
+| 5a | 5318b34 | Bt GTK-free layer + engine gaps (47 new tests) |
+|-------+----------------------+-------------------------------------------------|
+| 5b | 66f03d9 | Bt view rebuilt as the console + all |
+| | | interactions wired |
+|-------+----------------------+-------------------------------------------------|
+| 6 | f4e688e | Dead-code removal, build close-out |
+|-------+----------------------+-------------------------------------------------|
+
+* Engine gaps closed
+
+The console needed capabilities the tabbed panels never had:
+
+- Net: =manage.wifi_radio= (nmcli radio wifi on/off), =manage.device_up=
+ (ethernet takes the route), =sysio.link_speed_mbps= (/sys wired speed),
+ =connections.ethernet_devices=, and a hidden-SSID flag on =manage.add=.
+- Bt: =btctl.set_alias= renames a device through the bluez D-Bus Alias via
+ busctl (there is no MAC-addressed one-shot for set-alias, so =device_path=
+ discovers the controller node from the object tree), =manage.rename= wraps
+ it with a verify-after read, =parse_info= reads the Alias as the display
+ name, and =doctor= grew =on_report= / =on_begin= callbacks so its checks and
+ repairs stream into the output well.
+
+* Tests added
+
+- Phase 2: 52 new net presenter tests (581 net total at the time).
+- Phase 5a: 47 new bt console tests.
+- Both panels' AT-SPI smokes rewritten to drive the single-screen console and
+ anchor on stable engraved labels + the panel-unique console key (net DOCTOR,
+ bt SCAN) rather than the flaky count labels.
+- Full suite through phase 6: 46 suites, zero failures.
+
+* Live-verify results (velox, 2026-07-03)
+
+- =make test=: 46 suites green, zero FAILED/ERROR.
+- =make test-panel= (net): green end to end — faceplate NET·01 / ONLINE, one
+ Close, DOCTOR + SPEED TEST keys, engraved CHANNEL/CONSOLE/NETWORKS/TUNNELS,
+ live route line, tunnel rows (tailscale + 7 WireGuard NM), DOCTOR streamed
+ real diagnose steps, output-well dismiss, panel closed on Close.
+- =make test-panel-bt= (bt): green end to end — faceplate BT·01 / POWERED, one
+ Close, adapter-power switch, DOCTOR + SCAN keys, engraved
+ ADAPTER/CONSOLE/NEARBY/PAIRED, discoverable chip, battery gauge slots, DOCTOR
+ streamed real checks, output-well dismiss, panel closed on Close.
+- Both =gui.py= files are byte-identical to their screenshot-verified commits
+ (net 800ef60, bt 66f03d9), so the phase-3/4/5 screenshots (render matching
+ the prototype) still stand — phase 6 touched no view code.
+
+* Phase-6 dead code removed (dotfiles f4e688e)
+
+The console builds its widget tree in Python, so the old Gtk.Template page
+classes and Blueprint sources had no caller:
+
+- =net/src/net/pages.py=, =bluetooth/src/bt/pages.py=
+- both panels' =ui/= dirs (=window_content=, =diagnostics_page=,
+ =connections_page= / =devices_page= — the =.blp= sources and compiled =.ui=)
+- the =make ui= Blueprint-compile target and its =.PHONY= entry (no =.blp=
+ files remain to compile)
+- a stale =gui.py / pages.py= mention in the bt =viewmodel.py= docstring
+
+Confirmed nothing imported the removed modules before deleting; 46 suites and
+both smokes stayed green after.
+
+* Folded tasks closed with this build
+
+- Network panel redesign — no terminals, verify-everything, full failure
+ coverage (its failure-mode catalog stays as the standing diagnose/repair
+ completeness reference).
+- Bluetooth panel: switch placement + panel title.
+- Bluetooth panel: rename devices.
+
+* Deferrals
+
+Interactions that mutate Craig's real bluetooth state can't be auto-driven —
+they need a human at the keyboard with real devices. Filed as a manual-test
+checklist under "Manual testing and validation" in todo.org: pair-passkey
+flow, rename a real device, connect/disconnect, forget, discoverable toggle,
+power toggle, and the LOW BATT badge with a real sub-15% device. Net's
+in-panel speedtest and timer-dialog manual tests were already pending there.