Skip to content

nmrs 3.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 25 Apr 04:05
· 31 commits to master since this release
ee80a1b

nmrs 3.0.0

Published to crates.io.

nmrs 3.0 is a major expansion of the core library: OpenVPN support, broader VPN enumeration, per-interface Wi-Fi APIs, saved profile management, AP/BSSID detail, connectivity reporting, airplane mode, and a NetworkManager secret agent surface.

See CHANGELOG.md for the full technical changelog.

Highlights

  • Added NetworkManager secret agent support for credential prompts over D-Bus.
  • Added OpenVPN support, including builders, .ovpn import, inline certificate storage, auth handling, TLS hardening, compression, proxy, routing, and resilience options.
  • Added generic VPN enumeration for NetworkManager VPN plugins, including OpenVPN, OpenConnect, strongSwan, PPTP, L2TP, WireGuard, and a generic fallback.
  • Added UUID/name-based activation and UUID-based disconnect for saved VPN profiles.
  • Added per-interface Wi-Fi scoping for multi-radio systems via WifiScope, list_wifi_devices(), and interface-aware scan/connect/disconnect APIs.
  • Added per-BSSID access point enumeration, security flag decoding, and connect_to_bssid.
  • Added saved connection enumeration and management through NetworkManager Settings / Settings.Connection D-Bus APIs.
  • Added connectivity state reporting, check_connectivity(), connectivity_report(), and captive-portal URL detection.
  • Added airplane-mode helpers across Wi-Fi, WWAN, Bluetooth, and rfkill hardware state.
  • Improved builder ergonomics by returning Result instead of panicking on missing required fields.
  • Updated mdbook docs, README examples, and migration guidance for the 3.0 API.

Migration Notes

Most Wi-Fi methods now accept an optional interface argument. Pass None to preserve the old “any Wi-Fi device” behavior:

nm.list_networks(None).await?;
nm.scan_networks(None).await?;
nm.connect("MyNetwork", None, WifiSecurity::Open).await?;
nm.disconnect(None).await?;

Use WifiScope for per-device operations:

let wlan0 = nm.wifi("wlan0");
wlan0.scan().await?;
wlan0.connect("MyNetwork", WifiSecurity::Open).await?;

Other notable API changes:

  • set_wifi_enabled(bool) is now split into global set_wireless_enabled(bool) and per-interface set_wifi_enabled(interface, bool).
  • wifi_enabled() / wifi_hardware_enabled() are replaced by wifi_state().
  • list_saved_connections() now returns Vec<SavedConnection>; use list_saved_connection_ids() for the old name-list behavior.
  • VpnType is now a rich metadata enum; the old tag-style role is VpnKind.
  • VpnConfig::vpn_type() is now vpn_kind().
  • VpnConnectionInfo.vpn_type is now vpn_kind.
  • VpnCredentialsBuilder::build() and EapOptionsBuilder::build() now return Result.

What's Changed

Core 3.0 Features

  • NetworkManager secret agent API by @cachebag in #370
  • Airplane-mode surface and rfkill awareness by @cachebag in #372
  • Per-BSSID access points, security decoding, and connect_to_bssid by @cachebag in #373
  • Per-interface Wi-Fi scoping for multi-radio systems by @cachebag in #375
  • Saved connection enumeration through Settings / Settings.Connection proxies by @cachebag in #376
  • Connectivity state and captive-portal URL surface by @cachebag in #377
  • Generic VPN support with rich enumeration and UUID-based activation by @cachebag in #378

OpenVPN and VPN Work

Fixes and Polish

  • Support selecting Bluetooth adapters in BluetoothIdentity by @cachebag in #267
  • Fill active Wi-Fi network device/IP fields by @cachebag in #368
  • Fire network monitor callbacks on AP signal strength changes by @cachebag in #367
  • Add Send bound to monitoring stream trait objects by @cachebag in #359
  • Return Result from VpnCredentials and EapOptions builders by @cachebag in #379
  • Propagate disconnect errors and narrow Wi-Fi pre-connect teardown by @cachebag in #379
  • Add missing public API annotations by @cachebag in #379
  • Update mdbook for 3.0 per-interface Wi-Fi API and OpenVPN docs by @cachebag in #379

Maintenance

Contributors

Thank you to everyone who contributed code, docs, review, testing, bug reports, and release feedback for this cycle.

Full Changelog: nmrs-v2.4.0...nmrs-v3.0.0