feat(web): integrate xterm.js with WebSocket terminal backend
All checks were successful
ci/woodpecker/push/orchestrator Pipeline was successful
ci/woodpecker/push/web Pipeline was successful
ci/woodpecker/push/api Pipeline was successful

- Install @xterm/xterm, @xterm/addon-fit, @xterm/addon-web-links
- Create useTerminal hook connecting to /terminal Socket.IO namespace
  with full session lifecycle management (create, input, resize, close)
- Create XTerminal component with FitAddon auto-resize, WebLinksAddon,
  theme support via CSS variables, and terminal:exit reconnect UI
- Replace mock TerminalPanel with real XTerminal component, preserving
  the tab bar and close button layout structure
- Export XTerminal and XTerminalProps from the terminal barrel index
- Write 40 unit tests covering useTerminal hook and both components

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-25 20:53:43 -06:00
parent 8128eb7fbe
commit 66d9b5230e
9 changed files with 1694 additions and 100 deletions

View File

@@ -1,2 +1,4 @@
export type { TerminalLine, TerminalTab, TerminalPanelProps } from "./TerminalPanel";
export type { TerminalTab, TerminalPanelProps } from "./TerminalPanel";
export { TerminalPanel } from "./TerminalPanel";
export type { XTerminalProps } from "./XTerminal";
export { XTerminal } from "./XTerminal";