- default follow_system_theme to true and remove empty theme-name fallback override\n- add backward compatibility for v0.3.11 transfer state values during config load\n- preserve old config files by backing up parse failures instead of silently overwriting them\n- add optional SSH key passphrase input to the new SSH form and persist it in sessions\n- use stored passphrases when loading private keys for SSH and SFTP connections\n- make terminal size sync prefer measured bounds to reduce unused space at the bottom
- Render block elements (U+2580-U+259F), box drawing lines, and powerline characters using precise GPUI vector paths instead of fonts.
- Snap logical coordinates to exact physical pixels using window.scale_factor() to perfectly eliminate SDF anti-aliasing gaps and bleeding.
- Fixes visual seams in terminal UI layouts.
Rationale:
Previously, the terminal renderer generated background highlight rectangles (`LayoutRect`) with a hardcoded width of 1 cell (`cells: 1`) for every character. For full-width CJK characters (which carry the `Flags::WIDE_CHAR` flag and visually span 2 columns), this caused the selection and custom background colors to render across only half of the character's visual width.
This fix correctly interprets the terminal cell flags during layout generation: if a cell possesses `Flags::WIDE_CHAR`, it generates a background rectangle spanning 2 cells (`cells: 2`). As a result, the highlight now matches the exact bounds that the text occupies in the terminal grid, cleanly fixing the partial highlighting of Chinese text.
This commit introduces a robust logging system and optimizes remote metric collection over SSH:
- Logging Infrastructure:
- Replaced ad-hoc `eprintln!` and `println!` with the `tracing` crate.
- Implemented a rolling file appender in `~/.config/ashell/log/` keeping the last 6 minutes of logs.
- Restricted stdout logging to debug builds only, keeping release builds clean.
- SSH Multiplexing & Performance:
- Shared `russh::client::Handle` across tasks using `Arc<Mutex<>>`.
- Replaced the 5-second polling of new SSH connections with `SampleMetrics` over the existing channel.
- Eliminated authentication log spam and vastly improved polling latency.
- Optimized terminal `resize` events to only trigger when dimensions actually change, further reducing UI layout spam and backend load.
- Application & Network Auditing:
- Log window lifecycles (open, close).
- Log UI actions such as session connects and tab closures.
- Detailed connection logs distinguishing between graceful EOFs, network drops, and abrupt closures.
- Granular SFTP tracking including directory navigation, creation, batch uploads/downloads, and online file editing.