aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xarchsetup2
-rw-r--r--todo.org34
2 files changed, 26 insertions, 10 deletions
diff --git a/archsetup b/archsetup
index 7531821..699a090 100755
--- a/archsetup
+++ b/archsetup
@@ -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)
diff --git a/todo.org b/todo.org
index f1ce9b5..2e3d97f 100644
--- a/todo.org
+++ b/todo.org
@@ -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= /