What's Changed
Added
- Startup action — configure which session opens automatically when RustConn starts: local shell, or any saved connection. Set in Settings → Appearance → Startup, or override via CLI flags
--shell/--connect <name|uuid>(#30)
Security
- All password fields (
FreeRdpConfig,RdpConfig,SpiceClientConfig,KdbxEntry,PasswordDialogResult,ConnectionDialogResult) migrated toSecretString— credentials are now exposed only at point of use - FreeRDP embedded thread no longer passes password via CLI arg — uses
/from-stdin+ stdin pipe - Bitwarden
BW_SESSIONreplaced with thread-safe in-processRwLockstorage instead ofset_var - KDBX functions migrated to
SecretString+SecretResultthroughout - SSH
custom_optionsnow filtered against dangerous directives (ProxyCommand,LocalCommand, etc.) before passing tossh -o - Hand-rolled base64 in Bitwarden backend replaced with
data-encodingcrate
Improved
- Ukrainian translation — 674 translations professionally reviewed by Mykola Zubkov for accuracy and modern orthography
- SVG icon optimized and simplified per GNOME HIG; 48×48 and 64×64 PNG removed — GTK renders SVG at any size; 128×128 and 256×256 PNG regenerated from SVG
- Welcome page logo now uses GTK themed icon lookup (same as About dialog) — renders SVG at native HiDPI resolution instead of fixed-size raster
- Flathub metainfo.xml overhauled: description condensed, brand colors improved, screenshots replaced with HiDPI windowed captures with shadows, localized screenshots for uk/be/cs, added translate and contribute URLs
- 8 dialogs migrated to
adw::Dialog(libadwaita 1.5+) with adaptive sizing and proper modal behavior - Password field uses
PasswordEntrywith built-in peek icon - Screen reader support: accessible label relations added to password and connection dialogs
adw::Clampadded to dialogs to prevent content stretching on wide screens- Dialog header bar pattern deduplicated via shared
dialog_header()helper - Clear History now requires confirmation via
adw::AlertDialog - Search history popover items are now clickable
- All
eprintln!calls replaced with structuredtracing
Fixed
- VNC RSA-AES auto-fallback — servers using RSA-AES security type (type 129, e.g. wayvnc) now automatically fall back to external VNC viewer (TigerVNC) instead of showing a raw error. User sees a friendly toast message (#31)
- Embedded RDP cursor size corrected on HiDPI displays — server-sent device-pixel bitmaps now downscaled to logical pixels before GTK cursor creation
- Pango markup warning on welcome page — ampersand in "Embedded & external clients" escaped for GTK label rendering
- Variable password source (
PasswordSource::Variable) now resolves correctly at connection time —SecretManageris initialized with backends from settings, and variable lookup uses the same backend as save - Locale
.mofiles now included in Debian, RPM, and local Flatpak packages - Debian build no longer enables
spice-embeddedfeature without build dependencies - AppStream metainfo.xml: categories added explicitly (
Network,RemoteAccess), genericGTKcategory removed - Debian
Recommendsupdated for FreeRDP 3 / Wayland support - Build dependencies corrected for
gettextacross Debian and RPM
Removed
- Dead code cleanup: unused credential caching, split view adapter methods, toast helpers, deprecated flatpak host command functions
Dependencies
- Updated: deranged 0.5.6→0.5.8, js-sys 0.3.86→0.3.88, wasm-bindgen 0.2.109→0.2.111, wasm-bindgen-futures 0.4.59→0.4.61, web-sys 0.3.86→0.3.88
Internal
Project-Id-Versionupdated to0.9.0in all.pofiles- Duplicate
SessionResulttype alias removed fromsession/manager.rs— canonical definition inerror.rs - Tray stub no longer allocates orphaned
mpscchannel whentrayfeature is disabled - Migrated to Rust 2024 edition (167 files changed across all three crates):
- Eliminated all
unsafeset_var/remove_varcalls — SSH agent info stored inOnceLock<SshAgentInfo>withapply_agent_env()helper, language switching via process re-exec with sentinel guard, Bitwarden session token inRwLock - Renamed
genkeyword usages togenerator/pw_gen/counterin password generator, dialog, and RDP modules - Fixed
refbinding patterns in match arms across source and test files (Rust 2024 match ergonomics) - Hundreds of
collapsible_ifpatterns rewritten as let-chains (if let ... && let ...) - Import ordering updated to Rust 2024
style_editionrules viacargo fmt
- Eliminated all
Installation
Debian/Ubuntu
sudo dpkg -i rustconn_0.9.0_amd64.deb
sudo apt-get install -f # Install dependencies if neededFedora
sudo dnf install rustconn-0.9.0-1.fc41.x86_64.rpmAppImage
chmod +x RustConn-0.9.0-x86_64.AppImage
./RustConn-0.9.0-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