forked from wrenn/wrenn
Add terminal tab to capsule detail page and fix envd process lookup bugs
- Add multi-session Terminal tab with xterm.js (session tabs, close, reconnect) - Keep terminal mounted across tab switches to preserve sessions - Persist active tab in URL (?tab=terminal) so refresh stays on terminal - Buffer keystrokes (50ms) to reduce per-character RPC overhead - Add WebSocket auth via ?token= query param for browser WS connections - Enable ws:true in Vite dev proxy for WebSocket support envd fixes (pre-existing bugs exposed by multi-session terminals): - Fix getProcess tag Range: inverted return values caused early stop when multiple tagged processes existed, making SendInput fail with "not found" - Fix multiplexer deadlock: blocking send to cancelled fork's unbuffered channel prevented process cleanup. Now uses buffered channels (cap 64) with non-blocking fallback
This commit is contained in:
@ -62,16 +62,15 @@ func (s *Service) getProcess(selector *rpc.ProcessSelector) (*handler.Handler, e
|
||||
|
||||
s.processes.Range(func(_ uint32, value *handler.Handler) bool {
|
||||
if value.Tag == nil {
|
||||
return true
|
||||
return true // no tag, keep looking
|
||||
}
|
||||
|
||||
if *value.Tag == tag {
|
||||
proc = value
|
||||
|
||||
return true
|
||||
return false // found, stop iterating
|
||||
}
|
||||
|
||||
return false
|
||||
return true // different tag, keep looking
|
||||
})
|
||||
|
||||
if proc == nil {
|
||||
|
||||
Reference in New Issue
Block a user