chore: bump version to 0.3.0
Some checks failed
Beta Release / beta (push) Has been cancelled

feat(shell): real terminal with xterm.js + PTY over WebSocket

Replace fake shell input with a full PTY-backed terminal using xterm.js.
Apps like btop, vim, htop now work. AI chat panel is always visible.

Backend:
- Add WebSocket handler /api/ws/terminal with creack/pty
- Allocate real pseudo-terminal with TERM=xterm-256color
- Bidirectional I/O + dynamic resize via pty.Setsize
- Skip JSON headers on /api/ws/* paths for WebSocket upgrade

Frontend:
- Integrate xterm.js with FitAddon and WebLinksAddon
- Cyberpunk color theme matching app design
- ResizeObserver for automatic terminal resizing
- AI assistant panel always visible (340px, no toggle)
- Connection status indicator (green/red dot)

Dependencies:
- Go: github.com/gorilla/websocket, github.com/creack/pty/v2
- npm: @xterm/xterm, @xterm/addon-fit, @xterm/addon-web-links

💘 Generated with Crush

Assisted-by: GLM-5.1 via Crush <crush@charm.land>
This commit is contained in:
Augustin
2026-04-21 22:17:24 +02:00
parent fc7981037f
commit b0b0e1d308
14 changed files with 812 additions and 209 deletions

2
go.mod
View File

@@ -4,6 +4,8 @@ go 1.24.3
require (
github.com/charmbracelet/huh v1.0.0
github.com/creack/pty/v2 v2.0.1
github.com/gorilla/websocket v1.5.3
gopkg.in/yaml.v3 v3.0.1
)