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.
- Add right-click 'Edit' context menu option for common text formats.
- Automatically download file to a temporary directory and open in default editor.
- Background daemon listens for save events and auto-uploads changes quietly.
- Isolate auto-sync from transfer history UI.
- Clear legacy session config tmp files on application startup.
- Redesign TabBar: remove bottom border and adjust height to a compact 40px.
- Fix UI auto-scrolling: TabBar, Open Session dialog, and Saved Sessions sidebar now accurately scroll selected items into view.
- Fix layout bounds for scrollbars so they render continuously and always stay visible.
- Pin sidebar headers (logo, stats) to the top while only the session list scrolls.
- Align UI font and Terminal font label widths (180px -> 240px) to match other settings
- Pin 'Maple Mono NF CN' to the top of font dropdown menus
- Add localized '(Built-in)' / '(软件内置)' suffix to the built-in font
- Add a visual separator below the built-in font in the dropdown menu
- Add 'software_builtin' translation keys in en.yml and zh-CN.yml
- Added #[allow(dead_code)] to unused fields, variants, and functions in sftp.rs and terminal.rs
- Renamed unused window variable to _window in main.rs
- Ran cargo fmt to format the codebase
- Added `theme_mode` field to config to save the manually selected theme mode (Light/Dark).
- The application now correctly remembers and restores the user's manual selection across restarts instead of always defaulting to Light when `follow_system_theme` is false.
- Set QuitMode::Explicit only on macOS to allow the app to stay alive without windows.
- Use the default QuitMode (CloseAll) on Windows and Linux so the application correctly exits when the main window is closed.
- Added generated ashell.png, ashell.icns, and ashell.ico to assets/icons/
- Configured gpui WindowOptions to embed and display the icon for Linux
- Added winres build dependency and build.rs to embed Windows .ico into the executable
- Updated package-macos-app.sh and release.yml to bundle macOS .icns into the .app bundle
- Removed manual copying of icons into release zip/tarballs since they are now embedded
- Updated README.md and README.en.md to include Linux download instructions
- Refactored rust_i18n macro usage by importing t directly (use rust_i18n::t)
- Add full i18n support for UI components including settings and sidebar
- Add connection progress tracking strings (Connecting, Failed, etc.)
- Fix 'No session' display issue when no SSH/Local tab is active
- Align SFTP 'show hidden files' checkbox text size with adjacent buttons
- Add border to language settings dropdown for better visibility