Repository navigation
feat: Workspace tabs + splits + agent launcher (v7.8.0) - #237
Merged
Merged
Conversation
Turns the single-pane terminal into an iTerm-like workspace: - Named tabs (double-click to rename); + to add, × to close. - Each tab splits into 1–4 panes via layout buttons or "+ Pane"; every pane is an independent xterm + WebSocket + server-side pty. - Per-pane "Launch" dropdown types an agent command (claude/codex/qwen/ opencode/kiro-cli/gemini) straight into that pane's shell. - Background tabs stay alive on switch: each tab keeps its own hidden grid so its ptys keep running; only the active grid is shown. - Panes reconcile incrementally (no innerHTML rebuild) so live panes are never torn down when adding/removing others; a ResizeObserver refits each pane and notifies the pty on any layout/window change. - renderWorkspace is idempotent so background dashboard refreshes never reset the terminal. Verified in a browser: 2 tabs with 2- and 3-pane layouts, 5 live ptys, rename, and background-tab survival across switches. No server changes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Turns the single-pane terminal into an iTerm-like workspace:
+to add,×to close.+ Pane); every pane is an independent xterm + WebSocket + server-side pty.How
_wsTabs = [{ id, name, panes:[{id,cmd,term,sock,fit,ro}] }]+_wsActiveTabId.innerHTMLrebuild), so live panes are never torn down when adding/removing others.ResizeObserverper pane refits xterm + notifies the pty ({t:'resize'}) on any layout/window/tab change.renderWorkspaceis idempotent — background dashboard refreshes (active-session poll, session reload) callrender()while on this view and must not reset the terminal./ws/terminalconnection.Testing
Next (per docs/SUPERAPP_PLAN.md)
WebGL renderer + context-loss fallback, drag-resize pane borders, tmux-less persistence (pty-host + serialize/replay so tabs/panes survive reload), saved commands & per-project cwd, proxy.
Version
Minor bump
7.7.0→7.8.0.🤖 Generated with Claude Code