Releases: networkmanager-rs/nmrs
nmrs 3.1.3
nmrs 3.1.3
Published to crates.io
See CHANGELOG.md for details.
What's Changed
Full Changelog: nmrs-v3.1.1...nmrs-v3.1.3
nmrs 3.1.1
nmrs 3.1.1
Published to crates.io
See CHANGELOG.md for details.
What's Changed
- chore: scaffold
mmrscrate by @cachebag in #413 - feat(#401): add public model types for
ModemManagerdomain by @cachebag in #416 - fix: treat
BluetoothToggleFailedas non-fatal in aggregate airplane mode toggle by @cachebag in #417
Full Changelog: nmrs-v3.1.0...nmrs-v3.1.1
nmrs 3.1.0
nmrs 3.1.0
Published to crates.io
See CHANGELOG.md for details.
3.1.0 introduces several networking and reliability improvements, including new support for loopback and VLAN (802.1Q) devices, better handling of activation failures and airplane mode behavior, and more stable certificate store testing. The release also continues internal cleanup work by decoupling nmrs-gui from the core nmrs crate.
What's Changed
- fix(#270): resolve device state reason on activation failure by @cachebag in #384
- chore: migrate nmrs-gui off of nmrs by @cachebag in #390
- feat: implement loopback by @cachebag in #391
- feat(#121): add VLAN (802.1Q) device support with VlanConfig model and connection builder by @cachebag in #392
- fix(#354): consolidate env var mutex to fix flaky cert store tests by @cachebag in #393
- fix(airplane): correct radio presence and Bluetooth settle behavior by @cachebag in #396
Full Changelog: nmrs-v3.0.1...nmrs-v3.1.0
nmrs 3.0.1
nmrs 3.0.0
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,
.ovpnimport, 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
Resultinstead 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 globalset_wireless_enabled(bool)and per-interfaceset_wifi_enabled(interface, bool).wifi_enabled()/wifi_hardware_enabled()are replaced bywifi_state().list_saved_connections()now returnsVec<SavedConnection>; uselist_saved_connection_ids()for the old name-list behavior.VpnTypeis now a rich metadata enum; the old tag-style role isVpnKind.VpnConfig::vpn_type()is nowvpn_kind().VpnConnectionInfo.vpn_typeis nowvpn_kind.VpnCredentialsBuilder::build()andEapOptionsBuilder::build()now returnResult.
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_bssidby @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
VpnConfigtrait andconnect_vpnrefactor by @cachebag in #303- OpenVPN connection settings model expansion by @Dandiggas in #309
- Multi-VPN plumbing by @stoutes in #311
.ovpnlexer and parser by @cachebag in #314- OpenVPN compression and proxy support by @stoutes in #315
.ovpnparser tests and refactors by @cachebag in #316- Inline certificate storage for
.ovpnprofiles by @cachebag in #323 - OpenVPN builder with validation by @stoutes in #326
- Use
zvariant::Dictforvpn.dataandvpn.secretsD-Bus types by @cachebag in #337 - Parse
auth-user-passand infer OpenVPN auth type by @cachebag in #340 - Fix OpenVPN gateway extraction from
vpn.databy @cachebag in #344 - OpenVPN input validation by @cachebag in #345
- OpenVPN TLS hardening options by @cachebag in #346
NetworkManager::import_ovpn()andOpenVpnBuilder::from_ovpn_file()by @cachebag in #347VpnDetailsenum onVpnConnectionInfoby @cachebag in #348- OpenVPN routing, resilience, and NCP options by @cachebag in #349
Fixes and Polish
- Support selecting Bluetooth adapters in
BluetoothIdentityby @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
Sendbound to monitoring stream trait objects by @cachebag in #359 - Return
ResultfromVpnCredentialsandEapOptionsbuilders 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.
- @cachebag
- @stoutes
- @pluiee
- @JonnieCache
- @tristanmsct
- @Rifat-R
- @of-the-stars
- @okhsunrog
- @ruthwik-01
- @joncorv
- @AK78gz
- @pwsandoval
- @ritiek
- @shubhsingh5901
- @cinnamonstic
- @tuned-willow
Full Changelog: nmrs-v2.4.0...nmrs-v3.0.0
nmrs 2.4.0
nmrs 2.4.0
Published to crates.io
See CHANGELOG.md for details.
What's Changed
- chore: include
AGENTS.mdfile by @cachebag in #338 - fix(nmrs): add
Sendbound to monitoring stream trait objects by @cachebag in #359 - fix(#363): fire network monitor on signal strength changes by @cachebag in #367
- fix(#362): populate device and IP fields in list_networks by @cachebag in #368
- refactor: use
talk-e/install-actionfor semver checks by @cachebag in #369
Full Changelog: gui-v1.5.1...nmrs-v2.4.0
nmrs 2.3.0
nmrs 2.3.0
Published to crates.io
What's Changed
- chore(deps): update nix flake by @JonnieCache in #306
- fix(nmrs): add
Sendbound tofor_each_access_pointcallback future by @okhsunrog in #330 - fix: remove stale nmrs-aur submodule gitlink by @okhsunrog in #331
New Contributors
- @okhsunrog made their first contribution in #330
Full Changelog: gui-v1.5.0...nmrs-v2.3.0
nmrs-gui 1.5.1
nmrs-gui 1.5.1
A Wayland-compatible NetworkManager frontend built with GTK4.
Installation
Arch Linux (AUR)
yay -S nmrsManual Installation
Download the binary, extract, and move to your PATH:
tar -xzf nmrs-gui-1.5.1-x86_64-linux.tar.gz
sudo mv nmrs-gui /usr/local/bin/nmrsSee CHANGELOG.md for full details.
What's Changed
- fix(gui): change app.lock location#310 by @tristanmsct in #310
New Contributors
- @tristanmsct made their first contribution in #330
Full Changelog: gui-v1.5.0...gui-v1.5.1
nmrs-gui 1.5.0
[1.5.0] - 2026-03-19
Fixed
- Custom
~/.config/nmrs/style.cssis now applied after the saved theme, ensuring it always takes precedence over any predefined theme (#274) by @cachebag - Fixed header status label inflating natural width with long status strings (#279) by @pwsandoval
[1.1.0] - 2025-12-19
Fixed
- Corrected binary name for
.desktopfile +postInstallhook for Nix flake (#146) @JonnieCache
A Wayland-compatible NetworkManager frontend built with GTK4.
Installation
Arch Linux (AUR)
yay -S nmrsManual Installation
Download the binary, extract, and move to your PATH:
tar -xzf nmrs-gui-1.5.0-x86_64-linux.tar.gz
sudo mv nmrs-gui /usr/local/bin/nmrsSee CHANGELOG.md for full details.
Release nmrs 2.2.0
What's Changed
- refactor(nmrs):
#[must_use]added across public interface by @cachebag in #264 - refactor(nmrs-gui): elide use of
WiredDevicesContextand just useNetworksContextinstead by @cachebag in #265 - refactor(#223): convert bdaddr into bluez dbus object path by @cachebag in #266
- feat(#177): concurrency protection by @cachebag in #268
- fix(#273): user CSS now overrides selected theme by @cachebag in #274
- fix(#243) set proper package name and version in nix flake by @JonnieCache in #275
- fix(#278): header status label inflates natural width with long status strings by @pwsandoval in #279
- feat(#283): expose
WirelessHardwareEnabledthrough API by @cachebag in #284 - fix(ci): nix workflow hardening by @cachebag in #286
- chore(nmrs): bump to 2.2.0 by @cachebag in #285
New Contributors
- @pwsandoval made their first contribution in #279
Full Changelog: nmrs-v2.0.1...nmrs-v2.2.0