feat: Phase 2 complete — muxterm Go binary replaces ttyd
Summary of Phase 2 changes:
Go (muxterm):
- muxterm Go binary with PTY pool, WebSocket server, HMAC token auth
- JSON control protocol (attach/detach/resize/input/output/exited)
- /health endpoint, graceful shutdown on SIGTERM/SIGINT
Python (muxplex):
- GET /api/terminal-token endpoint for muxterm HMAC auth
- Process supervision: start muxterm on boot, restart on crash, stop on shutdown
- Deleted ttyd.py, WS proxy, /connect endpoint, terminal cache
Frontend:
- Single WebSocket connection with JSON control protocol
- ghostty-web replaces xterm.js as terminal renderer
- No terminal cache — muxterm owns the terminal lifecycle
- Deleted xterm.js vendor files
Build verification:
- muxterm binary compiles (go build)
- 1305 Python tests pass
- 18 Go tests pass (17 pass, 1 integration skipped in short mode)
- /health endpoint responds {"status":"ok"}
This commit is contained in: