Skip to content

fix(chat): match terminal pane split and close menus - #28969

Merged
brennanb2025 merged 63 commits into
mainfrom
brennankb5/native-chat-pane-menu
Oct 24, 2026
Merged

brennanb2025 merged 63 commits into
mainfrom
brennankb5/native-chat-pane-menu

Conversation

@brennanb2025

@brennanb2025 brennanb2025 commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 3 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​162 $\color{#cf222e}{\Huge{\mathbf{−}}}$​30 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​132
Prod 3 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​74 $\color{#cf222e}{\Huge{\mathbf{−}}}$​32 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​42

What changed

Right-clicking a native chat transcript now offers Split Chat Right and Split Chat Down. Once the workspace has split panes, it also offers the header's shared Close Pane action, labelled Close tab when the pane has sibling tabs. A split keeps the current conversation and opens a fresh same-agent chat through the existing header command.

Copy Orca Session ID, selection, image, clipboard and Find actions retain their behavior. Chats shown inside a terminal retain the terminal pane menu. Editable inputs retain the native spelling and edit menu. Resume in New CLI (Continue with Terminal Agent) and Move Tab to Split remain on their existing tab/header surfaces; their omission from the transcript menu is intended, as is hiding close in a lone workspace.

The menu uses the same split and close commands as the header. Its tab/group metadata mounts with the menu content, so retained closed transcripts add no menu projections or transcript renders. There are no new saved fields, launch paths or messages between hosts. Folder workspaces and existing host routing use the shared commands.

Verification

Full review completed in four rounds, including independent correctness, performance and comparison with the common pattern. The review corrected closed-menu scaling and test-fixture typing. The one main merge retained the merged #28968 shared commands, spelling/edit menu and shared owner index; a narrow independent merge check passed. The later test-only commit reduced the lifetime contract from 233 to 117 lines while preserving its real-store 6/60-chat scaling and teardown checks. Deferred: shortcut aliases may show all bindings where terminal menus show the primary binding; all remain functional. Older paired hosts retain their existing provider-start behavior.

  • Renderer tests: 73 passed across 7 named files after main integration; 32 passed across 3 menu files after the test-only trim, through tc-gate.
  • CI: Full PR workflow 40039910589 passed on 4652a7636ba222a31a2a0a7ba5c7a733f692d8f5, including static analysis/typecheck, five unit-test shards, both package jobs and the aggregate gate.
  • Branch screenshot check: PASS on Windows high spec at the same head: lone transcript split/session-ID rows, split-workspace Close Pane, sibling-tab Close tab, and unchanged terminal-backed menu. Native-chat UI tests row, qa=tests. No real-agent replies, restart or upgrade run was required or claimed.

Visual proof

Full app-window captures from an isolated branch build with populated fixture transcripts; no agents ran. The screenshot lead inspected every image at original resolution and verified the file hashes. Menu commands themselves are covered by renderer tests and CI. The fixture workspace has an unrelated file-access notice in the explorer.

Lone structured transcript: Split Chat Right, Split Chat Down and Copy Orca Session ID

Split workspace: Close Pane

Sibling tabs in the selected pane: Close tab

Terminal-backed transcript: existing terminal menu

Review notes

#28968 has merged and this PR targets main. The body menu intentionally mirrors the terminal pane's split/close entry points while keeping tab movement and terminal continuation on their existing surfaces. No documentation, dependency or locale changes. Author X: @BrennanKB5.

@brennanb2025
brennanb2025 force-pushed the brennankb5/native-chat-pane-menu branch from e4f1556 to ea4a49b Compare October 15, 2026 04:12
@brennanb2025
brennanb2025 force-pushed the brennankb5/native-chat-pane-actions branch from b1df63e to 0d5798d Compare October 15, 2026 04:12
@brennanb2025
brennanb2025 marked this pull request as ready for review October 15, 2026 05:06
@brennanb2025
brennanb2025 force-pushed the brennankb5/native-chat-pane-actions branch from 8a50ec0 to 553559e Compare October 15, 2026 06:31
@brennanb2025
brennanb2025 force-pushed the brennankb5/native-chat-pane-actions branch from d844a49 to d5dfe40 Compare October 15, 2026 06:59
@brennanb2025
brennanb2025 force-pushed the brennankb5/native-chat-pane-menu branch from ea4a49b to 489c9b0 Compare October 15, 2026 07:03
…t-split-draft

# Conflicts:
#	src/renderer/src/runtime/structured-agent-session-tab-retirement.ts
…t-split-draft

# Conflicts:
#	src/renderer/src/lib/structured-agent-session-provisional-tab.test.ts
@brennanb2025
brennanb2025 changed the base branch from brennankb5/native-chat-pane-actions to main October 23, 2026 23:18
@coderabbitai

coderabbitai Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

ℹ️ Recent review info
⚙️ Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e620f7eb-150a-45c9-a9a3-dd21c50a89d6
📥 Commits

Reviewing files that changed from the base of the PR and between d49ad60 and 5bba8c5.

📒 Files selected for processing: 22
  • docs/automated-setup-tab-design.md
  • src/renderer/src/assets/main.css
  • src/renderer/src/components/native-chat/NativeChatFindBar.tsx
  • src/renderer/src/components/native-chat/NativeChatPaneHeader.test.tsx
  • src/renderer/src/components/native-chat/NativeChatPaneHeader.tsx
  • src/renderer/src/components/native-chat/NativeChatResumeInCliButton.tsx
  • src/renderer/src/components/native-chat/NativeChatStructuredSession.tsx
  • src/renderer/src/components/native-chat/native-chat-find.css
  • src/renderer/src/components/native-chat/structured-chat-menu-lifetime.test.tsx
  • src/renderer/src/components/native-chat/use-native-chat-context-menu.test.tsx
  • src/renderer/src/components/native-chat/use-native-chat-context-menu.tsx
  • src/renderer/src/components/native-chat/use-structured-chat-pane-actions.ts
  • src/renderer/src/components/native-chat/use-structured-native-chat-pane-commands.test.tsx
  • src/renderer/src/components/native-chat/use-structured-native-chat-pane-commands.ts
  • src/renderer/src/components/tab-bar/NativeChatCliForkMenuItems.tsx
  • src/renderer/src/components/tab-bar/native-chat-cli-fork-run.test.ts
  • src/renderer/src/components/tab-bar/native-chat-cli-fork-run.ts
  • src/renderer/src/components/tab-bar/tab-session-history-switch.test.ts
  • src/renderer/src/components/tab-bar/tab-session-history-switch.ts
  • src/renderer/src/components/terminal-pane/TerminalPaneHeaderOverlay.tsx
  • src/renderer/src/components/terminal-pane/TerminalPaneResumeInChatButton.tsx
  • src/renderer/src/components/ui/button.tsx
💤 Files with no reviewable changes: 1
  • src/renderer/src/components/native-chat/use-native-chat-context-menu.test.tsx

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 0 remain after this review.

Walkthrough

The changes add split and close actions and a title header to structured native-chat panes. They add execution-host and session-based CLI-fork identity handling, and update the header and terminal controls to use pane-title button variants. The native-chat find bar now accounts for the pane title height. The setup-tab design document revises its evidence summary and outcome table.

Priority: Pending latest changes

Merge Risk: Minimal · up to 5bba8

No identified defect currently blocks merging. Complete the planned end-to-end checks as part of normal validation.

Pre-merge checks: Passed 3 · Failed 2

Failed Failed checks: 2 warnings

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 4.35% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 23 functions across 18 files. (3 skipped: … Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check Warning The description explains the user-visible changes, verification results, visual proof, scope, and known limitations. However, it does not follow the repository template fully. It omits the required Li… Add an actual issue reference under Fixes #... or explain the applicable maintainer exception. Add the missing template sections or mark them N/A with reasons. Complete the testing and checklist items, state the AI disclosure or interna…
Passed Passed checks: 3 passed
Check name Status Explanation
Title check Passed The title clearly describes the primary change: aligning chat split and close menus with terminal pane behavior.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 4.35% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 23 functions across 18 files. (3 skipped: 3 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

Full details: Description check

Explanation

The description explains the user-visible changes, verification results, visual proof, scope, and known limitations. However, it does not follow the repository template fully. It omits the required Linked Issue entry, explicit ELI5 and Why sections, testing checklist entries, AI Disclosure or applicable exemption, Agent skill upstream boundary, Notes, and the final Checklist.

Resolution

Add an actual issue reference under Fixes #... or explain the applicable maintainer exception. Add the missing template sections or mark them N/A with reasons. Complete the testing and checklist items, state the AI disclosure or internal-contributor exemption, and document cross-platform, SSH, compatibility, security, and performance considerations.

✨ Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@brennanb2025

Copy link
Copy Markdown
Contributor Author

Right-clicking a native chat transcript previously lacked the terminal pane's split/close entry points. The menu now offers Split Chat Right and Split Chat Down, plus the shared Close Pane/Close tab action in split workspaces. It uses the same commands as the header; session ID, clipboard/selection/image/Find actions and terminal-backed menus retain their behavior. Editable inputs retain their native spelling/edit menu. Keeping terminal continuation and tab movement on their existing tab/header surfaces, and hiding body close in a lone workspace, are intended differences.

Review completed in four rounds with correctness, performance and reference verification. Fixed the added closed-transcript scaling work by mounting menu metadata with its content, plus two fixture typing issues. The one main merge preserved the merged shared commands, spelling menu and owner index; the narrow merge check passed. The later test-only commit reduced the lifetime contract from 233 to 117 lines. No open P0/P1 findings. Deferred P3: shortcut labels can show all aliases where terminal menus show the primary binding; every binding still works. Older paired hosts retain their existing startup behavior.

Verified on 4652a7636ba222a31a2a0a7ba5c7a733f692d8f5: 73 renderer tests across seven named files after main integration, then 32 across the three menu files after the test trim, through tc-gate. The real-store 6/60-chat contract preserves writer-only closed-menu work and bounded open-menu work. Full CI passed, including static analysis/typecheck, five unit shards and both package jobs. Windows branch screenshot check passed all four states with populated fixture transcripts and the actual menu. No real agents, replies, lifecycle/upgrade or command-execution QA is claimed: this is the native-chat UI tests row. All owned app launches and the screenshot lead are stopped; the QA ticket is released. A real Claude config hash changed without an attributed cause; the other recorded real config hashes were unchanged (report note only). Setup and evidence-transfer delays were rig/network issues, corrected or routed to the factory, with no product patch.

For Brennan's review: these are full-window screenshots from the isolated exact-head build, inspected by the screenshot lead at original resolution and hashed before upload. The synthetic fixture workspace shows a file-access notice in the explorer; the transcript menus are the surfaces under test.

Lone structured transcript: Split Chat Right, Split Chat Down and Copy Orca Session ID

Split workspace: Close Pane

Sibling tabs in the selected pane: Close tab

Terminal-backed transcript: existing terminal menu

Source spots: menu rows and content lifetime, shared command descriptor, scaling regression contract.

@brennanb2025
brennanb2025 merged commit a75cdc8 into main Oct 24, 2026
33 checks passed
@brennanb2025
brennanb2025 deleted the brennankb5/native-chat-pane-menu branch October 24, 2026 05:13
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.

1 participant