fix(launcher): repair Wi-Fi connections and add disconnect #30

Merged
addison merged 2 commits from fix/wifi-network-list into main 2026-09-19 11:01:09 -04:00
Collaborator

Changes

  • Show each SSID once, preserving the connected access point and its signal/security; otherwise show the strongest access point.
  • Add Disconnect for the active Wi-Fi device and keep the network list available after action failures.
  • Avoid the NetworkManager WPA-Personal password shortcut that can submit a security setting without key-mgmt. Reuse saved profiles by actual SSID and compatible security mode, or create a profile with explicit wpa-psk/sae before activation.
  • Supply WPA-Personal passwords through a protected temporary passwd-file rather than process arguments. Preserve special characters and remove the file on success or failure. New profiles use system-owned secrets for persistence and are not pinned to a BSSID or interface.
  • Fix the Wi-Fi password dialog controller disposal race exposed by the new widget tests.

Verification

  • flutter test --no-pub: 46 tests passed, including duplicate SSIDs, device-specific disconnect/reconnect, WPA2/WPA3/mixed-mode profile creation, saved-profile reuse, password escaping, private-directory permissions, cleanup, and UI error recovery.
  • Targeted flutter analyze --no-pub: no issues found.
  • Used the repository-pinned NetworkManager 1.52.2 in offline mode: reproduced the exact missing-key-mgmt error with a PSK-only security setting, then verified that both new profile command variants serialize successfully with wpa-psk or sae and without a BSSID/interface lock.
  • Rendered and inspected connected, disconnected, and action-error UI states during this branch’s UI work.

Hardware verification still required

The orb has no physical Wi-Fi adapter. This is not a claim of a successful connection or roaming test on the affected laptop. Please test connecting to the affected SSID, Disconnect/reconnect, and roaming among its access points. WPA-Enterprise provisioning is unchanged. No deployment or merge performed.

## Changes - Show each SSID once, preserving the connected access point and its signal/security; otherwise show the strongest access point. - Add Disconnect for the active Wi-Fi device and keep the network list available after action failures. - Avoid the NetworkManager WPA-Personal password shortcut that can submit a security setting without key-mgmt. Reuse saved profiles by actual SSID and compatible security mode, or create a profile with explicit wpa-psk/sae before activation. - Supply WPA-Personal passwords through a protected temporary passwd-file rather than process arguments. Preserve special characters and remove the file on success or failure. New profiles use system-owned secrets for persistence and are not pinned to a BSSID or interface. - Fix the Wi-Fi password dialog controller disposal race exposed by the new widget tests. ## Verification - `flutter test --no-pub`: 46 tests passed, including duplicate SSIDs, device-specific disconnect/reconnect, WPA2/WPA3/mixed-mode profile creation, saved-profile reuse, password escaping, private-directory permissions, cleanup, and UI error recovery. - Targeted `flutter analyze --no-pub`: no issues found. - Used the repository-pinned NetworkManager 1.52.2 in offline mode: reproduced the exact missing-key-mgmt error with a PSK-only security setting, then verified that both new profile command variants serialize successfully with wpa-psk or sae and without a BSSID/interface lock. - Rendered and inspected connected, disconnected, and action-error UI states during this branch’s UI work. ## Hardware verification still required The orb has no physical Wi-Fi adapter. This is not a claim of a successful connection or roaming test on the affected laptop. Please test connecting to the affected SSID, Disconnect/reconnect, and roaming among its access points. WPA-Enterprise provisioning is unchanged. No deployment or merge performed.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kwila/kwilabook!30
No description provided.