Skip to content

v0.24.4

Choose a tag to compare

@github-actions github-actions released this 01 Nov 20:47
· 115 commits to main since this release

What's Changed

Fixed

  • Embedded RDP to GNOME Remote Desktop (and over an SSH bridge) no longer stalls on connect (#392, #381) — a GNOME Remote Desktop server, or a GNOME-RDP server reached through an ssh -L forward, completes the TLS upgrade and then never answers the embedded client's NLA/finalize, so the session hung on "Starting RDP" and timed out even though Remmina and GNOME Connections reach the same host. That post-TLS stall already handed the session to the external FreeRDP client, but through the generic path, which kept the default HYBRID_EX negotiation and an explicit /bpp — the two things these servers reject. The stall now gets the same TLS-only treatment as the KDE Plasma (KRdp) case (#366): the external client is pinned to /sec:tls with a negotiated colour depth and a resizable smart-sizing window, which is exactly how a working xfreerdp … /sec:tls command connects. The retry fires once; a server that rejects the TLS-only path too surfaces the real "server incompatible" error instead of looping. (rustconn-core/src/rdp_client/failure.rs, rustconn/src/embedded_rdp/connection.rs)
  • AppImage release build failed on .DirIcon — a newer appimagetool continuous build stopped creating .DirIcon from usr/share/icons on its own, so the AppImage job failed with ".DirIcon is not valid". The release workflow now copies the 256×256 icon into the AppDir root and writes .DirIcon explicitly, and no longer silences a missing-icon copy. (.github/workflows/release.yml)
  • Embedded RDP showed evenly spaced horizontal stripes across the desktop (#389) — IronRDP reports each framebuffer damage region as an InclusiveRectangle, so the pixel at its right/bottom edge is part of the region, but the session loop sized the rectangle with a plain subtraction (right - left, bottom - top), which is one short on each axis. Every update therefore left its last row and last column unpainted. With RemoteFX a server frame arrives as a stack of short full-width bands, so those dropped bottom rows lined up into thin horizontal stripes over the whole desktop (and a one-pixel unpainted column on the right edge); the stripes showed on both Auto and Native display scaling because the gap was in the framebuffer, not in the draw-time scale. The region is now converted with + 1 on width and height, and the existing clamp keeps the last band from reading past the framebuffer. This was an xrdp/GNOME-Remote-Desktop session, but it affects any server whose updates do not cover the whole surface. (rustconn-core/src/rdp_client/client/session.rs)

Security

  • CodeQL rust/cleartext-logging alerts triaged — no secret is logged — the seven high-severity alerts GitHub reported against rustconn-cli/src/commands/secret.rs (the secret set success lines) and the embedded-RDP broker-routing unit test were confirmed false positives: each println! prints only the connection name and username, and the test formats a connector built from a password-less config. A canary test now pins the fact that ironrdp_connector::Credentials derives a non-redacting Debug (ironrdp-connector 0.12.0), and a SECURITY note at the Credentials construction site forbids {:?}-formatting a connector, config or credentials that can carry a real password, so a future regression is caught at build time rather than by a scanner. (rustconn-core/src/rdp_client/client/connection.rs)

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

Fedora (.rpm from this release)

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

AppImage

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

Verifying your download

Every binary on this release (deb, rpm, AppImage, Flatpak) is covered two ways.

Plain checksums — download SHA256SUMS alongside the asset, then:

sha256sum -c SHA256SUMS

Signed build provenance (SLSA, via Sigstore) — proves the file was built by this
workflow from this commit:

gh attestation verify RustConn-0.24.4-x86_64.AppImage --repo totoshko88/RustConn

(The snap is signed by the Snap Store; the macOS build is delivered via the Homebrew tap.)