Skip to content

bug(workspace): terminal-view agent panes never show running status in the pane header #851

Closed

Description

@Juliusolsson05

Expected

With Status Mode on (the default), an agent pane's header strip fills with the theme accent while the agent is working and clears when it goes idle, regardless of whether the pane shows the rendered feed or the raw provider terminal. A glance across the grid should show which agents are busy.

Actual

Claude and Codex agent panes in Terminal view (hard Terminal mode, or Hybrid resting on the raw terminal) never light the header. A Claude/Codex turn started from the raw TUI runs with a plain header, so the pane reads as idle while it is working. Session color flags are also missing from the terminal-view header.

Reproduce

  1. Keep Settings → Status Mode on.
  2. Put an agent pane in Terminal view (per-pane view override or global agent view mode = Terminal).
  3. Send a prompt in the raw terminal.
  4. The tab bar and Dispatch list show the agent as running; the pane header stays unlit. Switch the same pane back to Agent view and the header lights up.

Root cause

WorkspaceLeaf (src/renderer/src/workspace/tile-tree/TileTree.tsx) passes showStatusMode only to the rendered TileLeaf. AgentTerminalLeaf draws its own copy of the header markup instead of rendering the shared PaneHeader. That copy was made when the view-mode policy landed (eec24a9) and never received the Status Mode fill or the color flag later added to PaneHeader (36846eb).

The status data is already there: runtime.sessionStatus comes from deriveSessionStatus. It combines the semantic turn, processActive (the headless packages' own spinner detection, handled at workspace level in useIpcSubscriptions) and exit state, and none of those depend on which leaf is mounted. That is why the tab bar and Dispatch already show the running state correctly.

Impact

User-visible feedback gap. Terminal view is the recovery surface for when the feed is broken, so the pane most likely to need watching is the one that can't show it's working.

Environment

main at 48ea691, macOS.

Scope note (added during review of #853)

The OpenCode Terminal runtime also stays unlit, but for a different reason: its session never emits an active process state, so sessionStatus never becomes running on any surface (header, tab bar, Dispatch). That missing provider signal is tracked in #857. The header-wiring root cause described here is fixed by #853. Review also found that Spotlight and Tiled Tabs ignore the Status Mode setting (#856), which the same PR fixes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions