You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+30Lines changed: 30 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,36 @@ All notable changes to Bayesian SSH will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
+
## [1.4.1] - 2026-03-05
9
+
10
+
### Added
11
+
-**TUI tab-based navigation**: Three tabs — Connections (`1`), History (`2`), Config (`3`) — switchable with number keys or `Tab`/`Shift+Tab`
12
+
-**Add new connection form**: Press `a` in the Connections tab to create a connection directly from the TUI with a 9-field overlay (Name, Host, User, Port, Bastion, Bastion User, Key Path, Kerberos, Tags) and validation
13
+
-**Session history view**: History tab with sortable columns (Date, Name, Duration, Status), connection name filter (`/`), failed-only toggle (`f`), and reconnect on `Enter`
14
+
-**Environment management**: Config tab listing all environments with the active one highlighted; switch (`Enter`), create (`a`), or delete (`d`) environments without leaving the TUI
15
+
-**Connection grouping by tag**: Toggle grouped view with `f` — connections are organized under collapsible tag headers
16
+
-**Quick-connect bar**: Press `:` and type `[user@]host[:port]` to connect to an ad-hoc host without saving it
17
+
-**Multi-select and batch operations**: `Space` to toggle selection, `Ctrl+A` to select all, `x` to batch-delete selected connections with a confirmation dialog
18
+
-**SSH command preview**: Press `p` to see the full SSH command that would be executed, broken down by component (host, port, user, bastion, kerberos flags, key path)
19
+
-**Async TCP ping with status indicators**: Press `P` to ping the selected connection in the background; results appear as colored indicators — green `●` with round-trip time for reachable, red `●` for unreachable, yellow `◌` while checking
20
+
-**Shared ping service** (`services/ping.rs`): Lightweight TCP-level reachability check using `tokio::net::TcpStream` with timeout — no external process spawning; pings bastion host on port 22 for bastion connections
21
+
22
+
### Changed
23
+
-**TUI modular architecture**: Split monolithic `tui/app.rs` (721 lines) and `tui/ui.rs` (572 lines) into focused modules:
24
+
-`models.rs` — enums and small types (`Tab`, `AppMode`, `EditState`, `PingStatus`, etc.)
25
+
-`state.rs` — `App` struct and state management with `tokio::sync::mpsc` ping channel
26
+
-`input.rs` — keyboard handlers dispatched per tab and mode
27
+
-`event_loop.rs` — terminal setup/teardown and main loop with async ping result draining
28
+
-`ui/mod.rs` — draw dispatcher routing to tab views and overlays
-**Edit overlay extended**: Now supports 9 fields (added Key Path); `EditState` includes `is_new` flag and `validate()` for required-field checks
31
+
-**Ping indicators use distinct colors**: Reachable (green), unreachable (red), checking (yellow) — previously all rendered identically
32
+
33
+
### Fixed
34
+
-**Unreachable key binding patterns**: `Ctrl+A` select-all now correctly takes precedence over plain `a` add-connection; removed dead `g` grouping arm that was shadowed by go-to-top
0 commit comments