aboutsummaryrefslogtreecommitdiff
path: root/assets/2026-07-03-instrument-console-panels-build-summary.org
blob: a7a376896f58f23d03290e48a144223057d9f69d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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.