Skip to content

Integrated terminal drawer scoped to the thread worktree #147

Closed

Description

@currentbits

What competitors do

T3 Code ships server-side terminals as a first-class feature (terminal.attach, mod+g to toggle) for running tests/linters without leaving the app (docs). Synara puts terminals one pane from the conversation and lets a terminal selection be sent into the composer as context (docs). Superset, Emdash, Orca and Crystal all embed a real terminal scoped to the agent worktree.

Solenta today

No PTY anywhere: no node-pty/xterm in package.json, no terminal component in src/components/. The dev servers panel only spawns detected dev/start/serve scripts (electron/devservers.js:7). PRODUCT-SPEC excludes an embedded terminal as primary UX, but a secondary drawer is a narrower thing.

Why it matters

The most common reason to leave the app is "run the test suite / tail a log / nudge a stalled command" in the thread worktree. A drawer that opens already cd'd into the worktree keeps the observe-fix loop in one window, and piping terminal output into the composer (Synara-style) removes copy-paste.

Scope suggestion

A collapsible drawer per thread (xterm.js + node-pty in main), cwd locked to the thread worktree, plus a "send selection to composer" action. Not a multi-pane terminal multiplexer.

Activity

  1. currentbits commented on Aug 17, 2026

    @currentbits
    OwnerAuthor

    Deep-dive detail (Conductor): the terminal drawer doubles as the harness escape hatch — a full-center terminal tab with per-agent launch presets, so ANY CLI agent works before a native integration exists. Cheap insurance for the multi-harness promise.

  2. currentbits commented on Aug 18, 2026

    @currentbits
    OwnerAuthor

    Round 22: do not wait on this drawer for one-shot commands. Filed #470 — composer `!` shell mode (Claude/Grok/Kimi). A persistent PTY is still the right home for `pnpm dev`. `!` is `gh auth login` / `npm test -- foo` without a model turn. They share a cwd and a sandbox; they are not the same UI.

  3. currentbits commented on Aug 19, 2026

    @currentbits
    OwnerAuthor

    Claude Code Desktop shipped this drawer almost exactly as scoped here, plus two details worth adopting (docs):

    • Same environment as the agent, not just the same cwd: "commands like npm test or git status see the same files Claude is editing." That matters for Solenta specifically because of Propagate the user's real shell environment into agent sessions #320 — if the drawer inherits the user's real shell env and the agent does not, the drawer becomes the tool that proves the agent's environment is wrong.
    • Tabs, opened contextually: + in the pane header, and right-clicking a folder in the chat offers Open in terminal there. That is the cheap version of the multiplexer this issue rules out — no splits, no layout, just a tab strip — and Codex 26.415 landed the same thing ("multiple terminal tabs support parallel builds and tests scoped to projects").
    • Local sessions only; `Ctrl+`` toggles.

    Tabs pair with #492 (clickable paths) and #552 (pane shell): the terminal becomes a pane type, and "open in terminal" is a right-click on any path in the transcript.

  4. added and removed on Aug 23, 2026
  5. currentbits commented on Aug 23, 2026

    @currentbits
    OwnerAuthor

    Scope correction from the thread: a pane, not a drawer. Terminal was already a registered pane type in the #552 shell (PANE_REGISTRY, shipped: false, rendering a placeholder), so it became shipped: true plus a horizontal split — it opens beside the focused pane exactly like Git, and drags/closes/resizes with the same chrome. No drawer, no toggle, no new layout concept.

    Pipes, not a PTY. node-pty is a native module and scripts/package-app.sh hand-copies prod deps with no electron-rebuild step, so a real tty costs the release pipeline more than the feature is worth today. One long-lived shell per thread (electron/terminal.js), cwd at the worktree, so cd and exports persist between commands. Ceiling is in the file header: interactive prompts (gh auth login) hang, no curses apps, no per-command exit code, and Ctrl-C is spelled Restart. Upgrade path is node-pty + xterm.js behind the same four IPC calls.

    Also landed, from the same message: opening any second pane collapses the agents rail so the panes get the width. Keyed on the open action (Views menu, Git open path), not on leaves(layout).length > 1 — the layout-shaped version also fired for a restored split on every thread switch, and agentsCollapsed persists to localStorage.

    Still open against the original scope: tabs, "send selection to composer", and right-click → Open in terminal on a path.

    Suites: renderer 1501/1501, electron 1985/1985, typecheck clean.

  6. added and removed on Aug 23, 2026
  7. currentbits commented on Aug 23, 2026

    @currentbits
    OwnerAuthor

    Landed from Solenta thread "Integrated terminal drawer scoped to the thread worktree". Closed on merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions