Commit Graph

1 Commits

Author SHA1 Message Date
Jeff Emmett 4306cd6646 feat: add terminal tool with tmux integration
Add interactive terminal windows to canvas dashboard with tmux session management and SSH proxy support.

## Features

- **TerminalShape**: Resizable terminal windows on canvas
- **SessionBrowser**: UI for managing tmux sessions (list, attach, create)
- **TerminalContent**: xterm.js-based terminal renderer with WebSocket streaming
- **TerminalProxy**: SSH connection pooling and tmux command execution
- **Collaboration Mode**: Read-only by default, owner can enable shared input
- **Pin to View**: Keep terminal fixed during pan/zoom

## Implementation

Frontend Components:
- src/shapes/TerminalShapeUtil.tsx - Terminal shape definition
- src/tools/TerminalTool.ts - Shape creation tool
- src/components/TerminalContent.tsx - xterm.js integration with WebSocket
- src/components/SessionBrowser.tsx - tmux session management UI
- Registered in Board.tsx and CustomToolbar.tsx

Backend Infrastructure:
- worker/TerminalProxy.ts - SSH proxy with connection pooling
- terminal-config.example.json - Configuration template

Documentation:
- TERMINAL_SPEC.md - Complete feature specification (19 sections)
- TERMINAL_INTEGRATION.md - Backend setup guide with 2 deployment options

## Dependencies

- @xterm/xterm ^5.5.0 - Terminal emulator
- @xterm/addon-fit ^0.10.0 - Responsive sizing
- @xterm/addon-web-links ^0.11.0 - Clickable URLs
- ssh2 ^1.16.0 - SSH client for backend

## Next Steps

See TERMINAL_INTEGRATION.md for:
- Backend WebSocket server setup on DigitalOcean droplet
- SSH configuration and security hardening
- Testing and troubleshooting procedures

## Notes

- Backend implementation requires separate WebSocket server (Cloudflare Workers lack PTY support)
- Frontend components ready but need backend deployed to function
- Mock data shown in SessionBrowser for development

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 20:48:15 -07:00