v0.19.8
What's Changed
Added
- "Open a new session on every double-click" setting (issue #242) — Settings → Interface → Connections. The smart double-click added in 0.18.3 focuses a connection's running session instead of duplicating it, which removed the pre-0.18.3 way of opening several concurrent sessions on one host: double-clicking the same entry four times. Shift/Ctrl+double-click and right-click → "Open new session" already forced a new session, but neither is as immediate as the plain double-click that used to do it. With the new switch on, every double-click starts another session — the "already running in an external window" hint is skipped as well — and the modifier becomes redundant. Off by default, so the focusing behaviour stays the norm.
Fixed
- Remote Desktop Manager JSON import failed on the first entry (issue #234) — the importer expected
ConnectionTypeto be a token name, while RDM serialises it as the numeric DevolutionsConnectionTypeenum, so a real export aborted withinvalid type: integer 25, expected a string(25 isGroup) and imported nothing. Both dialects are now accepted, together with the rest of the export's actual shape: the connection-type tokens RDM really writes (RDPConfigured,SSHShell,Putty,Iterm,TerminalConsole,SecureCRT,VNC,NoVNC,Telnet), the host inUrl/HostNameas well asHost, a port encoded as a string, and the folder tree, which RDM expresses asGroupentries plus a backslash-separatedGrouppath rather than theFoldersarray RustConn used to look for. Usernames, domains and passwords are read from the nestedCredentialsobject and from aCredentialentry referenced throughCredentialConnectionID— previously the flatUsernamekey never matched RDM'sUserNameand every credential was dropped. An imported password now goes to the secret backend (PasswordSource::Vault) instead of being parsed and discarded, and an entry of a type RustConn cannot map is reported in the skipped list with that type named. - Royal TS import skipped every RDP connection (issue #234) — the parser looked for a
RoyalRDPConnectionelement, which does not exist in the format: Royal TS and Royal TSX store RDP asRoyalRDSConnection(older documents:RoyalTerminalServicesConnection) and keep its port inRDPPort, notPort. All three names are now recognised, and any otherRoyal*Connectionobject (web page, file transfer, TeamViewer, ...) is listed as skipped with its type instead of vanishing silently. - Royal TS connections imported without a username (issue #234) — only
CredentialIdwas honoured, so the usual Royal TS arrangements produced no credentials at all: a credential assigned by name (CredentialName), typed into the connection (CredentialMode2 withCredentialUsername), or — most commonly — inherited from the parent folder (CredentialFromParent,CredentialMode1). Username and domain are now resolved through all of these, walking up the folder chain. Passwords stay a prompt: Royal TS keeps them encrypted inside the document, so they cannot be imported. - Compressed Royal TS documents could not be read (issue #234) —
.rtszis the compressed document format and was read as UTF-8 text, which failed with an opaque error. The ZIP container is now unpacked before parsing,.rtsx(uncompressed XML) is offered in the file chooser and recognised in batch import, and a document that is neither says so, naming encryption and lockdown as the likely cause. - XML entities corrupted imported Royal TS values (issue #234) —
quick-xmlreports&,'and friends as their own events, and each text fragment was written straight into the field, so only the fragment after the last entity survived: a connection namedDev & Testwas imported asTest. Field text is now accumulated across text, CDATA and reference events and committed when the element closes. - Royal TS export wrote an element Royal TS cannot read — the exporter emitted
RoyalRDPConnectionwith aPortchild for RDP andVNCPortfor VNC; it now writesRoyalRDSConnection/RDPPortand the VNCPortthat the format actually defines.
Documentation
- Import chapter matches the formats again (issue #234) —
docs/USER_GUIDE.mdnow lists Royal TS as.rtsz/.rtsx, states which object types are imported and why passwords cannot be, and gained a "From Remote Desktop Manager" section covering the JSON export, the credentials option and howGrouppaths become folders.
Dependencies
- Updated: hybrid-array 0.4.13→0.4.14, wide 1.5.0→1.6.0 — the only two compatible updates
cargo updatefound; both transitive (RustCrypto and SIMD helpers). - Security clean:
cargo deny check advisoriesreportsadvisories ok.RUSTSEC-2023-0071(rsa, viaironrdp→picky/sspi) remains accepted indeny.tomland.cargo/audit.toml. - CLI downloads current:
scripts/check-cli-versions.shexits 0 — kubectl 1.36.3, Tailscale 1.98.10, Teleport 18.10.0, Boundary 0.21.3, Hoop.dev 1.125.1, Bitwarden CLI 2026.7.0 and 1Password CLI 2.38.1 all auto-resolve to the latest release, and the one explicit pin, TigerVNC 1.16.2, is still current. - Packaging sources current: GNOME runtime 50, FreeRDP 3.30.0 (newest on pub.freerdp.com), cJSON 1.7.19, openh264 2.6.0, fast_float 8.2.10, waypipe 0.11.0 and mc 4.8.33 are all at their latest upstream release, and the Flathub manifest matches the local one. Snap stays on core24 + gnome-46-2404: no
gnome-*-2604platform snap exists yet (issue #174).
Installation
Flatpak (Recommended)
flatpak install flathub io.github.totoshko88.RustConnSnap
sudo snap install rustconnDebian/Ubuntu (.deb from this release)
sudo dpkg -i rustconn_0.19.8_amd64.deb
sudo apt-get install -f # Install dependencies if neededFedora (.rpm from this release)
sudo dnf install rustconn-0.19.8-1.fc44.x86_64.rpmAppImage
chmod +x RustConn-0.19.8-x86_64.AppImage
./RustConn-0.19.8-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