Skip to content

[Bug]: Split panes in one tab share a single sidebar agent-row name that flips to whichever pane was clicked last #11069

Description

@pythonstrup

Operating system

macOS

Orca version

v1.4.160-rc.2

Details

Short summary:
When one terminal tab holds two split panes running separate agent sessions, both sidebar agent rows show the same conversation name, and that name flips to whichever pane was clicked last. The two sessions are indistinguishable in the sidebar.

What happened?

Sidebar agent rows are rendered per pane, but they resolve their label from tab-level state. tab.title deliberately tracks only the focused pane, so every row in a split tab renders the focused pane's title, and clicking the other split relabels both rows.

Screenshots of the same two rows, before and after clicking the second pane:

After clicking pane A After clicking pane B
● ✳ Linear … 23h
● ✳ Linear … 22m
● ✳ Redis Look-aside … 23h
● ✳ Redis Look-aside … 22m

How can we reproduce it?

  1. Open a terminal tab and start an agent (e.g. Claude Code). Let it work long enough to set a task title via OSC.
  2. Split the pane and start a second agent with unrelated work in the new split.
  3. Look at the two agent rows for that tab in the left sidebar — both carry the same name.
  4. Click the other split. Both rows relabel to that pane's title.

Root cause

Introduced by #9989, which labels sidebar and dashboard agent rows with conversation names. Its design note states "There is no additional preference: row identity consistently follows tab identity" — split panes were not considered, and they are the case where one tab holds several independent sessions.

  • src/renderer/src/components/dashboard/use-agent-row-conversation-name.ts looks the tab up by agent.tab.id and returns getAgentRowConversationName(tab, …). The pane is never part of the lookup, so all rows in a tab resolve to one string.
  • src/renderer/src/components/terminal-pane/pty-connection.ts only propagates the focused pane's OSC title to tab.title (intentional — otherwise two agents in splits make the tab title flicker), and src/renderer/src/components/terminal-pane/use-terminal-pane-lifecycle.ts re-syncs tab.title from the newly focused pane on every focus change. That is what makes the shared label flip on click.

Per-pane titles already exist in state (runtimePaneTitlesByTabId[tabId][paneId], the layout snapshot's titlesByLeafId, and AgentStatusEntry.terminalTitle); the row resolver simply does not consult them.

Anything else that might help:

  • Restarting Orca does not cause this, but it makes it visible immediately: tab.title is persisted, so after a restart both rows already share whichever pane was focused at quit.
  • The dashboard pop-out board has the same defect through build-dashboard-snapshot.ts, which mirrors the hook.
  • Tab-owned names (customTitle, quickCommandLabel) sharing across splits is correct — those are names the user gave the tab. Only the live title needs to be per pane.
  • Separate follow-up, not covered here: generatedTitle is also tab-scoped, so with auto-generated titles enabled both splits still share the first-written name. That value does not change on click, so it is not this symptom.

Activity

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

Metadata

Metadata

Assignees

Labels

os:macosIssues affecting macOS

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions