feat: Dynamic multi-terminal UI with split-pane support#6
Open
VivanRajath wants to merge 2 commits intoopen-gitagent:mainfrom
Open
feat: Dynamic multi-terminal UI with split-pane support#6VivanRajath wants to merge 2 commits intoopen-gitagent:mainfrom
VivanRajath wants to merge 2 commits intoopen-gitagent:mainfrom
Conversation
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.
Summary
Adds a fully dynamic multi-terminal interface to the ClawLess terminal panel. Users can now open multiple independent shell sessions, rename them inline, close them individually, and view them in a split-pane layout alongside the Agent terminal — all without any page reload.
Motivation
The original UI had a single fixed terminal pane tied to the agent. Power users working with ClawLess often need a separate shell for running commands while the agent is active. This PR addresses that gap with a scalable, tab-based terminal system.
File Changes
shellProcess2/shellWriter2fields with aMap<string, WebContainerProcess>and a generic spawnShell(id, terminal) method supporting unlimited concurrent shells_terminal2andstartShell2calls⚙ Agenttab ++button +⊞split button; cleaner pane structure+button, inline rename viacontenteditable, scrollable overflow tab bar, split-pane layoutHow to Test
Environment: Windows 11, Node.js v20, Chrome 123
npm install && npm run devhttp://localhost:5173in ChromeTab creation:
+→ "Terminal 1" tab appears; a livejshshell launches inside the WebContainer+again → "Terminal 2" opens with another independent shellRename:
Close:
×button appears×→ tab and its shell pane are removed; view switches back to AgentSplit view:
⊞→ terminal panel splits: active shell on right, Agent on left⊞again → returns to single-pane viewNo regressions:
npm run buildpasses with zero TypeScript errorsChecklist
npm run buildpasses