<feed xmlns='http://www.w3.org/2005/Atom'>
<title>archsetup/docs/design/2026-06-29-waybar-network-module-spec.org, branch main</title>
<subtitle>Builds a full dev workstation from a bare Arch Linux install.
</subtitle>
<id>https://git.cjennings.net/archsetup/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/archsetup/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/'/>
<updated>2026-06-30T00:21:40+00:00</updated>
<entry>
<title>docs: mark waybar network module Phase 1 shipped</title>
<updated>2026-06-30T00:21:40+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-30T00:21:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=dc218f3f08db12f026ee31b9cceb65acdee92593'/>
<id>urn:sha1:dc218f3f08db12f026ee31b9cceb65acdee92593</id>
<content type='text'>
Phase 1 landed in the dotfiles repo (engine, indicator, cache, diagnose/repair/doctor, portal, event log, recovery make targets, airplane absorption). Record it as the dated event-log entry on the Phase 1 task and raise the spec status to "Phase 1 shipped".

One as-built deviation, noted in the spec (decision 12) and the manual-testing checklist: airplane absorption is display-only. The airplane-mode toggle is a low-power mode — radios plus CPU, brightness, and services — not a network concern, so it stays; net shows the state and the toggle moved to custom/net's right-click. Only the redundant display pieces (waybar-airplane, custom/airplane, waybar-netspeed) were removed.
</content>
</entry>
<entry>
<title>docs: finalize waybar network module spec (reviews incorporated)</title>
<updated>2026-06-29T22:30:40+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-29T22:30:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=ce9af72ac4a5a6a30443ccdc4d8d785f0fe28c1b'/>
<id>urn:sha1:ce9af72ac4a5a6a30443ccdc4d8d785f0fe28c1b</id>
<content type='text'>
Incorporated the review feedback and my inline comments into the network-module spec. It's now implementation-ready, every finding resolved.

The reviews reshaped the design in a few ways. Secrets stay in NetworkManager's own store instead of a separate GPG file, dropping that dependency. A net doctor mode plus Makefile targets make recovery work from a bare TTY when the GUI is down. The doctor classifies failures and stops at the right terminal state (needs-user-action, upstream-not-local, deferred-vpn) instead of looping destructive repairs. The module absorbs the airplane indicator, and enterprise WiFi add/edit is vNext (activate-only in v1, since the saved history has no enterprise networks). Added a failure-mode coverage table, exact user-facing strings, the test harness and coverage gate, and the panel UX flow.

Also corrected the spec's test framework from pytest to unittest, which is what the repo uses.
</content>
</entry>
<entry>
<title>docs: add unified waybar network module design spec</title>
<updated>2026-06-29T20:50:15+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-29T20:50:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=b248644109b79d91c3f2a8603cbaefaca05ced81'/>
<id>urn:sha1:b248644109b79d91c3f2a8603cbaefaca05ced81</id>
<content type='text'>
The wifi-no-internet indicator, the nmcli network-manager dropdown, and the captive-portal diagnostics are one feature, so the spec designs them as a single custom/net module instead of three. It splits into three layers: a tested Python net engine wrapping nmcli plus the diagnostics, a thin bar indicator, and a GTK4 layer-shell panel. The captive script becomes the diagnostics engine.

It records the locked decisions (panel toolkit, split probe cadence, GPG store supplements NetworkManager, librespeed for speed test) and a four-phase plan, indicator first. I linked it from both todo tasks.
</content>
</entry>
</feed>
