Commit Graph

24 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
Jeff Emmett f8e4647e1a everything working in dev 2025-11-10 11:06:13 -08:00
Jeff Emmett 719a4eb918 automerge, obsidian/quartz, transcribe attempt, fix AI APIs 2025-09-21 11:43:06 +02:00
Jeff Emmett 8385e30d25 separate worker and buckets between dev & prod, fix cron job scheduler 2025-09-04 15:12:44 +02:00
Jeff Emmett e78f9a8281 fix worker url in prod 2025-09-02 13:16:15 +02:00
Shawn Anderson 411fc99201 Revert "fix daily API key in prod"
This reverts commit 49f11dc6e5.
2025-04-16 13:05:54 -07:00
Jeff-Emmett 49f11dc6e5 fix daily API key in prod 2025-04-08 14:45:54 -07:00
Jeff-Emmett 12256c5b9c working video calls 2025-02-13 20:38:01 +01:00
Jeff Emmett 84e737216d videochat working 2024-12-09 03:42:44 -05:00
Jeff Emmett bf5b3239dd fix domain url 2024-12-08 23:14:22 -05:00
Jeff Emmett cc216eb07f fixing daily domain on vite config 2024-12-08 19:10:39 -05:00
Jeff Emmett d2ff445ddf fixing daily domain on vite config 2024-12-08 19:08:40 -05:00
Jeff Emmett f012632cde prettify and cleanup 2024-12-07 22:01:02 -05:00
Jeff Emmett 2e0a05ab32 fix vite config 2024-12-07 15:50:37 -05:00
Jeff Emmett 97b00c1569 fix prod env 2024-12-07 13:43:56 -05:00
Jeff Emmett 6f6c924f66 fix VITE_ worker URL 2024-12-07 13:27:37 -05:00
Jeff Emmett 1c8909ce69 fix worker url 2024-11-27 11:31:16 +07:00
Jeff Emmett fef2ca0eb3 fixing final 2024-11-27 11:26:25 +07:00
Jeff Emmett 6ba124b038 fix env vars in vite 2024-11-27 11:17:29 +07:00
Jeff Emmett 1cd7208ddf fix vite and asset upload 2024-11-27 11:14:52 +07:00
Jeff Emmett 100b88268b CRDTs working, still finalizing local board state browser storage for offline board access 2024-11-25 16:18:05 +07:00
Jeff Emmett 1c38cb1bdb multiplayer 2024-08-29 21:15:13 +02:00
Jeff Emmett 932c9935d5 multiplayer 2024-08-29 20:20:12 +02:00
Jeff Emmett 9d73295702 oriomimicry 2024-08-09 23:14:58 -04:00