NetworkManager D-Bus layer + audit fixes + feature batch #2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/nm-rework"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Cut from what was on local
main(2 unpushed commits) plus a ~3250-line uncommitted working tree, rebased ontoorigin/main.Commits
main).main).zbusdep. Connect / scan / status / watch all speakorg.freedesktop.NetworkManageron the system bus. Wi-Fi PSKs and 802.1x passwords travel insideAddAndActivateConnection2/Update2payloads — never on a command line. Watch loop reacts toDevice.StateChanged/ connectivity signals.settings.nmcli_wait→connect_wait(old key still accepted via#[serde(alias)]).tests/common/fake_nm.rs(1007 lines) stands up a fake NM on a private bus;cli.rs/flow_watch.rsexercise the realnmpaths with no live NetworkManager. 139 tests (was 141 pre-rework).Reconciliation with
origin/mainorigin/mainhad one commit localmaindidn't:02e9612"Feed Wi-Fi PSK to nmcli --ask on stdin, never argv". That is fully superseded by commit 3 — there is nonmcliinvocation left, and secrets never reach a command line at all. Rebase conflicts innm.rs/watch.rs/README.md/tests/*were resolved in favour of the D-Bus rework;02e9612's remaining hunks were rustfmt-only noise.Not done in this PR
Checks
cargo buildclean ·cargo test139 pass ·cargo clippy --all-targets -- -D warningsclean.Manual smoke (needs doing on hermes)
breadcrumbs status/connect/switch <profile>against live NMps aux | grep -i <psk>breadcrumbs watch— pull the Wi-Fi, confirm it reacts within a second (D-Bus signal, not poll)breadcrumbs.tomlstill usingnmcli_wait =loads without errorThe watch loop could spin forever on a stopped Tailscale daemon (the auto-start path was unreachable) while re-notifying every retry, report "connected" when NM autoconnect won a race onto a different SSID, and classify captive portals as healthy (200/302 accepted as internet). The bread-bus subscription thread also read/wrote config and state files concurrently with the watch loop. Fix all of those plus: EDITOR values with arguments, scan --to silently ignoring unknown profiles, deleted core profiles being resurrected, inline-network migration data loss, login never retried, XDG-unaware install-service, detect persisting a stale default profile, password length leaking through the mask, a stdin/stdout pipe deadlock, and several minor UI/robustness issues. Generated with Codebuff 🤖 Co-Authored-By: Codebuff <noreply@codebuff.com>Implements the planned feature sweep: tri-state connectivity with portal detection, time-based profile schedules, priority exit-node list with failover, enterprise (802.1x) network support, per-network DNS, signal- aware selection, auto-learn markers, suspend/resume recovery, prune command, scored detection, and richer bread events (network.changed, tailscale.changed). CLI gains --json output, init --wait, and add --dns/ --eap/--identity/--ca-cert. Adds regression coverage for each feature; 141 tests pass and clippy is clean with -D warnings. Generated with Codebuff 🤖 Co-Authored-By: Codebuff <noreply@codebuff.com>