What's Changed
Added
- Shared Keyring Module — New
rustconn-core::secret::keyringmodule with genericstore(),lookup(),clear(), andis_secret_tool_available()functions for all backends - Keyring Support for All Secret Backends — System keyring (GNOME Keyring / KDE Wallet) integration for all backends:
- Bitwarden: refactored to use shared keyring module
- 1Password:
store_token_in_keyring()/get_token_from_keyring()/delete_token_from_keyring() - Passbolt:
store_passphrase_in_keyring()/get_passphrase_from_keyring()/delete_passphrase_from_keyring() - KeePassXC:
store_kdbx_password_in_keyring()/get_kdbx_password_from_keyring()/delete_kdbx_password_from_keyring()
- Auto-Load Credentials from Keyring — On settings load, all backends with "Save to system keyring" enabled automatically restore credentials:
- 1Password: loads token and sets
OP_SERVICE_ACCOUNT_TOKENenv var - Passbolt: loads GPG passphrase into entry field
- KeePassXC: loads KDBX password into entry field
- Bitwarden: auto-unlocks vault (existing behavior)
- 1Password: loads token and sets
secret-toolAvailability Check — Toggling "Save to system keyring" for any backend now checks ifsecret-toolis installed; if missing, unchecks the checkbox and shows "Install libsecret-tools for keyring" warning- Flatpak
secret-toolSupport — Addedlibsecret0.21.7 as a Flatpak build module in all manifests (flatpak, local, flathub), providingsecret-toolbinary inside the sandbox for system keyring integration - Passbolt Server URL Setting — New
passbolt_server_urlfield inSecretSettingsfor configuring Passbolt server address - Passbolt UI in Settings — Secrets tab now includes Server URL entry and "Open Vault" button for Passbolt:
- Server URL auto-fills from
go-passbolt-cliconfig on startup - "Open Vault" button opens configured URL in browser
- Server URL auto-fills from
- Unified Credential Save Options — All secret backends now offer consistent "Save password" (encrypted local) and "Save to system keyring" (libsecret/KWallet) options with mutual exclusion:
- KeePassXC: Added "Save to system keyring" checkbox alongside existing "Save password"
- Bitwarden: Added mutual exclusion between "Save password" and "Save to system keyring"
- 1Password: Added Service Account Token entry with "Save token" and "Save to system keyring"
- Passbolt: Added GPG Passphrase entry with "Save passphrase" and "Save to system keyring"
- New
SecretSettingsfields —kdbx_save_to_keyring,onepassword_service_account_token,onepassword_save_to_keyring,passbolt_passphrase,passbolt_save_to_keyringfor unified credential persistence
Fixed
- Secret Lookup Key Mismatch — Fixed credential store/retrieve inconsistency across all secret backends:
- libsecret:
store_unified()now uses"{name} ({protocol})"key format matchingresolve_from_keyringlookup - Bitwarden/1Password/Passbolt: resolve functions now try
rustconn/{name}first (matching store), then UUID fallback, then{name} ({protocol}) - Previously stored credentials were unretrievable because store and retrieve used different lookup keys
- libsecret:
- Passbolt Server Address Always None —
get_passbolt_status()now reads server address from~/.config/go-passbolt-cli/config.jsonvia newread_passbolt_server_address()function - Passbolt "Open Password Vault" URL — Button now opens the configured Passbolt server URL instead of hardcoded
https://passbolt.local; reads URL from Settings or falls back to CLI config - Variable Secrets Ignoring Preferred Backend —
save_variable_to_vault()andload_variable_from_vault()now respectpreferred_backendsetting; previously they always used KeePass/libsecret regardless of configured backend (Bitwarden, 1Password, Passbolt) - Bitwarden Folder Parsing Crash —
BitwardenFolder.idnow acceptsnullvalues from Bitwarden CLI (e.g. "No Folder" system entry); previously causedFailed to parse folderserror - Bitwarden Vault Auto-Unlock — Variable save/load now automatically unlocks Bitwarden vault using saved master password from keyring or encrypted settings; previously required manual
bw unlockorBW_SESSIONenv var
Changed
- Dependencies — Updated:
clap4.5.57→4.5.58,clap_builder4.5.57→4.5.58,clap_lex0.7.7→1.0.0,deranged0.5.5→0.5.6
Removed
- Unused
pickypin — Removedpicky = "=7.0.0-rc.20"version pin fromrustconn-core; cargo resolves the correct version transitively via ironrdp/sspi without an explicit pin
Improved
- Workspace dependency consistency — Moved
regexinrustconncrate from inline"1.11"to{ workspace = true }for unified version management - Description consistency — Unified short description ("Manage remote connections easily") and long description across all packaging metadata, README, Welcome screen, About dialog, Cargo.toml, .desktop, metainfo.xml, and Snap manifest; added missing
telnetandzerotrustkeywords; fixed About dialogdeveloper_namefield to show author name instead of product description
Installation
Debian/Ubuntu
sudo dpkg -i rustconn_0.8.2_amd64.deb
sudo apt-get install -f # Install dependencies if neededFedora
sudo dnf install rustconn-0.8.2-1.fc41.x86_64.rpmAppImage
chmod +x RustConn-0.8.2-x86_64.AppImage
./RustConn-0.8.2-x86_64.AppImageopenSUSE (OBS)
Packages available at: https://build.opensuse.org/package/show/home:totoshko88:rustconn/rustconn
# Tumbleweed
sudo zypper ar https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/openSUSE_Tumbleweed/ rustconn
sudo zypper ref
sudo zypper in rustconn
# Leap 16.0
sudo zypper ar https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/16.0/ rustconn
sudo zypper ref
sudo zypper in rustconn