feat: add latency indicator and broadcast target selection

- Added a latency indicator to the status bar, displaying round-trip time for SSH sessions.
- Implemented functionality to select specific sessions for broadcasting input, allowing users to manage broadcast targets.
- Enhanced SFTP functionality with bookmark management, enabling users to bookmark directories and navigate to them easily.
- Introduced a modal for user-defined snippet variables, allowing dynamic command execution with placeholders.
- Added port forwarding management for SSH sessions, including the ability to start and stop port forwards.
- Improved terminal output export functionality, allowing users to download or copy terminal output to clipboard.
This commit is contained in:
Andy Dixon
2026-05-21 12:09:43 +01:00
parent c9b5eb10eb
commit 421bdb9ee8
14 changed files with 866 additions and 45 deletions
+18
View File
@@ -262,6 +262,24 @@ func (c *Client) Resize(cols, rows int) error {
return session.WindowChange(rows, cols)
}
// Ping sends a keepalive request and returns the round-trip time in milliseconds.
func (c *Client) Ping() (int64, error) {
c.mu.Lock()
if !c.connected || c.sshClient == nil {
c.mu.Unlock()
return 0, fmt.Errorf("not connected")
}
client := c.sshClient
c.mu.Unlock()
start := time.Now()
_, _, err := client.SendRequest("keepalive@openssh.com", true, nil)
if err != nil {
return 0, err
}
return time.Since(start).Milliseconds(), nil
}
// RunCommand executes a single command using a new SSH session.
func (c *Client) RunCommand(command string) (string, error) {
c.mu.Lock()