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:
+5
-9
@@ -61,10 +61,11 @@ func (m *Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
m.Quit = true
|
||||
return m, tea.Quit
|
||||
|
||||
case openSessionMsg:
|
||||
tab := NewSessionTab(msg.host, m.dataDir)
|
||||
cmd := m.tabs.Add(tab)
|
||||
return m, cmd
|
||||
case sshConnectToMsg:
|
||||
return m, sshConnectCmd(msg.host, m.dataDir)
|
||||
|
||||
case sshExitMsg:
|
||||
return m, nil
|
||||
|
||||
case openHostFormMsg:
|
||||
var tab Tab
|
||||
@@ -175,11 +176,6 @@ func (m *Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
}
|
||||
return m, nil
|
||||
|
||||
case sessionDoneMsg:
|
||||
if msg.err != nil {
|
||||
m.Error = msg.err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
cmd, err := m.tabs.Update(msg)
|
||||
|
||||
Reference in New Issue
Block a user