Skip to content

v0.21.10

Latest

Choose a tag to compare

@github-actions github-actions released this 09 Sep 14:03

What's Changed

Fixed

  • "Open Browser via Tunnel" found no browser on macOS and only showed a toast — the tunnelled-browser auto-detection added in 0.21.9 was Linux-only: it consulted xdg-settings (absent on macOS) and then probed a list of Linux binary names (google-chrome, chromium, brave-browser, …) on PATH. On macOS a Chromium-family browser is an .app bundle under /Applications, not a binary on PATH — and a GUI app's PATH does not list it anyway — so detection always failed and RustConn fell back to the "No Chromium-based browser found" toast instead of opening a browser. Auto-detection now also probes the macOS bundles directly (find_macos_chromium_app), checking both /Applications and ~/Applications for Google Chrome, Chromium, Brave, Microsoft Edge and Vivaldi, and launches the executable inside the bundle by its full path — which still honours --proxy-server and --user-data-dir. A path configured by hand in Settings already worked and is unchanged.

  • External RDP, VNC and SPICE viewers were reported "not installed" on macOS even when present — the same defect as the tunnelled browser, in the viewer detection: RDP (FreeRDP), VNC (RealVNC/TigerVNC) and SPICE (virt-viewer) clients were looked up only as bare binary names on PATH, but on macOS they are .app bundles under /Applications, not PATH binaries. A new shared rustconn_core::which::find_macos_app helper (which the browser fix now also uses) probes /Applications and ~/Applications for the known bundles and returns the executable inside, so external-viewer launch and the Settings "installed clients" list find them. The "install …" hints are now platform-specific (brew install freerdp, brew install --cask virt-viewer, RealVNC/TigerVNC/Screen Sharing) rather than naming Linux packages. A FreeRDP CLI installed via Homebrew already resolved and is unchanged.

  • The system-browser and Cockpit paths hardcoded xdg-open, which does not exist on macOS — a Web connection in System browser mode, and the built-in "Cockpit" command template, both emitted a literal xdg-open <url>. In the GUI the Web connection is intercepted by the portal launcher, but the CLI and the template ran xdg-open directly, which fails on macOS. Both now use the platform URL opener — open on macOS, xdg-open on Linux (rustconn_core::secret::url_open_command).

  • A SPICE session on macOS always fell back to a password prompt — the mode-0600 .vv connection file that carries the SPICE host/port/TLS/password is written under $XDG_RUNTIME_DIR, which does not exist on macOS, so the file was never created and the viewer prompted instead of connecting with the stored credential. The file now falls back to the per-user temp directory ($TMPDIR, a 0700-owned /var/folders/… path) on macOS; on Linux it still uses $XDG_RUNTIME_DIR and the file is created 0600 regardless. The Flatpak --env-fd command-environment path is unchanged (it is Flatpak-only and needs the runtime dir for its host-path translation).

  • Connection search matched entries with no visible relation to the query — typing git in the sidebar search could surface an entry like aws sso that contains no g, i or t in its name. The lowest tier of the fuzzy matcher scored a connection whenever some query characters appeared, in order, anywhere across any scored field (host, group, tags, notes, custom properties, username) — a matched == 0 check was the only thing that returned "no match", so a single stray character was enough. That tier now requires the whole query to appear as an in-order subsequence before it scores at all (fuzzy_score_chars in rustconn-core), which removes the partial-match noise. Exact, prefix and substring matching are unchanged, so real searches behave as before; a full scattered subsequence still ranks, but below any genuine substring hit.

  • The Jump Host picker in the Tunnel wizard and the New/Edit Connection wizard filtered nothing — the fix that gave the connection editor's Jump Host dropdowns a working type-to-search (0.21.9) did not reach the Tunnel builder's Connection and Jump Host pickers, the connection wizard's Jump Host picker, or a group's SSH Jump Host — those were still plain ComboRow/searchless DropDowns, so with a large inventory you had to scroll the entire list. They are now DropDowns wired through the shared enable_string_search helper, matching the connection editor everywhere a jump host or tunnel target is chosen.

Added

  • The New/Edit Cluster dialog can filter its connection list — the cluster editor showed every connection as an unsearchable checklist, which is impractical with hundreds of hosts. A filter box above the list now hides rows whose name or host does not contain the typed text; the checkbox state is never touched, so clearing the filter keeps whatever was already ticked. Select All / Deselect All act on the currently filtered rows only, so narrowing the list and hitting Select All is how you pick a subset.

Dependencies

  • Updated: reqwest 0.13.4→0.13.5, zerocopy 0.8.56→0.8.57, hybrid-array 0.4.14→0.4.15, font-types 0.12.4→0.12.5

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.21.10_amd64.deb
sudo apt-get install -f  # Install dependencies if needed

Fedora (.rpm from this release)

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

AppImage

chmod +x RustConn-0.21.10-x86_64.AppImage
./RustConn-0.21.10-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