Own the network: details, VPN, enterprise Wi-Fi, and a firewall that can also allow

Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
This commit is contained in:
Gabriel Brown
2026-08-24 16:31:52 -04:00
parent aba2d16ffa
commit b30bf40407
29 changed files with 4452 additions and 241 deletions
+31 -1
View File
@@ -9,7 +9,11 @@ fail() {
exit 1
}
pages=(Home MyHome Phone Displays Connectivity Bar Dock ControlCenter Tiling Workspaces Sync Sound Shortcuts Mouse Dictation Notifications Focus ScreenIntelligence Health About)
# Firewall, Printers and Sharing joined this list when the Network & Sharing
# rebuild touched all four Connections-category pages at once: three of them had
# never been checked for the page scaffold at all, and a rebuild is exactly when
# a hand-rolled Flickable comes back.
pages=(Home MyHome Phone Displays Connectivity Firewall Printers Sharing Bar Dock ControlCenter Tiling Workspaces Sync Sound Shortcuts Mouse Dictation Notifications Focus ScreenIntelligence Health About)
for page in "${pages[@]}"; do
page_file="$repo_dir/config/dot/quickshell/modules/settings/${page}Page.qml"
[[ -f "$page_file" ]] || fail "${page}Page.qml is missing"
@@ -29,6 +33,32 @@ for page in "${pages[@]}"; do
|| fail "${page}Page.qml still copies the page Flickable scaffold"
done
settings_dir="$repo_dir/config/dot/quickshell/modules/settings"
# A page's objectName is how the running shell is asked to point at it, and how
# a contract finds it without walking the visual tree. The four pages under
# Connections all carry the id their route uses.
while IFS='|' read -r page_file object_name; do
rg -Fq "objectName: \"$object_name\"" "$settings_dir/$page_file" \
|| fail "$page_file does not carry objectName \"$object_name\""
done <<'OBJECTS'
ConnectivityPage.qml|connectivity
FirewallPage.qml|firewall
PrintersPage.qml|printers
SharingPage.qml|sharing
OBJECTS
# A component file that exists but is not exported from qmldir is not a missing
# import error at startup -- it is an unresolved type at the moment the row is
# first rendered, which is to say when somebody expands a connection.
qmldir="$settings_dir/qmldir"
for component in ConnectionDetails EnterpriseJoinForm; do
[[ -f "$settings_dir/$component.qml" ]] \
|| fail "$component.qml is missing"
rg -Fq "$component 1.0 $component.qml" "$qmldir" \
|| fail "$component.qml is not exported from qmldir, so the type resolves to nothing when it is first used"
done
require_row() {
local file="$1"
local row_type="$2"