What's Changed
Added
- Undo/Trash Functionality - Safely recover deleted items (COMP-FUNC-01):
- Deleted items are moved to Trash and can be restored via "Undo" notification
- Implemented persisted Trash storage for recovery across sessions
- Group Inheritance - Simplify connection configuration (COMP-FUNC-03):
- Added ability to inherit Username and Domain from parent Group
- "Load from Group" buttons auto-fill credential fields from group settings
Changed
- Dependencies - Updated: bytemuck 1.24.0→1.25.0, portable-atomic 1.13.0→1.13.1, slab 0.4.11→0.4.12, zerocopy 0.8.36→0.8.37, zerocopy-derive 0.8.36→0.8.37, zmij 1.0.17→1.0.18
- Persistence Optimization - Implemented debounced persistence for connections and groups (TECH-02):
- Changes are now batched and saved after 2 seconds of inactivity
- Reduces disk I/O during rapid modifications (e.g., drag-and-drop reordering)
- Added
flush_persistenceto ensure data safety on application exit
- Sort Optimization - Improved rendering performance (COMP-FUNC-02):
- Sorting is now skipped when data order hasn't changed, reducing CPU usage
- Optimized
sort_allcalls during UI updates
- Connection History Sorting - History entries now sorted by date descending (newest first)
Fixed
- Credential Inheritance from Groups - Fixed password inheritance not working for connections:
- Connections with
password_source=Inheritnow correctly resolve credentials from parent group's KeePass entry - Added direct KeePass lookup for group credentials in
resolve_credentials_blocking
- Connections with
- GTK Widget Parenting - Fixed
gtk_widget_set_parentassertion failure in split view:set_panel_contentnow checks if widget has parent before callingunparent()
- Connection History Reconnect - Fixed reconnecting from Connection History not opening tab:
- History reconnect now uses
start_connection_with_credential_resolutionfor proper credential handling - Previously showed warning about missing credentials for RDP connections
- History reconnect now uses
- Blocking I/O - Fixed UI freezing during save operations by moving persistence to background tasks (Async Persistence):
- Added global Tokio runtime to main application
- Implemented async save methods in
ConfigManager ConnectionManagernow saves connections and groups in non-blocking background tasks
- Code Quality - Comprehensive code cleanup and optimization:
- Fixed
future_not_sendissues in async persistence layer - Resolved type complexity warnings in
ConnectionManager - Removed dead code and unused imports across sidebar modules
- Enforced
clippypedantic checks for better robustness
- Fixed
Refactored
- Sidebar Module - Decomposed monolithic
sidebar.rsinto focused submodules (TECH-03):search.rs: Encapsulated search logic, predicates, and history managementfilter.rs: centralized protocol filter button creation and state managementview.rs: Isolated UI list item creation, binding, and signal handlingdrag_drop.rs: Prepared structure for drag-and-drop logic separation- Improved compile times and navigation by splitting 2300+ line file
- Drag and Drop Refactoring - Replaced string-based payloads with strongly typed
DragPayloadenum (TECH-04):- Uses
serde_jsonfor robust serialization instead of manual string parsing - Centralized drag logic in
drag_drop.rs - Improved type safety for drag-and-drop operations
- Uses
UI/UX
- Search Highlighting - Added visual feedback for search matches (TECH-05):
- Matched text substrings are now highlighted in bold
- Implemented case-insensitive fuzzier matching with Pango markup
- Improved
Regex-based search logic
Installation
Debian/Ubuntu
sudo dpkg -i rustconn_0.7.1_amd64.deb
sudo apt-get install -f # Install dependencies if neededFedora
sudo dnf install rustconn-0.7.1-1.fc41.x86_64.rpmAppImage
chmod +x RustConn-0.7.1-x86_64.AppImage
./RustConn-0.7.1-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