What's Changed
Added
- Wake On LAN from GUI — Send WoL magic packets directly from the GUI (#8):
- Right-click connection → "Wake On LAN" sends packet using configured MAC address
- Auto-WoL before connecting: if a connection has WoL configured, a magic packet is sent automatically on connect (fire-and-forget, does not block connection)
- Standalone WoL dialog (Menu → Tools → "Wake On LAN...") with connection picker and manual MAC entry
- Retry with 3 packets at 500 ms intervals for reliability
- Non-blocking: all sends run on background threads via
spawn_blocking_with_callback - Toast notifications for success/failure
Fixed
- Flatpak libsecret Build — Fixed Flatpak build failure: disabled
bash_completionin libsecret module (EROFS in sandbox) - Flatpak libsecret Crypto Option — Fixed libsecret 0.21.7 build: renamed
gcryptoption tocrypto - Thread Safety — Removed
std::env::set_varcalls from FreeRDP spawned thread (embedded_rdp_thread.rs); env vars (QT_LOGGING_RULES,QT_QPA_PLATFORM) are already set per-process viaCommand::env()inlaunch_freerdp(), eliminating a data race (unsafe since Rust 1.66+) - Flatpak Machine Key —
get_machine_key()now generates and persists an app-specific key file in$XDG_DATA_HOME/rustconn/.machine-keyas first priority;/etc/machine-id(inaccessible in Flatpak sandbox) is now a fallback, with hostname+username as last resort - Variables Dialog Panic — Replaced
expect()onbtn.root().and_downcast::<Window>()in vault load callback withif let Some(window)pattern andtracing::warn!fallback - Keyring
secret-toolCheck —keyring::store()now checksis_secret_tool_available()before attempting to store; returnsSecretError::BackendUnavailablewith user-friendly message ifsecret-toolis not installed - Flatpak CLI Paths — Secret backend CLI detection (
bw,op,passbolt) no longer adds hardcoded/snap/bin/and/usr/local/bin/paths when running inside Flatpak; checksget_cli_install_dir()for Flatpak-installed tools instead - Settings Dialog Performance — Moved all secret backend CLI detection (
keepassxc-cli,bw,op,passbolt) and keyring auto-load operations (Bitwarden auto-unlock, 1Password token, Passbolt passphrase, KeePassXC password) from synchronous main-thread execution to background threads viaglib::spawn_future; Settings dialog now opens instantly with "Detecting..." placeholders, updating widgets asynchronously when detection and keyring lookups complete (~10 s → instant) - Settings Clients Tab Performance — Added 3-second timeout to all CLI version checks (
get_versionindetection.rs,get_version_with_envinclients_tab.rs) preventing slow CLIs (gcloud,az,oci) from blocking detection; parallelized all 9 zero trust CLI detections and core/zero trust groups viastd::thread::scope; moved SSH agentget_status()(ssh-add -l) from GTK main thread to background thread viaglib::spawn_future— total Clients tab detection time reduced from ~15 s sequential to ~3 s parallel - Settings Dialog Instant Display — Moved
dialog.present()beforeload_settings()inSettingsDialog::run()so the window appears immediately; all widget population and async background operations (CLI detection, keyring lookups, SSH agent status) now run after the dialog is already visible - Settings Dialog Visual Render Blocking — Replaced
glib::spawn_future_local+glib::spawn_futureasync pattern withstd::thread::spawn+std::sync::mpsc::channel+glib::idle_add_localin all three Settings tabs (Clients, Secrets, SSH Agent); the previous pattern kept pending futures in the GTK main loop which prevented frame rendering until background tasks completed (~6 s delay); the new pattern fully decouples background work from the main loop so the dialog renders instantly while CLI detection runs in parallel
Installation
Debian/Ubuntu
sudo dpkg -i rustconn_0.8.3_amd64.deb
sudo apt-get install -f # Install dependencies if neededFedora
sudo dnf install rustconn-0.8.3-1.fc41.x86_64.rpmAppImage
chmod +x RustConn-0.8.3-x86_64.AppImage
./RustConn-0.8.3-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