Skip to content

Right sidebar tab splits: shared header and resizing - #1925

Open
brsbl wants to merge 1 commit into
mainfrom
bb/sidebar-split-polish-thr_7mjwczzstc
Open

Right sidebar tab splits: shared header and resizing#1925
brsbl wants to merge 1 commit into
mainfrom
bb/sidebar-split-polish-thr_7mjwczzstc

Conversation

@brsbl

@brsbl brsbl commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

What was wrong

The production split foundation treated adjacent sidebar tab groups too much like full page panes: its chrome and separators competed with the existing right-panel header, top/bottom placement complicated the shared header, tab headers could visually drift from their bodies while resizing, and overflow lacked a clear containing strip.

What changed

  • Kept one existing right-panel header and presents split groups as tabs side by side inside it.
  • Limited the reused hover arrangement menu to the supported left/right positions while preserving full-screen.
  • Uses sanctioned subtle seam tokens for adjacent tab groups, keeps stronger page/sidebar dividers unchanged, and matches horizontal thread split seams to the thread-header seam.
  • Synchronizes header and body widths continuously during drag resizing, contains horizontal tab overflow, preserves one add-tab action and the far-right collapse control, and retains existing active/inactive split treatment.
  • Keeps data and terminal lifecycles correct when focus moves across visible split panes, and cancels resize state if a divider loses capture or unmounts mid-drag.
  • Preserves unsplit tabs and unrelated panel behavior.

How you verified

  • pnpm exec turbo run test --filter=@bb/app --force -- src/components/secondary-panel/SidebarSplitContainer.test.tsx src/components/secondary-panel/sidebarSplitLayout.test.ts src/components/secondary-panel/ThreadSecondaryPanel.collapseControl.test.tsx src/components/secondary-panel/SecondaryPanelTabStrip.test.ts src/views/thread-detail/SplitThreadArea.test.tsx src/components/thread/terminal/useThreadTerminalController.test.ts — 97 tests passed.
  • pnpm exec turbo run typecheck --filter=@bb/app — passed.
  • pnpm exec turbo run lint --filter=@bb/app --force — passed with 147 pre-existing warnings and no errors.
  • git diff --check origin/bb/sidebar-split-panes-thr_4rr623umv4...HEAD — passed.
  • Exact-head desktop QA at 3406da4a6c6f2cecf3f2fb9eb2d82ec150b6a2d2 confirmed a single unchanged header; Browser and Side chat side by side; active-pane targeting; synchronized header/body geometry during inner drag; independent outer resizing; preserved full-screen behavior; and matching split seams in light and dark themes.

Before — parent foundation 3ad3d0f6c36b0b9b581360d0ca56d1c342b2b1a3

Viewport 1440 × 900 at DPR 2; image 2880 × 1800.

Before: foundation split chrome

After — final child 3406da4a6c6f2cecf3f2fb9eb2d82ec150b6a2d2 (light)

Viewport 1440 × 900 at DPR 2; image 2880 × 1800.

After: refined split tabs in light theme

After — final child 3406da4a6c6f2cecf3f2fb9eb2d82ec150b6a2d2 (dark)

Viewport 1440 × 900 at DPR 2; image 2880 × 1800.

After: refined split tabs in dark theme

Fixes #1841

BB-Thread-ID: thr_7mjwczzstc

AGENT GENERATED: by GPT-5

@brsbl
brsbl marked this pull request as ready for review August 19, 2026 15:46
@bb-slop-cop

bb-slop-cop Bot commented Aug 19, 2026

Copy link
Copy Markdown

🚨 SLOP COP 🚨 · review

I am SlopCop, and I am reviewing this pull request now. I will check security, code quality, performance, architecture, and the main UI flow.

Comment thread apps/app/src/views/thread-detail/ThreadDetailView.tsx Outdated
Comment thread apps/app/src/components/secondary-panel/SidebarSplitContainer.tsx

@bb-slop-cop bb-slop-cop Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚨 SLOP COP 🚨 · review

Plain-English summary

This PR gives split right-sidebar panes one shared tab bar. It limits new tab splits to left and right. It also tries to keep each visible terminal mounted across panes.

Findings

I found three defects and left two inline comments.

  • High: A visible terminal in an unfocused pane can lose its tab after a disconnect. The new retained-ID list does not reach the global tab synchronization paths.
  • Medium: Stored vertical layouts remain valid. Their horizontal shared header no longer matches their vertically stacked bodies.
  • Low: Each terminal pane creates a new retained-ID array. This restarts disconnected-session cleanup after unrelated parent renders.

I found no security issue.

The architecture scan found duplicate panel and file-preview renderer paths. They increase maintenance cost, but they do not create a separate defect in this PR.

Verification

  • The @bb/app Turbo type check passed.
  • All 75 focused tests passed.
  • git diff --check passed.
  • The browser test created a two-pane horizontal split and verified the shared header.
  • The browser test restored a vertical version-1 layout. It measured horizontal header groups and vertically stacked bodies.

I used a GPT-5.6 review gate. It confirmed all three findings.

@brsbl
brsbl force-pushed the bb/sidebar-split-polish-thr_7mjwczzstc branch from fa0517a to 2f8ccdb Compare August 19, 2026 19:54
@brsbl
brsbl force-pushed the bb/sidebar-split-polish-thr_7mjwczzstc branch from 2f8ccdb to 0016d00 Compare August 19, 2026 21:02
@brsbl
brsbl force-pushed the bb/sidebar-split-polish-thr_7mjwczzstc branch from 0016d00 to 5cf8865 Compare August 19, 2026 21:29
@brsbl
brsbl force-pushed the bb/sidebar-split-polish-thr_7mjwczzstc branch from 5cf8865 to 9337d6c Compare August 19, 2026 22:10
@brsbl
brsbl force-pushed the bb/sidebar-split-polish-thr_7mjwczzstc branch from 9337d6c to 2e9f736 Compare August 19, 2026 22:52
@brsbl
brsbl force-pushed the bb/sidebar-split-polish-thr_7mjwczzstc branch from 2e9f736 to 61efd71 Compare August 19, 2026 22:53
@brsbl
brsbl force-pushed the bb/sidebar-split-polish-thr_7mjwczzstc branch from 61efd71 to ef1c470 Compare August 19, 2026 23:02
@brsbl
brsbl force-pushed the bb/sidebar-split-polish-thr_7mjwczzstc branch from ef1c470 to fcca0b0 Compare August 19, 2026 23:24
@brsbl
brsbl force-pushed the bb/sidebar-split-polish-thr_7mjwczzstc branch from fcca0b0 to 3f472c3 Compare August 19, 2026 23:47
@brsbl
brsbl force-pushed the bb/sidebar-split-polish-thr_7mjwczzstc branch 2 times, most recently from a11dceb to 3406da4 Compare August 20, 2026 00:35
@brsbl brsbl changed the title Refine right-sidebar split tab chrome Add shared-header, resizable tab splits to the right sidebar Aug 20, 2026
@brsbl brsbl changed the title Add shared-header, resizable tab splits to the right sidebar Right sidebar tab splits: shared header and resizing Aug 20, 2026
Base automatically changed from bb/sidebar-split-panes-thr_4rr623umv4 to main August 20, 2026 02:09
@brsbl
brsbl force-pushed the bb/sidebar-split-polish-thr_7mjwczzstc branch from 3406da4 to c519423 Compare August 20, 2026 02:09
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.

The thread right sidebar cannot split multiple panels

1 participant