Developer
dd7696b5a4
refactor: extract CSS modules for terminal and git components (Task 2.2)
...
- Create TerminalComponent.module.css with terminal-* styles
- Create GitToolbar.module.css with git toolbar styles
- Create CommitDialog.module.css with commit dialog styles
- Create MergeDialog.module.css with merge dialog styles
- Create FileEditor.module.css with file editor styles
- Update all components to import their CSS modules
- Remove extracted rules from styles.css (~441 lines removed)
Quality gates: tsc (pass), eslint (pass), build (pass)
Refs: repo-restructure Task 2.2
2026-06-02 20:39:32 +00:00
Developer
d894cd9723
fix: terminal shift-left bug and session sidebar naming/filtering
...
- Guard ResizeObserver in terminal against internal xterm DOM changes
by tracking last width/height and only calling fit() on real resize
- Remove padding from .terminal-container and conflicting .xterm height
override that caused measurement mismatches with xterm-addon-fit
- Filter live session sidebar to active statuses only (running, building,
pending) instead of showing all sessions including stopped ones
- Add display name fallback across sidebar, sessions page, and instance
list to prevent blank names when display_name is empty
Quality gates: tsc (pass), eslint (pass)
2026-06-02 14:03:47 +00:00
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
Fusion
e344e961d6
feat: implement web terminal for tool instances
...
- Add TerminalSession backend service for docker exec subprocess management
- Add TerminalManager for WebSocket session lifecycle management
- Create WebSocket endpoint at /ws/tool-instances/{id}/terminal
- Add session cookie authentication and instance ownership verification
- Install xterm.js with fit and web-links addons
- Create TerminalComponent with xterm.js integration
- Create TerminalPage with full-screen terminal view
- Add terminal route at /instances/:id/terminal
- Add terminal button to InstanceList for running instances
- Add terminal and arrow-left icons to icon registry
- Add comprehensive terminal CSS styles (dark theme, responsive)
Quality gates: typecheck ✓, lint ✓, build ✓, Python syntax ✓
2026-05-19 21:11:29 +02:00