<feed xmlns='http://www.w3.org/2005/Atom'>
<title>archsetup/docs/design/2026-07-02-bluetooth-panel-spec.org, branch claude/hungry-franklin-09fffc</title>
<subtitle>Builds a full dev workstation from a bare Arch Linux install.
</subtitle>
<id>https://git.cjennings.net/archsetup/atom?h=claude%2Fhungry-franklin-09fffc</id>
<link rel='self' href='https://git.cjennings.net/archsetup/atom?h=claude%2Fhungry-franklin-09fffc'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/'/>
<updated>2026-07-04T17:38:10+00:00</updated>
<entry>
<title>docs(spec): sort formal specs into docs/specs/ with lifecycle status</title>
<updated>2026-07-04T17:38:10+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-04T17:38:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=ed906c37f61649d61065d53450fc097865c13593'/>
<id>urn:sha1:ed906c37f61649d61065d53450fc097865c13593</id>
<content type='text'>
Moved the seven formal specs from docs/design/ into docs/specs/, each stamped with a lifecycle status heading: four IMPLEMENTED (bluetooth, net-other-interfaces, audio, instrument-console), one CANCELLED (file-manager-swallow), two DRAFT (desktop-settings, timer). Rewrote the seven todo.org links to the new paths. The two -spec.org files without the spec spine (waybar-network-module, waybar-timer-module) stayed in docs/design/ as notes.
</content>
</entry>
<entry>
<title>feat(bluetooth): prove the fresh-install panel wiring in VM assertions</title>
<updated>2026-07-02T19:21:13+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-02T19:21:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=d60e59ef08a6532e60da14fb455efafa4086c78e'/>
<id>urn:sha1:d60e59ef08a6532e60da14fb455efafa4086c78e</id>
<content type='text'>
Phase 5 needed no new install code: the waybar module, keybind, and shared panel css ride the dotfiles hyprland tier the installer already stows, and sudoers is covered by the existing grant. I added hyprland-gated assertions instead: bt bins stowed executable, custom/bluetooth in the waybar config, the bt-panel bind in hyprland.conf, panel.css present. This closes the bluetooth-panel task and flips the spec to implemented.
</content>
</entry>
<entry>
<title>feat(bluetooth): retire blueman, assert the swap in VM tests</title>
<updated>2026-07-02T19:18:20+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-02T19:18:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=c659ab9b24716736390429a733e45c4ea688c13f'/>
<id>urn:sha1:c659ab9b24716736390429a733e45c4ea688c13f</id>
<content type='text'>
I dropped blueman from the desktop_environment bluetooth loop (bluez + bluez-utils stay) and added the VM assertions: bluetooth stack installed, blueman absent as the retirement regression guard. No new sudoers rule was needed for bt-priv, since the existing blanket grant already covers systemctl restart bluetooth.
</content>
</entry>
<entry>
<title>docs(spec): bluetooth phase 3 shipped, visual batch closed</title>
<updated>2026-07-02T19:05:09+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-02T19:05:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=85858db9957509fc5dae11ae8640de261d5d1658'/>
<id>urn:sha1:85858db9957509fc5dae11ae8640de261d5d1658</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docs(spec): bluetooth phase 2 shipped, AT-SPI smoke deferred until meeting ends</title>
<updated>2026-07-02T18:16:09+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-02T18:16:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=de26fdfc3a2255c482156296d66aaa608c578f1c'/>
<id>urn:sha1:de26fdfc3a2255c482156296d66aaa608c578f1c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docs(spec): bluetooth phase 1 shipped, pw-dump ground truth noted, css factoring moved to phase 2</title>
<updated>2026-07-02T17:31:48+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-02T17:31:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=874ddea038274263e01b32edc2ab6405659f7c5e'/>
<id>urn:sha1:874ddea038274263e01b32edc2ab6405659f7c5e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docs(spec): bluetooth panel reviewed READY, decomposed to DOING; net-panel kbd-nav probe deferred</title>
<updated>2026-07-02T17:07:14+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-02T17:07:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=e3742fb4605b5b0d2f12418211b8959d206e0c66'/>
<id>urn:sha1:e3742fb4605b5b0d2f12418211b8959d206e0c66</id>
<content type='text'>
Fused reviewer + responder pass: gate passed (all four decisions resolved, phases decomposable, bluez 5.86 verbs verified), two non-blocking findings recorded and dispositioned inline (empty-state/no-adapter copy, eventlog + redaction carry-over — both clone the net-panel donor). Build parent now carries the five phase sub-tasks and the spec's ID. The keyboard-nav verification task logs its code-level findings; the live AT-SPI probe waits until Craig's meeting ends (no test windows or synthetic input while zoom holds focus).
</content>
</entry>
<entry>
<title>docs(spec): bluetooth panel decisions resolved, profile switching in v1</title>
<updated>2026-07-02T14:36:26+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-02T14:36:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=85dcae46c0ea39bc587757a5363e483d9ece77de'/>
<id>urn:sha1:85dcae46c0ea39bc587757a5363e483d9ece77de</id>
<content type='text'>
Craig approved all four decisions (pair implies trust+connect, blueman retired outright, battery in captions, 8s scan bursts) and pulled audio-profile switching into v1: the doctor's audio step gains a one-click Switch to A2DP repair over wpctl, and a degraded profile shows in the device caption.
</content>
</entry>
<entry>
<title>docs(spec): bluetooth panel initial spec, net-panel UX findings filed</title>
<updated>2026-07-02T14:18:51+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-02T14:18:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=78259c54d81bbcb63dc83f6b50e3fe77db746dd7'/>
<id>urn:sha1:78259c54d81bbcb63dc83f6b50e3fe77db746dd7</id>
<content type='text'>
The bluetooth panel spec clones the net panel's stack: a GTK-free engine over bluetoothctl one-shot verbs, a GTK4 layer-shell popup, two tabs with ASCII mockups, a diagnostics doctor chain, and four decisions awaiting review. The UX pass surfaced two net-panel findings, filed as tasks: error toasts auto-dismiss before an error can be read, and the V2 spec's keyboard-navigation claims aren't verifiably implemented.
</content>
</entry>
</feed>
