Skip to content

Releases: cachebag/nmrs

nmrs 3.0.1

25 Apr 04:53

Choose a tag to compare

nmrs 3.0.1

Published to crates.io

See CHANGELOG.md for details.

nmrs 3.0.0

25 Apr 04:05
ee80a1b

Choose a tag to compare

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

nmrs 2.4.0

24 Apr 19:18

Choose a tag to compare

nmrs 2.4.0

Published to crates.io

See CHANGELOG.md for details.

What's Changed

  • chore: include AGENTS.md file by @cachebag in #338
  • fix(nmrs): add Send bound 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-action for semver checks by @cachebag in #369

Full Changelog: gui-v1.5.1...nmrs-v2.4.0

nmrs 2.3.0

10 Apr 19:19

Choose a tag to compare

nmrs 2.3.0

Published to crates.io

What's Changed

New Contributors

Full Changelog: gui-v1.5.0...nmrs-v2.3.0

nmrs-gui 1.5.1

10 Apr 19:20

Choose a tag to compare

nmrs-gui 1.5.1

A Wayland-compatible NetworkManager frontend built with GTK4.

Installation

Arch Linux (AUR)

yay -S nmrs

Manual 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/nmrs

See CHANGELOG.md for full details.

What's Changed

New Contributors

Full Changelog: gui-v1.5.0...gui-v1.5.1

nmrs-gui 1.5.0

19 Mar 19:03

Choose a tag to compare

[1.5.0] - 2026-03-19

Fixed

  • Custom ~/.config/nmrs/style.css is 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 .desktop file + postInstall hook for Nix flake (#146) @JonnieCache

A Wayland-compatible NetworkManager frontend built with GTK4.

Installation

Arch Linux (AUR)

yay -S nmrs

Manual 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/nmrs

See CHANGELOG.md for full details.

Release nmrs 2.2.0

18 Mar 02:29

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: nmrs-v2.0.1...nmrs-v2.2.0

Release nmrs 2.0.1 - 'Hello, there!'

25 Feb 14:13

Choose a tag to compare

nmrs 2.0.1

Welcome to the 'Hello, there!' release.

See CHANGELOG.md for details.

What's Changed

New Contributors

Full Changelog: nmrs-v1.3.5...nmrs-v2.0.1

Release nmrs 2.0.0 - 'Sleep is the Cousin of Death'

19 Jan 16:19

Choose a tag to compare

nmrs 2.0.0

Welcome to the 'Sleep is the Cousin of Death' release.

This marks a point of the project that's considerably more stable than 1.0.0, due to my mishaps around the extensibility of the public API's structs/enums.

Some things worth noting explicitly include the ability to develop nmrs on macOS or Windows via the Docker image provided, and extensive refactors made to make the code a bit more digestible and more importantly, maintainable in the future. And of course, Bluetooth support which is really nothing but a kick-starter to introduce more devices without breaking the API (thanks to those refactors).

Now, more than ever, I am happy to accept contributions to this project as my personal life is going to take priority for the following year as I get married and begin looking for a job before I graduate in the Fall.

I'll of course chip away at this whenever I get the time as it is my personal labor of love, but I can't promise that development from me be as continuous as it has been in the last few months.

Added

  • Configurable timeout values for connection and disconnection operations (#185)
  • Builder pattern for VpnCredentials and EapOptions (#188)
  • Bluetooth device support (#198)
  • Input validation before any D-Bus operations (#173)
  • CI: adjust workflow to auto-update nix hashes on PRs (#182)
  • More helpful methods to network_manager facade (#190)
  • Explicitly clean up signal streams to ensure unsubscription (#197)

Fixed

  • Better error message for empty passkeys (#198)
  • Race condition in signal subscription (#191)

Changed

  • Various enums and structs marked non-exhaustive (#198)
  • Expose NMWiredProxy and propogate speed through + write in field and display for BT device type (#198)
  • refactor: device type registry system for future extensibility summary by @cachebag in #172

Full Changelog(1.0.0 to 2.0.0): nmrs-v1.0.0...nmrs-v2.0.0

Release nmrs 1.3.5 - 'Size Doesn't Matter'

14 Jan 03:38

Choose a tag to compare

nmrs 1.3.5

Welcome to the 'Size Doesn't Matter' release.

Changed

Full Changelog: nmrs-v1.3.0...nmrs-v1.3.5