feat: native SSH delegation via tea.ExecProcess + Gruvbox palette

Phase A — Tamagosh-inspired redesign:
- Replace goroutine-based SSH (crypto/ssh) with tea.ExecProcess + native ssh binary
- Zero-lag SSH: native binary pegang TTY langsung, ga ada Go buffering
- Password auth via sshpass -e (SSHPASS env)
- Key auth via ssh -i <tmpfile> + SSH_ASKPASS for passphrase
- ControlMaster sockets for fast reconnect
- Add askpass subcommand for SSH_ASKPASS support
- Gruvbox Material Dark Hard palette for comfortable viewing
- Clean up old session messages (openSessionMsg, sessionOutputMsg, sessionDoneMsg)
- Remove 354-line session.go, replace with 150-line ssh.go
This commit is contained in:
swanadiva
2026-06-23 15:36:40 +07:00
parent b319f44c3e
commit 7b06793002
8 changed files with 177 additions and 397 deletions
+4 -7
View File
@@ -12,16 +12,13 @@ import (
// quitMsg signals the TUI to exit
type quitMsg struct{}
// openSessionMsg signals the TUI to open a new SSH session tab
type openSessionMsg struct {
// sshConnectToMsg signals the TUI to connect to a host via native SSH
type sshConnectToMsg struct {
host *models.Host
}
// sessionOutputMsg carries SSH output to the TUI renderer
type sessionOutputMsg string
// sessionDoneMsg signals that a session has ended
type sessionDoneMsg struct {
// sshExitMsg signals that a native SSH session has ended
type sshExitMsg struct {
err error
}