Repository navigation
v0.23.3
What's Changed
Fixed
-
Compact mode now actually shrinks the header bar on Linux — the icon-only header buttons (content header: sidebar-toggle, menu, settings, split-H, split-V; sidebar header: search, menu) carried a hard Rust
set_size_request(44, 44)as their GNOME-HIG tap-target floor. A GTK size request is a floor CSS cannot cross, andAdwHeaderBartakes its height from its tallest child, so on Linux thewindow.compact headerbarrules were dead — the header stayed ~44 px tall in compact (macOS was unaffected, its floor is 28 px). The 44 px floor moved to a.header-icon-buttonCSS class, so it still holds by default but can now be overridden. A newwindow.compact-manualclass (added only when the user deliberately turns compact on via the toggle/menu/shortcut, not when auto-compact engages on a small window) lowers the floor to 28 px, so a deliberate compact finally shrinks the header. Auto-compact — which may be a tablet or touch convertible — keeps the full 44 px tap target. The now-unusedHEADER_BUTTON_SIZEconstant is removed. -
Compact mode: welcome rows, bulk-actions bar and the banner note made consistent — a compact-mode UI audit found three density inconsistencies on top of the sidebar bottom-strip already fixed. (1) The Welcome-tab rows (
list.boxed-list row) had awindow.macosslim rule but nowindow.compactcounterpart, so the one surface that most needs vertical savings on a small screen stayed at the full ~56 px height while the header, tabs and sidebar shrank — a mirroredwindow.compact list.boxed-list rowrule now slims them. (2) The sidebar bulk-actions bar (shown in group-ops mode) kept its full margins and its.bulk-actionpill metrics in compact;window.compact .bulk-actions-bar/.bulk-actionrules now match compact density (no reserved-height trap — the revealer collapses cleanly when hidden). (3) The CSS note warning against amin-heightonbannerreferred to "two banners"; there are actually five (config, sync, secret, touch, group-broadcast), so the note is corrected to prevent a future five-fold phantom-band regression. CSS-only;check-css.shgreen. -
External FreeRDP no longer exits 255 after an embedded-client hand-off because of a starved version probe — when the embedded IronRDP client cannot complete a session (RDS licensing on Windows Server 2019, or a TLS-only server such as KDE's KRdp) it hands off to the external FreeRDP client. Since the #351 FreeRDP-3 gate, that launch is only allowed for a client proven to be FreeRDP 3, decided by a
--versionprobe — and the probe was fragile: its 2 s timeout was too short for a slow--version(notably when relayed out of a Flatpak sandbox viaflatpak-spawn --host), and a timed-out/unparseable probe was cached as "unknown" for the whole process. A client whose version stayed unknown was then trusted purely by its3-suffixed name, so a FreeRDP 2 behind a Debian/Ubuntuxfreerdp3alternative was launched with a/args-from:command line it rejects → exit 255. The probe timeout is raised to 5 s and a failed probe is no longer cached (the next attempt re-probes instead of being poisoned), so a healthy FreeRDP 3 is now reliably identified; a launch that still falls back to trusting the name alone logs a warning naming the exit-255 risk. Name-suffix trust is intentionally kept (refusing it would turn a slow-but-healthy FreeRDP 3 into a spurious "install FreeRDP 3" error). -
Compact mode: the empty strip below the sidebar's bottom toolbar is gone — in compact interface mode an empty horizontal band sat under the sidebar's bottom icon row (clock / sort / key / file).
AdwToolbarViewwraps its bottom bar in aGtkRevealerand libadwaita puts the.bottom-barstyle class on the innerGtkWindowHandle, so the existingtoolbarview > .bottom-barcompact rules collapsed the handle but never the enclosing revealer — whose own themedmin-heightstayed reserved as the empty strip. A newwindow.compact .sidebar toolbarview > revealer { min-height: 0 }rule collapses that revealer so it sizes to the already-shrunk bar inside it. The icons (inside the handle) and window-dragging (theGtkWindowHandleis untouched) are unaffected, and the rule is gated on compact only, so normal density is unchanged. Not platform-specific — fixes every package and the Flatpak alike. -
Snap build reverted from core26 back to core24 — the 0.23.2 snap migration to
base: core26(for libadwaita 1.8 parity) never built: the snapcraftgnomeextension, which provides the whole GTK4 platform, still rejectsbase: core26even on current stable Snapcraft 9.1.3 (Extension 'gnome' does not support base: 'core26'). Snapcraft 9.0 added the core26 base, but not core26 support in the gnome extension, so the published 0.23.2 release notes' "Snap migrated to the core26 base" claim could not hold. The snap returns tobase: core24+ thegnome-46-2404platform and drops--features adw-1-8(back to the libadwaita 1.5 cfg-gated fallbacks), the last known-good configuration. The Flatpak keeps its GNOME 51 / libadwaita 1.8 build; only the Snap is affected. Revisit once a snapcraft release lists core26 among the gnome extension's supported bases (snapcraft#6185, issue #174).
Changed
- CI: informational macOS Homebrew build fixed, and false-positive CI annotations silenced — the advisory
Build from sourcestep now installs the formula through a real local tap with the published tarball's real SHA-256 (a bare-path install is rejected by modern Homebrew, and a placeholder hash fails the download check); the advisory semver job clears its stale baseline-checkout cache to stop ~20 spuriousENOENTannotations; andtaiki-e/install-actionis bumped to v2.87.25 socargo-semver-checksinstalls from a prebuilt instead of a slow binstall fallback. All three jobs are non-gating; this only removes red annotations that masked real ones.
Dependencies
- Updated: either 1.18.0 → 1.19.0, h2 0.4.19 → 0.4.20, hyper 1.11.1 → 1.12.0, zeroize 1.9.0 → 1.9.1. Flatpak/Flathub
cargo-sources.jsonregenerated to match. No security advisories affected (cargo deny check advisoriesclean). picky-krb 0.12.5 remains held back for the same reason as 0.23.1/0.23.2: itsGssApiMessageErrorvariant breaks the pinned sspi 0.21.3, which does not match it exhaustively.
Installation
Flatpak (Recommended)
flatpak install flathub io.github.totoshko88.RustConnSnap
sudo snap install rustconnDebian/Ubuntu (.deb from this release)
sudo dpkg -i rustconn_0.23.3_amd64.deb
sudo apt-get install -f # Install dependencies if neededFedora (.rpm from this release)
sudo dnf install rustconn-0.23.3-1.fc44.x86_64.rpmAppImage
chmod +x RustConn-0.23.3-x86_64.AppImage
./RustConn-0.23.3-x86_64.AppImagemacOS (Homebrew)
brew tap totoshko88/rustconn
brew install rustconn
open $(brew --prefix)/opt/rustconn/RustConn.appAll 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 rustconnArch Linux (AUR)
yay -S rustconnFreeBSD (Ports)
pkg install rustconnFull 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 SHA256SUMSSigned build provenance (SLSA, via Sigstore) — proves the file was built by this
workflow from this commit:
gh attestation verify RustConn-0.23.3-x86_64.AppImage --repo totoshko88/RustConn(The snap is signed by the Snap Store; the macOS build is delivered via the Homebrew tap.)