alex
|
6c8cfe9157
|
feat: responsive web terminal with auto-reconnect, heartbeat, and local echo
Implements a resilient, responsive web terminal that survives network blips,
provides instant typing feedback, and restores scrollback on reconnect.
Backend changes:
- Add heartbeat tracking (15s ping interval, 60s idle timeout)
- Add message batching (16ms flush window) for efficient I/O
- Add termios echo detection and set_echo_state control messages
- Add graceful session_ended notification before close
- Add ping/pong protocol support
Frontend changes:
- Rewrite TerminalComponent with status bar, connection indicator,
session-ended overlay, reconnect banner, and ResizeObserver
- Add useTerminalConnection hook with:
- Exponential backoff auto-reconnect (1s → 30s max, 10 attempts)
- Heartbeat/ping-pong with latency tracking
- Local echo for printable ASCII with server deduplication
- Resize debounce (200ms) + throttle (500ms)
- Scrollback serialization via xterm-addon-serialize
- Ctrl+Shift+R manual reconnect shortcut
- Add WebSocket protocol types and encoding utilities
- Add xterm-addon-serialize dependency
Tests:
- 16 backend unit tests (TerminalSession + TerminalManager)
- 13 frontend hook tests (connection lifecycle, reconnect, resize,
scrollback, callbacks)
Quality gates:
- Frontend typecheck: clean
- Frontend lint: clean
- Frontend tests: 48 passed
- Backend unit tests: 101 passed
- Backend ruff: clean
SDD artifacts: openspec/changes/responsive-terminal/
|
2026-05-27 21:27:49 +02:00 |
|