What's Changed
Security
- Variable injection prevention — All variable substitution in command-building paths now validates resolved values, rejecting null bytes, newlines, and control characters to prevent command injection
- Checksum policy for CLI downloads — Replaced placeholder SHA256 strings with
ChecksumPolicyenum (Static,SkipLatest,None) for explicit integrity verification - Sensitive CLI arguments masked — Password-like arguments (
/p:,--password,token=, etc.) are masked in log output - Configurable document encryption —
EncryptionStrengthenum (Standard/High/Maximum) with per-level Argon2 parameters; backward-compatible with legacy format - SSH Agent passphrase handling —
add_key()now usesSSH_ASKPASShelper script withSSH_ASKPASS_REQUIRE=forceto securely pass passphrases tossh-addwithout PTY; temporary script is cleaned up immediately after use
Added
- Internationalization (i18n) — gettext support via
gettext-rswith system libintl;i18nmodule withi18n(),i18n_f(),ni18n()helpers; translations for 14 languages: uk, de, fr, es, it, pl, cs, sk, da, sv, nl, pt, be, kk; closes #17 - SPICE proxy support —
SpiceConfig.proxyfield stores proxy URL from virt-viewer.vvimports;remote-viewerreceives--spice-proxyflag for Proxmox VE tunnelled connections; fixes #18 - RDP HiDPI fix — IronRDP embedded client now multiplies widget dimensions by
scale_factor()to negotiate device-pixel resolution on HiDPI displays, eliminating blurry upscaling; fixes #16 - Property tests for variable injection — 8 proptest properties validating command injection prevention
- CLI delete confirmation — Interactive prompt with
--forceflag to skip - CLI
--verbose/--quiet— Global flags for controlling output verbosity - CLI
--no-color/NO_COLOR— Per no-color.org convention - CLI shell completions —
completions <shell>for bash, zsh, fish, elvish, PowerShell - CLI
--dry-runfor connect — Prints command without executing - CLI pager for long output — Pipes through
lesswhen output exceeds 40 lines - CLI auto-JSON when piped — List commands switch to JSON when stdout is not a terminal
- CLI fuzzy suggestions — "Did you mean: x, y, z?" on connection name mismatch
- CLI man page generation —
man-pagesubcommand viaclap_mangen - Ctrl+M "Move to Group" — Keyboard shortcut for moving sidebar items between groups
- Search history navigation — Up/Down arrows cycle through sidebar search history
- CI version check workflow — Weekly GitHub Action checks upstream CLI versions
- Client detection caching — 5-minute cache for CLI version checks
- Flathub x-checker-data — Automated dependency tracking for vte, libsecret, inetutils, picocom, mc
- Flathub device metadata —
<requires>,<recommends>,<supports>in metainfo.xml
Fixed
- CLI
--configflag — Was declared but never used; now threads through all 43ConfigManagercall sites - Flatpak components dialog — Hides unusable protocol clients in sandbox; shows only network-compatible tools
- SPDX license —
GPL-3.0+→GPL-3.0-or-laterin metainfo.xml
Changed
- VTE updated to 0.83.90 — From 0.78.7 in all Flatpak manifests
- CLI modularized — Split 5000+ line
main.rsinto 18 handler modules - CLI structured logging —
tracingreplaceseprintln!with--verbose/--quietcontrol - VNC viewer list deduplicated — Single
VNC_VIEWERSconstant shared across detection - Protocol icon mapping unified —
get_protocol_icon_by_name()in core replaces duplicate match blocks - Protocol command building unified —
Protocol::build_command()trait; CLI delegates toProtocolRegistry - Send Text dialog — Migrated to
adw::Dialogper GNOME HIG - Sidebar minimum width — Reduced from 200px to 160px
- Tray polling optimized — Split into 50ms message handling + 2s state sync with dirty-flag tracking
Deprecated
- Flatpak host command functions —
host_command(),host_has_command(), etc. inflatpak.rs;flatpak-spawn --hostdisabled since 0.7.7
Improved
- Accessible labels — Added to 20+ icon-only buttons for screen reader compatibility
- Czech translation (cs) — Native speaker review by p-bo; 45 translations improved (PR #19)
- Remmina RDP import — Now imports
gateway_server,gateway_username, anddomainfields from Remmina RDP profiles (#20)
Installation
Debian/Ubuntu
sudo dpkg -i rustconn_0.8.7_amd64.deb
sudo apt-get install -f # Install dependencies if neededFedora
sudo dnf install rustconn-0.8.7-1.fc41.x86_64.rpmAppImage
chmod +x RustConn-0.8.7-x86_64.AppImage
./RustConn-0.8.7-x86_64.AppImageopenSUSE (OBS)
Packages available at: https://build.opensuse.org/package/show/home:totoshko88:rustconn/rustconn
# Tumbleweed
sudo zypper ar https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/openSUSE_Tumbleweed/ rustconn
sudo zypper ref
sudo zypper in rustconn
# Leap 16.0
sudo zypper ar https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/16.0/ rustconn
sudo zypper ref
sudo zypper in rustconn