#` # spec file for package rustconn # # Copyright (c) 2026 Anton Isaiev # SPDX-License-Identifier: GPL-3.0-or-later # Name: rustconn Version: 0.20.1 Release: 1%{?dist} Summary: Modern connection manager for Linux (SSH, RDP, VNC, SPICE, MOSH, Telnet, Serial, Kubernetes, Zero Trust) License: GPL-3.0-or-later URL: https://github.com/totoshko88/RustConn Source0: rustconn-%{version}.tar.zst BuildRequires: cargo >= 1.95 BuildRequires: rust >= 1.95 BuildRequires: alsa-lib-devel BuildRequires: pkgconfig(gtk4) >= 4.14 BuildRequires: pkgconfig(vte-2.91-gtk4) BuildRequires: pkgconfig(libadwaita-1) BuildRequires: pkgconfig(webkitgtk-6.0) BuildRequires: pkgconfig(javascriptcoregtk-6.0) BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(openssl) BuildRequires: zstd BuildRequires: gcc BuildRequires: make BuildRequires: gettext-devel Requires: gtk4 >= 4.14 Requires: libadwaita Requires: webkitgtk6.0 Requires: vte291-gtk4 Requires: openssh-clients Requires: alsa-lib # Optional runtime dependencies Recommends: freerdp Recommends: tigervnc Recommends: virt-viewer Recommends: picocom Recommends: kubectl %description RustConn is a modern connection manager for Linux with a GTK4/Wayland-native interface. Manage SSH, RDP, VNC, SPICE, MOSH, Telnet, Serial, Kubernetes, and Zero Trust connections from a single application. Core protocols use embedded Rust implementations — no external dependencies required. Protocols (embedded Rust implementations): - SSH with embedded VTE terminal, split view, and scrollbar - RDP via IronRDP (embedded, with FreeRDP fallback) - VNC via vnc-rs (embedded, with TigerVNC fallback) - SPICE via spice-client (embedded, with remote-viewer fallback) - MOSH with predict mode and UDP port range - Telnet via external telnet client - Serial via picocom (RS-232/USB serial consoles) - Kubernetes via kubectl exec (shell access to pods) - Zero Trust: AWS SSM, GCP IAP, Azure Bastion, OCI Bastion, Cloudflare, Teleport, Tailscale, Boundary, Hoop.dev Cloud Sync: - Synchronize connections via shared directories (Google Drive, Syncthing, Nextcloud, Dropbox, USB) - Group Sync with Master/Import access model - Simple Sync with UUID-based merge and tombstone deletion File Transfer: - SFTP file browser via Midnight Commander with split-panel navigation Organization: - Groups, tags, templates, and smart folders - Connection history and statistics - Session logging and recording - Tab Overview, Tab Pinning, and Tab Switcher Import/Export: - Asbru-CM, Remmina, SSH config, Ansible inventory, CSV - Royal TS, MobaXterm, RDP files, libvirt, native format (.rcn) Security: - KeePassXC (KDBX files and proxy) - libsecret (GNOME Keyring) - Bitwarden CLI - 1Password CLI - Passbolt CLI - Pass (passwordstore.org) Productivity: - Split terminals with multi-panel layouts - Command snippets and cluster broadcast - Custom terminal themes and per-connection color overrides - Remote host monitoring (CPU, memory, disk, network) - Wake-on-LAN with auto-connect %prep %autosetup -p1 -n RustConn-%{version} %build cargo build --release -p rustconn --features adw-1-8,web-embedded cargo build --release -p rustconn-cli --features full %install install -Dm755 target/release/rustconn %{buildroot}%{_bindir}/rustconn install -Dm755 target/release/rustconn-cli %{buildroot}%{_bindir}/rustconn-cli install -Dm644 rustconn/assets/io.github.totoshko88.RustConn.desktop \ %{buildroot}%{_datadir}/applications/io.github.totoshko88.RustConn.desktop install -Dm644 rustconn/assets/io.github.totoshko88.RustConn-rdp.xml \ %{buildroot}%{_datadir}/mime/packages/io.github.totoshko88.RustConn-rdp.xml install -Dm644 rustconn/assets/io.github.totoshko88.RustConn-vv.xml \ %{buildroot}%{_datadir}/mime/packages/io.github.totoshko88.RustConn-vv.xml install -Dm644 rustconn/assets/io.github.totoshko88.RustConn.metainfo.xml \ %{buildroot}%{_datadir}/metainfo/io.github.totoshko88.RustConn.metainfo.xml # Install icons for size in 128 256; do if [ -f "rustconn/assets/icons/hicolor/${size}x${size}/apps/io.github.totoshko88.RustConn.png" ]; then install -Dm644 "rustconn/assets/icons/hicolor/${size}x${size}/apps/io.github.totoshko88.RustConn.png" \ "%{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/apps/io.github.totoshko88.RustConn.png" fi done if [ -f "rustconn/assets/icons/hicolor/scalable/apps/io.github.totoshko88.RustConn.svg" ]; then install -Dm644 "rustconn/assets/icons/hicolor/scalable/apps/io.github.totoshko88.RustConn.svg" \ "%{buildroot}%{_datadir}/icons/hicolor/scalable/apps/io.github.totoshko88.RustConn.svg" fi # Locale files (compile .po to .mo) for po_file in po/*.po; do [ -f "$po_file" ] || continue lang=$(basename "$po_file" .po) mkdir -p "%{buildroot}%{_datadir}/locale/$lang/LC_MESSAGES" msgfmt -o "%{buildroot}%{_datadir}/locale/$lang/LC_MESSAGES/rustconn.mo" "$po_file" done %files %license LICENSE %doc README.md CHANGELOG.md docs/ %{_bindir}/rustconn %{_bindir}/rustconn-cli %{_datadir}/applications/io.github.totoshko88.RustConn.desktop %{_datadir}/mime/packages/io.github.totoshko88.RustConn-rdp.xml %{_datadir}/mime/packages/io.github.totoshko88.RustConn-vv.xml %{_datadir}/metainfo/io.github.totoshko88.RustConn.metainfo.xml %{_datadir}/icons/hicolor/*/apps/io.github.totoshko88.RustConn.* %dir %{_datadir}/locale/uz %dir %{_datadir}/locale/uz/LC_MESSAGES %dir %{_datadir}/locale/zh-cn %dir %{_datadir}/locale/zh-cn/LC_MESSAGES %{_datadir}/locale/*/LC_MESSAGES/rustconn.mo %changelog * Fri Aug 14 2026 Anton Isaiev - 0.20.1-1 - Version bump to 0.20.1 - Added: Settings > Interface > Window > Show connection name in split panes — a compact colored header at the top of each split pane showing the connection name and protocol, off by default (#277) - Fixed: group names are now unique per parent folder rather than globally, so hierarchies like "Site A/RDP" and "Site B/RDP" are possible and CSV imports no longer merge unrelated branches (#291) - Fixed: a split pane could not be closed at all when its connection had the floating toolbar switched off — the panel's own detach and close buttons were suppressed along with the session toolbar (#260 follow-up) - Fixed: RDP — xrdp hosts no longer stop at their own greeter after a successful NLA exchange; INFO_AUTOLOGON is now set when credentials are available (#290) - Fixed: opening the connection dialog crashed the application when an SSH agent key had a non-ASCII comment — the comment was sliced at byte offsets and is now measured and cut in characters (#278) - Fixed: vault credentials were not found for connections inside a group — saving used the hierarchical key and resolving searched only the flat one, so every connection in a folder prompted for a password (#289) - Fixed: minimizing to tray silently destroyed port forwards, recordings and external viewers; the tray decision now runs before any teardown (#279) - Fixed: a post-disconnect automation task froze the entire application for up to 60 seconds — it now runs on a background thread (#281) - Fixed: remote session recordings were lost when quitting the application; the retrieval now runs inline on shutdown, bounded by ConnectTimeout=5 (#282) - Fixed: Web embedded — links requesting a new view (target="_blank", window.open) did nothing; the URI is now loaded in the same view (#288) - Fixed: the network monitor reported a false outage on every Flatpak launch, and its debounce erased short down-up flaps so the recovery sweep never ran (#284) - Fixed: a session closed with "exit" was silently reconnected on the next Wi-Fi roam — the sweep now requires explicit eligibility, not just a visible reconnect banner (#285) - Fixed: three strings new in this release reached only Ukrainian, one of them never extracted into the POT at all; all 16 catalogues are complete again - Dependencies: cc 1.4.3, inotify 0.11.5, pkg-config 0.3.34, safe_arch 1.2.0 and the ICU/zerovec family at 2.3.0, all transitive * Thu Aug 13 2026 Anton Isaiev - 0.20.0-1 - Version bump to 0.20.0 - Added: opening a cluster now labels every member tab with a tab group named after the cluster, so it reads "[cluster] host"; Close All in Group on any member closes the whole cluster - Added: signed build provenance for every .deb, .rpm, AppImage and Flatpak bundle attached to a GitHub release — verify with "gh attestation verify --repo totoshko88/RustConn" - Added: Web embedded mode — auto-hide floating toolbar with reveal zone - Added: Settings > Interface > Rendering — Automatic, Hardware (GPU) or Software (Cairo) (#274) - Fixed: an RDP, VNC, SPICE or Web member of a cluster was never registered in it, so "Disconnect all cluster sessions" could not close it - Fixed: a tab returning from a split pane lost its "[group]" title label - Fixed: the floating viewer toolbar was revealed but not clickable for its first two seconds in RDP, VNC and Web sessions - Fixed: choosing a non-system interface language cost macOS users the tray icon — applying the language re-executed the process; the re-exec is gone (#158) - Fixed: Web zoom shortcuts (Ctrl+/-/0) did not work in split view - Fixed: Web toolbar clipped instead of collapsing in a narrow split panel; the collapse point is now measured rather than a fixed pixel breakpoint - Fixed: the Web reveal handle sat over the page's top centre, and the floating toolbar ignored the local theme - Fixed: a failed Web page load left the toolbar logic unrun, and the load timeout reported nothing - Fixed: the header bar's busy spinner lost its accessible name - Fixed: macOS inside a virtual machine had input lag and stuttering scroll — the automatic renderer choice now detects a hypervisor and selects Cairo (#274) - Fixed: seven translatable strings were in the source but in no catalogue; now translated in all 16 locales - Fixed: POTFILES.in did not list the two modules extracted from terminal/mod.rs - Changed: the 60-second Web load timeout now reports itself in the reconnect banner - Improved: neither the X11 Cairo fallback nor the language selection re-execs the process any more — both environment writes moved into the new rustconn-env-sys crate, so startup spawns two processes fewer - Improved: terminal/mod.rs split into three modules — 4365 lines down to 3052 - Improved: adw::Spinner where the runtime has it (opt-in adw-1-6), gtk4::Spinner where it does not; baseline stays libadwaita 1.5 - Improved: build dependencies state the versions the crate features require (libadwaita >= 1.5, VTE >= 0.76) - Improved: the three FFI crates now inherit the workspace clippy lint set; they had been the only crates in the workspace with no lints at all - Documentation: how to verify a downloaded release artifact, in docs/INSTALL.md and SECURITY.md * Wed Aug 12 2026 Anton Isaiev - 0.19.22-1 - Version bump to 0.19.22 - Fixed: KeePassXC "Don't save" mode did not unlock the database on demand (#273) - Improved: Sidebar search uses a cached search engine with result caching - Improved: Keyboard group dropdowns show what "Automatic" actually sends (#271) * Tue Aug 11 2026 Anton Isaiev - 0.19.21-1 - Version bump to 0.19.21 - Fixed: RustConn did not start at all on Fedora 44 — the setlocale guard required exactly one live thread and aborted the process at startup (#271) - Changed: the thread-count clause of the setlocale contract is documented as a judgement rather than a proof (#267) * Tue Aug 11 2026 Anton Isaiev - 0.19.20-1 - Added: SSH/MOSH connections can choose what Backspace and Delete send (#271) - Fixed: Saving Preferences threw away the Backspace/Delete choice on a live session (#271) - Fixed: RDM JSON import still aborted on an integer field, one bad entry cost the whole file (#234) - Fixed: Royal TS Telnet sessions were imported as SSH on port 22 (#234) - Fixed: KeePass database password was never written to the system keyring (#272) - Fixed: Bitwarden, 1Password and Passbolt had the same keyring hole as KeePass (#272) - Fixed: Moving a secret from encrypted file to system keyring destroyed it (#272) - Changed: RUSTSEC-2026-0244 resolved via new rustconn-locale-sys crate (#267) - Dependencies: gettext-rs 0.7.7→0.8.0 * Sun Aug 09 2026 Anton Isaiev - 0.19.19-1 - Fixed: Deleting a connection now removes its credential from the password vault (#263) - Fixed: Renaming a connection in the configuration panel now updates the vault entry (#263) - Fixed: Credentials of connections outside any group were missed by vault cleanup and migration - Fixed: System Keyring entries now visible in KDE Wallet, item label uses / instead of : (#264) - Fixed: Moving a connection between groups no longer orphans its keyring entry (#264) - Fixed: Deleting a group with a vault password no longer leaves a mangled orphan entry in KeePass - Fixed: macOS Keychain credentials were stored where the resolver never looked - Improved: Keyring credential retrieval wipes its intermediate plaintext buffers - Changed: Saved interface language applied only during startup, before any thread exists (RUSTSEC-2026-0244) * Sun Aug 09 2026 Anton Isaiev - 0.19.18-1 - Fixed: Renaming a connection now updates the credential entry in the vault (#263) - Fixed: System Keyring password collision for same-named connections in different groups (#264) - Fixed: KeePass database password keyring entry now namespaced with RustConn prefix (#265) - Changed: System Keyring credentials transparently migrated to new hierarchical key format * Sat Aug 08 2026 Anton Isaiev - 0.19.17-1 - Fixed: Settings panel no longer wipes in-memory KeePassXC password (#259) - Fixed: OCI CLI version detection no longer shows Python tracebacks - Improved: Settings dirty-tracking, async unlock/check, keyring saves, SSH agent error toast - Improved: Import dialog async, error messaging, export open non-blocking * Sat Aug 08 2026 Anton Isaiev - 0.19.16-1 - Version bump to 0.19.16 - Fixed embedded RDP reading local clipboard on every desktop copy instead of only on paste (#261) - Fixed Clipboard Off setting not gating toolbar Copy/Paste/Type Clipboard buttons (#261) * Fri Aug 07 2026 Anton Isaiev - 0.19.15-1 - Version bump to 0.19.15 - Fixed embedded RDP sessions in Automatic graphics mode showing a frozen desktop (#262) - Fixed scrolling, window drags and solid fills silently discarded in GFX sessions (#262) - Fixed sessions with no OpenH264 opening a GFX channel they could not paint through (#262) - Fixed session status bar reporting a graphics pipeline the session was not using (#262) - Fixed pressing Backspace in a session killing the whole window (VTE assertion failure) - Fixed embedded RDP clipboard watcher leak causing coredumps (#261) - Improved embedded RDP rendering performance - Improved split view panel buttons auto-hide behind an arrow indicator * Thu Aug 06 2026 Anton Isaiev - 0.19.14-1 - Version bump to 0.19.14 - Added a Local Shell button to the empty split panel for starting a scratch shell there - Fixed closing one pane taking the whole split layout apart - Fixed session logs losing output and repeating whole screens; the transcript now comes from the session's own PTY (#247) - Fixed opening Settings panel corrupted KeePassXC config (#259) - Improved: one PTY path for every session on every platform (#175) * Thu Aug 06 2026 Anton Isaiev - 0.19.13-1 - Version bump to 0.19.13 - Added US Dvorak RDP keyboard layout (PR #258) - Fixed RDM JSON import rejecting real-world Devolutions exports with numeric fields (#234) - Improved session transcript initial capture timing (#247) - Improved embedded RDP and VNC toolbar: auto-hide floating overlay * Tue Aug 04 2026 Anton Isaiev - 0.19.12-1 - Version bump to 0.19.12 - Added preservation of terminal history across a reconnect, with a dim rule separating the old output from the new session (#253) - Added automatic login for Telnet and serial sessions, with configurable Username Prompt and Password Prompt fields inherited down the group chain (#254) - Added Remove from Split (Ctrl+Shift+R) and Remove Split (Ctrl+Shift+J) so a session can leave a split view without being closed (#252) - Fixed connect detection and prompt detection reading the oldest scrollback instead of the visible screen (#253) - Fixed an expect-rule response being written to the application log in clear text - Fixed "Move to New Tab" and "Close Connection" in a split pane's context menu doing nothing (#252) - Fixed a collapsed split leaving its layout behind, which the next split then reused - Fixed broadcast mirroring keystrokes out of a session that had left the split - Fixed SFTP being unable to reach a host behind a jump host: mc's sh:// VFS now receives the connection's SSH options through a generated ssh_config behind a PATH wrapper (#255) - Fixed a jump host picked from the connection list being invisible to every SFTP path; chain resolution moved into rustconn-core::connection::jump_chain - Fixed rustconn-cli sftp refusing connections whose protocol is SFTP - Fixed a pre-connect port check running against hosts reachable only through a hand-typed ProxyJump - Fixed ${password} in an expect-rule response resolving to an empty string: the four built-in placeholders are now supplied from the connection at connection time, and substitution validates for a terminal instead of for a shell, so a password containing shell metacharacters survives (#257) - Fixed a backslash inside a resolved expect-rule value being reinterpreted as an escape sequence - Fixed a failed expect-rule substitution typing the literal placeholder into the session; the rule is now skipped with a warning - Improved prompt watching by replacing three duplicated implementations with window::prompt_autofill::install_login_autofill - Improved testability by moving prompt matching into rustconn-core::connection::login_prompt - Improved the file-manager SFTP path, which now warns that it cannot route through a jump host instead of failing silently - Updated dependencies: ipnet 2.12.0 to 2.12.1, libredox 0.1.18 to 0.1.19 - Documented Automatic Login for Telnet and Serial in the user guide * Sun Aug 02 2026 Anton Isaiev - 0.19.11-1 - Version bump to 0.19.11 - Fixed the Homebrew release automation patching only commented-out examples, which left the tap formula pinned to v0.19.6 since that release (#251) - Fixed KeePassXC group passwords failing to load when the database is password-protected: both group dialogs now pass the stored master password (#250) - Fixed the snap keyring error naming the exact snap connect command instead of implying the keyring is broken (#249) - Improved embedded RDP CPU usage for background tabs: the polling loop now skips 15 of every 16 ticks when the drawing area is not mapped - Improved connection and group listing with list_connections_owned and list_groups_owned, removing the intermediate Vec<&T> at 39 window call sites and in both persist paths - Improved the readability of setup_ironrdp_polling by extracting its event handling into polling_handlers.rs behind two borrowed context structs - Improved allocation behaviour in hot paths with with_capacity hints for trash, the group hierarchy index and sidebar filtering - Improved responsiveness of emptying the trash by moving webkit session directory removal to a background thread - Removed PackageManager, detect_package_manager and get_system_install_command from the rustconn-core re-exports - Documented password-manager-service as a manual snap interface, which it has always been * Sat Aug 01 2026 Anton Isaiev - 0.19.10-1 - Version bump to 0.19.10 - Added "Session Logs..." to the primary menu and "Session Log..." to a connection's context menu, opening the directory that connection actually writes to (#247) - Added expansion of a leading ~ in a log path template; a relative template now resolves inside the log directory from Settings (#247) - Fixed session logging configured on a connection never writing anything: the Logs tab settings had no reader outside the dialog (#247) - Fixed session logs recording typed passwords in clear text; every written line is now redacted (#247) - Fixed "Retention (days)" never deleting a file: age-based pruning now also runs when a session log is opened (#247) - Fixed the "Timestamps" switch doing nothing; it now controls the session transcript layout (#247) - Fixed a log file that could not be created failing silently; the failure now raises an error toast naming the reason (#247) - Fixed the KDBX "Use password" and "Use key file" switches only hiding rows without changing which credentials opened the database - Fixed eight RDP and VNC dropdown labels being untranslated in every language - Fixed RDP and VNC sessions freezing instead of reconnecting after the computer woke from sleep: both embedded clients now set TCP keepalive and TCP_USER_TIMEOUT (#248) - Added resume detection so a session frozen by a suspend is dimmed and offered its reconnect banner immediately (#248) - Fixed picking a key from the SSH agent not restricting which key was offered: the choice is now passed as -i with IdentitiesOnly=yes - Changed an empty per-connection Log Path to mean the log directory from Settings - Removed the Encrypted Documents feature, which was never reachable from the user interface - Removed ProgressDialog, a second unused retry model, three unreachable menu actions and two configuration fields nothing read - Updated time 0.3.54 to 0.3.55 * Sat Aug 01 2026 Anton Isaiev - 0.19.9-1 - Version bump to 0.19.9 - Added a three-state RDP audio setting: play on this computer, on the remote computer, or not at all (#245) - Fixed the RDP audio setting being ignored at connect time, which left every session with audio disabled (#245) - Fixed custom FreeRDP arguments being dropped silently in embedded mode (#245) - Fixed the disabled audio backend still advertising volume control (#245) - Pinned the PulseAudio and ALSA backends in the bundled FreeRDP so it cannot ship without sound (#245) - Fixed the snap package failing to start because WebKitGTK libraries were missing from the runtime (#244) - Added a CI check that resolves every snap binary's shared libraries before publishing (#244) - Fixed RDP through an RD Gateway resolving the target host locally and failing (#246) - Fixed the RD Gateway tunnel sending an empty user name and a portless endpoint (#246) - Fixed a failed gateway tunnel stranding the session instead of falling back to FreeRDP (#246) - Fixed gateway connections to a target port other than 3389 going to the wrong port (#246) - Fixed .rdp import reading the gateway port from a non-standard field (#246) - Updated clap 4.6.4 to 4.6.5 * Fri Jul 31 2026 Anton Isaiev - 0.19.8-1 - Version bump to 0.19.8 - Added a setting to open a new session on every double-click (#242) - Fixed Remote Desktop Manager JSON import aborting on the first entry: ConnectionType is a numeric enum in real exports (#234) - Fixed RDM import losing usernames, passwords and the folder hierarchy: Url/UserName/nested Credentials and Group paths are now read (#234) - Fixed Royal TS import skipping every RDP connection: the object is RoyalRDSConnection with RDPPort (#234) - Fixed Royal TS connections importing without a username: credentials assigned by name, typed inline, or inherited from the folder are now resolved (#234) - Added support for compressed .rtsz containers and uncompressed .rtsx Royal TS documents (#234) - Fixed XML entities corrupting imported Royal TS names (#234) - Fixed Royal TS export writing RoyalRDPConnection, an element Royal TS cannot read - Unsupported import entries are now reported as skipped with their source type (#234) - Updated dependencies: hybrid-array 0.4.13→0.4.14, wide 1.5.0→1.6.0 * Thu Jul 30 2026 Anton Isaiev - 0.19.7-1 - Version bump to 0.19.7 - Fixed double-click on a connection focusing a disconnected tab instead of connecting (#242) - Fixed Enter in the connection sidebar doing nothing - Implemented "Restore sessions on startup", which had no effect at all (#243) - Fixed an unresolvable hostname aborting the connection instead of skipping the probe (#241) - Added host-side resolution of mDNS .local names inside Flatpak (#241) - Added ${password} to Custom Command templates, passed via environment, never via a command line (#151) - Fixed Host, Port, Username and password not being editable for a Custom Command (#151) - Fixed a password-only connection never caching its resolved credential * Wed Jul 29 2026 Anton Isaiev - 0.19.6-1 - Version bump to 0.19.6 - Fixed auxiliary keyring operations using Linux-only secret-tool on macOS - Added local-only macOS CI, dependency, signing, and bundle audit workflow - Improved the canonical macOS app and DMG to bundle and relocate 58 non-system dylibs - Added explicit ad-hoc and Developer ID hardened-runtime signing plus notarization and stapling - Expanded cargo-deny checks to aarch64 and x86_64 macOS targets - Synchronized the canonical macOS feature profile across build and packaging paths - Updated dependencies: displaydoc 0.2.6→0.2.7, toml 1.1.3→1.1.4 * Tue Jul 28 2026 Anton Isaiev - 0.19.5-1 - Version bump to 0.19.5 - Fixed SSH session dying with "path too long for Unix domain socket" on long hostnames (issue #239) - Fixed ${variable} placeholders never substituted in a Custom Command template (issue #151) - Fixed Custom Command leaving a dead terminal tab behind after a one-shot launcher exits - Fixed Tags field hidden for Custom Command and other Zero Trust connections - Fixed in-place reconnect breaking a Custom Command line - Fixed folders could not be nested by drag and drop in the sidebar (issue #237) - Fixed multi-codepoint emoji icons (ZWJ sequences, flags, keycaps) saved but never drawn - Improved fallback to a visible icon when the active theme lacks the stored icon name - Improved localization: new string translated in all 16 languages - Updated dependencies: socket2 0.5→0.6, aes, clap_complete, event-listener, toml_parser, tray-icon * Mon Jul 27 2026 Anton Isaiev - 0.19.4-1 - Version bump to 0.19.4 - Added detachable session windows (issue #236) - Fixed RDP connection failing when the server only supports Standard RDP Security (issue #235) - Fixed FreeRDP fallback broken on FreeRDP 3.24/3.25 due to the args-from file: prefix - Fixed CredSSP logon failures triggering a pointless FreeRDP fallback - Removed dead external_window module (ExternalWindowManager) - Improved RDP failure classification moved into rustconn-core - Improved single code path for building a session's tab content - Improved localization: new strings translated in all 16 languages * Thu Jul 23 2026 Anton Isaiev - 0.19.3-1 - Version bump to 0.19.3 - Added option to hide Welcome tab at startup (issue #232) - Fixed FreeRDP fallback fails on FreeRDP 3.26+ due to args-from exclusivity (issue #234) - Fixed RDP clipboard syncing even when disabled in connection settings (issue #233) - Fixed SSH MPTCP used non-existent TCPMultipath option (issue #231) * Thu Jul 23 2026 Anton Isaiev - 0.19.2-1 - Version bump to 0.19.2 - Added Multipath TCP (MPTCP) support for SSH, RDP, and VNC connections - Fixed VPN connect/disconnect no longer kills healthy SSH sessions * Tue Jul 21 2026 Anton Isaiev - 0.19.1-1 - Version bump to 0.19.1 - Fixed RDP certificate mismatch causing silent connection failure (exit 255) - Fixed SSH password auto-fill intermittently stuck on prompt * Mon Jul 20 2026 Anton Isaiev - 0.19.0-1 - Version bump to 0.19.0 - Added embedded WebKitGTK 6.0 web browser for Web connections (Linux) - Added browser mode selection: Embedded, System, or Custom browser command - Added per-connection persistent sessions with isolated cookies and local storage - Added navigation toolbar with back/forward/reload/home and zoom controls - Added credential autofill via JavaScript injection and HTTP Basic Auth - Added JavaScript enable/disable toggle per connection - Added split view support for embedded web alongside terminals - Added web-embedded feature flag (default on Linux, excluded on macOS) * Sat Jul 18 2026 Anton Isaiev - 0.18.12-1 - Version bump to 0.18.12 - Added Graphics Pipeline selector for embedded RDP connections (issue #218) - Fixed missing mouse cursor on remote Wayland VNC sessions (issue #220) * Thu Jul 16 2026 Anton Isaiev - 0.18.11-1 - Fixed: Missing mouse cursor on remote Wayland sessions over VNC (#220) - Fixed: Embedded RDP retry without GFX before FreeRDP fallback (#218) - Fixed: Nix flake tests no longer run during nix build - Fixed: Nix flake duplicate CHANGELOG entry merged * Thu Jul 16 2026 Anton Isaiev - 0.18.10-1 - Added Nix flake for NixOS / Nix users - Fixed: Embedded RDP to WinServer 2019 AD auth false fallback (#218) - Fixed: FreeRDP fallback auth failure on single-session servers - Dependencies: bitflags, clap, ksni, regex, sspi, uuid updated * Wed Jul 15 2026 Anton Isaiev - 0.18.9-1 - Security: vault password retrieval returns Zeroizing - Security: clipboard password wrapped in Zeroizing - Fixed: pre/post-connect tasks enforce 60s timeout ceiling - Fixed: keyring save operations have 5s timeout - Dependencies: FreeRDP 3.28.0 → 3.29.0 * Tue Jul 14 2026 Anton Isaiev - 0.18.8-1 - Version bump to 0.18.8 - Fixed: Network interface change breaks connections (#217) - Fixed: Terminal shortcuts after remapping (#216) - Improved: Captive portal detection, rate limiting, embedded reconnect * Mon Jul 13 2026 Anton Isaiev - 0.18.7-1 - Version bump to 0.18.7 - Headless core-cli cleanup: rustconn-core defaults to empty features - CLI is minimal by default; client-launch and secret-management are opt-in - System keyring (oo7/macOS Keychain) gated behind system-keyring feature - NO_COLOR env var handling follows the no-color.org spec - Updated lockfile: cc 1.2.67, http-body 1.1.0, mio 1.2.2, open 5.4.0, rand 0.9.5, rustls 0.23.42, uuid 1.23.5 * Sat Jul 11 2026 Anton Isaiev - 0.18.6-1 - Version bump to 0.18.6 - Added native RD Gateway (MS-TSGU) support for the embedded RDP client: uses IronRDP's native tunneling instead of external xfreerdp fallback; GFX pipeline, H.264, clipboard, shared folders, printer redirection, and audio work identically to direct TCP; gated behind the rd-gateway feature flag (enabled by default) - Added mouse X1/X2 (browser back/forward) button support for embedded RDP - Improved input handling migrated to ironrdp-input state machine, replacing ~80 lines of bespoke code; deduplicates redundant mouse-move events and prevents phantom key-releases - Improved zero-latency input delivery via tokio::select!, eliminating the previous 0-50ms polling delay for keyboard and mouse events - Improved RGBA→BGRA pixel conversion for GFX pipeline using chunks_exact(4) with pre-allocated buffer, enabling SSSE3 auto-vectorization; ~3x faster on 4K frames - Improved gateway password intermediate is now zeroized on drop - Fixed RDP authentication failures showing misleading "external client closed unexpectedly" error; auth failures now reported immediately and FreeRDP fallback watchdog classifies stderr into specific messages - Fixed FreeRDP error parser duplicate auth branches (clippy if_same_then_else) - Improved session command channel migrated to tokio::sync::mpsc::unbounded, enabling non-async send() from the GTK thread - Improved extracted send_file_contents_error helper consolidating duplicated error-handling code - New dependencies: ironrdp-input 0.7.0, ironrdp-mstsgu 0.0.1, tokio-tungstenite 0.29.0, tungstenite 0.29.0 - Updated dependencies: aead 0.6.0-rc.10->0.6.1, bytemuck 1.25.0->1.25.1, ironrdp-core 0.2.0->0.2.1, sha1 0.10.6->0.10.7, thread_local 1.1.9->1.1.10, tinyvec 1.11.0->1.12.0, zip 8.5.1->8.6.0 * Sat Jul 11 2026 Anton Isaiev - 0.18.5-1 - Version bump to 0.18.5 - Added EGFX graphics pipeline with H.264/AVC decoding via OpenH264 (dlopen) for dramatically better image quality over WAN connections - Added Native Display Scale mode uses real fractional compositor scale for pixel-perfect rendering on 125%/150% displays - Fixed 3-4 redundant screen repaints on initial RDP connection (toolbar layout race condition) - Improved adaptive session polling reduces idle CPU usage by 3x on static desktops (16ms active / 50ms idle) - Improved clipboard file transfers no longer stall the RDP event loop (async I/O via spawn_blocking) - Improved password intermediate is now zeroized immediately after handoff to IronRDP connector - Improved Cairo downscale filter quality (Filter::Good) when Display Scale exceeds 1x - Many bug fixes for terminal search, settings persistence, snippet editor, tunnel builder, sidebar indicators, and more - New dependencies: ironrdp-egfx 0.3.0, openh264 0.9.7, safe_arch, wide * Thu Jul 09 2026 Anton Isaiev - 0.18.4-1 - Version bump to 0.18.4 - Added SFTP file browser now opens in the login home directory instead of the server root, with an optional SFTP Remote Directory field to pin a path (#212) - Fixed external viewers (TigerVNC, FreeRDP, remote-viewer) left as zombies when shutdown() ran without the process exiting; they are now reaped - Improved sidebar bottom toolbar to match the header bar's icon size and spacing - Improved SFTP home-directory resolution: failed probes are cached, a per-connection SSH agent socket is honoured, and keepalives stop a stalled probe pinning the worker - Dependency updates: libadwaita 0.9.1 -> 0.9.2 (pin lifted), plus der, inotify, regex, regex-automata, zerocopy, zerocopy-derive, zlib-rs patch bumps * Thu Jul 09 2026 Anton Isaiev - 0.18.3-1 - Version bump to 0.18.3 - Added external-session tracking for VNC/RDP/SPICE external-viewer sessions: process registry + shared poll timer, sidebar external-viewer emblem, Disconnect / Stop tracking context menu, split-membership marker, smart double-click - Fixed VNC/RDP/SPICE External Window mode leaving a dead notebook tab; the session is surfaced in the sidebar instead (#209) - Fixed Telnet connections stuck on the Vault password source (#210) - Improved orthogonal (shape + icon, color-independent) sidebar state indicators - Dependency updates: bytes 1.12.1, memchr 2.8.3 * Wed Jul 08 2026 Anton Isaiev - 0.18.2-1 - Version bump to 0.18.2 - SPICE unix socket connections (spice+unix://) with Browse button - Compact interface: primary-menu toggle + Ctrl+Shift+D shortcut, automatic mode on small windows - Compact mode extended to monitoring bar, split panels, and playback toolbar - Fixed SPICE CA-certificate Browse button (was wired to no handler) - Fixed CLI/GUI SPICE viewer USB-redirection flag divergence - Fixed compact mode inflating the header/banner area - FreeRDP (Flatpak) updated 3.27.1 -> 3.28.0 - Dependency updates: zbus 5.17, zvariant 5.13 * Tue Jul 07 2026 Anton Isaiev - 0.18.1-1 - Version bump to 0.18.1 - Split view generalized to embedded RDP/VNC/SPICE tabs - Embedded viewers adapt toolbar/resolution to narrow panels - Fixed split-owner tab close stranding guest sessions - Fixed embedded RDP small-window scaling, blank-after-unsplit, and resize loop - Fixed clicking on embedded panel in split not passing mouse events - Fixed SSH ProxyCommand parallel connections failing with "Permission denied" - Fixed workspace restore skipping RDP/VNC/SPICE connections - Fixed workspace split restore for async connections, Local Shell, multi-panel layouts - Updated dependencies: cc, crossbeam-*, inotify, jobserver, lzma-rust2, num-bigint, zerocopy * Sun Jul 05 2026 Anton Isaiev - 0.18.0-1 - Added a Native (full HiDPI) Display Scale option for embedded RDP/VNC — a "retina" mode that follows the live display scale, alongside Auto and 125–400% (#207) - Fixed embedded VNC showing noise on Tight/JPEG rectangles — the client now decodes JPEG to BGRA and re-enables the Tight encoding - Fixed embedded VNC leaving stale regions after a server-side scroll or window move — CopyRect is mirrored into the Cairo-backed buffer - Fixed the RDP display scale being lost on dynamic resize, and the HiDPI cursor rendering half-missing and mis-sized (#207) - Fixed several UI strings never being translated because their \u{…} escapes leaked into the message catalog; typographic strings now localise correctly - Changed operation-result feedback to non-blocking toasts, and a secret-save failure to a blocking dialog to prevent silent credential loss - Improved performance — fewer allocations in search results, removed redundant per-frame VNC/RDP buffer copies, no per-keystroke connection cloning - Removed the abandoned native embedded SPICE experiment, an unused KeePassXC browser-integration backend, a parallel tracing-init subsystem, and dead render buffers / Wayland placeholders - Updated dependencies — cpal 0.18, muda 0.19, tray-icon 0.24 * Sat Jul 04 2026 Anton Isaiev - 0.17.10-1 - Fixed embedded RDP/VNC requesting a scale-inflated resolution on HiDPI displays — the remote desktop is now requested at the widget's logical size instead of device pixels, cutting HiDPI bandwidth roughly 4× at 2× scale; explicit Display Scale values still request a higher resolution for sharpness - Fixed embedded SPICE showing a black, unresponsive screen by default — spice-embedded is no longer a default feature; SPICE uses the external viewer (opt in with --features spice-embedded) - Fixed embedded VNC rendering garbage against TightVNC/TigerVNC — the Tight encoding is removed from the defaults; ZRLE, CopyRect and Raw remain - Fixed VNC input momentarily stalling the UI — commands are now sent non-blocking on the GTK main thread - Improved embedded RDP frame handling — removed a redundant per-frame buffer copy on the IronRDP path (~33 MB per frame at 4K) - Improved sidebar search — result lookup is now O(1) instead of O(n) per hit - Removed a dead multi-monitor detection placeholder; wrapped remaining user-facing strings for translation; dropped the unused futures dependency * Fri Jul 03 2026 Anton Isaiev - 0.17.9-1 - Fixed SSH multi-hop password chains still crashing when a bastion's host key is unknown — every hop authenticating via forced SSH_ASKPASS now sets StrictHostKeyChecking=accept-new, so a first-seen host-key prompt is no longer routed to the password helper; a changed key is still rejected, preserving MITM protection (#203) - Fixed the embedded RDP first frame being blurry and never sharpening — the desktop is re-requested at the drawing area's real size over MS-RDPEDISP once layout settles, so the first real frame arrives at a 1:1 pixel map (#206) - Fixed the embedded RDP initial snap causing a visible connect to reconnect flicker (and occasional connection resets) — the snap now runs only when the DisplayControlReady event confirms the channel is negotiated and resizes smoothly over MS-RDPEDISP; it is never forced on a timer, so a slow server no longer triggers a full reconnect. If the server never negotiates Display Control the frame is simply scaled to fit (#206) - Fixed a stale seam/line left on the embedded RDP screen after a resolution change — the client now sends a full-desktop Refresh Rect PDU on every resize so the server repaints the whole screen instead of leaving an untouched strip with its old fill (#206) - Fixed over-conservative embedded RDP resolution rounding — dimensions are rounded to the minimum the protocol requires (both forced even) and clamped to 7680x4320, so a resize on a >4K display is no longer silently rejected * Fri Jul 03 2026 Anton Isaiev - 0.17.8-1 - Fixed nested groups losing their parent when importing an Asbru-CM config with three or more group levels — the topological group sort now tracks already-sorted IDs in a dedicated set instead of a map populated later, so arbitrarily deep hierarchies are preserved deterministically on every import (#205) - Fixed a too-large minimum window width in some locales (notably German) that prevented tiling or resizing the window narrow — the runtime width measurement now collapses the sidebar first, as the narrow layout tier does, so localized sidebar labels no longer inflate the minimum (#204) - Fixed the welcome-screen hint holding the window wider in verbose locales — the hint now wraps instead of reporting its full translated width (#204) - Dependencies: updated arrayvec 0.7.7→0.7.8, num-bigint 0.4.6→0.4.7 * Thu Jul 02 2026 Anton Isaiev - 0.17.7-1 - Fixed narrow-window layout — window controls no longer vanish when narrow, the window shrinks smoothly to a measured minimum, non-essential header buttons are shed and the sidebar auto-hides, and the welcome screen reflows its columns instead of wrapping shortcut labels character-by-character (#204) - Fixed SSH multi-hop password chain — only one bastion received a password; entry bastions in nested ProxyCommand now get their own per-hop SSH_ASKPASS helper with indexed env vars (#203) - Fixed Snap build failing on Launchpad with Snapcraft 9.0 — switched from plugin: rust to plugin: nil with an explicit rustup install in the rust-deps part - Security: updated quick-xml 0.39.4→0.41.0 to close RUSTSEC-2026-0194 and RUSTSEC-2026-0195 — crafted XML could trigger unbounded allocation via namespace/attribute flooding on the RoyalTS/libvirt import paths - Dependencies: updated inotify-sys 0.1.6→0.1.7, rand 0.10.1→0.10.2 * Wed Jul 01 2026 Anton Isaiev - 0.17.6-1 - Fixed RDP sessions still aborting on resize — RustConn no longer requests bulk (MPPC/NCRUSH/XCRUSH) compression at all, matching the ironrdp-client default, so the server never sends compressed FastPath updates that desynchronised across a Deactivation-Reactivation Sequence (#200) - Fixed Saving Preferences wiping persisted window/sidebar state — window size/maximized, expanded sidebar groups, and search history are now preserved instead of reset to defaults (#202) - Fixed credentials being silently lost when the system keyring is unavailable — RustConn probes real backend availability, raises an actionable dialog pointing to Settings → Secrets, and falls back to the new encrypted-file store (#201) - Added: window now remembers its maximized state across restarts (#202) - Added an application-managed encrypted-file secret backend (AES-256-GCM with an Argon2id-derived key) for hosts without a working system keyring - Added proactive keyring availability surfacing at startup and in Settings → Secrets - Changed: the system keyring path migrated to the in-process oo7 client on Linux/BSD, removing the bundled libsecret/secret-tool from the Flatpak manifests; macOS keeps using the system Keychain - Dependencies: updated aws-lc-rs, aws-lc-sys, clap_complete, inotify-sys, libredox, rustls-pki-types, time, and zlib-rs to latest compatible releases * Tue Jun 30 2026 Anton Isaiev - 0.17.5-1 - Fixed embedded RDP sessions aborting when resized — the reactivation handler now rebuilds a fresh decompressor for the negotiated compression type (RDP4/5/6/6.1), so compressed FastPath updates keep decoding after a Deactivation-Reactivation Sequence (#200) - Fixed RDP to GNOME Remote Desktop dead-ending — the protocol-incompatibility detector now matches the actual error wrapper and the IronRDP "invalid state" bug signature, so these servers transparently fall back to the external FreeRDP client (#199) - Fixed the native arm64 snap link step — the build now prepends the SDK arch-triplet lib dir to the rustc link search path so both halves of pango resolve from the SDK (#198) - Fixed Variable password auto-login on network equipment — detection now reads the line under the cursor and matches via a pure looks_like_password_prompt helper, with an idle re-check for the prompt-render race (#194) - Fixed jump host authenticating with its own Variable/Vault password, delivered out-of-band via SSH_ASKPASS so the target password never leaks to the bastion prompt (#191) - Added a "Send terminal control shortcuts to the session" setting so readline chords (Ctrl+F/P/N/W/H/M/I) reach the focused terminal or embedded RDP/VNC/SPICE viewer instead of the app accelerators (#197) - Added a native arm64 (aarch64) snap build alongside amd64 - Changed: refreshed the gtk4-rs stack and other Cargo dependencies to their latest compatible patch releases; dropped the unused pathdiff * Sat Jun 27 2026 Anton Isaiev - 0.17.4-1 - Fixed RDP vault login sending the correct domain — when credentials came from the secret vault, the domain field was passed as an empty string instead of the configured value, causing NLA/CredSSP to reject DOMAIN\user logins with STATUS_LOGON_FAILURE; the vault path now falls back to the connection's saved domain (#188) - Fixed Variable password auto-login on network equipment — the password auto-fill relied solely on VTE's contents-changed signal, which does not fire reliably for SSH password prompts in no-echo mode with cursor-positioning escapes; detection now also subscribes to cursor-moved (#194) - Changed: CUPS printer redirection forwards all local queues — the embedded IronRDP printer channel previously announced a single dummy "RustConn" printer; it now enumerates all local CUPS queues (or a configured subset via with_printers) and registers each as its own redirected printer, routing print jobs back to the correct local queue (#192) * Fri Jun 26 2026 Anton Isaiev - 0.17.3-1 - Fixed switching GNOME workspaces with Super+digit breaking RDP keyboard input — the compositor grabbed the Super chord before its key-release reached the widget, so the embedded session treated Super as stuck down until a reconnect; held keys are now released when the widget loses focus (#193) - Fixed RD Gateway connections with FreeRDP 3.x — the launcher emitted the removed 2.x aliases /g: /gu: /gp:, which 3.x rejects; it now builds the unified /gateway:g:HOST:PORT option and reuses the session credentials (#187) - Fixed multi-hop (double) jump hosts in Flatpak — each hop now gets its own nested ProxyCommand so it inherits the identity key and Flatpak known_hosts (terminal SSH, RDP/VNC/SPICE tunnels, monitoring probe) (#191 follow-up) - Fixed multi-hop jump host order outside Flatpak — the -J hop list is now reversed to match OpenSSH's client-first order, so chains of three or more bastions connect; single-bastion connections are unaffected - Added RDP printer redirection: a "Printer Redirection" toggle maps the local printer into the session (issue #192). The embedded IronRDP client announces a virtual PostScript printer over RDPDR and forwards print jobs to the local CUPS spooler (lp) off the session thread; the external xfreerdp3 client passes /printer. Available in the GUI, the CLI (--printer), and imported from .rdp files (redirectprinters) - Changed: external RDP now prefers the maintained SDL3 client (sdl-freerdp3) for RD Gateway, RemoteApp, and IronRDP fallback launches; embedded mode still uses wlfreerdp where present * Thu Jun 25 2026 Anton Isaiev - 0.17.2-1 - Security: the password generator's Copy now auto-clears the clipboard after 30 seconds (only if it still holds that password) - Security: the auto-login SSH password is wrapped in Zeroizing so plaintext is wiped right after it is handed to VTE - Security: fixed an SSH tunnel askpass file race by adding a per-tunnel UUID to the helper script filename - Fixed SSH jump host authenticating with the target's password instead of its own; the bastion now uses its own saved password (#191) - Fixed RDP dynamic resize requesting sub-640x480 desktops; RD Gateway password now sent (/gp:) for same-account gateways via a single-use 0600 args file; shared-folder names with commas no longer corrupt drive redirection; multilingual SSH password-prompt detection on reconnect - Added Simple Sync — bidirectional multi-device sync of connections, groups (full create/update/delete), templates, snippets, and non-secret variables via full-sync.rcn with UUID merge and deletion tombstones - Added SSH config import following Include directives (globs, ~/.ssh relative paths, 16-level recursion cap, each file parsed once) - Changed: tab groups persist in workspaces; jump-host / SSH-args resolution deduplicated; dynamic-connection IDs now use stable UUID v5 - Updated uuid 1.23.3->1.23.4 and the wasm-bindgen/js-sys/web-sys ecosystem * Wed Jun 24 2026 Anton Isaiev - 0.17.1-1 - Added a WinBox connection preset (Remote Desktop category) for MikroTik RouterOS management (#190) - Added native PKCS#11 / YubiKey SSH authentication via a "PKCS#11 Provider" field, also imported from ~/.ssh/config and injected into ProxyJump hops (#189) - Fixed Flatpak Generic commands failing with "Failed to start command: script" on hosts without a reachable script binary, and GUI tools (e.g. WinBox) not launching (#190) - Internal: removed the dead VNC FFI stub, archived-spec traceability comments, and unused performance scaffolding (~1900 LOC) - Updated chacha20 0.10.0->0.10.1 * Tue Jun 23 2026 Anton Isaiev - 0.17.0-1 - Packaging (openSUSE): pin the cargo linker to gcc in %prep to fix "linker `clang` not found" — the bare /usr/bin/clang symlink is not reliably present in the OBS build root - Security: kubectl and Zero Trust Generic sessions now spawn argv directly instead of via sh -c, preventing shell-metacharacter command injection from imported/untrusted configs - Security: removed the obsolete legacy XOR credential fallback (only AES-256-GCM credentials are read) - Security: documented the machine-key threat model and the Passbolt passphrase Known Issue in SECURITY.md - Security: wrap transient Bitwarden/KeePassXC serialized buffers in Zeroizing - Added workspace split-layout restore on Open - Improved terminal highlight rendering (pre-parsed colours, allocation-free hot path) and connection sort (cached lowercase keys) - Converted the embedded-RDP autotype dialog to adw::Dialog; header-bar icon buttons now meet the 44x44 minimum tap target - Build: narrowed the tokio feature set from "full" to the features used - Updated rustls 0.23.40->0.23.41 * Mon Jun 22 2026 Anton Isaiev - 0.16.13-1 - Added RDP round-trip time (latency) display — embedded IronRDP sessions show RTT in the toolbar when the server reports network characteristics via the Auto-Detect PDU; the Echo virtual channel is also registered - Dynamic RDP resolution change now works in embedded mode — the Display Control channel is now registered, so window resizes no longer force a full reconnect on servers that support it - Updated ironrdp 0.15->0.16 (session, dvc, displaycontrol, echo) plus minor crates (quote, time, zlib-rs) * Sun Jun 21 2026 Anton Isaiev - 0.16.12-1 - Added workspace profiles — save and restore named sets of connections - Added built-in port knocking — TCP/UDP knock sequences before connecting - Added fwknop SPA configuration model - Integrated port knock into the pre-connect chain - Added port knock sequence field in Advanced connection editor * Sat Jun 20 2026 Anton Isaiev - 0.16.11-1 - Fixed the connection wizard's "Zero Trust" card showing only a custom-command field instead of the provider list — it now restores the full provider picker (AWS SSM, GCP IAP, Azure, Cloudflare, Teleport, Tailscale, Boundary, Hoop.dev) and defaults to AWS Session Manager, like the Advanced editor - Fixed the RDP Mouse Jiggler never actually running in Embedded (IronRDP) mode (#185) — the timer was only ever armed from set_state, which embedded connections bypass, so neither the mouse-move nor the Scroll Lock keep-alive was ever sent; it is now armed directly from the embedded connection events - Fixed External RDP (sdl-freerdp) ignoring its sdl-freerdp.json in the Flatpak build (#183) — the bundled FreeRDP had no JSON backend, so WinPR silently discarded the config and its SDL hotkeys could not be remapped; a static cJSON module is now built ahead of FreeRDP - Fixed RDP connections created through the New Connection wizard never storing the typed password (#188) — they were created with no usable credential, causing an immediate NLA authentication failure; the wizard now persists the password to the vault, mirroring the full editor - Fixed RDP through an RD Gateway rendering a broken/black session in embedded mode (#187) — gateway connections now go directly to the external client, which wires up gateway routing, instead of falling through to embedded wlfreerdp which never emits the gateway arguments - The Advanced connection editor now has a distinct "New Connection (Advanced)" window title through every entry point, including the wizard's Advanced hand-off - Updated bundled dependencies — cJSON (Flatpak) 1.7.18->1.7.19, arrayvec 0.7.6->0.7.7 * Fri Jun 19 2026 Anton Isaiev - 0.16.10-1 - Fixed RDP Mouse Jiggler not preventing the remote desktop from locking (#185) — in Embedded (IronRDP) mode the jiggler only moved the mouse, which keeps the session alive but does not reset the Windows workstation lock timer; each tick now also taps Scroll Lock (a no-op, state-preserving keystroke) so unattended desktops stay unlocked - Documented that the Mouse Jiggler works in Embedded mode only (the External FreeRDP client has no input channel from RustConn) - Updated cc 1.2.64->1.2.65 - FreeRDP (Flatpak) 3.27.0->3.27.1 * Fri Jun 19 2026 Anton Isaiev - 0.16.9-1 - Fixed RDP Quick Actions and shell launchers typing wrong characters on non-QWERTY remote keyboard layouts (#184) — Run-dialog commands and the PowerShell/CMD launchers are now sent via layout-independent Unicode keyboard events instead of hard-coded US-QWERTY scancodes - Internal cleanup — removed the dead ad-hoc broadcast controller, the unused virtual-scroll tuning API and protocol-layout builder setters, and stale dead_code overrides; corrected stale doc comments - Updated bitvec 1.0.1->1.1.1 * Thu Jun 18 2026 Anton Isaiev - 0.16.8-1 - Fixed KeePassXC not being detected in Flatpak ("keepassxc-cli not found") (#182) — detection and all KDBX operations now resolve and run the host binary via flatpak-spawn --host, so the host's KeePassXC is found and piped database/entry passwords reach it - Fixed KDBX status text overflowing the row (#182) — the status label now ellipsizes at a capped width and shows the full text as a tooltip on hover - Fixed the Settings → Interface theme segmented control not reflecting the saved colour scheme on libadwaita >= 1.7 builds — the toggle group is now held in its wrapper box and the loader sets the active segment from the saved scheme - Documented the external FreeRDP SDL client keyboard shortcuts (Right Shift hotkeys) and where to place sdl-freerdp.json for the Flatpak build (#183) - Updated dependencies: ironrdp-graphics 0.8.0->0.8.1, ironrdp-rdpsnd 0.8.0->0.8.1, bytes 1.11.1->1.12.0, crypto-bigint 0.7.3->0.7.4, getrandom 0.4.2->0.4.3, syn 2.0.117->2.0.118 * Tue Jun 16 2026 Anton Isaiev - 0.16.7-1 - Fixed sidebar right-click menu rows rendering invisible under KDE / the Breeze GTK theme (#181) — the custom popover now pins its colours to the libadwaita popover palette so the menu rows stay legible under any GTK theme - Fixed the smart-folder right-click menus (folder actions and connections inside a smart folder) sharing the same invisible-rows defect — they now reuse the same popover styling; the destructive Delete keeps its red accent - Updated bundled Flatpak components: FreeRDP 3.26.0->3.27.0, fast_float 8.0.2->8.2.10 * Mon Jun 15 2026 Anton Isaiev - 0.16.6-1 - Fixed Activity Monitor doing nothing on most connections and the per-tab "Monitor" menu stuck on Off (#180) — monitoring is wired from a single session-creation choke point, covering every terminal protocol and connect path (sidebar, command palette, cluster) and both synchronous and port-checked connections; sessions register even when Off so the tab menu can cycle Off -> Activity -> Silence live, and in-place reconnect re-arms monitoring - Fixed silence notification reporting the wrong connection name with several monitored tabs open — name is now resolved per session - Updated h2 0.4.14->0.4.15 * Sun Jun 14 2026 Anton Isaiev - 0.16.5-1 - Fixed external FreeRDP client closing immediately with no explanation (#177 follow-up) — stderr captured and forwarded to the log; startup watchdog (~3s) detects an immediate exit - Fixed wrong default secret backend on macOS — fresh install defaults to the system Keychain instead of the unavailable libsecret - Fixed misleading "not installed" message for any terminal spawn failure on macOS — only a genuine missing executable uses that wording - Skipped the Linux dark-theme workaround on macOS, where it fought the system NSAppearance - Suppressed the harmless CSS theme-parser warning flood (libadwaita >= 1.9 vs GTK4 parser) - macOS Keychain: secret bytes zeroized on a UTF-8 decode failure - Updated yuv 0.8.15->0.8.16 * Sun Jun 14 2026 Anton Isaiev - 0.16.4-1 - Fixed MobaXterm import/export losing nested folder structure (#178) — SubRep paths rebuild the full folder tree and round-trip correctly - Fixed SecureCRT export mangling folders nested 3+ levels deep (#178) — paths built by walking the parent chain; empty intermediate folders preserved - Fixed Asbru-CM export dropping parent links on deep hierarchies (#178) — group UUID map built up front so nesting survives any group order - Updated time 0.3.47->0.3.49, time-core 0.1.8->0.1.9, time-macros 0.2.27->0.2.29 * Sat Jun 13 2026 Anton Isaiev - 0.16.3-1 - Added RDP "Fit resolution to window" toolbar button — re-requests session resolution to match the window - Added error details in Connection History for failed connections (the toast is transient) - Fixed failed connections missing from history — port-check timeouts now recorded for all protocols (SSH, RDP, VNC, SPICE, Telnet, MOSH, SFTP) - Fixed RDP connects but the desktop never appears (#177) — first-frame watchdog falls back to external FreeRDP for GFX/H.264-only servers - Updated openssl 0.10.80->0.10.81, zeroize 1.8.2->1.9.0, wasm-bindgen 0.2.123->0.2.125 * Sat Jun 13 2026 Anton Isaiev - 0.16.2-1 - GNOME HIG follow-up audit — critical errors as blocking alert dialogs, destructive button styling removed, DnD indicators use accent color - Dead code cleanup — removed unused ContainerState, is_split/is_welcome, load_variable_from_vault, stale #[allow(dead_code)] - Fixed F10 opening application menu in keyboard passthrough mode — primary flag dropped during passthrough - Fixed Ctrl+T (SSH Tunnel Manager) ignoring passthrough and not customizable — now a regular keybinding - Updated block-buffer 0.12.0->0.12.1, cc 1.2.63->1.2.64, memchr 2.8.1->2.8.2, smallvec 1.15.1->1.15.2, yuv 0.8.14->0.8.15 * Fri Jun 12 2026 Anton Isaiev - 0.16.1-1 - Settings dialog GNOME HIG pass — secret fields to PasswordEntryRow, highlight-rules editor rebuilt, rows activatable, Reset All confirmation, restore dialog, backup/restore failures shown - Fixed Settings dialog taking 5+ seconds to appear with Bitwarden backend (flatpak) - Fixed UI froze for seconds after startup with Bitwarden (flatpak) - Fixed sidebar context menu dismissed on deeply nested rows (KDE Plasma, #157) * Thu Jun 11 2026 Anton Isaiev - 0.16.0-1 - Added batch edit for multi-selected connections — change group, tags, or icon in one pass with undo - Added notes badge in the sidebar — connections with description show document-edit-symbolic badge - Added search matches connection notes (weight below name/host/tags) - Added Windows (WSL2) guide — step-by-step setup in docs/WSL.md (#137) - Structured validation errors in core — ValidationError enum with thiserror - RDP catch_unwind wrapper kept for 0.16 (ironrdp 0.15 still may panic on malformed PDUs) - Fixed sidebar context menu failing to open on KDE Plasma (#157) - Internal: dialogs/connection/dialog.rs split into 7 submodules - Security: RDP/SPICE client Debug output leak regression-tested - New property tests for shell_escape and smart_folder * Thu Jun 11 2026 Anton Isaiev - 0.15.14-1 - External RDP/VNC sessions no longer freeze the window for 1.5s on connect — non-blocking spawn with 250ms poll - Tray messages are now event-driven instead of polled (async-channel) - Secret backend detection in Settings is parallel and cached (30s) - Connection history writes are debounced (2s) and off the main thread - One suggested action per dialog (GNOME HIG) - Added async-channel 2.5.0 - Updated crypto-primes 0.7.1 -> 0.7.2 * Wed Jun 10 2026 Anton Isaiev - 0.15.13-1 - Added Menu key / Shift+F10 to open the sidebar context menu for the selected row — keyboard fallback where right-click on nested rows is unreliable (#157) - Added confirmation before closing with open session tabs (window close button and Ctrl+Q share one dialog; skipped with minimize-to-tray) - Added a recording indicator (red dot) in the sidebar while any session of a connection is being recorded - Added import duplicate handling — Cancel / Skip Duplicates / Import All instead of silently creating renamed copies - Added a persistent cloud-sync failure banner (manual Sync Now and background auto-export); transient toasts kept for success only - Added touch long-press to open the sidebar context menu - Improved context-menu keyboard navigation and screen-reader roles, error message wording (GNOME HIG), and 44x44 px sidebar tap targets - Fixed sidebar context menu not opening for rows nested deeper than the root level on some systems (KDE Plasma) (#157) - Fixed crash (SIGSEGV) in pango when opening a new SSH tab or on screen unlock — refresh VTE fonts on fontconfig change, defer child-exited work to idle (#171) - Updated crypto-primes 0.7.0 -> 0.7.1, ksni 0.3.4 -> 0.3.5, regex 1.12.3 -> 1.12.4, zerocopy 0.8.50 -> 0.8.52 * Tue Jun 09 2026 Anton Isaiev - 0.15.12-1 - Fixed macOS SSH password authentication always failing with "Permission denied" — native PTY child now claims the slave PTY as its controlling terminal (setsid + TIOCSCTTY) (#175) - Added rustconn-pty-sys crate to isolate the controlling-terminal FFI (pre_exec) so the main crates keep unsafe_code = "forbid" - Updated uuid 1.23.2 -> 1.23.3 and wasm-bindgen 0.2.122 -> 0.2.123 (with related js-sys, web-sys, wasm-bindgen-futures) * Mon Jun 08 2026 Anton Isaiev - 0.15.11-1 - Fixed keybinding recorder still not registering keystrokes on Flatpak — dedicated modal capture dialog (#170, #167) - Fixed keybinding overrides not displayed in Settings after reopening or restart (#170) - Fixed Snap package still failing to start on Ubuntu 26.04 — core24 base with gnome extension (#174) - Changed keybinding recorder to store shortcuts in a layout-independent (Latin) form (#170) - Changed Snap base core26 -> core24 (GNOME 46 / libadwaita 1.5, without adw-1-8); Snap CI installs Snapcraft from latest/stable * Sat Jun 06 2026 Anton Isaiev - 0.15.10-1 - Fixed keybinding overrides not displayed correctly after reopening Settings (#170) - Fixed keybinding conflict detection ignoring modifier order - Fixed Snap package failing to start on Ubuntu 26.04 (AppArmor error) (#174) - Updated bitflags 2.12.1 -> 2.13.0 * Fri Jun 05 2026 Anton Isaiev - 0.15.9-1 - Lazy init secret backends — only preferred backend initialized at startup - KeePass keyring failure toast at startup when password not loaded - Connection wizard: ComboRow model lazy init eliminates auth method flash - Fixed KeePass vault credentials not resolved on Flatpak after restart (#170) - Fixed crash (SIGSEGV) when opening new SSH tab or on screen lock/unlock (#171) - Fixed connection wizard auth method label overflow — ComboRow (#169) - Fixed Telnet connection not closed when closing the tab (#172) - Fixed 1Password/Passbolt credentials not passed in vault entry lookups - Fixed connection wizard redundant Method dropdown for non-SSH protocols * Thu Jun 04 2025 Anton Isaiev - 0.15.8-1 - Fixed keybinding reassignment not registering keystrokes — recorder moves focus to parent ActionRow and disables PreferencesDialog search - Fixed sidebar right-click context menu not appearing for hosts in groups - Fixed secret variable with vault entry name writing duplicate to vault - Fixed sidebar status icon size inconsistent with custom icons - Variable dialog: vault entry UX hints — placeholder and tooltip - Updated: chrono 0.4.44→0.4.45, log 0.4.31→0.4.32, yoke 0.8.2→0.8.3 * Wed Jun 03 2026 Anton Isaiev - 0.15.7-1 - Variable password source: discoverability — subtitle hint and "+" button to open Variables manager directly from connection dialog - Variable password source: custom vault entry name — reference existing vault entries by name instead of default rustconn/var/{name} key - Fixed Proxmox SPICE inline PEM CA certificate now saved automatically on import from .vv file - Fixed keybinding reassignment not working — accelerators suspended during recording, EventControllerKey uses Capture phase * Tue Jun 02 2026 Anton Isaiev - 0.15.6-1 - VNC: new "Accept Certificate" toggle for VeNCrypt servers with self-signed TLS certificates; CLI --ignore-certificate for VNC - Fixed Welcome screen "Remote host monitoring" icon missing on macOS - Fixed sidebar right-click context menu not opening for nested items - Updated: bitflags 2.11.1→2.12.1, log 0.4.30→0.4.31, lzma-rust2 0.16.2→0.16.4; removed sha2 0.10.9 - Flathub: inetutils 2.7→2.8 * Mon Jun 01 2026 Anton Isaiev - 0.15.5-1 - IronRDP 0.14→0.15: bulk compression, slow-path rendering, RemoteApp alternate_shell, multitransport dispatch, pixel format fix - macOS: fixed passwords not saving to Keychain (wrong backend dispatch) - macOS: fixed tray icon missing when launched from .app bundle - macOS: fixed AWS SSM "session-manager-plugin not found" - Compact mode: denser sidebar, toolbar, search bar, popover menus - Compact mode enabled by default on macOS for new installations - Hamburger menu restructured: Tools and Sessions submenus - Upgraded: ironrdp 0.14→0.15 (+ ironrdp-bulk 0.1) - Updated: inotify 0.11.2, ironrdp-tls 0.2.1, rustls-native-certs 0.8.4, unicode-segmentation 1.13.3 * Sun May 31 2026 Anton Isaiev - 0.15.4-1 - Fixed macOS UI hang when editing connection with broken/throttled ssh-agent (#163) - SSH agent probe now runs asynchronously with a 5-second timeout * Sat May 30 2026 Anton Isaiev - 0.15.3-1 - Snap base bumped to core26 (Ubuntu 26.04 / GNOME 50 / libadwaita 1.8) - Removed system-files plug; external CLIs download on demand inside sandbox - Components dialog now works in both snap and Flatpak - Added is_sandboxed() predicate unifying snap/Flatpak CLI logic - Fixed broken Ukrainian translation; updated all 16 language catalogs - Dependencies: hyper 1.10.1, uuid 1.23.2, zbus 5.16.0, zerocopy 0.8.50, zvariant 5.12.0 * Fri May 29 2026 Anton Isaiev - 0.15.2-1 - Corrected misleading copy-pasted #[allow]/#[expect] reasons in rustconn-core and property tests; lints that fire now use #[expect] - Removed dead notify_tx field and its #[allow(dead_code)] from DirectoryWatcher - rustconn-cli update: replaced .position(...).unwrap() with a CliError instead of panicking - Shortcuts help dialog now lists Ctrl+T, F10, Ctrl+W and font-zoom shortcuts; added a test guarding against keybinding-registry drift - Docs: fixed Create Group shortcut (Ctrl+Shift+G), removed non-existent Ctrl+K, added Ctrl+Shift+B * Fri May 29 2026 Anton Isaiev - 0.15.1-1 - Flatpak language switch fix: relocate translations to /app/share/rustconn/locale/ to bypass GNOME Locale extension subset split (#158) * Wed May 27 2026 Anton Isaiev - 0.15.0-1 - Version bump to 0.15.0 — quality pass release - RDP RemoteApp: closed /p: cmdline leak via single-use args file in $XDG_RUNTIME_DIR - Migrated ~350 #[allow] overrides to #[expect(reason = "...")]; dropped ~50 stale ones - Manual Debug impls for all secret backends with leak-protection tests - # Errors documentation on every public CLI command function - Settings-save failures now surface a toast instead of being dropped silently - EntryRowBuilder requires pre-translated titles so xgettext catches every UI label - GUI spacing follows GNOME HIG steps (6/12/18/24 px) consistently * Wed May 27 2026 Anton Isaiev - 0.14.10-1 - Version bump to 0.14.10 - Hardened secret handling: SecretString in vault save signatures - Backend deserializers wrap passwords in SecretString immediately - Removed password_len from Bitwarden unlock log - F10 opens primary menu (GNOME HIG) - Graceful exit on Tokio runtime failure - PasswordGenerator surfaces RNG errors as RngError - Named timeout constants for downloads and vault operations * Tue May 26 2026 Anton Isaiev - 0.14.9-1 - Version bump to 0.14.9 - Added Server Manager quick action in RDP admin tools menu - Fixed split view and RemoteApp issues * Tue May 26 2026 Anton Isaiev - 0.14.8-1 - Split-view broadcast toggle in header bar (#160) - Compact interface mode for reduced chrome (#157) - Fixed broadcast mode — rewired around split view (#160) - Fixed broadcast toggle visibility after Select Tab placement (#160) - Fixed broadcast doubling typed characters in split panels (#160) - Fixed language change in Flatpak (#158) - Improved tray icon visibility on dark panels (#157) * Mon May 25 2026 Anton Isaiev - 0.14.7-1 - Version bump to 0.14.7 - Added Visual Tunnel Builder - Added Keyboard passthrough mode * Sat May 23 2026 Anton Isaiev - 0.14.6-1 - Version bump to 0.14.6 - Variables dialog: collapsible rows, duplicate name validation - RDP toolbar: Registry Editor and Device Manager replace PowerShell/CMD - RDP scripts: instant clipboard paste - Snippet delivery mode * Fri May 22 2026 Anton Isaiev - 0.14.5-1 - Version bump to 0.14.5 - All dialogs migrated to adw::Dialog - Edit Group dialog redesigned with 5 tabs - RDP Scripts via clipboard-paste - Snippet target platform - Quick Connect theme fix (#156) * Wed May 20 2026 Anton Isaiev - 0.14.4-1 - CLI: history, pin/unpin, tag, move, monitor commands — full connection management - CLI: import --auto / --dry-run — auto-detect sources and preview imports - CLI: export --csv-delimiter, --csv-fields — customize CSV export format - CLI: add/update — full GUI parity for SSH, RDP, VNC, SPICE, MOSH, Serial fields - Config file locking — exclusive advisory lock (fs2) on write; GUI + CLI no longer conflict - SSH agent: add_key() accepts &SecretString — intermediate strings wrapped in Zeroizing - Quick Connect: history persisted across sessions (up to 15 entries, no passwords) - RDP Quick Actions: 3 new Windows admin tools (diskmgmt.msc, resmon, compmgmt.msc) - Settings: Azure/gcloud/OCI CLI not detected in Flatpak — env vars now passed through - Command Palette: fixed shortcut display Ctrl+Shift+N → Ctrl+Shift+G * Wed May 20 2026 Anton Isaiev - 0.14.3-1 - Settings: removed duplicate group titles above collapsible sections - CLI: secret set --password wrapped in Zeroizing immediately, added --password-stdin - External window: migrated to libadwaita (adw::ApplicationWindow + ToolbarView) - Settings: collapsible sections (GNOME HIG) for Terminal, Interface, and Edit Connection - Settings: credential storage as a 3-state ComboRow for all secret backends - Settings UI: 25 toggles converted from CheckButton to AdwSwitchRow (GNOME HIG) - Settings dialog field types unified to adw::SwitchRow * Tue May 19 2026 Anton Isaiev - 0.14.2-1 - CLI: fix `add --protocol web` port=0 error - CLI: add SecureCRT export/import format - CSV import: reject invalid port values instead of silent fallback - Security: eliminate plain String intermediates for keyring passwords - Fix tooltip showing wrong shortcut for New Group - i18n: localize validation messages, Ctrl+Alt+Del labels, OK button * Mon May 18 2026 Anton Isaiev - 0.14.1-1 - Update to version 0.14.1 - [Added] Predefined connection templates — 20 built-in templates for common CLI tools (RustDesk, Docker, Podman, LXC, Incus, Distrobox, Virsh, Proxmox, IPMI, Picocom, WireGuard, Teleport, Ansible, and more) with emoji icons - [Added] Template grid in Connection Wizard — Custom Command mode shows template buttons; user templates first, predefined fill remaining; "More…" popover with all templates by category - [Added] Template icon field — templates support custom icon (emoji or GTK icon name); inherited by connections - [Added] Per-connection "Skip port check" toggle - [Fixed] "Use Template" freezes UI - [Fixed] RDP Gateway: "Host unreachable" before connection - [Fixed] Highlight overlay: colored underlines persisted after clear * Mon May 18 2026 Anton Isaiev - 0.14.0-1 - Update to version 0.14.0 - [Added] Connection Wizard (Ctrl+N) — step-by-step dialog for creating connections with 4-column protocol grid, adaptive fields, auth/appearance - [Added] Quick Connect runtime history — last 15 sessions with filtering - [Added] Duplicate via Wizard — clone and modify existing connections - [Fixed] Wizard: Zero Trust provider fields, Mosh port, Serial baud rate - [Changed] Ctrl+N opens Wizard; Ctrl+Shift+N opens full dialog - [Changed] Highlight Rules collapsed into ExpanderRow * Sat May 16 2026 Anton Isaiev - 0.13.17-1 - Update to version 0.13.17 - [Fixed] Cloud Sync in Flatpak — detect XDG Document Portal paths when selecting sync directory; show a warning dialog with flatpak override command instead of silently saving an unusable portal path (#152) - [Fixed] Highlight overlay not cleared by clear command — colored underlines and background highlights now disappear immediately when the terminal screen is erased (#154) * Fri May 15 2026 Anton Isaiev - 0.13.16-1 - Update to version 0.13.16 - [Added] macOS port — native PTY, tray icon, Keychain backend, Homebrew formula, DMG packaging - [Added] macOS tray icon (tray-macos feature) — NSStatusItem with dynamic menu - [Added] macOS Keychain backend — native credential storage via Security.framework - [Fixed] macOS tray: main-thread initialization (NSStatusItem requirement) - [Fixed] macOS tray: dynamic menu rebuild on state change - [Fixed] X11 renderer fallback skipped on macOS - [Fixed] Cross-platform statvfs types, secret backend detection, PTY cleanup - [Dependencies] winnow 1.0.2→1.0.3 * Thu May 14 2026 Anton Isaiev - 0.13.15-1 - [Added] Local Shell: custom command — new "Command" field in Settings → Terminal → Local Shell allows specifying a custom command instead of the default login shell - [Fixed] Split screen snippet execution — snippets now execute in the focused pane of a split terminal tab instead of always targeting the first pane; uses per-session split bridge to resolve the correct focused session before sending text - [Improved] Dynamic snippet context menu — when ≤5 snippets exist, they appear as individual items directly in the terminal right-click menu; when more than 5 exist, the previous picker is shown * Wed May 13 2026 Anton Isaiev - 0.13.14-1 - [Added] Welcome page: Import button — added "Import" action button alongside "New Connection" and "Quick Connect" on the welcome page - [Added] Template Manager: empty state — added adw::StatusPage placeholder with icon and description when no templates exist - [Added] Reconnect banner: auto-reconnect indicator — disconnected session banner now shows "Auto-reconnecting…" status label when active - [Fixed] Credential memory safety — intermediate password strings from expose_secret().to_string() now wrapped in zeroize::Zeroizing across VNC, RDP, and document password flows; zeroed on drop - [Fixed] Potential panic in resize debounce — replaced unwrap() on Instant::checked_sub() with unwrap_or_else fallback in terminal resize handler - [Fixed] CLI show command panic — replaced expect("json object") with proper let-else error propagation in rustconn-cli - [Fixed] Port overflow in SecureCRT/libvirt importers — replaced truncating as u16 casts with u16::try_from().ok() fallback to default port - [Fixed] Sync file path traversal — added validate_sync_filename() that rejects absolute paths, .. components, and directory separators * Tue May 12 2026 Anton Isaiev - 0.13.13-1 - [Added] SSH ProxyCommand support — custom proxy for .onion hosts and SOCKS proxies - [Fixed] SSH Startup Command not executing in GUI terminal - [Fixed] SSH ProxyCommand port format — jump hosts with non-standard ports - [Fixed] RDP/VNC/SPICE tunnel through nested jump hosts - [Improved] StringInterner: HashSet instead of HashMap — 50% less memory overhead per entry - [Improved] ConfigManager: ensure_config_dir() caching — skip filesystem check after first success - [Improved] ConnectionManager: collect_descendant_groups() O(n) instead of O(n²) - [Improved] ConnectionManager: sort_all() refactoring — extracted sort_ids_by_name() helper - [Improved] WolDialog: migrated to adw::Dialog — better focus management, auto Escape * Mon May 11 2026 Anton Isaiev - 0.13.12-0 - Auto-reconnect: per-connection RetryConfig with exponential backoff - Import: multi-file batch import - SSH: fix identity key -i duplicated in command - Terminal: fix per-connection white color displayed as grey * Sun May 10 2026 Anton Isaiev - 0.13.11-1 - [Improved] RDP: better diagnostics for IronRDP fallback to FreeRDP — error detection now includes detailed comments explaining the upstream limitation (IronRDP connector 0.8.0 does not handle ServerDeactivateAll during CapabilitiesExchange); submitted fix upstream (IronRDP#1253) * Sat May 09 2026 Anton Isaiev - 0.13.10-1 - [Added] Import/Export: SecureCRT session support — import connections from SecureCRT Config/Sessions/ directory; export connections back to SecureCRT INI format as a directory tree; supports SSH2, Telnet, RDP, VNC protocols with hostname, port, username, SSH key path, X11/agent forwarding, compression; folder hierarchy preserved (#140) - [Fixed] Backup/Restore: global variables lost after restore — restoring settings from ZIP overwrote restored config.toml with stale in-memory state; dialog now reloads AppSettings from disk after restore (#142) - [Fixed] SSH: ControlMaster sockets now actually closed on application exit — shutdown handler scanned active_sessions() but all sessions were already Terminated by the time GTK fires connect_shutdown; replaced with filesystem scan of runtime directory for rc-* socket files; stale sockets that don't respond to ssh -O exit are force-removed (#125) - [Fixed] KeePass: custom entry path for variables ignored RustConn/ prefix — added get_password_from_kdbx_exact() that queries the entry at the exact user-specified path without any prefix or fallback logic (#143) - [Dependencies] hashbrown 0.17.0 → 0.17.1 * Sat May 09 2026 Anton Isaiev - 0.13.9-1 - [Fixed] Flatpak: Zero Trust Generic commands now execute on host — custom commands were failing with "No command specified" due to double sh -c wrapping; now automatically wrapped with flatpak-spawn --host with PTY allocation; single quotes in templates properly escaped (#132) - [Fixed] Split View: focus border not updating on click — clicking a terminal pane sent input correctly but the focus border remained on the previous pane; fixed by removing duplicate gesture controllers - [Improved] RDP: real disk space reported to Windows via shared folders — RDPDR backend now queries actual filesystem statistics using nix::sys::statvfs instead of returning hardcoded values; Windows Explorer and applications see correct total/available disk space; values normalized to 4096-byte allocation units; graceful fallback if statvfs call fails - [Dependencies] cc 1.2.61 → 1.2.62, filetime 0.2.27 → 0.2.28, quick-xml 0.39.3 → 0.39.4, tokio 1.52.2 → 1.52.3 - [Dependencies] Added nix 0.31.2 (feature: fs) to rustconn-core for safe statvfs access * Fri May 08 2026 Anton Isaiev - 0.13.8-1 - [Fixed] Per-connection monitoring toggle not saving state — the "Enable Monitoring" switch always appeared enabled and did not persist the user's choice; now both ON and OFF states are stored as explicit overrides (enabled: Some(true) / Some(false)) (#125) - [Fixed] Flatpak: CLI tools not found by protocol detection — which_binary() now searches all get_cli_path_dirs() directories and passes the full resolved path to version detection - [Fixed] Hoop.dev CLI version not displayed — added parse_json_version() to extract the version field from JSON output; fixed get_version() to set extended PATH in Flatpak * Fri May 08 2026 Anton Isaiev - 0.13.7-1 - [Fixed] SSH: monitoring no longer triggers a second agent confirmation — monitoring waits up to 5s for ControlMaster socket, connects as slave only; falls back to own master if socket never appears (#125) - [Fixed] SSH: ControlMaster sockets cleaned up on application exit — all sockets gracefully closed via ssh -O exit on shutdown (#125) - [Fixed] SSH: control socket path shortened for macOS compatibility — ControlPath changed to rc-{host}-{port}-%r; uses /tmp on macOS to stay within 104-byte Unix socket path limit - [Fixed] Auto-reconnect: no longer loops infinitely on rapid crashes — if session crashes within 5s of starting, auto-reconnect is skipped - [Fixed] Flatpak: local shell PTY resize now propagates to host — VTE resize forwarded via flatpak-spawn stty to host-side PTY (#122) * Thu May 07 2026 Anton Isaiev - 0.13.6-1 - [Improved] Preferences: Monitoring moved to its own page with dedicated tab and utilities-system-monitor-symbolic icon (#125) - [Improved] CLI: machine-readable output (--format json|csv|table) for show, test, stats, group show commands; defaults to JSON when stdout is piped (non-TTY) (#132) - [Improved] i18n: MonitorMode and ExportFormat display_name() values now translatable via i18n() at call sites - [Improved] Security: intermediate password strings (RDP/VNC) now wrapped in zeroize::Zeroizing so plaintext is overwritten on drop - [Improved] Reliability: host check no longer panics on runtime creation failure — proper Result propagation via HostCheckError::Io variant - [Fixed] SSH: single authentication prompt for connection + monitoring — VTE terminal uses ControlMaster=auto with shared ControlPath; monitoring reuses the same socket instead of opening a separate session (#125) - [Fixed] Repository hygiene: removed committed vim swap file; added *.swp, *.swo, *.po~ patterns to .gitignore * Wed May 06 2026 Anton Isaiev - 0.13.5-1 - Version bump to 0.13.5 - Added Drag & Drop file paths into VTE terminals (#74) - Added Drag & Drop files to RDP clipboard via CLIPRDR (#74) - Added RDP "Reconnect on Resize" option for legacy servers - Fixed RDP dynamic resize without reconnect via Display Control Channel (#131) - Fixed SSH agent key selection not remembered in connection dialog (#125) * Tue May 05 2026 Anton Isaiev - 0.13.4-1 - [Added] RDP Autotype: send text as keystrokes bypassing clipboard restrictions — Type Clipboard and Type Text toolbar buttons in embedded RDP sessions; TS_UNICODE_KEYBOARD_EVENT PDU, keyboard-layout independent; configurable timing (inter-character delay 5–200ms, initial delay 0–5000ms); iterates by Unicode grapheme clusters (#127) - [Added] KeePass custom entry path for secret variables — reference existing KeePass entries instead of default path (#114) - [Fixed] RDP toolbar Copy/Paste buttons do nothing on Wayland (COSMIC, GNOME) — replaced drawing_area.display().clipboard() with root().native().display().clipboard() which uses the top-level window surface; Paste button now shows status feedback instead of silently swallowing errors; CLIPRDR client_capabilities now advertises USE_LONG_FORMAT_NAMES flag required by Windows Server 2016+; added tracing for all clipboard button operations (#126) - [Dependencies] unicode-segmentation 1.13.2 (new), tower-http 0.6.8 → 0.6.9 * Mon May 04 2026 Anton Isaiev - 0.13.3-1 - Version bump to 0.13.3 - Added RDP Security Layer / TLS Compatibility options (#124) - Improved GNOME HIG: application menu restructured, manager dialogs unified - Improved Tray menu i18n - Fixed SSH agent multiple authentication prompts for saved connections (#125) - Fixed false KeePassXc backend unavailable toast (#123) - Fixed Flatpak Local Shell no job control warnings (#122) * Mon May 04 2026 Anton Isaiev - 0.13.2-0 - [Fixed] Mouse scroll not working in terminal sessions (#121) - [Fixed] Flatpak local shell sandboxed shell (#122) - [Removed] Mouse passthrough setting - [Added] Per-connection monitoring toggle (#106) * Sun May 03 2026 Anton Isaiev - 0.13.1-1 - [Fixed] Crash when typing in sidebar search field — SearchEngine byte-position iteration panics on multi-byte UTF-8 characters; fixed by iterating over valid char_indices() boundaries and using str::get() for safe slicing (#116) - [Fixed] Export/re-import loses folder hierarchy, icons, SSH settings, and smart folders — topological sort for groups, copy all fields via update_group, smart folders in NativeExport format v3, group ID remapping during import; CLI updated (#118) - [Added] Automation section in group edit dialog — Expect Rules and Post-login Scripts in Edit Group dialog; CLI support (#117) - [Improved] Connection dialog Automation tab unified with group dialog (#117) - [Documentation] Remmina Flatpak import troubleshooting (#120) * Sat May 02 2026 Anton Isaiev - 0.13.0-1 - Update to version 0.13.0 - [Fixed] External RDP tab shows only toolbar, content area empty - [Fixed] Group edit: SSH settings toggle reopens confirmation dialog in a loop - [Fixed] Incomplete translations for Dynamic Folder strings - [Fixed] Bulk actions: Move to Group icon missing - [Fixed] External RDP (FreeRDP) fails on changed server certificate (#112) - [Added] Smart Folders in sidebar (#111) - [Added] Group-level Expect rules and post-login scripts inheritance (#110) - [Improved] Vault entry missing toast notification (#114) - [Improved] Test credential resolution button in connection dialog (#114) - [Improved] Multi-language SSH password prompt detection (#114) - [Improved] GNOME HIG: sidebar toolbar decluttered * Fri May 01 2026 Anton Isaiev - 0.12.9-1 - [Fixed] Export group exports entire tree instead of selected subtree — when exporting a specific group via the Export dialog's group filter, all groups were included in the output file even though connections were correctly filtered; now both connections and groups are filtered to the selected group and its descendants - [Added] Snippet variable substitution from Global Variables — snippets containing ${VARIABLE} placeholders now automatically resolve values from Global Variables before execution; if all variables are resolved, the snippet executes immediately without showing the input dialog - [Added] Dynamic Folders — new DynamicFolderConfig on ConnectionGroup allows generating connections from an external script; supports SSH, RDP, VNC, SPICE, Telnet, and MOSH protocols; connections are read-only with stable deterministic UUIDs across refreshes * Fri May 01 2026 Anton Isaiev - 0.12.8-1 - [Added] Generic async cache Cached — new rustconn-core/src/cache.rs module providing a thread-safe, TTL-based cache with automatic refresh via the LoadCacheObject trait; uses double-checked locking with tokio::sync::RwLock for concurrent read access; supports incremental updates, explicit invalidation, and configurable TTL (default 60s) - [Added] Busy-state indicator BusyStack — new rustconn-core/src/busy.rs module providing a thread-safe RAII counter for tracking in-flight operations; callback fires on 0→1 (busy) and 1→0 (idle) transitions; nested operations handled correctly without extra callbacks; integrated into GUI — header bar spinner appears during connections - [Added] Extended ProtocolCapabilities — added 9 new capability flags: multi_monitor, usb_redirection, port_forwarding, wayland_forwarding, x11_forwarding, session_recording, remote_monitoring, command_snippets, wake_on_lan; enables UI to adapt controls per-protocol - [Added] Connection fallback chain ConnectionFallback — generic mechanism for trying multiple connection strategies in priority order - [Added] Virt-viewer .vv file open support — open SPICE/VNC connections from libvirt, Proxmox VE, oVirt directly from the file manager - [Added] Connection failure toast with connection name - [Dependencies] Teleport CLI 18.7.5 → 18.7.6 (security patch) * Thu Apr 30 2026 Anton Isaiev - 0.12.7-1 - [Fixed] Group credentials: Variable source shows password field instead of variable selector — now shows dropdown populated with secret global variables (#109) - [Fixed] Group credentials: saving Variable source stored empty string instead of actual variable name - [Improved] GNOME HIG: accessible labels, menu reorganization, Keyboard Shortcuts entry added to app menu * Thu Apr 30 2026 Anton Isaiev - 0.12.6-1 - [Fixed] Expect script variables not substituted — ${VAR} references in Expect rule responses were sent as literal text instead of being resolved; now uses VariableManager to substitute global variables before creating automation triggers (#105) - [Added] SSH verbose mode for connection debugging — new Verbose toggle in SSH connection settings adds -v flag to the SSH command, showing detailed debug output to help diagnose connection issues (#106) * Wed Apr 29 2026 Anton Isaiev - 0.12.5-1 - [Fixed] Settings dialog overflows after Hoop.dev install — hoop version outputs JSON; added dedicated parser that extracts only the version field - [Fixed] kubectl version not shown in settings — kubectl version --client --short fails on kubectl >= 1.28; switched to kubectl version --client and parse Client Version: vX.Y.Z - [Fixed] Tray icon SIGSEGV on restart — connect_shutdown did not drop the TrayManager; now explicitly drops tray manager in shutdown handler before flushing persistence - [Fixed] Teleport CLI download URL 404 — pinned version 18.7.6 did not exist on the CDN; corrected to 18.7.5 - [Dependencies] Hoop.dev CLI 1.56.1 → 1.59.3 - [Dependencies] Teleport CLI 18.7.6 → 18.7.5 (URL fix) * Tue Apr 28 2026 Anton Isaiev - 0.12.4-0 - [Cleaned] Removed dead mosh.rs dialog module — MOSH settings already integrated into SSH tab via ssh::create_ssh_options() - [Cleaned] Removed legacy connect_password_load_button wrapper — all callers use connect_password_load_button_with_groups directly - [Cleaned] Removed unused add_available_file_row from Cloud Sync settings - [Dependencies] rpassword 7.4.0 → 7.5.0, rustls 0.23.39 → 0.23.40 * Tue Apr 28 2026 Anton Isaiev - 0.12.3-0 - [Fixed] Sync toast shows raw placeholders instead of values — i18n_f() only supports {} placeholders; changed both sync message strings and all 16 translations to use {} format - [Accessibility] Added accessible labels to 24 icon-only buttons across 15 files for screen reader support - [Dependencies] Teleport CLI 18.7.4 → 18.7.6 - [Dependencies] clap_complete 4.6.2 → 4.6.3, gio 0.22.5 → 0.22.6, glib 0.22.5 → 0.22.6, gtk4 0.11.2 → 0.11.3, pango 0.22.4 → 0.22.6, zbus 5.14.0 → 5.15.0, zvariant 5.10.0 → 5.10.1 * Sun Apr 26 2026 Anton Isaiev - 0.12.2-0 - [Fixed] Flatpak SFTP ssh-add fails with missing askpass — strips SSH_ASKPASS from the environment for bare ssh-add calls (#102) - [Fixed] Blocking operations on GTK main thread — added 5s timeouts to has_secret_backend() and refresh_secret_backend_cache() - [Fixed] Missing timeouts on blocking async operations — added timeouts to flush_persistence (5s), resolve_with_hierarchy (30s), auto_unlock (30s), and vault store/retrieve/delete (10s) - [Translations] All 16 languages aligned to 1697 strings; fixed Italian PO syntax error * Sat Apr 25 2026 Anton Isaiev - 0.12.1-1 - [Fixed] Split view content disappearing on panel focus switch — removed switch_to_tab() call; focus handled via set_focused_pane() and grab_focus() (#101) - [Fixed] cargo-deny CI failure — removed deprecated unlicensed and copyleft keys from deny.toml [licenses] section - [Fixed] cargo-audit CI failure — added RUSTSEC-2023-0071 (rsa Marvin Attack) to [advisories].ignore in deny.toml; transitive dependency via ironrdp/sspi and spice-client with no upstream fix available - [Dependencies] Bitwarden CLI 2026.3.0 → 2026.4.1 (fixes supply chain attack in 2026.4.0), kubectl 1.35.4 → 1.36.0 * Fri Apr 24 2026 Anton Isaiev - 0.12.0-0 - [Added] Cloud Sync — synchronize connections via shared cloud directory - [Added] Group Sync — per-group .rcn files with Master/Import access model - [Added] Simple Sync — single-file bidirectional sync with UUID-based merge - [Added] SSH Key Inheritance — group-level SSH settings inherited by children - [Added] Credential Resolution UX — interactive dialogs for missing variables - [Added] CLI sync commands: sync status, list, export, import, now - [Added] Tab Overview — grid view of all open tabs via Ctrl+Shift+O - [Added] Tab Switcher in Command Palette — % prefix for fuzzy tab search - [Added] Tab Pinning — right-click tab, Pin Tab - [Added] Custom terminal themes — create/edit/delete color themes - [Added] Group Jump Host dropdown with SSH connection selection - [Added] Accessible labels for icon-only buttons - [Added] cargo-deny + cargo-audit in CI - [Added] Document dirty badge — CSS dot indicator - [Fixed] System tray SIGSEGV and empty menu — moved D-Bus updates to dedicated background thread, deferred TrayManager creation off GTK main thread, added Flatpak disable_dbus_name workaround - [Fixed] Tab Overview SIGSEGV with split-view tabs - [Fixed] Terminal theme reset when Settings dialog is closed - [Fixed] Pango assertion failure on zero font size - [Fixed] Highlight rules show color instead of hover-only underline * Thu Apr 23 2026 Anton Isaiev - 0.11.7-1 - [Fixed] Monitoring bar broken after scrollbar addition — wrapped the horizontal terminal+scrollbar row in a vertical outer container so the monitoring bar is correctly appended underneath * Thu Apr 23 2026 Anton Isaiev - 0.11.6-0 - [Added] Terminal scrollbar (#95) - [Added] "Execute Snippet…" in terminal context menu (#95) - [Fixed] Sidebar status stays gray after reconnect (#96) - [Fixed] Context menu intermittently fails to open on right-click (#87) * Wed Apr 22 2026 Anton Isaiev - 0.11.5-0 - [Added] Simplified Chinese (zh-cn) translation (PR #94) - [Added] User Guide: libvirt NSS hostname resolution (#91) - [Dependencies] picky-asn1-der 0.5.6, rustls-webpki 0.103.13, winnow 1.0.2, kubectl 1.35.4 * Tue Apr 21 2026 Anton Isaiev - 0.11.4-1 - [Fixed] Sidebar flashes red during SSH connection — introduced ConnectionStartResult enum to distinguish async port check in progress (Pending) from real failures (Failed); sidebar stays yellow ("connecting") until the port check completes - [Fixed] Context menu stays open when dialog opens — switched popover to autohide so GTK4 dismisses it on focus change (#93) - [Fixed] Sidebar stays "connecting" after cancelling password dialog — VNC/RDP password prompt cancel now clears status - [Fixed] VNC/RDP with "None" password source prompts immediately — first attempt uses empty password; dialog shown on retry only - [Updated] Teleport CLI 18.7.3 → 18.7.4 - [Updated] 1Password CLI 2.33.1 → 2.34.0 * Mon Apr 20 2026 Anton Isaiev - 0.11.3-1 - [Added] CLI: --jump-host flag for add and update — set a jump host (SSH bastion) for SSH, SFTP, and RDP connections via CLI; validates existence and prevents self-referencing - [Fixed] Flatpak: kubectl and Hoop.dev missing from Settings Clients tab and PATH — added Container Orchestration section, Hoop.dev to Zero Trust Clients, registered both in get_cli_path_dirs() * Mon Apr 20 2026 Anton Isaiev - 0.11.2-0 - [Fixed] Reconnect reuses existing tab for all VTE protocols (#89) - [Fixed] RDP port check skipped with jump host - [Fixed] Hoop.dev CLI download — versioned URL (HTTP 403) - [Fixed] Azure/gcloud/OCI CLI wrapper test in Flatpak - [Fixed] Flatpak SFTP always uses mc - [Improved] Reconnect banner consistent across all protocols - [Improved] Sidebar width tuned for HiDPI — 360px→320px - [Added] SSH Jump Host for RDP via ssh -L tunnel (#90) - [Added] Tab context menu: Close Others/Left/Right/All/Ungrouped - [Added] CLI: all 10 protocols and 11 Zero Trust providers - [Documentation] Complete CLI reference in User Guide - [Dependencies] open 5.3.4, openssl 0.10.78, typenum 1.20.0 * Sun Apr 19 2026 Anton Isaiev - 0.11.1-0 - [Fixed] Reconnect preserves tab position (#89) - [Fixed] Context menu handoff between items (#87) - [Fixed] Stale highlight on right-click — residual highlights removed - [Fixed] Context menu requires single right-click instead of two - [Improved] Context menu layout follows GNOME HIG - [Added] SSH Keep-Alive settings (#88) * Sat Apr 18 2026 Anton Isaiev - 0.11.0-0 - [Added] General tab migrated to adw:: widgets (TASK-004) - [Added] Legacy XOR encryption migration warning (TASK-006) - [Added] State access helpers — with_state/try_with_state (TASK-008) - [Improved] RDP connection state structured — RdpConnectionContext (TASK-007) - [Security] Automation task validation hardened (TASK-005) - [Fixed] Split view tab colors preserved across Settings (TASK-022) - [Fixed] Group Operations mode — compact pill icon buttons with Revealer - [Fixed] Split view context menu Copy/Paste/Select All now works - [Fixed] Eliminated gdk_clipboard_write_async assertion - [Security] Lazy Bitwarden credential decryption - [Dependencies] libbz2-rs-sys 0.2.3, rand 0.8.6, rtoolbox 0.0.5 * Fri Apr 17 2026 Anton Isaiev - 0.10.22-0 - [Fixed] Terminal context menu Copy/Paste now works (#84) - [Fixed] No more gdk_clipboard_write_async assertion on Copy - [Fixed] Blank menus on X11 — Cairo renderer fallback (#85) - [Improved] Context menu labels localized - [Dependencies] pxfm 0.1.29, tokio 1.52.1, uuid 1.23.1 * Wed Apr 15 2026 Anton Isaiev - 0.10.21-0 - [Security] Machine key encryption hardened — HKDF-SHA256 for machine-id - [Fixed] Groups expand/collapse on double-click entire row (#83) - [Fixed] Ctrl+K no longer hijacks terminal (#83) - [Fixed] Right-click context menu on all SSH profiles (#83) - [Fixed] Filter bar opens below search box (#83) - [Improved] Sidebar accessible labels localized * Tue Apr 14 2026 Anton Isaiev - 0.10.20-0 - Tab group chooser dialog with existing group selection - Close All in Group context menu action - Group name as tab title prefix - Updated FreeRDP 3.24.2, VTE 0.80.3 * Mon Apr 13 2026 Anton Isaiev - 0.10.18-1 - [Added] Terminal font zoom — Ctrl+Scroll wheel, Ctrl+Plus/Minus, and Ctrl+0 to reset; uses VTE native font_scale for per-session zoom (#77) - [Added] Copy on select — optional X11-style auto-copy; selected text is automatically copied to clipboard; enable in Settings → Terminal (#78) * Sun Apr 12 2026 Anton Isaiev - 0.10.17-1 - [Fixed] clear command not working in Flatpak SSH sessions — forces TERM=xterm-256color for all remote commands in Flatpak (#25) - [Fixed] Sidebar scroll position lost after editing/moving connections — restore_state() idle callbacks raced; chained callback fix - [Fixed] Sorting collapsed all expanded groups — preserves expanded state * Fri Apr 10 2026 Anton Isaiev - 0.10.16-1 - [Fixed] Sidebar context menu actions still not working — replaced PopoverMenu with plain Popover + Button widgets (#75) * Fri Apr 10 2026 Anton Isaiev - 0.10.15-1 - [Fixed] clear command not working in Flatpak — added ANSI escape sequence wrapper to all three Flatpak manifests (#25) - [Fixed] Keyboard shortcuts dialog showed wrong bindings — corrected 19 discrepancies between shortcuts help dialog and actual GTK accelerators - [Fixed] Shortcuts dialog missing entries — added 13 missing shortcuts - [Improved] FreeRDP updated to 3.24.2 (CVE fixes for client-side vulnerabilities) - [Documentation] Keyboard shortcuts fully synchronized in User Guide - [Documentation] Terminal clear troubleshooting section added to User Guide * Wed Apr 08 2026 Anton Isaiev - 0.10.13-0 - Fixed SSH auto-reconnect infinite loop on authentication failures - Fixed duplicate child-exited signal handlers for SSH and Telnet sessions - FreeRDP 3.24.0 → 3.24.1 (security fix), Boundary CLI 0.21.1 → 0.21.2 * Tue Apr 07 2026 Anton Isaiev - 0.10.12-0 - Technical audit: VNC SecretString, pixel buffer guard, RDP zero-copy, sidebar regex cache, sanitization optimization, dead code cleanup - Dependencies: gtk4 0.11.2, glib 0.22.4, pango 0.22.4, zip 8.5.1 - CLI downloads: TigerVNC 1.16.2, Teleport 18.7.3, Bitwarden CLI 2026.3.0 * Sat Apr 04 2026 Anton Isaiev - 0.10.11-0 - RDP Mouse Jiggler — prevents idle disconnect with periodic mouse movements - Connect All in Folder — open all connections in a group at once - Copy Username / Copy Password from sidebar context menu - Host Online Check — TCP probe with auto-connect when host comes online - WoL + Auto-Connect — WoL now polls and auto-connects when host is ready * Sat Apr 04 2026 Anton Isaiev - 0.10.10-0 - Flatpak: removed extra sandbox permissions rejected by Flathub lint (home/.hoop, xdg-run/gnupg, bitwarden data, xdg-run/ssh-agent); users can add them manually via flatpak override - User Guide: added Flatpak Sandbox Overrides section * Thu Apr 02 2026 Anton Isaiev - 0.10.9-0 - See CHANGELOG.md for full release notes - Corrected: v0.9.11 incorrectly stated Flatpak uses --device=serial; the actual permission is --device=all (required for serial port access) * Fri Mar 27 2026 Anton Isaiev - 0.10.8-0 - See CHANGELOG.md for full release notes * Thu Mar 26 2026 Anton Isaiev - 0.10.7-0 - See CHANGELOG.md for full release notes * Tue Mar 24 2026 Anton Isaiev - 0.10.6-0 - Fixed Passbolt CLI integration broken with CLI 0.4.2 — serde deserialization failed on lowercase JSON fields; added rename attributes for underscore-prefixed fields; made id/name optional in resource detail (#69) - Fixed blurry/artifact RDP image on HiDPI displays — set device scale on Cairo surface for 1:1 pixel rendering; adaptive filter selection - Fixed 1Password JSON parse errors silently ignored — now logs warning - CLI downloads: 1Password CLI 2.33.0→2.33.1 - Dependencies: ipconfig 0.3.2→0.3.4, libredox 0.1.14→0.1.15, proptest 1.10.0→1.11.0 * Tue Mar 24 2026 Anton Isaiev - 0.10.5-0 - Fixed KeePassXC CLI integration — database password not passed (#68) - Fixed KeePassXC CLI silent error swallowing — added tracing warnings - Added -q flag to all keepassxc-cli show commands - Fixed GTK warnings on startup — suppressed deprecated gtk-application-prefer-dark-theme on KDE/XFCE; removed unsupported @media (prefers-reduced-motion) CSS media query - CI: replaced deprecated flatpak-builder@master (Node.js 20) with v6 - Dependencies: deflate64 0.1.12, toml 1.1.0, zip 8.4.0 * Sun Mar 22 2026 Anton Isaiev - 0.10.4-0 - Flatpak manifests: added missing FreeRDP and Waypipe modules - i18n: wrapped 5 untranslated UI strings, translated for 15 languages - Snap license corrected: GPL-3.0+ to GPL-3.0-or-later - ARM64 release builds added (deb, rpm, appimage) - Removed duplicate changelog entries in packaging files * Sat Mar 21 2026 Anton Isaiev - 0.10.3-0 - Security: RDP password no longer exposed in /proc — uses /from-stdin pipe - Security: SSH agent askpass script zeroized before deletion - Security: CLI --password flag shows security warning - Security: Legacy XOR credential decryption now logged - Fixed highlight rules not applied without per-connection rules (#66) - Fixed CLI add --protocol zerotrust silently creating SSH connection - Fixed config file corruption on crash — atomic temp-file + rename - Fixed blocking DNS in async check_port_async - Improved sidebar tooltip with full connection name on hover - Improved log sanitization performance — LazyLock regex compilation - Improved CLI parse_protocol consolidated into shared utility - Dead code cleanup — removed unused AppStateError, VncLauncher, FieldValidator - Dependencies: rustls-webpki 0.103.10, zune-jpeg 0.5.14 * Fri Mar 20 2026 Anton Isaiev - 0.10.2-0 - Fixed MOSH connections not dispatched — added start_mosh_connection() - Fixed auto-recording not triggered from session_recording_enabled toggle - Fixed highlight rules not applied to terminal after connection - Fixed script command visible on recording start — delayed erase - Fixed double exit and UI freeze on recording stop — Ctrl+D + async SCP - Fixed lost commands in recording playback — strip_script_command_echo() - Fixed .rdp file association — MIME type XML for all packaging formats - Fixed sidebar stretching with long connection names — ellipsize - Fixed picocom not detected in Flatpak — which_binary() fallback - Fixed RDP error message when FreeRDP not installed - Fixed IronRDP debug log spam — filtered to warn level - Improved CSV import delimiter auto-detection - Improved script credentials test button with 30s timeout and feedback - Added config sync documentation to User Guide - Dependencies: shell-words 1.x (rustconn crate), aws-lc-rs 1.16.2, tar 0.4.45 * Wed Mar 18 2026 Anton Isaiev - 0.10.1-0 - MOSH protocol — predict mode, SSH port, UDP port range, server binary - CSV import/export — RFC 4180, auto column mapping, delimiter options - Session recording — scriptreplay-compatible format, sanitization, REC indicator - Text highlighting rules — regex patterns, per-connection + global, VTE integration - Ad-hoc broadcast — send keystrokes to multiple terminals simultaneously - Smart Folders — dynamic connection grouping by protocol/tags/host/group - Script credentials — PasswordSource::Script with shell-words and 30s timeout - Per-connection terminal theming — background/foreground/cursor color overrides - 15 language translations for all new v0.10.1 UI strings - New dependencies: csv 1.x, glob 0.3, shell-words 1.x - Fixed Flatpak SSH key paths stale after rebuild — stable copy with fallback - Fixed SFTP ssh-add stale portal key path — resolve before use - Fixed SFTP mc opens when ssh-add fails — abort with toast error - Fixed script command format for modern util-linux (--log-out/--log-timing) - Fixed remote SSH recording using local paths - Fixed recording playback showing script header - Fixed script invocation visible in terminal - Fixed SCP host key verification prompts in stop_recording - Fixed RDP sidebar status not clearing after disconnect - Fixed PlaybackToolbar GtkSearchEntry finalization warning - Fixed cargo/config deprecation warning in Flatpak build - Flatpak local manifest runtime: GNOME 50beta → 50 - Dependencies: euclid 0.22.14, toml 1.0.7, zerocopy 0.8.47, zip 8.3 * Mon Mar 16 2026 Anton Isaiev - 0.10.0-0 - Note: Flatpak release will follow after March 18, 2026, when GNOME 50 runtime is published on Flathub - RDP file import in GUI — .rdp files can now be imported via Import dialog - CLI import: 4 new formats — rdp, rdm, virt-viewer, libvirt - Split view for Telnet, Serial, Kubernetes — all VTE-based protocols - Statistics: Most Used connections and Protocol Distribution with progress bars - 5 new customizable keybindings (31 total): Toggle Sidebar, Connection History, Statistics, Password Generator, Wake On LAN - Secret backend default changed from KeePassXc to LibSecret - RDP file association — double-click .rdp files to open and connect - FreeRDP 3.24.0 bundled in Flatpak — external RDP works out of the box - sdl-freerdp3 and unversioned FreeRDP binary detection - GTK4/libadwaita/VTE crate upgrade: gtk4 0.11, libadwaita 0.9, vte4 0.10, gdk4-wayland 0.11 — unlocks GNOME 48–50 widget APIs - MSRV bumped to 1.92 across all crates, CI, and packaging - Flatpak runtime bumped to GNOME 50 with VTE 0.80 - AdwSpinner, AdwShortcutsDialog, AdwSwitchRow, AdwWrapBox migrations (cfg-gated) - CSS prefers-reduced-motion support for accessibility - Tiered distro feature flags in OBS packaging: adw-1-8 for Tumbleweed/Slowroll/Fedora 43+, adw-1-6 for Leap 16.0/Fedora 42 - Fixed default window size too small on first start - Fixed RDP gateway ignored in embedded mode — auto-fallback to FreeRDP - Fixed external RDP sidebar icon stays green after tab close - Fixed SSH jump host broken in Flatpak - Fixed mc wrapper not found in Flatpak on openSUSE - Fixed ZeroTrust and Kubernetes connections broken in Flatpak — CLI tools detected and executed via flatpak-spawn --host; cloud CLI config dirs mounted into sandbox - Fixed split view text selection broken by GestureClick handler - Fixed untranslated protocol display names across all 15 languages - Codebase cleanup: removed unused CSS classes, consolidated futures-util, fixed metainfo.xml, removed dead code * Wed Mar 11 2026 Anton Isaiev - 0.9.15-0 - Added "Show Local Cursor" option for embedded RDP, VNC, and SPICE viewers — hides local OS cursor to eliminate double cursor (#51) - Fixed VNC session ignores Display Mode setting — Fullscreen and External modes now work correctly (#50) - Fixed SSH port forwarding via UI broken — protocols.rs skipped port_forwards, X11, compression, ControlPersist; now delegates to SshConfig::build_command_args() (#49) - Fixed SSH custom options -o prefix not stripped (#49) - Fixed SSH custom options placeholder misleading (#49) * Wed Mar 11 2026 Anton Isaiev - 0.9.14-0 - Fixed SSH connection fails in Flatpak on KDE — host SSH_ASKPASS (e.g. ksshaskpass) stripped from VTE child environment (#48) - Fixed header bar buttons clipped when sidebar + monitoring enabled — ellipsize on variable-length labels, overflow hidden on monitoring bar (#47) - Dependencies: tokio 1.49→1.50, uuid 1.21→1.22, regex 1.11→1.12, proptest 1.9→1.10, tempfile 3.23→3.26, zip 8.1→8.2, criterion 0.8.1→0.8.2, rpassword 7.3→7.4 * Mon Mar 09 2026 Anton Isaiev - 0.9.13-0 - Fixed RDP handshake timeout on heavily loaded servers — Phase 3 (TLS upgrade + NLA + connect_finalize) wrapped in tokio timeout - Fixed ARM64 binary download mismatch — no x86_64 fallback on aarch64 - Added RDP Quick Actions menu — 6 Windows admin shortcuts on embedded RDP toolbar (Task Manager, Settings, PowerShell, CMD, Event Viewer, Services) * Sun Mar 08 2026 Anton Isaiev - 0.9.12-0 - Security: Removed sshpass dependency; uses native VTE injection and SSH_ASKPASS - Security: Bitwarden master password zeroized on drop (Zeroizing) - Security: SSH monitoring askpass script cleaned up automatically via RAII - Changed: SPICE embedded client enabled by default with remote-viewer fallback - Improved: Extracted vault operations from state.rs (~979 lines) - Improved: Extracted edit/terminal/split-view actions from window/mod.rs (~1671 lines) - Removed: sshpass from all packaging manifests * Sat Mar 07 2026 Anton Isaiev - 0.9.11-0 - Security: Bitwarden session key uses SecretString with zeroization - Security: Config files written with 0600 permissions, config dir 0700 - Security: SSH monitoring uses StrictHostKeyChecking=accept-new - Security: Session log sanitization active by default - Security: Flatpak device permissions scoped to --device=serial - Security: Monitoring password uses SecretString with zeroization - Security: RDP TLS certificate policy documented with tracing::warn - Fixed encrypted document format ambiguity with V2 magic header RCDB_EN2 - Added monitoring: remote host private IP with IPv4/IPv6 tooltip - Added monitoring: live uptime counter updates on every polling tick - Added monitoring: stopped indication with warning icon and dimmed bar - Added monitoring: all mount points in disk tooltip (snap/tmpfs filtered) - Removed dead read_import_file_async from import traits * Fri Mar 06 2026 Anton Isaiev - 0.9.9-0 - Fixed sshpass not installed in Flatpak (#42) - Fixed jump host connections fail port check (#41) - Fixed jump host dropdown — added host address to labels, enabled search - Fixed jump host monitoring — SSH commands include -J chain (#41) - Fixed jump host false positive connection status (#41) - Dependencies: Bitwarden CLI 2026.1.0→2026.2.0, uuid 1.21.0→1.22.0 * Thu Mar 05 2026 Anton Isaiev - 0.9.8-0 - Security: RDP password no longer exposed on command line (uses /from-stdin) - Fixed SSH connection status, automation cursor, RDP keyboard duplication - Protocol dialog improvements for SSH, RDP, VNC, SPICE, Serial, K8s, Telnet, Zero Trust - SFTP mc split view, context menu "New Connection", granular logging options - Connection dialog and embedded RDP decomposed into focused submodules * Wed Mar 04 2026 Anton Isaiev - 0.9.7-0 - Connection group not saved — dialog used separate Rc for groups_data in save closure, so selected subgroup was always lost on save - Secret variable values lost after settings reopen — values cleared before disk persist but never restored from vault on dialog open or ${VAR} substitution in connections - Crash on session reconnect — close_tab held immutable borrow on sessions while close_page synchronously fired signal handler needing mutable borrow; separated borrow from close call (#39) - Bitwarden credential lookup speed — removed per-retrieve bw sync and added 120s verification cache for bw status; vault syncs once on unlock, making reconnect and batch operations significantly faster * Mon Mar 02 2026 Anton Isaiev - 0.9.6-0 - Bitwarden Flatpak: build_command falls back to global session store (#28) - Bitwarden Settings auto-unlock uses resolved bw CLI path (#28) - Connection dialog credential download uses generate_store_key (UUID-based) - Vault credential resolve for non-KeePass backends via dispatch_vault_op - Inherit condition no longer blocked by kdbx_enabled for Bitwarden/1Password - Group password load dispatches to configured default secret backend - SSH known_hosts persists in Flatpak via writable UserKnownHostsFile path - Duplicate reconnect banner prevented via per-session tracking - SSH dialog hides key fields for Keyboard Interactive auth method * Sun Mar 01 2026 Anton Isaiev - 0.9.5-0 - SSH/Telnet pre-connect port check — fail fast with retry toast - Vault credential lifecycle — orphaned cleanup, paste duplication, group rename/move migrates KeePass entries - Consistent credential keys across all secret backends - SecretManager cache TTL — entries expire after 5 minutes - Inherit cycle protection via HashSet visited guard - Group change in connection dialog now correctly persists on save - Monitoring waits for SSH handshake before opening channel - SecretString migration for RDP/SPICE events, GUI structs, CLI input - VaultOp dispatch consolidation, mutex lock safety, error logging - CSS extraction, i18n consistency, CI --all-features coverage - Dead code removal: StateAccessError, unused sidebar methods * Sun Mar 01 2026 Anton Isaiev - 0.9.4-0 - Session Reconnect — disconnected VTE tabs show a Reconnect banner - Recursive Group Delete — keep children, cascade, or cancel - Cluster broadcast mode wired — keyboard input broadcasts to all terminals - Libvirt / GNOME Boxes import — VNC, SPICE, RDP from domain XML (#38) - TemplateManager — centralized template CRUD with search, import/export - Snippet shell safety check before --execute - Settings Backup/Restore as ZIP archive - Automation templates — 5 built-in expect rule presets - Fixed password inheritance for PasswordSource::Variable (#37) - Fixed VTE spawn failure — banner + toast instead of silent empty terminal - Fixed cluster session lifecycle and disconnect-all - Automation engine: one-shot rules, template picker, pre/post-connect tasks - User Guide major rewrite * Fri Feb 27 2026 Anton Isaiev - 0.9.3-0 - Added Waypipe Support — Wayland application forwarding for SSH (#36) - Added IronRDP Clipboard Integration — Bidirectional clipboard sync - Fixed missing icons on KDE and non-GNOME desktops (#35) - Fixed Serial/Kubernetes connection creation validation - Fixed Serial/Kubernetes missing client toast - Fixed libsecret password storage panic on non-UUID keys (#34) - Fixed libsecret password retrieval — is_available() always false - Fixed VNC/RDP identical icons - Fixed SFTP via mc opens root instead of home directory - Fixed SSH agent not inherited by VTE terminals - Dependencies: deflate64 0.1.10→0.1.11, zerocopy 0.8.39→0.8.40 * Thu Feb 26 2026 Anton Isaiev - 0.9.2-0 - Custom Icons — set emoji/unicode or GTK icon names on connections and groups (#23) - Remote Monitoring — monitoring bar below SSH/Telnet/K8s terminals (#26) - Fixed new connections and groups appending to end of list - Fixed IronRDP fallback to FreeRDP on protocol negotiation failure (#33) - Fixed monitoring SSH password auth via sshpass - Fixed monitoring error spam — collector stops after 3 consecutive failures - Fixed Bitwarden CLI not found in Flatpak — dynamic bw path resolution (#28) - CLI downloads: Teleport 18.7.0→18.7.1 - Dependencies: vnc-rs 0.5.2→0.5.3, rustls 0.23.36→0.23.37 * Sat Feb 21 2026 Anton Isaiev - 0.9.0-0 - Ukrainian translation reviewed by Mykola Zubkov — 674 translations revised for accuracy and modern Ukrainian orthography * Fri Feb 20 2026 Anton Isaiev - 0.8.9-0 - SSH port forwarding — Local (-L), remote (-R), and dynamic SOCKS (-D) port forwarding rules per connection (#22) - Deferred secret backend initialization — async startup, eliminates 1–3 second delay when secret backend is configured - Security: input validation hardening across all protocols - Security: SSH config export blocks dangerous directives - Security: KeePassXC socket responses capped at 10 MB - Security: VNC and RDP client passwords migrated to SecretString - Security: FreeRDP external launcher uses /from-stdin - Fixed Quick Connect RDP "Got empty identity" CredSSP error (#29) - Fixed Bitwarden duplicate vault writes, false "unlocked" status, auto-unlock after restart, CLI v2026.1.0 compatibility (#28) - Fixed RefCell borrow panic in EmbeddedRdpWidget, VNC polling mutex contention, RDP polling timer leak - Fixed several unwrap() panics (VNC, TaskExecutor, tray, build.rs) - ~40 eprintln! calls migrated to structured tracing - Dependencies: serde_yaml replaced with serde_yaml_ng 0.9 (maintained fork) - Dependencies: cpal 0.17.1→0.17.3, clap 4.5.59→4.5.60 - Internal: architecture audit completed (51 findings, 49 resolved) * Wed Feb 18 2026 Anton Isaiev - 0.8.8-0 - Version bump to 0.8.8 - Security: AES-256-GCM replaces XOR obfuscation for stored credentials (transparent migration from legacy format) - Security: FreeRDP password passed via stdin instead of command line - FreeRDP detection unified with Wayland-first priority - RDP build_args() decoupled from hardcoded binary name - ZeroTrust: provider-specific validation and CLI tool detection - Native export/import now includes snippets (format v2) - Removed dead code: Dashboard module, 5 unused GUI modules, tab_split_manager remnants - Dependencies: native-tls 0.2.14→0.2.18, toml 0.8→1.0, zip 2.2→8.1 - Fixed RDP HiDPI scaling on 4K displays (desktop_scale_factor) - Fixed RDP mouse coordinate mismatch on HiDPI displays * Tue Feb 17 2026 Anton Isaiev - 0.8.7-0 - Version bump to 0.8.7 - Internationalization (i18n) — 14 languages: uk, de, fr, es, it, pl, cs, sk, da, sv, nl, pt, be, kk; gettext support via gettext-rs (#17) - SPICE proxy support for Proxmox VE tunnelled connections (#18) - RDP HiDPI fix — IronRDP uses device-pixel resolution on HiDPI displays (#16) - Security: variable injection prevention in command-building paths - Security: ChecksumPolicy enum replaces placeholder SHA256 strings - Security: sensitive CLI arguments masked in log output - Security: configurable document encryption strength (Standard/High/Maximum) - Security: SSH Agent passphrase handling via SSH_ASKPASS helper - CLI overhaul: modularized into 18 handler modules with structured logging - CLI: shell completions, man page, fuzzy suggestions, dry-run, pager, auto-JSON - CLI: --config flag now threads through all ConfigManager call sites - Czech translation improved by native speaker p-bo (PR #19) - Remmina RDP import: gateway_server, gateway_username, domain fields (#20) - Accessible labels added to 20+ icon-only buttons - VTE updated to 0.83.90 in Flatpak manifests - Flatpak components dialog hides unusable protocol clients in sandbox - SPDX license corrected: GPL-3.0+ → GPL-3.0-or-later in metainfo.xml * Mon Feb 16 2026 Anton Isaiev - 0.8.6-0 - Version bump to 0.8.6 - Fixed Embedded RDP keyboard layout: incorrect key mapping for non-US keyboard layouts (e.g. German QWERTZ) in IronRDP embedded client (#15) * Sun Feb 15 2026 Anton Isaiev - 0.8.5-0 - Version bump to 0.8.5 - Added Kubernetes Protocol (#14): kubectl exec shell access to pods with exec and busybox modes, GUI Kubernetes tab, K8s sidebar filter, CLI kubernetes subcommand, Flatpak kubectl component - Added Serial Console Protocol (#11): picocom-based serial console in GUI, CLI, Flatpak, and Snap with 13 property tests - Added SFTP File Browser (#10): portal-aware file manager launch, Midnight Commander FISH VFS, standalone SFTP connection type, CLI sftp subcommand - Added Responsive / Adaptive UI (#9): reduced dialog sizes, adw::Clamp on list dialogs, adw::Window for Dashboard/Sessions, 600sp breakpoint for split view - Added Terminal Rich Search (#7): regex, highlight all, case-sensitive toggles, Ctrl+Shift+F, session log timestamps - Changed: Session Logging moved to Logging settings tab * Sat Feb 14 2026 Anton Isaiev - 0.8.4-0 - Version bump to 0.8.4 - Added FIDO2/SecurityKey SSH authentication with hardware key support - Added CLI --auth-method flag for add/update commands, --key for SSH key path - Fixed CLI version check timeout: 3s to 6s for Azure CLI compatibility - Fixed WoL MAC Entry Disabled on Edit: removed per-widget sensitivity calls - Refactored ConnectionManager: watch channels replace Arc debounce - Refactored EmbeddingError, StateAccessError to thiserror derive - Refactored FreeRDP mutex consolidation into single shared state struct - Refactored Embedded RDP module directory (7 flat files into module) - Refactored ConnectionDialog LoggingTab extraction (~310 lines removed) - Refactored OverlaySplitView sidebar with F9 toggle and gestures - Refactored responsive sidebar breakpoint (400sp for narrow windows) - Refactored Window module directory (14 flat files into module) - Removed ~80 redundant clippy suppression annotations - Extended Protocol trait with capabilities() and build_command() methods - Updated dependencies: resvg 0.46->0.47, tiny-skia 0.11->0.12 * Fri Feb 13 2026 Anton Isaiev - 0.8.3-0 - Version bump to 0.8.3 - Added Wake On LAN from GUI (#8): context menu, auto-WoL, standalone dialog - Fixed Flatpak libsecret build: disabled bash_completion (EROFS in sandbox) - Fixed Flatpak libsecret 0.21.7 build: renamed gcrypt option to crypto - Fixed Thread Safety: removed std::env::set_var from FreeRDP spawned thread - Fixed Flatpak Machine Key: app-specific key in $XDG_DATA_HOME/rustconn/.machine-key - Fixed Variables Dialog Panic: replaced expect() with if-let pattern - Fixed Keyring secret-tool Check: store() validates secret-tool availability - Fixed Flatpak CLI Paths: no hardcoded /snap/bin/ paths inside Flatpak - Fixed Settings Dialog Performance: CLI detection moved to background threads - Fixed Settings Clients Tab: 3s timeout, parallel detection (~15s to ~3s) - Fixed Settings Dialog Instant Display: present() before load_settings() - Fixed Settings Dialog Render Blocking: std::thread::spawn + mpsc + idle_add_local * Wed Feb 11 2026 Anton Isaiev - 0.8.2-0 - Version bump to 0.8.2 - Added Shared Keyring Module with generic store(), lookup(), clear(), and is_secret_tool_available() functions for all backends - Added Keyring Support for All Secret Backends: * Bitwarden: refactored to use shared keyring module * 1Password: store/get/delete token in keyring * Passbolt: store/get/delete passphrase in keyring * KeePassXC: store/get/delete KDBX password in keyring - Added Auto-Load Credentials from Keyring on settings load - Added secret-tool availability check when toggling keyring option - Added Passbolt Server URL Setting and UI in Secrets tab - Added Unified Credential Save Options with mutual exclusion - Fixed Secret Lookup Key Mismatch across all secret backends - Fixed Passbolt Server Address Always None - Fixed Passbolt "Open Password Vault" URL using configured server - Fixed Variable Secrets Ignoring Preferred Backend - Fixed Bitwarden Folder Parsing Crash on null folder IDs - Fixed Bitwarden Vault Auto-Unlock for variable save/load - Improved workspace dependency consistency (regex to workspace) - Removed unused picky pin from rustconn-core - Updated dependencies: clap, clap_builder, clap_lex, deranged * Wed Feb 11 2026 Anton Isaiev - 0.8.1-0 - Version bump to 0.8.1 - Added Passbolt secret backend via go-passbolt-cli (#6): * PassboltBackend implementing SecretBackend trait * Store, retrieve, and delete credentials as Passbolt resources * CLI detection and version display in Settings → Secrets * Server configuration status check - Unified Secret Backends: * Replaced individual PasswordSource variants with single Vault variant * Connection dialog password source: Prompt, Vault, Variable, Inherit, None * Serde aliases preserve backward compatibility with existing configs - Added Variable password source: * PasswordSource::Variable(String) reads credentials from named secret variable * Connection dialog shows variable dropdown when Variable is selected - Variables Dialog improvements: * Show/Hide toggle for secret variable values * Load from Vault button for secret variables * Secret variable values auto-saved to vault on dialog save - Fixed secret variables always using libsecret instead of configured backend - Fixed Variable dropdown showing empty when editing connections - Fixed Telnet backspace/delete: uses VTE native EraseBinding API (#5) - Fixed split view left panel shrinking on nested splits * Tue Feb 10 2026 Anton Isaiev - 0.8.0-0 - Version bump to 0.8.0 - Added Telnet backspace/delete key configuration (#5): * TelnetBackspaceSends and TelnetDeleteSends enums (Automatic/Backspace/Delete) * Connection dialog Keyboard group with two dropdowns * stty erase shell wrapper in spawn_telnet() to apply key settings * Addresses common backspace/delete inversion issue - Added Flatpak Telnet support: * GNU inetutils 2.7 built as Flatpak module * telnet binary available at /app/bin/ in Flatpak sandbox * Added to all three Flatpak manifests - Fixed Flatpak AWS CLI: replaced awscliv2 Docker wrapper with official binary - Fixed Flatpak Component Detection: SSM Plugin, Azure CLI, OCI CLI detection - Fixed Flatpak Python Version: dynamic Python version in wrapper scripts - Updated OBS _service revision from v0.5.3 to current version tag - Updated dependencies: libc 0.2.180->0.2.181, tempfile 3.24.0->3.25.0, unicode-ident 1.0.22->1.0.23 * Mon Feb 09 2026 Anton Isaiev - 0.7.9-0 - Version bump to 0.7.9 - Added Telnet protocol support (#5): * Full implementation across all three crates (core, CLI, GUI) * TelnetConfig model with host, port (default 23), extra arguments * Protocol trait implementation using external telnet client * Import/export support: Remmina, Asbru, MobaXterm, RDM * CLI: rustconn-cli telnet subcommand * GUI: connection dialog, template dialog, sidebar filter, quick connect * Terminal: spawn_telnet() for launching sessions * All property tests updated with Telnet coverage - Fixed missing Telnet icon mapping in sidebar get_protocol_icon() - Fixed Telnet icon: changed from network-wired-symbolic to call-start-symbolic - Fixed ZeroTrust sidebar icon: unified to folder-remote-symbolic for all providers * Sun Feb 08 2026 Anton Isaiev - 0.7.8-0 - Version bump to 0.7.8 - Added Remmina password import to configured secret backend - Fixed import error swallowing: replaced 14 unwrap_or_default() with proper error propagation - Fixed MobaXterm import double allocation on UTF-8 conversion - Added 50 MB file size limit in read_import_file() to prevent OOM - Native export/import uses streaming I/O with BufWriter/BufReader - Native import version pre-check before full deserialization - Added centralized write_export_file() helper with BufWriter - Consolidated export write boilerplate across all exporters - Removed redundant TOCTOU path.exists() checks in importers - Removed unused imports in Asbru and MobaXterm exporters - Updated dependencies: memchr, ryu, zerocopy, zmij * Sat Feb 07 2026 Anton Isaiev - 0.7.7-0 - Version bump to 0.7.7 - Fixed keyboard shortcuts intercepting VTE terminal input: - Delete, Ctrl+E, Ctrl+D no longer fire when terminal has focus (#4) - Shortcuts now scoped to sidebar only - Improved thread safety: - Audio mutex locks use graceful fallback instead of unwrap() - Search engine mutex locks use graceful recovery patterns - Security: VNC client logs warning when connecting without password - Refactored runtime consolidation: - Replaced 23 redundant tokio runtime calls with shared with_runtime() - Collection optimization: snippet tags use flat_map and sort_unstable - Dead code removal: removed deprecated credential methods and unused menu builder * Fri Feb 06 2026 Anton Isaiev - 0.7.6-0 - Version bump to 0.7.6 - Flatpak Components Manager - On-demand CLI download for Flatpak environment: - Menu → Flatpak Components... (visible only in Flatpak) - Download and install CLIs to ~/.var/app/io.github.totoshko88.RustConn/cli/ - Supports: AWS CLI, AWS SSM Plugin, Google Cloud CLI, Azure CLI, OCI CLI, Teleport, Tailscale, Cloudflare Tunnel, Boundary, Bitwarden CLI, 1Password CLI, TigerVNC - SHA256 checksum verification, progress indicators, cancel support - Snap Strict Confinement - Migrated from classic to strict confinement: - Snap-aware path resolution for data, config, and SSH directories - Uses embedded clients (IronRDP, vnc-rs, spice-gtk) - External CLIs accessed from host via system-files interface - UI/UX Enhancements - GNOME HIG compliance improvements: - Accessible labels for status icons and protocol filter buttons - Sidebar minimum width increased to 200px - Connection dialog uses adaptive adw::ViewSwitcherTitle - Toast notifications with proper priority levels - Settings → Clients - Improved client detection display: - All protocols show embedded client status with blue indicator - Fixed AWS SSM Plugin detection - Dialog Widget Builders - Reusable UI components (CheckboxRowBuilder, EntryRowBuilder, etc.) - Protocol Dialogs Refactoring - Applied widget builders to SSH, RDP, VNC, SPICE panels - Legacy Code Cleanup - Removed unused TabDisplayMode, TabLabelWidgets types * Fri Feb 06 2026 Anton Isaiev - 0.7.5-0 - Version bump to 0.7.5 - Code Quality Audit - Comprehensive codebase analysis and cleanup - Removed duplicate SSH/VNC/SPICE/ZeroTrust/RDP options code (~1850 lines) - Extracted shared folders UI into reusable shared_folders.rs module - Created protocol_layout.rs with ProtocolLayoutBuilder for consistent protocol UI - Consolidated with_runtime() into async_utils.rs - Changed FreeRDP launcher to Wayland-first (force_x11: false by default) - Removed legacy no-op methods from terminal module - Updated dependencies: proptest 1.9.0→1.10.0, time 0.3.46→0.3.47 * Thu Feb 05 2026 Anton Isaiev - 0.7.4-0 - Version bump to 0.7.4 - Fixed Zero Trust Entry Field Alignment - converted all Zero Trust provider fields to adw::EntryRow - Refactored Connection Dialog Modularization - split into dialog.rs, ssh.rs, rdp.rs, vnc.rs, spice.rs - Refactored Import File I/O - extracted common file reading pattern into read_import_file() helper - Refactored Protocol Client Errors - consolidated duplicate error types into unified EmbeddedClientError - Refactored Config Atomic Writes - improved reliability with temp file + atomic rename pattern - Added GTK Lifecycle Documentation - module-level docs explaining #[allow(dead_code)] pattern - Code Quality - removed legacy types, standardized error patterns, reduced unnecessary clones * Tue Feb 03 2026 Anton Isaiev - 0.7.3-0 - Version bump to 0.7.3 - Fixed Azure CLI Version Parsing - version now correctly extracted from unique output format - Fixed Flatpak XDG Config - removed unnecessary xdg-config/rustconn:create permission - Fixed Teleport CLI Detection - changed binary from teleport to tsh - Improved RDP Client Detection - FreeRDP 3.x with Wayland support (wlfreerdp3/xfreerdp3) - Unified Client Install Hints - format: deb-package (rpm-package) - Updated dependencies: bytes, flate2, regex * Tue Feb 03 2026 Anton Isaiev - 0.7.2-0 - Version bump to 0.7.2 - Flatpak Host Command Support - New flatpak module for running host commands - Fixed Flatpak Config Access - connections and settings now persist correctly - Fixed Split View Equal Proportions - panels now split 50/50 reliably * Sun Feb 01 2026 Anton Isaiev - 0.7.1-0 - Version bump to 0.7.1 - Refactored Sidebar - Split monolithic sidebar into modular components (TECH-03) - Refactored Drag & Drop - Strongly typed DragPayload (TECH-04) - Added Search Highlighting - Visual feedback for search matches (TECH-05) - Code Quality - Async persistence fixes and cleanup * Sun Feb 01 2026 Anton Isaiev - 0.7.0-0 - Version bump to 0.7.0 - Fixed Asbru Import Nested Groups - two-pass algorithm preserves hierarchy - Fixed Asbru Export Description Field - exports connection and group descriptions - Added Group Description Field - New Group and Edit Group dialogs - Added Asbru Global Variable Conversion - to ${VAR} syntax - Added Variable Substitution at Connection Time - Dialog Size Unification - Export 750×650, Import 750×800, New Group 450×550 * Sat Jan 31 2026 Anton Isaiev - 0.6.9-0 - Version bump to 0.6.9 - Fixed Local Shell tabs not appearing in Split View "Select Tab" dialog * Fri Jan 30 2026 Anton Isaiev - 0.6.8-0 - Version bump to 0.6.8 - 1Password CLI Integration - New secret backend for 1Password password manager - Bitwarden API Key Authentication - Support for automated workflows and 2FA - Bitwarden Keyring Storage - Store master password in system keyring * Thu Jan 29 2026 Anton Isaiev - 0.6.7-0 - Version bump to 0.6.7 * Tue Jan 27 2026 Anton Isaiev - 0.6.6-0 - Version bump to 0.6.6 * Sat Jan 17 2026 Anton Isaiev - 0.6.5-0 - Version bump to 0.6.5 * Sat Jan 17 2026 Anton Isaiev - 0.6.4-0 - Update to version 0.6.4 - Snap Package - New distribution format for easy installation via Snapcraft - Classic confinement for full system access (SSH keys, network, etc.) - Automatic updates via Snap Store - GitHub Actions Snap Workflow - Automated builds and publishing - RDP/VNC Performance Modes - Quality/Balanced/Speed presets for different networks - Fixed RDP initial resolution matching actual widget size - Fixed RDP dynamic resolution with debounced reconnect (500ms) - Fixed sidebar fixed width (no longer resizes with window) - Fixed RDP cursor colors (BGRA→ARGB conversion) - Updated ironrdp 0.13 → 0.14, ironrdp-tokio 0.7 → 0.8 * Thu Jan 15 2026 Anton Isaiev - 0.6.3-0 - Update to version 0.6.3 - Bitwarden CLI Integration - New secret backend for Bitwarden password manager - Password Manager Detection - Automatic detection of installed managers - Enhanced Secrets Settings UI - Improved backend selection with dynamic config - Detects GNOME Secrets, KeePassXC, KeePass2, Bitwarden CLI, 1Password CLI * Thu Jan 15 2026 Anton Isaiev - 0.6.2-0 - Update to version 0.6.2 - MobaXterm Import/Export - Full support for .mxtsessions files - Connection History Button - Quick access from sidebar toolbar - Run Snippet from Context Menu - Right-click on connection → "Run Snippet..." - Persistent Search History - Up to 20 recent searches saved across sessions - Updated quick-xml 0.38 → 0.39, resvg 0.45 → 0.46 * Sun Jan 11 2026 Anton Isaiev - 0.5.9-0 - Update to version 0.5.9 - Migrated Settings dialog from deprecated PreferencesWindow to PreferencesDialog - Updated libadwaita feature from v1_4 to v1_5 - Migrated Template dialog to modern libadwaita patterns - Fixed Zero Trust (AWS SSM) connection status icon showing as failed - Fixed remote-viewer version parsing in Settings Clients tab - Fixed SSH Agent key selection when connecting - Improved agent key dropdown display in Connection Dialog * Wed Jan 07 2026 Anton Isaiev - 0.5.8-0 - Update to version 0.5.8 - Fixed SSH Agent "Add Key" button - now opens file chooser to select any SSH key file - Fixed SSH Agent "+" buttons in Available Key Files list - now load keys with passphrase dialog - Fixed SSH Agent "Remove Key" (trash) button - now actually removes keys from the agent - Fixed SSH Agent Refresh button - updates both loaded keys and available keys lists * Wed Jan 07 2026 Anton Isaiev - 0.5.7-0 - Update to version 0.5.7 - Fixed Test button in New Connection dialog (async runtime issue with GTK) - Updated dependencies: h2, proc-macro2, quote, rsa, rustls, serde_json, url, zerocopy - Note: sspi and picky-krb kept at previous versions due to rand_core compatibility * Sat Jan 03 2026 Anton Isaiev - 0.5.5-0 - Update to version 0.5.5 - Added Kiro steering rules for development workflow - Rename action in sidebar context menu for connections and groups - Double-click on import source to start import - Double-click on template to create connection from it - Group dropdown in Connection dialog for selecting parent group - Info tab for viewing connection details (replaces popover) - Default alphabetical sorting with drag-drop reordering support - Toast notification system for non-blocking user feedback - User-friendly error display utilities - GUI utility module with safe display access - Form validation module with visual feedback - Accessibility improvements on sidebar and terminal tabs - Keyboard shortcuts help dialog (Ctrl+? or F1) - Empty state widgets for no connections/search results/sessions - Color scheme toggle in Settings dialog (System/Light/Dark) - CSS animations for connection status - Enhanced drag-drop visual feedback * Fri Jan 02 2026 Anton Isaiev - 0.5.3-0 - Update to version 0.5.3 - UI Unification: All dialogs now use consistent 750×500px dimensions - Connection history recording for all protocols - Protocol-specific tabs in Template Dialog - Connection history and statistics dialogs - Common embedded widget trait for RDP/VNC/SPICE - Quick Connect supports RDP and VNC with templates - Refactored terminal.rs into modular structure - Updated gtk4 dependency to 0.10.2 * Mon Dec 29 2025 Anton Isaiev - 0.5.2-0 - Update to version 0.5.2 - Refactored window.rs, embedded_rdp.rs, sidebar.rs, embedded_vnc.rs into modular structure - Fixed tab icons, Snippet dialog Save button, Template dialog layout - Added wayland-native feature flag with gdk4-wayland integration - CI improvements: libadwaita-1-dev, property tests job, OBS changelog generation * Sun Dec 28 2025 Anton Isaiev - 0.5.1-0 - Update to version 0.5.1 - CLI: Wake-on-LAN, snippet, group management commands - CLI: Connection list filters (--group, --tag) - CLI: Native format (.rcn) support for import/export - Search debouncing with visual spinner indicator - Clipboard file transfer UI for embedded RDP sessions - Dead code cleanup and documentation improvements * Sat Dec 27 2025 Anton Isaiev - 0.5.0-0 - Update to version 0.5.0 - RDP clipboard file transfer support (CF_HDROP format) - RDPDR directory change notifications and file locking - Native SPICE protocol embedding - Performance optimizations (lock-free audio, optimized search) - Fixed SSH Agent key discovery