Skip to content

fix(network): recover stale D-Bus paths and support full radio off - #311

Merged
gmmcosta15 merged 7 commits into
fix/network-single-link-exclusivityfrom
fix/network-stale-paths-radio-off
Sep 28, 2026
Merged

gmmcosta15 merged 7 commits into
fix/network-single-link-exclusivityfrom
fix/network-stale-paths-radio-off

Conversation

@gmmcosta15

Copy link
Copy Markdown
Collaborator

Description

  • Bug fix

Stacked on #4, review after it merges.

Recovers from stale D-Bus device paths (e.g. after NetworkManager restarts) and supports fully disabling the Wi-Fi radio.

  • _primary_paths_alive, _log_stale, _recover_signal_sources, _cached_path_is_valid, _device_path_for_iface, _reset_signal_proxies, _async_bootstrap
  • _wifi_hardware_enabled, _ensure_networking_enabled, _wifi_enable_preflight, _apply_wifi_radio, _log_radio_state
  • _scan_networks_once, _request_scan_if_allowed
  • test_sdbus_integration.py

Tests

All 5 gates pass standing alone.

…#310)

# Description
- [x] Bug fix

Stacked on #3, review after it merges.

Highest review value in the stack, this is where the field bugs were.
Enforces exactly one of Wi-Fi/ethernet/hotspot active at a time, on user
toggles only. Background/automatic state handlers never drop a link
behind the user's back.

- `_set_wired_profiles_autoconnect`, `_ensure_wired_autoconnect`
- Exclusivity logic in `manager.py`/`worker.py`
- `networkWindow.py` toggle handlers + loading guard armed before link
changes

# Tests
All 5 gates pass standing alone.
@gmmcosta15
gmmcosta15 merged commit ad25544 into dev Sep 28, 2026
7 checks passed
An error occurred while trying to automatically change base from fix/network-single-link-exclusivity to dev September 28, 2026 09:30
gmmcosta15 added a commit that referenced this pull request Sep 28, 2026
)

# Description
- [x] Bug fix

Stacked on #311, review after it merges. Last PR in the #306 split.

Live Wi-Fi signal strength and auth-failure classification.

- `_active_ap_signal`, `_signal_map_once`, `_read_connectivity`,
`_is_wifi_ap_mode`
- `_classify_settings_error`; `_validate_psk` follows NM's own psk rule
(length in bytes, SAE exempt) and runs before the old profile is backed
up
- `_wait_for_connection` stops early when the Wi-Fi device reports
FAILED (the StateChanged listener counts it, since NM leaves FAILED too
fast for polling to see it)
- Connection waits read the Wi-Fi interface's own IP, so an ethernet or
VPN primary link can't fake success
- `_async_get_network_password` prefills the saved-network password
field; saved page shows the static IP/mask
- `networkWindow.py` operation-result routing (success/failure/timeout
handlers); the hotspot page's activate drops ethernet like the toggle
does
- `test_network_ui.py`, `test_worker_unit.py`,
`test_worker_helpers_unit.py` coverage
@gmmcosta15
gmmcosta15 deleted the fix/network-stale-paths-radio-off branch September 29, 2026 08:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant