Skip to content

v0.23.10

Choose a tag to compare

@github-actions github-actions released this 11 Oct 20:29
· 36 commits to main since this release

What's Changed

Added

  • "Move to New Window" for a split-view pane — a split pane could be returned to its own tab ("Remove from Split") but not sent straight to its own window; the only route was Remove from Split, then detach the resulting tab. A pane now offers Move to New Window directly, both as a corner button (stacked above Remove-from-Split and Close) and as a context-menu item (Shift+F10). It composes the two existing, tested paths — the pane is removed from the split exactly as "Remove from Split" does, then handed to the window layer's detach-session, which re-checks detach eligibility and explains any refusal with a toast — so no new reparenting path is introduced. (rustconn/src/window/split_view_actions.rs, rustconn/src/split_view/adapter.rs, rustconn/src/split_view/bridge.rs)

Changed

  • The split-pane and session-toolbar reveal handles rest a little more transparently — the hover-reveal arrows sat at 0.3 / 0.4 opacity when idle; they are now 0.22 / 0.3 (with a correspondingly lighter background), so they intrude a few percent less on the session content at rest. The hover state is unchanged, so they still come fully forward under the pointer. (rustconn/assets/style.css)
  • Clearer wording for the two floating-control settings — the Interface tab's "Open session toolbar on hover" and "Hide hover controls in split panes" subtitles now spell out the two independent controls so the layout is self-explanatory: the session toolbar is a handle on the top edge of RDP/VNC/embedded-browser viewers (not terminals), while a reveal arrow at the middle of the pane's right edge carries close/detach/reconnect on every split pane of any protocol, with close/detach also reachable from the pane menu (Shift+F10) and the sidebar. No behaviour change. (rustconn/src/dialogs/settings/ui_tab.rs)

Fixed

  • The split-pane controls no longer sit on top of the RDP/VNC session toolbar — the split adapter's per-pane reveal controls (close / detach / reconnect) were anchored at the top-right corner, directly over the right end of the viewer's floating session toolbar — exactly where its most important actions live (RDP Ctrl+Alt+Del and the "⋯" overflow menu). In a split pane the two piled into one unreadable cluster, and because every pane — including a lone fullscreen one — carries this overlay, the same controls blocked the toolbar's overflow menu in fullscreen too. The pane controls now live at the vertical centre of the pane's right edge, off the top edge entirely, so the top edge belongs to the session toolbar alone (its handle is centred there) and the two overlaid control sets never compete, in split or fullscreen. The hover arrow keeps its 44×44 HIG touch target, and the revealed Remove-from-Split / Close buttons are stacked vertically (one under the other) to hug the right edge instead of reaching across the pane, HIG order kept (non-destructive on top, Close at the bottom). (rustconn/src/split_view/adapter.rs, rustconn/src/embedded_toolbar_overflow.rs, rustconn/assets/style.css)
  • Snippet variable prompts now list fields in template order — two separate extract_variables implementations had drifted apart: the GUI's returned variable names in first-seen (template) order while SnippetManager::extract_variables sorted them alphabetically, so the same template could present its fill-in fields in two different orders depending on the path. Both now delegate to one canonical rustconn_core::variables::extract_variable_names, which preserves template order — the order the user wrote the variables in, which reads more naturally in the prompt form than an alphabetical sort. Variable detection and de-duplication are unchanged (the snippet property tests compare as sets and still pass). (rustconn-core/src/variables/mod.rs, rustconn-core/src/snippet/manager.rs, rustconn/src/utils.rs)
  • The split-pane reveal arrow now meets the HIG touch-target minimum — the hover/click arrow that reveals a pane's corner actions was 28×28px, below the GNOME HIG 44×44 pointer/touch-target floor the sibling embedded-toolbar reveal handle already honours. Both its set_size_request and its .panel-reveal-arrow CSS min-width/height are now 44px; the 16px symbolic icon is unchanged, so only the clickable/visible frame grows. (rustconn/src/split_view/adapter.rs, rustconn/assets/style.css)
  • Starting a session recording that fails is no longer silent — the sidebar Start recording action discarded the bool returned by start_recording, so when the recordings folder could not be resolved or was not writable the only trace was a tracing::error!: no toast, and the ●REC tab indicator never appeared, leaving the user with no feedback that their action failed. The action now shows an error toast (Could not start recording for '…' — the recordings folder is missing or not writable), per the project's error-feedback rule that a failed user-triggered action is never swallowed into logs. (rustconn/src/window/terminal_actions.rs)
  • Embedded RDP/VNC status now carries a shape, not colour alone (GNOME HIG, a11y) — the "connecting / connected / failed / disconnected" line on the embedded RDP and VNC placeholder screens was distinguished only by its text colour (green / yellow / red / grey). Colour alone is ambiguous in grayscale, under a high-contrast theme, and for users with colour-vision deficiency — a direct HIG violation, and the one accessibility gap a 0.23.10 code audit found (the sidebar already uses colour-independent silhouettes, R6.1–6.5). Each state now prefixes a distinct glyph to the status line — ✓ connected, … connecting, ⚠ failed, ○/✕ disconnected/ended — so the state reads with no colour at all; the accent colour stays as reinforcement. The glyph is a bare symbol composed outside i18n(), so no translatable strings changed. (rustconn/src/embedded_rdp/ui.rs, rustconn/src/embedded_vnc/ui.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.23.10_amd64.deb
sudo apt-get install -f  # Install dependencies if needed

Fedora (.rpm from this release)

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

AppImage

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

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.10-x86_64.AppImage --repo totoshko88/RustConn

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