Skip to content

v0.19.2

Choose a tag to compare

@github-actions github-actions released this 22 Jul 22:47

What's Changed

Added

  • Multipath TCP (MPTCP) support (issue #231) — enables using multiple network paths simultaneously for seamless mobility (switch between Wi-Fi and Ethernet without dropping connections) and bandwidth aggregation. MPTCP is available as a per-connection toggle for SSH, embedded RDP, and embedded VNC protocols. SSH connections pass -o TCPMultipath=yes (requires OpenSSH 9.9+). Embedded RDP and VNC clients use MPTCP sockets via the new socket2-based helper in rustconn-core/src/connection/mptcp.rs. Falls back to regular TCP transparently when the kernel does not support MPTCP (requires Linux 5.6+ with CONFIG_MPTCP=y). Imported SSH configs with TCPMultipath yes are recognized during import. Runtime MPTCP availability is detected via /proc/sys/net/mptcp/enabled.

Fixed

  • VPN connect/disconnect no longer kills healthy SSH sessions (issue #230) — the network-change handler previously ran ssh -O exit on all ControlMaster sockets unconditionally, terminating active SSH sessions even when the VPN only added/removed specific routes without affecting the default gateway. Now uses ssh -O check to probe each socket first: healthy masters are left untouched, and only truly dead sockets are removed. Unconditional cleanup (ssh -O exit) is reserved for the network-down path where all TCP connections are assumed dead.

Dependencies

  • Updated: clap 4.6.3 → 4.6.4, libc 0.2.188 → 0.2.189, syn 3.0.2 → 3.0.3, tokio-stream 0.1.18 → 0.1.19
  • Added: socket2 0.5 (MPTCP socket creation)

Improved

  • MPTCP status indicator in embedded sessions — the RDP toolbar status label now shows "| MPTCP" alongside RTT and graphics mode (e.g., "RTT: 12 ms | GFX + H.264 | MPTCP") when MPTCP is enabled for the connection; the VNC toolbar shows "MPTCP" on connect. Helps users confirm the feature is active for the current session
  • CLI show displays MPTCP staterustconn-cli show now prints "MPTCP: enabled" in table output and "mptcp": true in JSON output for SSH, RDP, and VNC connections that have MPTCP enabled
  • CLI update --mptcp accepts true/false — bare --mptcp enables (unchanged); --mptcp false disables MPTCP on an existing connection without opening the GUI. Matches the --javascript pattern used by Web protocol flags
  • Network monitor thread spawn failure logged — if the background thread for SSH socket health-checking cannot be spawned (e.g., ulimit exhaustion), a tracing::warn! is now emitted instead of silently discarding the error via .ok()
  • MPTCP property tests — protocol test generators now randomize the mptcp field; 4 new property tests verify JSON serialization round-trip preservation for SSH/RDP/VNC configs and correct TCPMultipath=yes presence in SSH command args

Documentation

  • Updated USER_GUIDE.md MPTCP section with --mptcp false CLI usage and toolbar status indicator description

Installation

Flatpak (Recommended)

flatpak install flathub io.github.totoshko88.RustConn

Snap

sudo snap install rustconn

Debian/Ubuntu (.deb from this release)

sudo dpkg -i rustconn_0.19.2_amd64.deb
sudo apt-get install -f  # Install dependencies if needed

Fedora (.rpm from this release)

sudo dnf install rustconn-0.19.2-1.fc44.x86_64.rpm

AppImage

chmod +x RustConn-0.19.2-x86_64.AppImage
./RustConn-0.19.2-x86_64.AppImage

macOS (Homebrew)

brew tap totoshko88/rustconn
brew install rustconn
open $(brew --prefix)/opt/rustconn/RustConn.app

All 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 rustconn

Arch Linux (AUR)

yay -S rustconn

FreeBSD (Ports)

pkg install rustconn

Full installation guide: https://github.com/totoshko88/RustConn/blob/main/docs/INSTALL.md