rustconn (0.13.0-0) unstable; urgency=medium

    * - **Mouse not working in Midnight Commander and ncurses apps** — split view panel click handlers used `EventSequenceState::None` in capture phase, which prevented VTE from receiving raw button-press events for mouse tracking; changed to `EventSequenceState::Denied` so VTE processes mouse clicks for ncurses apps (mc, vim, htop); also unified TERM to `xterm-256color` everywhere (Flatpak previously used `rustconn-256color` which broke mouse tracking)
    * - **SFTP connection slow with Bitwarden backend** — double-clicking an SFTP connection triggered full Bitwarden credential resolution (~12s of sequential `bw status` + `bw list items` calls) even though mc uses SSH key in agent, not vault passwords; connections with `password_source` set to None or Prompt now skip async vault resolution entirely, benefiting all protocols — not just SFTP
    * - **External RDP tab shows only toolbar, content area empty** — `EmbeddedSessionTab::new()` determined embed mode from `DisplayServer::supports_embedding()` which returns `true` on both Wayland and X11; when `start_external_rdp_session` created the tab, it got an empty `DrawingArea` (meant for XEmbed) instead of the `StatusPage` with FreeRDP hotkeys; added `force_external` parameter so external sessions always render the informational StatusPage; also added `show_tab_view_content()` call for layout consistency and `markup_escape_text` to protect against special characters in connection names
    * - **Group edit: SSH settings toggle reopens confirmation dialog in a loop** — clicking "Clear" in the "Clear SSH Settings?" confirmation dialog triggered the `enable_expansion_notify` signal recursively, causing the dialog to reopen immediately; added a guard flag to prevent re-entry
    * - **Incomplete translations for Dynamic Folder strings** — "Dynamic Folder", "Generate connections from a script", "Working Directory", "Timeout (seconds)", "Shell command executed via sh -c", "Refreshed" toast, and error messages were marked fuzzy in all 16 `.po` files and displayed in English; provided correct translations and removed fuzzy flags for all languages
    * - **Bulk actions: "Move to Group" icon missing** — `folder-move-symbolic` is not available in all icon themes; replaced with standard `folder-drag-accept-symbolic` from Adwaita
    * - **External RDP (FreeRDP) fails on changed server certificate** — external xfreerdp always used `/cert:tofu` with no way to override; when a server certificate changed, the connection was silently rejected; added `ignore_certificate` field to `RdpConfig` and "Accept Certificate" checkbox in the RDP connection dialog; when enabled, removes stored FreeRDP certificate (`~/.config/freerdp/server/` and `known_hosts2`) and passes `/cert:ignore`; also fixed: password not passed to `sdl-freerdp3` (now uses `/p:`), `disable_nla` not forwarded to external client (now passes `/sec:nla:off`), connection errors not shown to user (now displays toast with parsed FreeRDP error), tab remained open after FreeRDP window closed (now auto-closes via process monitor), tab placeholder showed keyboard shortcuts and auto-close hint ([#112](https://github.com/totoshko88/RustConn/issues/112))
    * - **Smart Folders in sidebar** — the Smart Folders section is now visible in the sidebar below the connection list; dynamically groups connections based on tag, protocol, host pattern, and group filters using AND logic; shows match count badge per folder; "Add" button and right-click context menu (Edit / Delete) fully wired; "New Smart Folder" option added to empty-space context menu; smart folders auto-refresh on every sidebar reload; hidden by default, toggled via toolbar button with persisted visibility state ([#111](https://github.com/totoshko88/RustConn/issues/111))
    * - **Group-level Expect rules & post-login scripts inheritance** — `ConnectionGroup` now supports `expect_rules` and `post_login_scripts` fields; connections with empty automation config automatically inherit from their parent group chain (same walk-up-hierarchy pattern as SSH/credential inheritance with cycle detection); applies to all terminal protocols: SSH, Telnet, Serial, Kubernetes, MOSH, Zero Trust; set expect rules once on a group and all 600+ connections inherit them automatically ([#110](https://github.com/totoshko88/RustConn/issues/110))
    * - **Mouse passthrough option for VTE terminal** — new "Mouse passthrough" toggle in Settings → Terminal → Behavior; when enabled (default), mouse clicks and scroll wheel events are forwarded to terminal applications that request mouse tracking (Midnight Commander buttons, vim visual selection, htop scrolling); disables VTE's fallback scrolling so scroll wheel is sent as mouse events on alternate screen; hold Shift to select text when mouse passthrough is active
    * - **CLI: `--keep-alive-interval`, `--keep-alive-count`, `--ssh-verbose`, `--ignore-certificate` flags** — `add` and `update` commands now support SSH keep-alive settings (`ServerAliveInterval`, `ServerAliveCountMax`), SSH verbose/debug output (`-v` flag), and RDP certificate acceptance; previously these settings were only configurable via the GUI connection dialog
    * - **CLI: `snippet edit`, `template edit`, `cluster edit`, `smart-folder edit` subcommands** — all four resource types now have full CRUD via CLI; `snippet edit` supports `--new-name`, `--command`, `--description`, `--category`, `--tags`; `template edit` supports `--new-name`, `--host`, `--port`, `--user`, `--description`; `cluster edit` supports `--new-name`, `--broadcast`; `smart-folder edit` supports `--new-name`, `--protocol`, `--host-pattern`, `--tags` (use `"none"` to clear a filter); previously editing required delete+create
    * - **Auto-login with stored passwords** — added comprehensive troubleshooting section to User Guide explaining how to configure auto-login: Password Source must be "Vault", lookup key formats for each backend (KeePass hierarchical, libsecret flat, Bitwarden/1Password prefixed), common issues table with fixes ([#114](https://github.com/totoshko88/RustConn/issues/114))
    * - **Vault entry missing toast notification** — when credential resolution finds no vault entry for a connection, a warning toast now shows "Vault entry not found for '{name}'" instead of silently falling back to a password prompt; helps users understand why auto-login didn't work ([#114](https://github.com/totoshko88/RustConn/issues/114))
    * - **"Test credential resolution" button in connection dialog** — new ✓ button next to the password field performs a vault lookup using the current connection name, host, protocol, and group; shows the exact lookup key used and whether the vault returned a password; helps users verify their vault configuration before connecting ([#114](https://github.com/totoshko88/RustConn/issues/114))
    * - **Multi-language SSH password prompt detection** — VTE password injection now recognizes password prompts from SSH servers configured in non-English locales; supported: German (Passwort/Kennwort), French (mot de passe), Spanish (contraseña), Portuguese (senha), Ukrainian/Belarusian (пароль), Polish (hasło), Czech/Slovak (heslo), Dutch (wachtwoord), Swedish (lösenord), Danish (adgangskode), Chinese (密码/密碼), Japanese (パスワード), Korean (비밀번호); previously only English prompts triggered auto-fill ([#114](https://github.com/totoshko88/RustConn/issues/114))
    * - **GNOME HIG: sidebar toolbar decluttered** — removed Import/Export buttons from the bottom toolbar (accessible via hamburger menu Ctrl+I and context menu); reduces button count from 8 to 6 for cleaner appearance per GNOME HIG recommendations
    * - Boundary CLI 0.21.2 → 0.21.3 (security: CVE fixes in pgx/v5 and go-ntlmssp)
    * - Hoop.dev CLI 1.59.3 → 1.62.0
    * - Tailscale CLI 1.96.5 → 1.96.4 (1.96.5 was platform-specific, not available for Linux)

 -- Anton Isaiev <totoshko88@gmail.com>  Sat, 02 May 2026 23:24:49 +0000

rustconn (0.12.9-1) unstable; urgency=medium

    * - **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; previously importing such an export recreated the entire group hierarchy instead of just the selected branch
    * - **Snippet variable substitution from Global Variables** — snippets containing `${VARIABLE}` placeholders now automatically resolve values from Global Variables (Menu → Tools → Variables) before execution; if all variables are resolved, the snippet executes immediately without showing the input dialog; partially resolved variables pre-fill the dialog with known values; resolution order: Global Variables → snippet-defined defaults → manual input; uses the same `VariableManager` and vault-backed secret resolution as Expect rules and SSH connections
    * - **Dynamic Folders** — new `DynamicFolderConfig` on `ConnectionGroup` allows generating connections from an external script; the script runs via `sh -c` with configurable timeout (default 30s) and optional working directory; output is a JSON array of `[{name, host, port?, protocol?, username?, group?, tags?, description?}]`; connections are read-only (`is_dynamic` flag) with stable deterministic UUIDs across refreshes; supports SSH, RDP, VNC, SPICE, Telnet, and MOSH protocols; async executor in `rustconn-core/src/dynamic_folder.rs` with entry validation, warnings for empty name/host, and `thiserror`-based error types; model in `rustconn-core/src/models/dynamic_folder.rs`; **GUI**: group edit dialog with ExpanderRow for script/timeout/working directory/refresh interval configuration; context menu "Refresh Dynamic Folder" action with async execution and toast notifications; **CLI**: `dynamic-folder list`, `dynamic-folder show`, `dynamic-folder refresh` subcommands with table/JSON/CSV output
    * - **CLI `group edit` extended** — `group edit` now supports `--new-name`, `--parent` (use "none" for root), `--description`, and `--icon` in addition to the existing SSH inheritance fields; enables full group management from the CLI without GUI
    * - **CLI `dynamic-folder set/remove`** — full CRUD for dynamic folders via CLI: `set` creates or updates the script configuration on any group, `remove` clears the configuration and deletes generated connections

 -- Anton Isaiev <totoshko88@gmail.com>  Fri, 01 May 2026 22:44:08 +0000

rustconn (0.12.8-1) unstable; urgency=medium

    * - **Generic async cache `Cached<T>`** — 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 through `previous_value` parameter, explicit invalidation, and configurable TTL (default 60s); replaces ad-hoc caching patterns across the codebase 
    * - **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; `Clone` for sharing across components; **integrated into GUI** — header bar spinner appears during connection attempts via `glib::MainContext` channel bridge 
    * - **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 
    *   - SSH: `port_forwarding`, `wayland_forwarding`, `x11_forwarding`, `session_recording`, `remote_monitoring`, `command_snippets`
    *   - RDP: `multi_monitor`
    *   - SPICE: `multi_monitor`, `usb_redirection`, `audio`
    *   - All terminal protocols: `session_recording`, `remote_monitoring`, `command_snippets`, `wake_on_lan`
    *   - All graphical protocols: `wake_on_lan`
    * - **Connection fallback chain `ConnectionFallback<T>`** — new `rustconn-core/src/connection/fallback.rs` module providing a generic mechanism for trying multiple connection strategies in priority order; `ConnectionStrategy` trait with `name()`, `is_available()`, and async `connect()`; unavailable strategies are skipped automatically; `FallbackError` collects all attempt details for diagnostics; integrated with `tracing` for structured logging 
    * - **Virt-viewer `.vv` file open support** — RustConn can now open `.vv` files (SPICE/VNC from libvirt, Proxmox VE, oVirt) directly from the file manager or command line (`rustconn file.vv`); adds `StartupAction::VvFile`, `VirtViewerImporter::parse_vv_file()` convenience method, `application/x-virt-viewer` MIME type registration in desktop file and metainfo, and MIME XML definition; completes parity with `.rdp` file support 
    * - **Connection failure toast** — when a connection fails to start, an error toast now shows the connection name (`"Connection to 'name' failed"`); previously the sidebar turned red with no further feedback
    * - Teleport CLI 18.7.5 → 18.7.6 (security: authorization bypass in encrypted session recordings, cross-node recording access, SSRF via AWS database endpoint)

 -- Anton Isaiev <totoshko88@gmail.com>  Fri, 01 May 2026 10:26:20 +0000

rustconn (0.12.7-1) unstable; urgency=medium

    * - **Group credentials: Variable source shows password field instead of variable selector** — when editing a group and choosing "Variables" as the credential type, the dialog incorrectly displayed a password entry field; now shows a dropdown populated with secret global variables, matching the behavior of individual connection editing ([#109](https://github.com/totoshko88/RustConn/issues/109))
    * - **Group credentials: saving Variable source stored empty string** — selecting "Variable" and saving the group produced `PasswordSource::Variable("")` instead of the actual variable name; now correctly reads the selected variable from the dropdown
    * - **Group credentials: no validation for empty variable selection** — saving with "Variable" source when no secret global variables exist silently stored an empty variable name; now shows a validation error prompting the user to select a variable
    * - **GNOME HIG: accessible labels for group credential widgets** — added `LabelledBy` relations for the password source dropdown, password entry, and variable dropdown in the group edit dialog so screen readers can announce their purpose
    * - **GNOME HIG: menu button tooltip shows F10 shortcut** — the hamburger menu button tooltip now reads "Menu (F10)", consistent with other header bar buttons that show their keyboard shortcut
    * - **GNOME HIG: "SSH Tunnels" moved to Tools section** — SSH Tunnels was in the App section alongside Settings/About/Quit; moved to the Tools section where it logically belongs with other management dialogs
    * - **GNOME HIG: "Settings" menu item ellipsis** — "Settings" now shows as "Settings..." to indicate it opens a window, per GNOME HIG ellipsis convention
    * - **GNOME HIG: "Keyboard Shortcuts" added to app menu** — the existing `app.shortcuts` action (F1) was not discoverable from the hamburger menu; added "Keyboard Shortcuts..." entry in the App section before About, matching standard GNOME app layout
    * - **User Guide: group credentials rewritten** — replaced outdated KeePass/Keyring/Bitwarden password source list with the current unified model (Prompt, Vault, Variable, Inherit, None); documented that Variable source shows a dropdown of secret global variables
    * - **User Guide: F10 shortcut** — added F10 (Open Menu) to the Application keyboard shortcuts table

 -- Anton Isaiev <totoshko88@gmail.com>  Thu, 30 Apr 2026 21:02:05 +0000

rustconn (0.12.6-1) unstable; urgency=medium

    * - **Expect script variables not substituted** — `${MY_PASSWORD}` and other `${VAR}` references in Expect rule responses were sent as literal text instead of being resolved to their actual values; now uses `VariableManager` to substitute global variables before creating automation triggers ([#105](https://github.com/totoshko88/RustConn/issues/105))
    * - **GNOME HIG: missing ellipsis on menu items** — "Active Sessions" and "SSH Tunnels" in the hamburger menu now use ellipsis ("Active Sessions...", "SSH Tunnels...") to indicate they open a dialog/window, per GNOME HIG conventions
    * - **False `c-format` flag on command palette search string** — `xgettext` incorrectly marked `"Search connections, > commands, @ tags, # groups, % tabs"` as a C format string; `% T` was interpreted as a format specifier, causing `msgfmt --check` to fail in 14 languages; removed the flag from POT and all 16 PO files
    * - **Corrupted `Plural-Forms` in uk.po** — `%` characters in the Ukrainian plural formula were replaced with `{}` placeholders during a previous i18n update; restored the correct `nplurals=3` formula
    * - **SSH verbose mode for connection debugging** — new "Verbose" toggle in SSH connection settings adds `-v` flag to the SSH command, showing detailed debug output in the terminal to help diagnose connection issues such as resets by remote devices ([#106](https://github.com/totoshko88/RustConn/issues/106))
    * - **Sidebar width setting** — new "Sidebar width" control in Settings → Appearance allows adjusting the sidebar width from 260 to 500 pixels; applied immediately and persisted across sessions ([#96](https://github.com/totoshko88/RustConn/issues/96))
    * - **SSH Tunnel Manager** — standalone window for managing headless SSH port-forwarding tunnels without terminal sessions; supports Local/Remote/Dynamic forwards, auto-start on launch, auto-reconnect, and references existing SSH connections for host/key configuration; accessible via menu or Ctrl+T ([#96](https://github.com/totoshko88/RustConn/issues/96))
    * - **GNOME HIG: tunnel delete confirmation** — deleting a tunnel from the SSH Tunnel Manager now shows an `AdwAlertDialog` confirmation ("Delete Tunnel? — Tunnel "…" will be permanently removed.") with a destructive "Delete" button; previously the tunnel was removed immediately without confirmation
    * - **GNOME HIG: tunnel dialog inline validation** — the Save button in the Add/Edit Tunnel dialog is disabled while the tunnel name is empty, preventing accidental saves of unnamed tunnels; previously the dialog silently refused to save without any visual feedback
    * - **User Guide: SSH Tunnel Manager** — complete section with create/manage workflow, tunnel options table, use case examples, and comparison with per-connection port forwarding
    * - **User Guide: SSH verbose mode** — new section under SSH → Session Options with configuration steps and when-to-use guidance
    * - **User Guide: Expect variable substitution** — documented `${VARIABLE_NAME}` placeholder support in Expect rule responses with multi-step login example
    * - **User Guide: Sidebar width** — added to Settings → Appearance documentation
    * - **User Guide: context menu corrections** — removed non-existent "View Details" entry, fixed "Pin to Favorites"→"Pin / Unpin" to match code, added undocumented "Run Snippet..." and "Start/Stop Recording" entries, clarified Copy/Paste Connection scope (sidebar focus + hamburger menu only)
    * - **User Guide: Ctrl+T shortcut** — added SSH Tunnel Manager shortcut to Keyboard Shortcuts table
    * - All 16 languages (be, cs, da, de, es, fr, it, kk, nl, pl, pt, sk, sv, uk, uz, zh-cn) aligned to 1748 translatable strings with 0 untranslated entries
    * - **Chinese Simplified (zh-cn)** — merged community translation update from GaaChun ([PR #108](https://github.com/totoshko88/RustConn/pull/108)); filled 36 new strings from 0.12.6; 20 fuzzy entries remaining (upstream review pending)

 -- Anton Isaiev <totoshko88@gmail.com>  Thu, 30 Apr 2026 11:04:24 +0000

rustconn (0.12.5-1) unstable; urgency=medium

    * - **Settings dialog overflows after Hoop.dev install** — `hoop version` outputs JSON (`{"version":"1.59.3","git_commit":"...","build_date":"..."}`) which was displayed as-is in the version suffix label, stretching the `AdwToolbarView` to 1331 px and breaking the 700 px settings dialog layout; added a dedicated `hoop` parser that extracts only the `"version"` field
    * - **kubectl version not shown in settings** — `kubectl version --client --short` fails on kubectl ≥ 1.28 (`error: unknown flag: --short`); switched to `kubectl version --client` and parse `Client Version: vX.Y.Z`
    * - **Tray icon SIGSEGV on restart** — `connect_shutdown` did not drop the `TrayManager`, so D-Bus callbacks could reference already-finalized GObjects during GTK teardown; now explicitly drops the tray manager in the shutdown handler before flushing persistence
    * - **Teleport CLI download URL 404** — pinned version 18.7.6 did not exist on the CDN; corrected to 18.7.5
    * - Hoop.dev CLI 1.56.1 → 1.59.3
    * - Teleport CLI 18.7.6 → 18.7.5 (URL fix)

 -- Anton Isaiev <totoshko88@gmail.com>  Wed, 29 Apr 2026 14:21:06 +0000

rustconn (0.12.4-1) unstable; urgency=medium

    * - **"Copy Password" from context menu resolves from vault** — previously only worked with cached credentials (required connecting first); now falls back to `resolve_credentials_gtk` to fetch the password directly from the configured secret backend (KeePass, Bitwarden, 1Password, etc.) when no cached credentials are available
    * - **Removed dead `mosh.rs` dialog module** — standalone MOSH options panel was never wired into the connection dialog; MOSH settings are already integrated into the SSH tab via `ssh::create_ssh_options()`
    * - **Removed legacy `connect_password_load_button` wrapper** — unused passthrough method in `ConnectionDialog` that delegated to `connect_password_load_button_with_groups` with empty groups; all callers already use the `_with_groups` variant directly
    * - **Import button in Cloud Sync settings** — "Available in Cloud" section now shows an "Import" button on each unimported `.rcn` file; clicking it creates an Import group and triggers an immediate sync, importing all connections from the file
    * - rpassword 7.4.0 → 7.5.0
    * - rustls 0.23.39 → 0.23.40

 -- Anton Isaiev <totoshko88@gmail.com>  Tue, 28 Apr 2026 21:43:10 +0000

rustconn (0.12.4-1) unstable; urgency=medium

    * - **"Copy Password" from context menu resolves from vault** — previously only worked with cached credentials (required connecting first); now falls back to `resolve_credentials_gtk` to fetch the password directly from the configured secret backend (KeePass, Bitwarden, 1Password, etc.) when no cached credentials are available
    * - **Removed dead `mosh.rs` dialog module** — standalone MOSH options panel was never wired into the connection dialog; MOSH settings are already integrated into the SSH tab via `ssh::create_ssh_options()`
    * - **Removed legacy `connect_password_load_button` wrapper** — unused passthrough method in `ConnectionDialog` that delegated to `connect_password_load_button_with_groups` with empty groups; all callers already use the `_with_groups` variant directly
    * - **Import button in Cloud Sync settings** — "Available in Cloud" section now shows an "Import" button on each unimported `.rcn` file; clicking it creates an Import group and triggers an immediate sync, importing all connections from the file
    * - rpassword 7.4.0 → 7.5.0
    * - rustls 0.23.39 → 0.23.40

 -- Anton Isaiev <totoshko88@gmail.com>  Tue, 28 Apr 2026 21:28:34 +0000

rustconn (0.12.3-1) unstable; urgency=medium

  * [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

 -- Anton Isaiev <totoshko88@gmail.com>  Tue, 28 Apr 2026 12:00:00 +0200

rustconn (0.12.2-1) unstable; urgency=medium

  * [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

 -- Anton Isaiev <totoshko88@gmail.com>  Sun, 26 Apr 2026 12:00:00 +0200

rustconn (0.12.1-1) unstable; urgency=medium

  * [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

 -- Anton Isaiev <totoshko88@gmail.com>  Sat, 25 Apr 2026 12:00:00 +0000

rustconn (0.12.0-1) unstable; urgency=medium

  * [Added] Cloud Sync — synchronize connections via shared cloud directory
    (Google Drive, Syncthing, Nextcloud, Dropbox, USB)
  * [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

 -- Anton Isaiev <totoshko88@gmail.com>  Fri, 25 Apr 2026 12:00:00 +0300

rustconn (0.11.7-1) unstable; urgency=medium

  * [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
  * [Docs] User Guide restructured into 13 logically grouped sections;
    CLI Reference and Zero Trust Providers extracted to dedicated documents

 -- Anton Isaiev <totoshko88@gmail.com>  Thu, 23 Apr 2026 12:00:00 +0000

rustconn (0.11.6-1) unstable; urgency=medium

  * [Added] Terminal scrollbar — VTE terminals now display a vertical
    scrollbar; can be toggled in Settings → Terminal → Scrolling (#95)
  * [Added] "Execute Snippet…" in terminal right-click context menu (#95)
  * [Fixed] Sidebar status stays gray after reconnect — now shows
    "connecting" immediately when Reconnect is clicked (#96)
  * [Fixed] Context menu intermittently fails to open on right-click —
    reverted popover autohide to avoid GTK4 pointer grab conflict (#87)

 -- Anton Isaiev <totoshko88@gmail.com>  Thu, 23 Apr 2026 12:00:00 +0200

rustconn (0.11.5-1) unstable; urgency=medium

  * [Added] Simplified Chinese (zh-cn) translation — complete translation
    of all 1573 UI strings; contributed by GaaChun (PR #94)
  * [Added] User Guide: libvirt NSS hostname resolution troubleshooting
    section for VM connections via RDP/VNC (#91)
  * [Dependencies] picky-asn1-der 0.5.6, rustls-webpki 0.103.13,
    winnow 1.0.2, kubectl 1.35.4

 -- Anton Isaiev <totoshko88@gmail.com>  Wed, 22 Apr 2026 12:00:00 +0200

rustconn (0.11.4-1) unstable; urgency=medium

  * [Fixed] Sidebar flashes red during SSH connection — connecting via
    SSH (and other protocols with port check) briefly showed "failed"
    (red) status before switching to "connected" (green); introduced
    ConnectionStartResult enum to distinguish async port check in
    progress (Pending) from real failures (Failed); the sidebar now
    stays yellow ("connecting") until the port check completes
  * [Fixed] Context menu stays open when dialog opens — the sidebar
    context menu remained visible when opening a dialog via keyboard
    shortcut or toolbar button; switched popover to autohide (#93)
  * [Fixed] Sidebar stays "connecting" after cancelling password
    dialog — closing the VNC or RDP password prompt without entering
    credentials left the sidebar status stuck on yellow
  * [Fixed] VNC/RDP with "None" password source prompts immediately —
    first connection attempt now uses an empty password; the password
    dialog is only shown on retry if authentication fails
  * [Updated] Teleport CLI 18.7.3 → 18.7.4
  * [Updated] 1Password CLI 2.33.1 → 2.34.0

 -- Anton Isaiev <totoshko88@gmail.com>  Tue, 21 Apr 2026 18:00:00 +0200

rustconn (0.11.3-1) unstable; urgency=medium

  * [Added] CLI: --jump-host flag for add and update — set a jump host
    (SSH bastion) when creating or updating SSH, SFTP, and RDP connections
    via CLI; accepts connection name or UUID; validates that the referenced
    connection exists 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()

 -- Anton Isaiev <totoshko88@gmail.com>  Mon, 20 Apr 2026 18:00:00 +0200

rustconn (0.11.2-1) unstable; urgency=medium

  * [Fixed] Reconnect reuses existing tab for all VTE protocols — SSH,
    Telnet, Serial, Kubernetes, ZeroTrust, MOSH; tab position, group,
    and split view state fully preserved (#89)
  * [Fixed] RDP port check skipped with jump host
  * [Fixed] Hoop.dev CLI download — switched to 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 default
  * [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

 -- Anton Isaiev <totoshko88@gmail.com>  Mon, 20 Apr 2026 12:00:00 +0200

rustconn (0.11.1-1) unstable; urgency=medium

  * [Fixed] Reconnect preserves tab position — new tab opens at the
    same position instead of appending to the end (#89)
  * [Fixed] Context menu handoff between items — right-clicking a
    second item while a menu is open now works correctly (#87)
  * [Fixed] Stale highlight on right-click — residual selection
    highlights no longer persist on previously right-clicked rows
  * [Fixed] Context menu requires single right-click — switching
    between items now works with one click instead of two
  * [Improved] Context menu layout follows GNOME HIG — items reordered
    to match GNOME Files conventions (primary action at top, properties
    before delete at bottom)
  * [Added] SSH Keep-Alive settings — dedicated spin rows for
    ServerAliveInterval and ServerAliveCountMax (#88)

 -- Anton Isaiev <totoshko88@gmail.com>  Sat, 19 Apr 2026 00:00:00 +0000

rustconn (0.11.0-1) unstable; urgency=medium

  * [Added] General tab migrated to adw:: widgets — PreferencesGroup,
    EntryRow, SpinRow, ComboRow, PasswordEntryRow; 30-element tuple
    replaced with BasicTabWidgets struct (TASK-004)
  * [Added] Legacy XOR encryption migration warning — toast notification
    shows count of migrated credentials; XOR removed in v0.12 (TASK-006)
  * [Added] State access helpers — with_state(), try_with_state(),
    with_state_mut(), try_with_state_mut() (TASK-008)
  * [Improved] RDP connection state structured — RdpConnectionContext
    struct replaces 13-parameter function signature (TASK-007)
  * [Security] Automation task validation hardened — property tests for
    shell metacharacters; sensitive env vars cleared before task
    execution (TASK-005)
  * [Fixed] Split view tab colors preserved across Settings (TASK-022)
  * [Fixed] Group Operations mode — compact pill icon buttons with
    animated Revealer instead of text buttons that broke sidebar layout
  * [Fixed] Split view context menu Copy/Paste/Select All now works —
    action group moved from TabView container to VTE terminal widget
  * [Fixed] Eliminated gdk_clipboard_write_async assertion — replaced all
    copy_clipboard_format calls with text_selected + clipboard().set_text
  * [Security] Lazy Bitwarden credential decryption — only when
    Bitwarden is the preferred backend
  * [Dependencies] libbz2-rs-sys 0.2.3, rand 0.8.6, rtoolbox 0.0.5

 -- Anton Isaiev <totoshko88@gmail.com>  Sat, 18 Apr 2026 23:00:00 +0200

rustconn (0.10.22-1) unstable; urgency=medium

  * [Fixed] Terminal context menu Copy/Paste now works — use VTE native
    context menu API instead of custom GestureClick popover (#84)
  * [Fixed] No more gdk_clipboard_write_async assertion on Copy
  * [Fixed] Blank menus on X11 (MATE, XFCE) — auto-detect X11 and fall
    back to Cairo GSK renderer via process re-exec (#85)
  * [Improved] Context menu labels localized (Copy, Paste, Select All)
  * [Dependencies] pxfm 0.1.28 → 0.1.29, tokio 1.52.0 → 1.52.1,
    uuid 1.23.0 → 1.23.1

 -- Anton Isaiev <totoshko88@gmail.com>  Thu, 17 Apr 2026 22:00:00 +0200

rustconn (0.10.21-1) unstable; urgency=medium

  * [Security] Machine key encryption hardened — removed predictable
    hostname+username fallback; /etc/machine-id uses HKDF-SHA256;
    .machine-key created with 0600 permissions (#83)
  * [Fixed] Groups expand/collapse on double-click entire row (#83)
  * [Fixed] Ctrl+K no longer hijacks terminal — only Ctrl+F for search (#83)
  * [Fixed] Right-click context menu works on all SSH profiles (#83)
  * [Fixed] Filter bar opens below search box, not above (#83)
  * [Improved] Sidebar accessible labels localized for screen readers

 -- Anton Isaiev <totoshko88@gmail.com>  Tue, 15 Apr 2026 22:00:00 +0200

rustconn (0.10.20-1) unstable; urgency=medium

  * Tab group chooser dialog with existing group selection
  * Close All in Group context menu action
  * Group name shown as tab title prefix instead of color indicator
  * Group name in tab tooltip
  * Tab group and split view colors no longer conflict
  * Welcome screen icon fix for Remote host monitoring
  * Updated FreeRDP 3.24.1 → 3.24.2 (security fixes)
  * Updated VTE 0.80.0 → 0.80.3

 -- Anton Isaiev <totoshko88@gmail.com>  Tue, 14 Apr 2026 22:00:00 +0200

rustconn (0.10.18-1) unstable; urgency=medium

  * [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)

 -- Anton Isaiev <totoshko88@gmail.com>  Sun, 13 Apr 2026 12:00:00 +0000

rustconn (0.10.17-1) unstable; urgency=medium

  * [Fixed] clear command not working in Flatpak SSH sessions — Flatpak
    sandbox inherits TERM=dumb from host; now 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; now runs expansion synchronously
    then restores scroll in a chained callback
  * [Fixed] Sorting collapsed all expanded groups — sort_connections() and
    sort_recent() now preserve expanded group state

 -- Anton Isaiev <totoshko88@gmail.com>  Sun, 12 Apr 2026 12:00:00 +0000

rustconn (0.10.16-1) unstable; urgency=medium

  * [Fixed] Sidebar context menu actions still not working — PopoverMenu
    cannot resolve win.* actions inside ListView/TreeExpander; replaced with
    plain Popover + Button widgets that directly call activate_action (#75)

 -- Anton Isaiev <totoshko88@gmail.com>  Fri, 10 Apr 2026 20:00:00 +0000

rustconn (0.10.15-1) unstable; urgency=medium

  * [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

 -- Anton Isaiev <totoshko88@gmail.com>  Fri, 10 Apr 2026 12:00:00 +0000

rustconn (0.10.13-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Tue, 08 Apr 2026 12:00:00 +0000

rustconn (0.10.12-1) unstable; urgency=medium

  * [Security] VNC password stored as SecretString
  * [Security] VNC pixel buffer max resolution guard (16384x16384)
  * [Improved] RDP 4K frame conversion zero-copy (Cow<[u8]>)
  * [Improved] Sidebar search highlight regex cached
  * [Improved] Log sanitization custom patterns pre-compiled
  * [Improved] Log sanitization redundant to_lowercase() removed
  * [Dead code] Removed wayland_surface.rs (~1050 lines)
  * [Dead code] Removed TracingOutput::OpenTelemetry variant
  * [Dead code] Removed RDPDR FileLock struct and notify_directory_change()
  * [Dead code] Removed commented-out code
  * [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

 -- Anton Isaiev <totoshko88@gmail.com>  Mon, 07 Apr 2026 12:00:00 +0000

rustconn (0.10.11-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Sat, 04 Apr 2026 18:00:00 +0000

rustconn (0.10.10-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Sat, 04 Apr 2026 12:00:00 +0000

rustconn (0.10.9-1) unstable; urgency=medium

  * 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)

 -- Anton Isaiev <totoshko88@gmail.com>  Wed, 02 Apr 2026 12:00:00 +0000

rustconn (0.10.8-1) unstable; urgency=medium

  * See CHANGELOG.md for full release notes

 -- Anton Isaiev <totoshko88@gmail.com>  Thu, 27 Mar 2026 12:00:00 +0000

rustconn (0.10.7-1) unstable; urgency=medium

  * See CHANGELOG.md for full release notes

 -- Anton Isaiev <totoshko88@gmail.com>  Wed, 26 Mar 2026 12:00:00 +0000

rustconn (0.10.6-1) unstable; urgency=medium

  * Fixed Passbolt CLI integration broken with CLI 0.4.2 — serde
    deserialization failed on lowercase JSON fields returned by
    passbolt CLI 0.4.2; added rename attributes for all 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

 -- Anton Isaiev <totoshko88@gmail.com>  Tue, 24 Mar 2026 12:00:00 +0200

rustconn (0.10.5-1) unstable; urgency=medium

  * Fixed KeePassXC CLI integration — database password not passed to
    keepassxc-cli in vault write/rename/delete/copy operations (#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

 -- Anton Isaiev <totoshko88@gmail.com>  Tue, 24 Mar 2026 12:00:00 +0200

rustconn (0.10.4-1) unstable; urgency=medium

  * Flatpak: Zero Trust CLIs crash on read-only filesystem fixed
  * 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
  * Dependencies: moka 0.12.15, yuv 0.8.12
  * CLI downloads: Tailscale 1.94.2 to 1.96.2
  * Libvirt daemon import via virsh (#63)

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Thu, 20 Mar 2026 12:00:00 +0200

rustconn (0.10.1-1) unstable; urgency=medium

  * 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 to 50
  * Dependencies: euclid 0.22.14, toml 1.0.7, zerocopy 0.8.47, zip 8.3

 -- Anton Isaiev <totoshko88@gmail.com>  Wed, 18 Mar 2026 12:00:00 +0200

rustconn (0.10.0-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Mon, 16 Mar 2026 12:00:00 +0200

rustconn (0.9.15-1) unstable; urgency=medium

  * Added "Show Local Cursor" option for embedded RDP, VNC, and SPICE
    viewers — hides local OS cursor to eliminate double cursor effect;
    enabled by default for backward compatibility (#51)
  * Fixed VNC session ignores Display Mode setting — Fullscreen and
    External modes now work correctly (#50)
  * Fixed SSH port forwarding via UI broken — window/protocols.rs built
    SSH args manually, skipping port_forwards, X11 forwarding, compression,
    and ControlPersist from SshConfig; refactored to delegate to
    SshConfig::build_command_args() (#49)
  * Fixed SSH custom options -o prefix not stripped — parse_custom_options()
    now silently strips the -o prefix from pasted CLI snippets (#49)
  * Fixed SSH custom options placeholder misleading — updated dialog
    placeholder and subtitle to clarify correct Key=Value format (#49)

 -- Anton Isaiev <totoshko88@gmail.com>  Wed, 11 Mar 2026 18:00:00 +0200

rustconn (0.9.14-1) unstable; urgency=medium

  * Fixed SSH connection fails in Flatpak on KDE — host SSH_ASKPASS
    environment variable (e.g. ksshaskpass) stripped from VTE child
    environment since RustConn uses native VTE password injection (#48)
  * Fixed header bar buttons clipped when sidebar + monitoring enabled —
    added ellipsize to variable-length labels and overflow hidden on
    monitoring bar container (#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

 -- Anton Isaiev <totoshko88@gmail.com>  Wed, 11 Mar 2026 12:00:00 +0200

rustconn (0.9.13-1) unstable; urgency=medium

  * Fixed RDP handshake timeout on heavily loaded servers — Phase 3
    (TLS upgrade + NLA + connect_finalize) now wrapped in tokio timeout
    with 2× configured timeout (minimum 60s)
  * Fixed ARM64 binary download mismatch — download_url_for_arch() no longer
    falls back to x86_64 URL; get_available_components() filters by arch
  * Added RDP Quick Actions menu — dropdown on embedded RDP toolbar with
    6 Windows admin shortcuts (Task Manager, Settings, PowerShell, CMD,
    Event Viewer, Services) via scancode key sequences

 -- Anton Isaiev <totoshko88@gmail.com>  Mon, 09 Mar 2026 12:00:00 +0200

rustconn (0.9.12-1) unstable; urgency=medium

  * Security: Removed sshpass dependency; SSH password auth now uses native
    VTE injection and SSH_ASKPASS mechanism
  * Security: Bitwarden master password zeroized on drop (Zeroizing<String>)
  * 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 total)
  * Removed: sshpass from all packaging manifests

 -- Anton Isaiev <totoshko88@gmail.com>  Sun, 08 Mar 2026 12:00:00 +0200

rustconn (0.9.11-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Sat, 07 Mar 2026 12:00:00 +0200

rustconn (0.9.10-1) unstable; urgency=medium

  * Fixed Remmina import in Flatpak — now checks host path
    ~/.local/share/remmina/ (#44)
  * Fixed connection dialog Basic tab clipped by nested ScrolledWindow
  * Fixed missing minimum sizes on Import, Export, and Shortcuts dialogs
  * Connection dialog default height increased from 500→670px
  * Dependencies: serde_yaml_ng 0.9→0.10, cfg-expr 0.20.6→0.20.7,
    inotify 0.11.0→0.11.1, socket2 0.6.2→0.6.3, toml 1.0.4→1.0.6
  * CLI downloads: Teleport 18.7.1→18.7.2

 -- Anton Isaiev <totoshko88@gmail.com>  Sat, 07 Mar 2026 12:00:00 +0200

rustconn (0.9.9-1) unstable; urgency=medium

  * Fixed sshpass not installed in Flatpak (#42)
  * Fixed jump host connections fail port check — skipped when jump_host_id
    or proxy_jump is configured (#41)
  * Fixed jump host dropdown hard to use — added host address to labels
    and enabled search filtering
  * Fixed jump host monitoring fails — SSH commands now include -J jump
    host chain for metrics collection through bastion hosts (#41)
  * Fixed jump host false positive connection status — SSH status detection
    checks terminal text for failure patterns before marking connected (#41)
  * Dependencies: Bitwarden CLI 2026.1.0→2026.2.0, uuid 1.21.0→1.22.0,
    winnow 0.7.14→0.7.15

 -- Anton Isaiev <totoshko88@gmail.com>  Fri, 06 Mar 2026 12:00:00 +0200

rustconn (0.9.8-1) unstable; urgency=medium

  * Security: RDP password no longer exposed on command line (uses /from-stdin)
  * Fixed SSH connection status not turning green (VTE cursor axis + async port check)
  * Fixed automation cursor tracking, RDP keyboard duplication, username placeholder
  * Added protocol dialog improvements for SSH, RDP, VNC, SPICE, Serial, K8s, Telnet, Zero Trust
  * Added SFTP mc split view, context menu "New Connection", granular logging options
  * Connection dialog and embedded RDP decomposed into focused submodules

 -- Anton Isaiev <totoshko88@gmail.com>  Wed, 05 Mar 2026 12:00:00 +0200

rustconn (0.9.7-1) unstable; urgency=medium

  * 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 stored in
    vault were never restored when reopening Variables dialog or
    substituting ${VAR} in connections; added resolve_global_variables()
  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Wed, 04 Mar 2026 12:00:00 +0200

rustconn (0.9.6-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Mon, 02 Mar 2026 12:00:00 +0200

rustconn (0.9.5-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Sun, 01 Mar 2026 18:00:00 +0200

rustconn (0.9.4-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Sun, 01 Mar 2026 12:00:00 +0200

rustconn (0.9.3-1) unstable; urgency=medium

  * Added Waypipe Support — Wayland application forwarding for SSH
    connections via waypipe; auto-detected on Wayland sessions; per-connection
    toggle; graceful fallback to direct SSH (#36)
  * Added IronRDP Clipboard Integration — Bidirectional clipboard sync
    between local desktop and remote RDP session via cliprdr channel;
    feedback loop prevention via suppression flag
  * Fixed missing icons on KDE and non-GNOME desktops — replaced non-standard
    icon names with freedesktop equivalents; forced Adwaita icon theme;
    unified protocol icons via icons.rs (#35)
  * Fixed Serial/Kubernetes connection creation — no longer require host/port
    validation
  * Fixed Serial/Kubernetes missing client toast — shows user-friendly toast
    when picocom or kubectl is not installed
  * Fixed libsecret password storage panic — debug_assert crash on non-UUID
    lookup keys (#34)
  * Fixed libsecret password retrieval — is_available() check always returned
    false because secret-tool exits with code 2 without args
  * Fixed VNC/RDP identical icons — VNC now uses video-joined-displays-symbolic
  * Fixed SFTP via mc opens root instead of home — mc FISH VFS URI now
    includes /~ suffix; mc launched via sh -c for correct terminal sizing
  * Fixed SSH agent not inherited by VTE terminals — spawn_command now injects
    SSH_AUTH_SOCK from OnceLock into VTE-spawned processes
  * Added waypipe to Settings Clients detection tab
  * Dependencies: deflate64 0.1.10→0.1.11, dispatch2 0.3.0→0.3.1,
    objc2 0.6.3→0.6.4, zerocopy 0.8.39→0.8.40

 -- Anton Isaiev <totoshko88@gmail.com>  Fri, 27 Feb 2026 14:00:00 +0200

rustconn (0.9.2-1) unstable; urgency=medium

  * Custom Icons — set emoji/unicode or GTK icon names on connections
    and groups (#23)
  * Remote Monitoring — MobaXterm-style monitoring bar below SSH/Telnet/K8s
    terminals showing CPU, memory, disk, and network usage (#26)
  * Fixed new connections and groups appending to end of list instead
    of jumping to position 0
  * 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 — bw command path now resolved
    dynamically instead of hardcoded (#28)
  * Added Bitwarden setup documentation (docs/BITWARDEN_SETUP.md)
  * 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,
    js-sys 0.3.89→0.3.90, wasm-bindgen 0.2.112→0.2.113

 -- Anton Isaiev <totoshko88@gmail.com>  Thu, 26 Feb 2026 12:00:00 +0200

rustconn (0.9.1-1) unstable; urgency=medium

  * Command Palette — VS Code-style quick launcher (Ctrl+P / Ctrl+Shift+P)
    with fuzzy search for connections and prefix modes for commands, tags, groups
  * Favorites / Pinning — pin connections to a dedicated sidebar section
  * Pass (passwordstore.org) secret backend — GPG-encrypted credential storage
    via pass CLI with Settings UI and CLI support (#32)
  * Tab coloring by protocol — optional colored indicators on terminal tabs
  * Snippet timestamps — created_at and updated_at fields with backward compat
  * Tab grouping — right-click context menu to assign named groups with colors
  * Custom Keybindings — fully customizable shortcuts via Settings → Keybindings
    with 30+ actions, Record button, per-shortcut Reset, and Reset All
  * Fixed Command Palette not dismissible via Escape or click-outside
  * Fixed Favorites group not updating immediately on pin/unpin
  * Fixed KDBX group visibility regression when loading saved backend preference
  * Improved i18n coverage — connection dialog tabs and all content strings
    now translatable across all 14 languages

 -- Anton Isaiev <totoshko88@gmail.com>  Mon, 24 Feb 2026 12:00:00 +0200

rustconn (0.9.0-1) unstable; urgency=medium

  * Ukrainian translation reviewed by Mykola Zubkov — 674 translations
    revised for accuracy and modern Ukrainian orthography

 -- Anton Isaiev <totoshko88@gmail.com>  Sat, 21 Feb 2026 12:00:00 +0200

rustconn (0.8.9-1) unstable; urgency=medium

  * SSH port forwarding — Local (-L), remote (-R), and dynamic SOCKS (-D)
    port forwarding rules per connection (#22)
  * Deferred secret backend initialization — Bitwarden vault unlock and KDBX
    password decryption run asynchronously after window presentation,
    eliminating 1–3 second startup delay
  * Security: input validation hardening across all protocols — custom_args,
    device paths, shell paths, hostnames, proxy URLs, shared folder names
    validated against injection attacks
  * Security: SSH config export blocks dangerous directives (ProxyCommand, etc.)
  * 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 — NLA
    auto-disabled when credentials incomplete (#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)

 -- Anton Isaiev <totoshko88@gmail.com>  Fri, 20 Feb 2026 12:00:00 +0200

rustconn (0.8.8-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Wed, 18 Feb 2026 12:00:00 +0200

rustconn (0.8.7-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Mon, 17 Feb 2026 12:00:00 +0200

rustconn (0.8.6-1) unstable; urgency=medium

  * Version bump to 0.8.6
  * Fixed Embedded RDP keyboard layout:
    - Fixed incorrect key mapping for non-US keyboard layouts (e.g. German QWERTZ)
      in IronRDP embedded client (#15)

 -- Anton Isaiev <totoshko88@gmail.com>  Mon, 16 Feb 2026 12:00:00 +0200

rustconn (0.8.5-1) unstable; urgency=medium

  * Version bump to 0.8.5
  * Added Kubernetes Protocol (#14):
    - Shell access to Kubernetes pods via kubectl exec -it
    - Two modes: exec into existing pod, or launch temporary busybox pod
    - KubernetesConfig: kubeconfig, context, namespace, pod, container, shell
    - GUI: Connection dialog Kubernetes tab, sidebar K8s quick filter
    - CLI: kubernetes subcommand with full parameter support
    - kubectl available as Flatpak downloadable component
    - Property tests updated with Kubernetes coverage
  * Added Serial Console Protocol (#11):
    - Full serial console support via picocom (GUI, CLI, Flatpak, Snap)
    - SerialConfig: device path, baud rate (9600-921600), data/stop bits,
      parity, flow control
    - 13 serial-specific property tests
  * Added SFTP File Browser (#10):
    - "Open SFTP" in sidebar context menu and SSH session toolbar
    - Opens system file manager via portal (Flatpak/Snap/native)
    - "SFTP via mc" option with Midnight Commander FISH VFS
    - Standalone SFTP connection type reusing SSH config
    - CLI: sftp subcommand (--cli, --mc, default opens file manager)
  * Added Responsive / Adaptive UI (#9):
    - All 17+ dialogs: reduced sizes, minimum sizes, all resizable
    - adw::Clamp (max 600px) on 7 list-style dialogs
    - Dashboard and Active Sessions upgraded to adw::Window
    - Main window breakpoint 600sp: hides split view buttons
  * Added Terminal Rich Search (#7):
    - Regex, Highlight All, case-sensitive toggles, wrap-around navigation
    - Keyboard shortcut: Ctrl+Shift+F
    - Session log timestamps: [HH:MM:SS] prepended to log lines
  * Changed: Session Logging moved from Terminal to Logging settings tab

 -- Anton Isaiev <totoshko88@gmail.com>  Sun, 15 Feb 2026 12:00:00 +0200

rustconn (0.8.4-1) unstable; urgency=medium

  * Version bump to 0.8.4
  * Added FIDO2/SecurityKey SSH authentication:
    - New SshAuthMethod::SecurityKey variant for FIDO2 hardware key auth
    - "Security Key (FIDO2)" option in connection and template dialogs
    - Exports map SecurityKey to publickey (Asbru) or ssh_auth=2 (Remmina)
    - All property test strategies updated with SecurityKey coverage
  * Added CLI auth-method support:
    - --auth-method flag for add and update commands
    - show command displays SSH auth method
    - update command supports --key for SSH key path changes
  * Fixed CLI version check timeout:
    - Increased VERSION_CHECK_TIMEOUT from 3 to 6 seconds
    - Azure CLI loads Python runtime and takes ~3.3s
  * Fixed WoL MAC Entry Disabled on Edit:
    - WoL settings fields remained disabled when editing existing connection
    - Removed per-widget sensitivity calls; wol_settings_group manages this
  * Refactored ConnectionManager watch channels:
    - Replaced 3x Arc<Mutex<Option<Vec<T>>>> with tokio::sync::watch channels
    - Extracted generic debounce_worker() async function
    - Struct fields reduced from 8 persistence-related to 3
  * Refactored EmbeddingError 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)
  * Refactored State access error thiserror derive
  * Refactored workspace clippy suppression audit (~80 redundant annotations removed)
  * Refactored Protocol trait with capabilities() and build_command() methods
  * Updated dependencies: resvg 0.46->0.47, usvg 0.46->0.47,
    tiny-skia 0.11->0.12, tiny-skia-path 0.11->0.12

 -- Anton Isaiev <totoshko88@gmail.com>  Sat, 14 Feb 2026 12:00:00 +0200

rustconn (0.8.3-1) unstable; urgency=medium

  * Version bump to 0.8.3
  * Added Wake On LAN from GUI (#8):
    - Right-click connection → "Wake On LAN" sends packet using configured MAC
    - Auto-WoL before connecting (fire-and-forget, does not block connection)
    - Standalone WoL dialog (Menu → Tools → "Wake On LAN...")
    - Retry with 3 packets at 500 ms intervals for reliability
    - Non-blocking: all sends run on background threads
    - Toast notifications for success/failure
  * Fixed Flatpak libsecret build:
    - Disabled bash_completion in libsecret module (EROFS in sandbox)
    - Renamed gcrypt option to crypto for libsecret 0.21.7
  * Fixed Thread Safety:
    - Removed std::env::set_var from FreeRDP spawned thread (data race since Rust 1.66+)
    - Env vars already set per-process via Command::env() in launch_freerdp()
  * Fixed Flatpak Machine Key:
    - get_machine_key() generates app-specific key in $XDG_DATA_HOME/rustconn/.machine-key
    - /etc/machine-id (inaccessible in Flatpak) is now a fallback
  * Fixed Variables Dialog Panic:
    - Replaced expect() with if-let pattern and tracing::warn! fallback
  * Fixed Keyring secret-tool Check:
    - keyring::store() checks is_secret_tool_available() before storing
    - Returns BackendUnavailable with user-friendly message if missing
  * Fixed Flatpak CLI Paths:
    - Secret backend CLI detection no longer adds /snap/bin/ and /usr/local/bin/
      paths inside Flatpak; checks get_cli_install_dir() instead
  * Fixed Settings Dialog Performance:
    - Moved CLI detection and keyring auto-load to background threads
    - Dialog opens instantly with "Detecting..." placeholders (~10s → instant)
  * Fixed Settings Clients Tab Performance:
    - Added 3-second timeout to all CLI version checks
    - Parallelized all CLI detections via std::thread::scope (~15s → ~3s)
  * Fixed Settings Dialog Instant Display:
    - Moved dialog.present() before load_settings() for immediate visibility
  * Fixed Settings Dialog Visual Render Blocking:
    - Replaced glib async pattern with std::thread::spawn + mpsc + idle_add_local
    - Dialog renders instantly while CLI detection runs in parallel

 -- Anton Isaiev <totoshko88@gmail.com>  Fri, 13 Feb 2026 12:00:00 +0200

rustconn (0.8.2-1) unstable; urgency=medium

  * Version bump to 0.8.2
  * Added Shared Keyring Module:
    - New rustconn-core::secret::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, all backends with "Save to system keyring" enabled
      automatically restore credentials from keyring
  * Added secret-tool Availability Check:
    - Toggling "Save to system keyring" checks if secret-tool is installed;
      if missing, unchecks checkbox and shows warning
  * Added Passbolt Server URL Setting and UI:
    - Server URL entry and "Open Vault" button in Secrets tab
    - Auto-fills from go-passbolt-cli config on startup
  * Added Unified Credential Save Options:
    - All secret backends now offer consistent "Save password" and
      "Save to system keyring" options with mutual exclusion
  * Added new SecretSettings fields for unified credential persistence
  * Fixed Secret Lookup Key Mismatch:
    - libsecret store_unified() now uses correct key format
    - Bitwarden/1Password/Passbolt resolve functions try multiple key formats
  * Fixed Passbolt Server Address Always None:
    - Reads server address from go-passbolt-cli config
  * Fixed Passbolt "Open Password Vault" URL:
    - Opens configured server URL instead of hardcoded address
  * Fixed Variable Secrets Ignoring Preferred Backend:
    - save/load_variable_to/from_vault() now respect preferred_backend setting
  * Fixed Bitwarden Folder Parsing Crash:
    - BitwardenFolder.id now accepts null values
  * Fixed Bitwarden Vault Auto-Unlock:
    - Variable save/load automatically unlocks vault using saved credentials
  * Improved workspace dependency consistency:
    - Moved regex in rustconn crate to workspace dependency
  * Removed unused picky pin from rustconn-core
  * Updated dependencies: clap 4.5.57->4.5.58, clap_builder 4.5.57->4.5.58,
    clap_lex 0.7.7->1.0.0, deranged 0.5.5->0.5.6

 -- Anton Isaiev <totoshko88@gmail.com>  Wed, 11 Feb 2026 14:00:00 +0200

rustconn (0.8.1-1) unstable; urgency=medium

  * Version bump to 0.8.1
  * Added Passbolt Secret Backend (#6):
    - PassboltBackend implementing SecretBackend trait via go-passbolt-cli
    - Store, retrieve, and delete credentials as Passbolt resources
    - CLI detection and version display in Settings → Secrets
    - Requires `passbolt configure` CLI setup before use
  * 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 to retrieve secret values from configured backend
    - 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: replaced stty wrapper with VTE EraseBinding API
  * Fixed split view left panel shrinking on nested splits

 -- Anton Isaiev <totoshko88@gmail.com>  Wed, 11 Feb 2026 12:00:00 +0200

rustconn (0.8.0-1) unstable; urgency=medium

  * 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
  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Tue, 10 Feb 2026 12:00:00 +0200

rustconn (0.7.9-1) unstable; urgency=medium

  * 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
    across all views (sidebar, filter buttons, dialogs, templates)
  * Fixed ZeroTrust sidebar icon: unified to folder-remote-symbolic for all providers

 -- Anton Isaiev <totoshko88@gmail.com>  Mon, 09 Feb 2026 12:00:00 +0200

rustconn (0.7.8-1) unstable; urgency=medium

  * Version bump to 0.7.8
  * Added Remmina password import:
    - Passwords from Remmina keyring are now transferred to the configured
      secret backend (libsecret, KeePassXC, etc.) during import
    - Imported connections use PasswordSource::Keyring for seamless auth
  * Fixed import error swallowing:
    - Replaced 14 unwrap_or_default() calls with proper error propagation
    - Import failures now display user-friendly messages
  * Fixed MobaXterm import double allocation:
    - Removed unnecessary clone on byte buffer during UTF-8 conversion
  * Improved import file size guard:
    - Added 50 MB file size limit to prevent OOM on large files
  * Improved native export/import streaming I/O:
    - to_file() uses BufWriter with serde_json::to_writer_pretty()
    - from_file() uses BufReader with serde_json::from_reader()
    - Version pre-check before full deserialization
  * Added centralized write_export_file() helper with BufWriter
  * Refactored export write consolidation across all exporters
  * Removed redundant TOCTOU path.exists() checks in importers
  * Removed unused imports in Asbru and MobaXterm exporters
  * Updated dependencies: memchr 2.7.6->2.8.0, ryu 1.0.22->1.0.23,
    zerocopy 0.8.38->0.8.39, zmij 1.0.19->1.0.20

 -- Anton Isaiev <totoshko88@gmail.com>  Sun, 08 Feb 2026 12:00:00 +0200

rustconn (0.7.7-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Fri, 07 Feb 2026 12:00:00 +0200

rustconn (0.7.6-1) unstable; urgency=medium

  * Version bump to 0.7.6
  * UI/UX Enhancements - GNOME HIG compliance improvements:
    - Added accessible labels to connection status icons (Connected, Connecting, Connection failed)
    - Added accessible labels to protocol filter buttons in sidebar
    - Increased sidebar minimum width from 180px to 200px per GNOME HIG
    - Added adw::Clamp to connection dialog for adaptive width on wide screens
    - Added CSS status styles (.status-connected, .status-connecting, .status-failed)
    - Toast notifications now use adw::ToastPriority (High for warnings/errors)
    - Added ToastType::icon_name() and ToastType::priority() methods
    - Connection dialog now uses adaptive adw::ViewSwitcherTitle with fallback ViewSwitcherBar
  * Legacy Code Cleanup - Removed unused legacy types from terminal module:
    - Removed TabDisplayMode enum (handled by adw::TabView automatically)
    - Removed TabLabelWidgets struct (managed by adw::TabPage properties)
  * Dialog Widget Builders - Created reusable UI components for dialogs:
    - Moved widgets.rs from dialogs/connection/ to dialogs/ for shared access
    - Added SwitchRowBuilder for adw::SwitchRow creation
    - Builders: CheckboxRowBuilder, EntryRowBuilder, SpinRowBuilder, DropdownRowBuilder, SwitchRowBuilder
  * Protocol Dialogs Refactoring - Applied widget builders across all protocol panels:
    - SSH, RDP, VNC, SPICE dialogs refactored using widget builders
    - Reduces code duplication and ensures consistent GNOME HIG styling
  * Other Dialogs Refactoring - Extended widget builders to non-protocol dialogs:
    - Export dialog: Replaced Frame + Grid with adw::PreferencesGroup, added adw::Clamp
    - Snippet and Cluster dialogs refactored to use widget builders

 -- Anton Isaiev <totoshko88@gmail.com>  Fri, 06 Feb 2026 12:00:00 +0200

rustconn (0.7.5-1) unstable; urgency=medium

  * Version bump to 0.7.5
  * Code Quality Audit - Comprehensive codebase analysis and cleanup:
    - Removed duplicate SSH/VNC/SPICE/ZeroTrust/RDP options code from dialog.rs (~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

 -- Anton Isaiev <totoshko88@gmail.com>  Thu, 06 Feb 2026 12:00:00 +0200

rustconn (0.7.4-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Thu, 05 Feb 2026 12:00:00 +0200

rustconn (0.7.3-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Tue, 03 Feb 2026 12:00:00 +0200

rustconn (0.7.2-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Mon, 03 Feb 2026 12:00:00 +0200

rustconn (0.7.1-1) unstable; urgency=medium

  * Version bump to 0.7.1
  * Undo/Trash Functionality - Safely recover deleted items
  * Group Inheritance - Load Username and Domain from parent Group
  * Debounced Persistence - Changes batched and saved after 2 seconds
  * Refactored Sidebar - Split monolithic sidebar into modular components
  * Refactored Drag & Drop - Strongly typed DragPayload
  * Added Search Highlighting - Visual feedback for search matches
  * Fixed Credential Inheritance from Groups
  * Fixed GTK Widget Parenting warning
  * Fixed Connection History Reconnect

 -- Anton Isaiev <totoshko88@gmail.com>  Sun, 01 Feb 2026 14:00:00 +0200

rustconn (0.7.0-1) unstable; urgency=medium

  * 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 - <GV:VAR> to ${VAR} syntax
  * Added Variable Substitution at Connection Time
  * Dialog Size Unification - Export 750×650, Import 750×800, New Group 450×550

 -- Anton Isaiev <totoshko88@gmail.com>  Sun, 01 Feb 2026 12:00:00 +0200

rustconn (0.6.8-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Thu, 30 Jan 2026 12:00:00 +0200

rustconn (0.6.7-1) unstable; urgency=medium

  * Version bump to 0.6.7

 -- Anton Isaiev <totoshko88@gmail.com>  Thu, 29 Jan 2026 12:00:00 +0200

rustconn (0.6.6-1) unstable; urgency=medium

  * Version bump to 0.6.6

 -- Anton Isaiev <totoshko88@gmail.com>  Tue, 27 Jan 2026 12:00:00 +0200

rustconn (0.6.5-1) unstable; urgency=medium

  * Version bump to 0.6.5

 -- Anton Isaiev <totoshko88@gmail.com>  Sat, 17 Jan 2026 20:00:00 +0200

rustconn (0.6.4-1) unstable; urgency=medium

  * Update to version 0.6.4 - Snap Package Support and RDP/VNC Performance Modes
    - 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

 -- Anton Isaiev <totoshko88@gmail.com>  Fri, 17 Jan 2026 18:00:00 +0200

rustconn (0.6.3-1) unstable; urgency=medium

  * Update to version 0.6.3 - Bitwarden Integration and Secret Backend Improvements
    - 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

 -- Anton Isaiev <totoshko88@gmail.com>  Wed, 15 Jan 2026 18:00:00 +0200

rustconn (0.6.2-1) unstable; urgency=medium

  * Update to version 0.6.2 - MobaXterm Import/Export and UX Improvements
    - 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

 -- Anton Isaiev <totoshko88@gmail.com>  Wed, 15 Jan 2026 12:00:00 +0200

rustconn (0.6.1-1) unstable; urgency=medium

  * Update to version 0.6.1 - Credential Inheritance and Jump Host Support
    - Credential Inheritance from parent groups
    - Jump Host Support for SSH connections
    - Adwaita Empty States migration
    - Group sorting and credentials UI improvements

 -- Anton Isaiev <totoshko88@gmail.com>  Sun, 12 Jan 2026 18:00:00 +0200

rustconn (0.6.0-1) unstable; urgency=medium

  * Update to version 0.6.0 - Code Audit & Cleanup Release
    - Removed check_structs.rs development artifact containing unsafe code
    - Replaced blocking_send() with try_send() in VNC input handlers
    - Replaced unwrap() with safe alternatives in sidebar.rs iterator access
    - Replaced expect() with proper error handling in validation.rs regex
    - Replaced module-level clippy allows with targeted function-level annotations
    - Improved app.rs initialization error handling
    - Updated Cargo.toml license from MIT to GPL-3.0-or-later
    - Updated Cargo.toml authors to Anton Isaiev
    - Added developer_name tag to metainfo.xml for AppStream compatibility
    - Added author and license fields to AppImage packaging
    - Added debian.copyright file to OBS debian packaging
    - Updated dependencies: base64ct, cc, data-encoding, find-msvc-tools, flate2,
      getrandom, libc, toml, zbus, zbus_macros, zbus_names, zmij, zvariant
    - Removed unused cfg_aliases, nix, static_assertions dependencies

 -- Anton Isaiev <totoshko88@gmail.com>  Sun, 12 Jan 2026 12:00:00 +0200

rustconn (0.5.9-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Sat, 11 Jan 2026 12:00:00 +0200

rustconn (0.5.8-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Tue, 07 Jan 2026 20:00:00 +0200

rustconn (0.5.7-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Tue, 07 Jan 2026 18:00:00 +0200

rustconn (0.5.6-1) unstable; urgency=medium

  * Update to version 0.5.6
    - Updated USER_GUIDE.md with complete v0.5.5+ feature documentation
    - Unified dialog widths (Rename, Edit Group dialogs now 750px)
    - Added Security Tips section to Password Generator dialog

 -- Anton Isaiev <totoshko88@gmail.com>  Sun, 04 Jan 2026 12:00:00 +0200

rustconn (0.5.5-1) unstable; urgency=medium

  * 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

 -- Anton Isaiev <totoshko88@gmail.com>  Sat, 03 Jan 2026 12:00:00 +0200

rustconn (0.5.0-1) unstable; urgency=medium

  * 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 using spice-client crate 0.2.0
    - Real-time connection status indicators in sidebar
    - Custom cursors in RDP sessions
    - Full Expect automation engine integration
    - Terminal context menu and keyboard shortcuts
    - Performance: lock-free audio, optimized search, cached tokio runtime
    - Fixed SSH Agent key discovery for all private key formats
    - Fixed system tray menu intermittent issues
    - Updated thiserror from 1.0 to 2.0

 -- Anton Isaiev <totoshko88@gmail.com>  Sat, 27 Dec 2025 12:00:00 +0200

rustconn (0.4.2-1) unstable; urgency=medium

  * Update to version 0.4.2
    - Fixed Asbru-CM import for installed configuration (environments key)
    - Fixed application icon resolution for all installation scenarios
    - Extended icon theme search paths

 -- Anton Isaiev <totoshko88@gmail.com>  Thu, 25 Dec 2025 21:00:00 +0200

rustconn (0.4.1-1) unstable; urgency=medium

  * Update to version 0.4.1
    - IronRDP audio backend (RDPSND) with PCM format support
    - Optional rdp-audio feature for audio playback via cpal
    - Bidirectional clipboard improvements for embedded RDP
    - Updated MSRV to 1.86
    - Updated dependencies: tempfile 3.24, criterion 0.8, cpal 0.17

 -- Anton Isaiev <totoshko88@gmail.com>  Thu, 25 Dec 2025 12:00:00 +0200

rustconn (0.4.0-1) unstable; urgency=medium

  * Update to version 0.4.0
    - Zero Trust: Improved UI by hiding irrelevant fields
    - Upgraded ironrdp to 0.13
    - Refactored rustconn-core
    - Made spice-embedded mandatory

 -- Anton Isaiev <totoshko88@gmail.com>  Tue, 24 Dec 2025 12:00:00 +0200

rustconn (0.3.1-1) unstable; urgency=medium

  * Update to version 0.3.1
    - Code cleanup: fixed all Clippy warnings
    - Applied rustfmt formatting
    - Added Deactivation-Reactivation for RDP sessions
    - Removed sensitive clipboard debug logging

 -- Anton Isaiev <totoshko88@gmail.com>  Mon, 23 Dec 2025 21:00:00 +0200

rustconn (0.3.0-1) unstable; urgency=medium

  * Update to version 0.3.0
    - IronRDP clipboard integration (bidirectional copy/paste)
    - IronRDP shared folders (RDPDR) support
    - RemoteFX codec for better RDP image quality
    - Migrated IronRDP from GitHub to crates.io (v0.11)

 -- Anton Isaiev <totoshko88@gmail.com>  Mon, 23 Dec 2025 18:30:00 +0200

rustconn (0.2.0-1) unstable; urgency=medium

  * Update to version 0.2.0
    - Tree view state persistence (expanded/collapsed folders saved)
    - Native format (.rcn) import/export with proper group hierarchy
    - Fixed RDP embedded mode window sizing
    - Updated dependencies

 -- Anton Isaiev <totoshko88@gmail.com>  Mon, 23 Dec 2024 12:00:00 +0000

rustconn (0.1.0-1) unstable; urgency=medium

  * Initial release
    - GTK4 GUI for managing remote connections
    - SSH support with embedded VTE terminal
    - RDP support via FreeRDP
    - VNC support via TigerVNC
    - SPICE support via virt-viewer
    - Connection groups and tags
    - Import/export (Remmina, Asbru-CM, SSH config, Ansible)
    - Credential backends (libsecret, KeePassXC)
    - Session logging and command snippets

 -- Anton Isaiev <totoshko88@gmail.com>  Sun, 22 Dec 2024 12:00:00 +0000
