What's Changed
Security
- AES-256-GCM for stored credentials — Replaced XOR obfuscation with AES-256-GCM + Argon2id key derivation for KeePassXC, Bitwarden, 1Password, and Passbolt passwords in settings; transparent migration from legacy format on first save
- FreeRDP password via stdin — Passwords are now passed using
/from-stdininstead of/p:{password}command-line argument, preventing exposure via/proc/PID/cmdline
Changed
- FreeRDP detection unified — Single
detect_best_freerdp()function with Wayland-first candidate ordering (wlfreerdp3→wlfreerdp→xfreerdp3→xfreerdp); all detection paths delegate to it - RDP
build_args()decoupled — Newbuild_args()andbuild_command_with_binary()methods onRdpProtocolseparate argument construction from binary name; callers determine the binary via runtime detection - ZeroTrust validation — Provider-specific
validate()onZeroTrustConfigchecks required fields (AWS SSM target, GCP IAP instance/zone/project, Teleport cluster, Tailscale hostname, Generic command template) before save - ZeroTrust CLI detection — CLI tool availability (
aws,gcloud,tsh,tailscale) is verified before connection launch; missing tools show a toast and log a warning - ZeroTrust tracing — Connection launch attempts and failures are now logged via
tracingin both GUI and CLI paths - Native export format v2 —
NativeExportnow includessnippetsfield; backward-compatible with v1 imports via#[serde(default)]
Dependencies
- native-tls
0.2.14→0.2.18— Removed version pin; 0.2.18 fixes theTlsv13compile error from 0.2.17 (#367) - toml
0.8→1.0— Major version bump; no API changes required (re-export crate, fully compatible) - zip
2.2→8.1— Major version bump; replaced deprecatedmangled_name()withenclosed_name()which adds path traversal validation
Fixed
- RDP HiDPI scaling on 4K displays — IronRDP now sends
desktop_scale_factorto the Windows server (e.g. 200% on a 2× display), so remote UI elements render at the correct logical size instead of appearing tiny; previously hardcoded to 0 - RDP mouse coordinate mismatch on HiDPI — Widget dimensions used for mouse→RDP coordinate transform now store CSS pixels (matching GTK event coordinates) instead of device pixels, fixing misaligned clicks on scaled displays
Removed
- Dashboard module — Removed unused
ConnectionDashboardGUI widget, core types (SessionStats,DashboardFilter), and property tests; session monitoring is handled by Active Sessions manager and sidebar indicators - 5 dead GUI modules — Removed
adaptive_tabs.rs,empty_state.rs,error_display.rs,floating_controls.rs,loading.rs(all replaced by native adw/GTK4 equivalents) tab_split_managerremnants — Removed unused field fromMainWindowandSharedTabSplitManagertype alias; split view fully handled bySplitViewBridge
Installation
Debian/Ubuntu
sudo dpkg -i rustconn_0.8.8_amd64.deb
sudo apt-get install -f # Install dependencies if neededFedora
sudo dnf install rustconn-0.8.8-1.fc41.x86_64.rpmAppImage
chmod +x RustConn-0.8.8-x86_64.AppImage
./RustConn-0.8.8-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