diff options
| -rwxr-xr-x | archsetup | 2 | ||||
| -rw-r--r-- | todo.org | 34 |
2 files changed, 26 insertions, 10 deletions
@@ -1866,6 +1866,8 @@ hyprland() { action="Hyprland Utilities" && display "subtitle" "$action" aur_install pyprland # scratchpads, magnify, expose (fixes special workspace issues) pacman_install waybar # status bar + pacman_install gtk4-layer-shell # custom/net connection panel (GTK4 layer-shell) + pacman_install python-gobject # PyGObject for the net panel pacman_install fuzzel # app launcher (native Wayland, pinentry support) pacman_install awww # wallpaper daemon (swww successor; provides swww) aur_install waypaper # wallpaper GUI (awww backend) @@ -129,16 +129,30 @@ 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: -Deliverable: GTK4 + gtk4-layer-shell panel (pocketbook scaffold); =net list/up/ -down/add/edit/remove/rescan= (open + WPA-PSK; enterprise activate-only); MRU list -with live signal; mutation safety + rollback (keep prior link until target -activates, no stranding); panel state machines; the panel UX flow (default focus, -primary buttons, disabled rules, confirmation wording, keyboard nav). -Tests: fake-nmcli command-sequence assertions (UUID-keyed, escaped parsing: -colon/backslash/newline/duplicate/hidden/non-ASCII); rollback keeps prior link on -failed switch; NM-secret write + no-secret-leak; panel state-machine transitions. -Verify (manual, live): see Manual testing and validation. +*** 2026-06-29 Mon @ 22:19:25 -0400 Phase 2 shipped — panel shell + connection management +Shipped to dotfiles (commits =4e7740f=..=24bcac5=, pushed). Engine: =net list= (saved +MRU + in-range wifi scan, infrastructure types filtered), =net up/down= (UUID-keyed, +mutation safety — keep prior link until target activates, classify wrong-password vs +generic, report auto-reactivation), =net add/edit/remove/rescan= (open + WPA-PSK; +enterprise activate-only; secret to NM's store, never our JSON/log — tested). + +Panel: a GTK-free PanelModel (selection, four state machines, the UX-flow enable +rules, terminal states) + a GTK4 gtk4-layer-shell window (=net panel=) anchored +top-right under the bar — Connections section with MRU list, active marked, signal +glyph, row-click select, Connect/Add/Forget/Rescan, confirm-on-forget, worker-thread +engine calls via GLib.idle_add. GTK imported lazily so the CLI/tests stay GTK-free. + +Bar interactions (settled with Craig over live iteration): left = =net-panel= toggle, +middle = =net portal=, right = =net-fix= (notify the doctor result when one-way; open +a terminal only when the outcome is fixable — the sudo/interactive case). Airplane on +Super+Shift+A. archsetup adds =gtk4-layer-shell= + =python-gobject= (this commit); +already on velox. + +Tests: 204 in tests/net (merge ordering/dedup, up/down mutation safety, no-secret-leak +on add/edit, panel model + state machines, gui row-format helpers). Full dotfiles suite +green (32 suites). Live-verified on velox: panel opens/toggles, list shows real 24 +profiles, right-click notification delivers (Craig confirmed). Phase 3 (diagnose/repair/ +speedtest IN the panel) is next; the engine for it already exists from Phase 1. *** TODO Phase 3 — diagnostics + speed test in the panel :network: Deliverable: wire =net diagnose= / =net repair= / =net doctor= / =net portal= / |
