Skip to content

v0.23.11

Choose a tag to compare

@github-actions github-actions released this 12 Oct 12:41
· 31 commits to main since this release

What's Changed

Fixed

  • Opening a Local Shell as the second pane of a fresh RDP split no longer crashes — splitting a connected RDP (or SSH) session and then choosing Local Shell for the empty pane crashed the process with SIGSEGV. The Local Shell path is the only one that spawns a new VTE terminal and reparents it into the pane in a single gesture (move_session_to_panel → set_panel_content, which unparents the widget and re-appends it under a fresh overlay); the Select Tab paths move an already-settled widget. Immediately after that move, the handler restored the host tab and grabbed focus on the just-reparented terminal in the same main-loop tick, racing GTK's own teardown of the old parent's surface: GTK was left dispatching a Wayland event against a wl_proxy whose surface had already been destroyed, and wl_proxy_get_version on it faulted. A gdb backtrace confirmed the crash is entirely inside libgtk-4/libwayland-client (wl_proxy_get_version ← GTK ← wl_display_dispatch_queue_pending ← g_application_run) with no RustConn frame — a use-after-free our reparent-then-focus sequence triggered, not our own memory bug, which is also why it reproduced identically under the GL, Cairo and default renderers (it is not the GPU/Vulkan path). The tab restore and focus grab are now deferred to the next idle, after GTK has finished the reparent and dropped the stale proxy, which breaks the race; the widgets are re-resolved inside the idle so a session closed in the meantime is a no-op. (rustconn/src/window/split_view_actions.rs)

Documentation

  • Documented how to run ChromaTerm (and other output filters) from a sandboxed build (#343) — the reporter who wanted coloured text rather than the highlight overlay's underline followed the docs to ChromaTerm as an Output Filter, then hit the real wall: a Flatpak/Snap RustConn cannot reach a host chromaterm, and feeding it its own PYTHONPATH still fails because the sandbox's Python cannot see ChromaTerm's pyyaml dependency. The Output Filter section of the user guide now spells out the working path — install ChromaTerm on the host and set the filter command to flatpak-spawn --host chromaterm, which runs it with the host's Python so yaml resolves. (The underline-vs-coloured-text limit, the multibyte-colour crash, the tab/CJK/scrollback positioning and the toggle for the built-in ERROR/WARNING/CRITICAL/FATAL rules were all already addressed in 0.22.6–0.23.x.) (docs/USER_GUIDE.md)
  • Clarified the snap's external FreeRDP client and documented the core26 migration (#342) — the snap has bundled FreeRDP's X11 client (xfreerdp3, from freerdp3-x11) since 0.22.7 and gained the network-status plug (fixing the portal NetworkMonitor warning) in 0.22.11, so the reported gaps are already closed. The snap/snapcraft.yaml base comment now carries an actionable, numbered checklist for the eventual base: core24 → core26 move (enabling --features adw-1-8, re-checking the VTE and freerdp3-x11/sdl-freerdp3 package names on 26.04, and re-running the strict-confinement smoke), tied to the gnome extension's core26 support tracked in snapcraft#6185 and RustConn#174. docs/SNAP.md notes that an sdl-freerdp3 client should be preferred over the X11 one once the snap is on 26.04. No build or runtime change. (snap/snapcraft.yaml, docs/SNAP.md)

Dependencies

  • Updated: cc 1.7.0 → 1.8.0, serde_json 1.0.152 → 1.0.154, syn 3.0.7 → 3.0.8, unicode-ident 1.0.26 → 1.0.27, zopfli 0.8.3 → 0.8.4. All semver-compatible patch/minor bumps (serde_json plus the build-time proc-macro and compression families); no security advisories affected (cargo deny check advisories clean). CLI download versions all current (TigerVNC pinned at 1.16.2); the RustCrypto release-candidate family and the out-of-range majors (zip 8→9, x509-cert 0.2→0.3) remain held back, pinned transitively by the sspi/picky-krb stack exactly as in 0.23.1–0.23.10; picky-krb 0.12.5 stays held at 0.12.4 for the same reason (its GssApiMessageError variant breaks the pinned sspi 0.21.3). The Flatpak/Flathub manifests are in sync (GNOME runtime 51, FreeRDP 3.32.1, cJSON 1.7.19, OpenH264 2.6.0).

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

Fedora (.rpm from this release)

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

AppImage

chmod +x RustConn-0.23.11-x86_64.AppImage
./RustConn-0.23.11-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.23.11-x86_64.AppImage --repo totoshko88/RustConn

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