v0.16.0
What's Changed
Added
- Batch edit for multi-selected connections — group-operations mode (multi-selection) gains a "Batch Edit" action in the bulk toolbar: change group, tags, or icon for all selected connections in one pass. Each field has an "apply" check so only the chosen fields are written; the result toast offers Undo that restores the previous values
- Notes badge in the sidebar — connections with a description now show a small
document-edit-symbolicbadge next to their name (with the note text in the tooltip and a screen-reader label), so it is visible at a glance which entries have documentation without opening each one. Inspired by recurring requests in competing tools - Search matches connection notes — sidebar search and smart search now score the connection description (weight below name/host/tags), so "the server where we replaced the certificate" can be found by the words in its notes
- Windows (WSL2) guide (#137) — new docs/WSL.md with a step-by-step setup for running RustConn on Windows via WSLg: WSL install/update, enabling systemd for D-Bus/Secret Service (the most common pitfall), OBS/.deb install, secret-storage options, known WSLg limitations (no tray, audio latency, usbipd for serial) and troubleshooting. Linked from README and INSTALL
Changed
- Structured validation errors in core —
dialog_utilsvalidators (validate_name,validate_host,validate_port,validate_icon) now return aValidationErrorenum (thiserror) instead of plain strings, so callers can pattern-match variants; user-facing messages are unchanged and still localized at the GUI call sites - RDP
catch_unwindwrapper kept for 0.16 — re-evaluated per the in-code TODO: ironrdp is still at 0.15.0 and upstream has not confirmed that panics on malformed PDUs are gone, so the panic guard aroundconnect_finalizestays (re-check on the next ironrdp bump)
Fixed
- Sidebar context menu failing to open on KDE Plasma (#157) — two fixes based on the reporter's
RUST_LOG=debugoutput: (1) the popover'sclosedhandler unparented the widget synchronously inside GTK's popdown sequence, which could free the popover mid-emission and producegtk_popover_get_autohide: assertion 'GTK_IS_POPOVER' failed; the unparent is now deferred to idle. (2) KWin cancels non-grabbing popups (our menus useautohide=falseper #87), so the menu could be dismissed by the compositor immediately after opening; if that happens within 300 ms with no user interaction, the menu now re-opens once withautohide=true(grab taken — KWin keeps it)
Internal
dialogs/connection/dialog.rssplit into submodules — the largest file in the project (5988 lines) is now adialog/module with focused submodules (build,construction,save,rows,populate,passwords,agent_variables); pure code motion, no behavior changes- New tests for security-sensitive core modules — property tests verify
shell_escapeoutput round-trips byte-for-byte through a real POSIXsh(drag-and-drop paths are an injection surface), andsmart_folderrule matching gained unit tests for case-insensitive host patterns and multi-criteria AND logic
Security
- Password handling in RDP/SPICE clients documented and regression-tested — the plain-
Stringpassword copies required by the third-party ironrdp/spice-client APIs are now explicitly documented as an upstream API limitation, and new tests assert thatRdpClientConfig/SpiceClientConfigDebug output never leaks the plaintext password
Installation
Flatpak (Recommended)
flatpak install flathub io.github.totoshko88.RustConnSnap
sudo snap install rustconnDebian/Ubuntu (.deb from this release)
sudo dpkg -i rustconn_0.16.0_amd64.deb
sudo apt-get install -f # Install dependencies if neededFedora (.rpm from this release)
sudo dnf install rustconn-0.16.0-1.fc44.x86_64.rpmAppImage
chmod +x RustConn-0.16.0-x86_64.AppImage
./RustConn-0.16.0-x86_64.AppImagemacOS (Homebrew)
brew tap totoshko88/rustconn
brew install rustconn
open $(brew --prefix)/opt/rustconn/RustConn.appAll dependencies (GTK4, libadwaita, VTE, Adwaita icons) are installed automatically.
Requires macOS 13 (Ventura) or later.
OBS Repositories
Packages available at: https://build.opensuse.org/package/show/home:totoshko88:rustconn/rustconn
# Debian 13 (Trixie)
echo 'deb http://download.opensuse.org/repositories/home:/totoshko88:/rustconn/Debian_13/ /' \
| sudo tee /etc/apt/sources.list.d/rustconn.list
curl -fsSL https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/Debian_13/Release.key \
| gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/rustconn.gpg > /dev/null
sudo apt update && sudo apt install rustconn
# Ubuntu 24.04 LTS (Noble)
echo 'deb http://download.opensuse.org/repositories/home:/totoshko88:/rustconn/xUbuntu_24.04/ /' \
| sudo tee /etc/apt/sources.list.d/rustconn.list
curl -fsSL https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/xUbuntu_24.04/Release.key \
| gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/rustconn.gpg > /dev/null
sudo apt update && sudo apt install rustconn
# Ubuntu 26.04 LTS (Resolute)
echo 'deb http://download.opensuse.org/repositories/home:/totoshko88:/rustconn/xUbuntu_26.04/ /' \
| sudo tee /etc/apt/sources.list.d/rustconn.list
curl -fsSL https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/xUbuntu_26.04/Release.key \
| gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/rustconn.gpg > /dev/null
sudo apt update && sudo apt install rustconn
# Fedora 44
sudo dnf config-manager addrepo --from-repofile=https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/Fedora_44/home:totoshko88:rustconn.repo
sudo dnf install rustconn
# Fedora 43
sudo dnf config-manager addrepo --from-repofile=https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/Fedora_43/home:totoshko88:rustconn.repo
sudo dnf install rustconn
# openSUSE Tumbleweed
sudo zypper ar https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/openSUSE_Tumbleweed/ rustconn
sudo zypper ref && sudo zypper in rustconn
# openSUSE Leap 16.0
sudo zypper ar https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/openSUSE_Leap_16.0/ rustconn
sudo zypper ref && sudo zypper in rustconnArch Linux (AUR)
yay -S rustconnFreeBSD (Ports)
pkg install rustconnFull installation guide: https://github.com/totoshko88/RustConn/blob/main/docs/INSTALL.md