Skip to content

v0.23.5

Choose a tag to compare

@github-actions github-actions released this 08 Oct 11:45
· 15 commits to main since this release

What's Changed

Fixed

  • Default ~/.ssh/config import now actually imports under Flatpak — the "SSH Config" import source (which reads ~/.ssh/config automatically) reported success but added nothing, while picking the same file by hand worked (reported on #368). Root cause is the Flatpak sandbox: the manifest grants only --filesystem=home/.ssh:ro (not full --filesystem=home), so the host ~/.ssh is reachable at its real path, but $HOME — and therefore dirs::home_dir() — points at the per-app sandbox home ~/.var/app/io.github.totoshko88.RustConn. SshConfigImporter::default_paths() resolved ~/.ssh/config through that sandbox home and found nothing, whereas the manual file picker goes through the document portal, which grants the exact file the user chose. The importer now probes both roots — the sandbox $HOME/.ssh and the real host ~/.ssh recovered via a new flatpak::host_home_dir() helper (which strips a trailing .var/app/<app-id> segment from the sandbox home). Outside Flatpak behaviour is byte-for-byte unchanged. The two code paths' differing group names ("SSH Config Import" vs the manual "config Import") were only cosmetic and are untouched. (#368)
  • Import no longer claims success when it found nothing — an import that produced zero connections, zero groups and no errors or warnings still showed "Successfully imported 0 connection(s)", which is what made the broken default SSH-config import read as working. That case now says "Nothing was imported — no connections were found in the source." so an empty import is never mistaken for a successful one. (#368)
  • Header bar height now matches other GNOME apps — the top bar was visibly taller than every other GNOME application and out of step with the platform (reported on #369). The icon-only header buttons carried a min-height: 44px floor — the HIG Pointer & Touch touch tap-target — forcing the whole AdwHeaderBar taller than native, since the bar sizes to its tallest child and libadwaita's own flat header buttons are 34px. GTK CSS cannot distinguish a pointer session from a touch one, so the 44px floor regressed the common desktop case. The .header-icon-button floor is now 34px (libadwaita's native size), a comfortable pointer target that matches the surrounding window chrome; deliberate compact (window.compact-manual) still trims to 28px and macOS keeps 28px. CSS-only plus comment updates; check-css.sh green and a GUI smoke confirmed a clean start. (#369)
  • The Shell button stays as an icon on a narrow window instead of disappearing — a UI/UX pass on #369 found the local-shell button was dropped entirely by the narrow (≤ 600sp) breakpoint, even though there was room for its icon. Launching a local shell is a primary action and should not vanish just because the window is narrow. win.local-shell is removed from the narrow breakpoint's hidden set, and the button now shrinks to icon-only there: its "Shell" text label collapses while the terminal icon stays. The same icon-only treatment already applies in compact mode. The collapse is width-driven (a .narrow window class toggled on the breakpoint) so it works regardless of the compact preference, and the narrow minimum-width floor now reserves room for the icon.
  • Auto-compact no longer trips on a normal-height window — auto-compact engaged when the window was ≤ 800px tall, which flipped an ordinary 1080p laptop into compact chrome the moment its window was tiled to half-height, with no action from the user. GNOME HIG adapts primarily on width, so the height trigger is lowered to 600px (a genuine short-screen safety net) and width (≤ 900px) stays the main criterion.
  • The stale "import 0 = success" unit test is fixed — format_summary's empty-result branch was changed to say "Nothing was imported…" (above), but its unit test still asserted the old "Successfully imported 0 connection(s)" wording and failed. The test now asserts the new message.

Changed

  • Compact-interface settings polish — in Settings → Interface, "Compact automatically on small windows" is now greyed out while "Compact interface" (manual) is on, because manual compact already forces it everywhere and the auto toggle could change nothing — a GNOME HIG dependent-row relationship that two independent-looking switches hid. The "Compact interface" subtitle drops the confusing "useful on … macOS and KDE" phrasing for a plain description. The local-shell action also gains a discoverable Ctrl+Shift+D default accelerator entry (already in the keybinding registry; surfaced in the Keyboard Shortcuts overlay).
  • Touch-safe compact header targets — compact-mode header and sidebar-bottom buttons now keep a 24px (HIG minimum) tap target under auto-compact (which may be a touch convertible) and only drop to the denser 20px under deliberate window.compact-manual, mirroring the existing 34/28px split on the regular header buttons.

Dependencies

  • Updated: serde_spanned 1.1.1 → 1.1.2, toml 1.1.6 → 1.1.7, toml_datetime 1.1.1 → 1.1.2, toml_edit 0.25.15 → 0.25.16, toml_parser 1.1.3 → 1.1.4, toml_writer 1.1.2 → 1.1.3, zerocopy 0.8.61 → 0.8.62, zerocopy-derive 0.8.61 → 0.8.62. All semver-compatible patch bumps (the TOML parser family and the zerocopy pair); no security advisories affected (cargo deny check advisories clean). CLI download versions all current (TigerVNC pinned at 1.16.2). picky-krb 0.12.5 remains held back for the same reason as 0.23.1–0.23.4: its GssApiMessageError variant breaks the pinned sspi 0.21.3, which does not match it exhaustively, so picky-krb stays at 0.12.4.

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

Fedora (.rpm from this release)

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

AppImage

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

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