Skip to content

refactor: remove Mission Control and dead terminal code; key agent columns "agent-<id>" - #629

Merged
Ziinc merged 5 commits into
mainfrom
claude/remove-mission-control
Sep 29, 2026
Merged

Ziinc merged 5 commits into
mainfrom
claude/remove-mission-control

Conversation

@Ziinc

@Ziinc Ziinc commented Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

Removes Mission Control and the dead code the sessions chaos QA found. It also includes #636, which was merged into this branch.

Mission Control

  • The only way to open it was a two-finger touch swipe (useTwoFingerSwipe). Desktop trackpads send wheel events, not touch events, so it could not be reached.
  • Removed:
    • TerminalMissionControl and its test;
    • terminal-mission-control/ (group builder, diff-stats hook, preview formatter, and their tests);
    • useTwoFingerSwipe and its test;
    • the terminal-mission-control screenshot spec;
    • the Mission Control and Gestures sections in web/docs.
  • useTerminalSessionSummaries kept a throttled preview of each terminal's output, plus timestamps, only for Mission Control. It now tracks only isStreaming, the one field the sidebar spinner and the idle-agent lookup read.
    • TerminalSessionSummary drops previewOutput, lastUserInputAt and lastActivityAt.
    • isTerminalSessionIdle and TERMINAL_IDLE_THRESHOLD_MS are gone.

Other dead code

  • WorkspaceEditSession.tsx and Terminal.tsx: nothing imported them.
  • get_window_repo_path: only WorkspaceEditSession called it. Removed the TS wrapper, the Rust command and its registration. The setter stays, because agent_runtime reads the map.
  • Pane handle methods with no callers: createAgentSession, focusTerminal, closeTerminal, closeIdleTerminals, closeAllTerminals.
  • The agent argument of onCreateNewSession, which no caller passed.
  • The workspaceBranchName option of getOrCreateSession, which was never read.

Agent column ids (from #636)

Agent terminal columns were keyed claude-<sessionId>, although every supported agent runs in the same kind of column. They are now agent-<sessionId>. The PTY id (session-<id>) is unchanged.

  • agentTerminalId() and agentSessionIdOf() in terminal/agentTerminalId.ts build and parse the id. They replace every hand-built claude- string.
  • Renamed the pane identifiers:
    Before After
    ClaudeSessionData AgentSessionData
    claudeSessions agentSessions
    handleCloseClaudeSession handleCloseAgentSession
    TerminalEntry type "claude" "agent"

Tests

  • Rewrote the summaries hook tests for the streaming flag:
    • process output marks the terminal streaming;
    • local echo does not;
    • an idle pulse clears it without a filesystem refresh;
    • a burst of output publishes once.
  • New unit test agentTerminalId.test.ts. Tests and specs select agent columns with [data-terminal-id^="agent-"].
  • Checks: tsc, lint, cargo fmt and cargo clippy are clean.
  • Tests: unit tests pass. CI integration passed on both commits before refactor(terminal): key agent columns "agent-<id>" instead of "claude-<id>" #636 was merged in.
  • Screenshot specs: these fail on main too, because they look for a "New agent terminal" button that no longer exists:
    • workspace-delete-closes-terminals
    • treq-send-review-comments
    • terminal-header-workspace-label
    • terminal-pane-inset-controls

Mission Control only opened on a two-finger touch swipe, which desktop
trackpads do not send, so it was unreachable. This removes it along with
code nothing used:

- TerminalMissionControl, its helpers and tests, the useTwoFingerSwipe hook,
  its screenshot spec, and its docs sections.
- The preview output, last-input time and idle helper that only Mission
  Control and the unused close-idle action read. Terminal summaries now
  track only whether each terminal is streaming.
- WorkspaceEditSession and Terminal, which nothing imported, and the
  get_window_repo_path command only they called.
- Unused pane handle methods (createAgentSession, focusTerminal,
  closeTerminal, closeIdleTerminals, closeAllTerminals), the never-passed
  agent argument of onCreateNewSession, and the unread workspaceBranchName
  option of getOrCreateSession.
@github-actions

github-actions Bot commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

…-control

# Conflicts:
#	src/components/terminal/types.ts

Ziinc commented Sep 29, 2026

Copy link
Copy Markdown
Collaborator Author

After merging main in, test-js / test:integration failed on two tests in workspace/create-pr.test.tsx:

  • pushes a rewritten (diverged) branch before creating a PR;
  • hides Create PR when there is no GitHub remote, whose setup setupPushedWorkspaceWithGitHub reported not_on_remote as true right after a push.

I don't think this PR caused it:

I haven't found or made a fix for it. I'm re-running the failed job once. If it fails again I'll treat it as a real failure and dig in.


Generated by Claude Code

…-<id>" (#636)

Co-authored-by: Claude <noreply@anthropic.com>
@Ziinc Ziinc changed the title refactor: remove Terminal Mission Control and dead terminal code refactor: remove Mission Control and dead terminal code; key agent columns "agent-<id>" Sep 29, 2026
…-control

# Conflicts:
#	src/components/ShowWorkspace.tsx
@Ziinc
Ziinc merged commit 083a5aa into main Sep 29, 2026
26 checks passed
@Ziinc
Ziinc deleted the claude/remove-mission-control branch September 29, 2026 13:32

This branch was successfully deployed

1 active deployment
preview — 586740fb Deployed Sep 29, 2026 by Ziinc via build #1520
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants