refactor: remove terminal workspaces - #19
Merged
Merged
Conversation
This was referenced Aug 24, 2026
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
Remove Terminal Control's built-in terminal multiplexer: persistent workspaces, attachment, windows, panes, layouts, tab chrome, and their CLI/MCP controls.
Terminal Control remains focused on terminal automation through:
start,wait,send,show,save,logs,resize,restart, andstoprunThis removes roughly 12,000 lines and prepares a breaking
1.0.0release.How
src/workspace.rs, workspace benchmarks, attachment rendering, pane/window protocol variants, and workspace CLI/MCP schemas.src/session.rsto one PTY process per session while preserving buffered socket transport, bounded output pumping, secure pruning,TERMCTRL_SESSION, semantic snapshots, and atomic MCP screen/status reads.runcooperative: human input continues during agent waits, host responses come from the real terminal, terminal modes are restored on exit, and the child exit code is propagated.save_screen; MCP discovery defaults to running sessions.Scope
Testing
bun install --frozen-lockfilecargo fmt --all -- --checkcargo test --all-targets(106 passed, 1 ignored)cargo clippy --all-targets --all-features -- -D warningscargo build --releasebun run test:npm(12 client tests, 9 OpenTUI adapter tests)bun run build:npmbun run validate:npmcargo package --list --allow-dirtycargo package --allow-dirtycargo publish --dry-run --locked --allow-dirtystart/show/status/stopsessionTERMCTRL_SESSIONchecks for background and foreground sessionswaitplus human terminal inputDemo
The reduced CLI exposes sessions without workspace commands:
Flow
sequenceDiagram participant Human as Human terminal participant CLI as termctrl run participant Session as Single PTY session participant Agent as CLI / MCP agent Human->>CLI: run NAME -- COMMAND CLI->>Session: start one PTY process Session-->>Human: mirror terminal output Agent->>Session: wait / send / show / save Human->>Session: terminal input remains live Session-->>CLI: child exit status CLI-->>Human: restore terminal and propagate exit code