Skip to content

Add production right-sidebar split panes - #1601

Open
brsbl wants to merge 15 commits into
mainfrom
bb/sidebar-split-panes-thr_4rr623umv4
Open

Add production right-sidebar split panes#1601
brsbl wants to merge 15 commits into
mainfrom
bb/sidebar-split-panes-thr_4rr623umv4

Conversation

@brsbl

@brsbl brsbl commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • add persistent split-pane layouts inside the thread right sidebar while preserving the existing unsplit surface
  • render split tab groups side by side in the existing single sidebar header; pane content does not duplicate header chrome and split resize seams are transparent at rest
  • separate adjacent split-tab slots with the sanctioned border-seam-vertical/60 token while leaving the stronger page/sidebar divider unchanged
  • project the persisted split tree into the shared header so header slots and pane bodies resize together continuously, whether the drag begins in the header or pane divider
  • make every shared-header separator drag-resizable, including stacked split positions, and commit the true pointer release coordinate without turning a click into a resize
  • reuse the existing split-position menu and commands for active-tab positioning, pane resizing, full-screen/restore, and drag-to-recombine
  • preserve compact behavior by rendering one active drawer surface below 768px while retaining the saved wide split layout
  • remove the closed queued-label parent layer so this PR is standalone against main

Review feedback

  • resolved the existing review threads: compact drawer mounting, stable pane keys, persistence retention/no-op writes, native browser lifecycle, pointer-cancel restoration, full-screen exit access, and updater side effects
  • resolved final review findings for stacked header resize, release-coordinate persistence, captured-pointer isolation, and no-op separator clicks
  • added focused regression coverage for shared-header geometry, subtle tab separators, horizontal and stacked resize synchronization, release and cancellation behavior, and no-op persistence

Verification

  • pnpm exec vitest run ... — 3 focused files, 35 tests passed
  • pnpm exec turbo run typecheck --filter=@bb/app — passed
  • targeted ESLint and git diff --check — passed
  • real BB interface verified at 390×844, 768×900, 1440×900, and 3440×1440
  • visually verified one unchanged header, adjacent split tab groups, hover options, left/right/top/bottom positioning, active-tab targeting, inner and outer resize, full-screen/restore, recombination, compact drawer restoration, eight sidebar panes, and eight workspace panes
  • visually verified synchronized tab/pane edges at initial, active mid-drag, 27/73 narrow/wide, 72/28 wide/narrow, repeated resize cycles, and a stacked header drag with synchronized header-width/body-height allocation

BB-Thread-ID: thr_4rr623umv4

AGENT GENERATED: by GPT-5.6 Sol

@bb-slop-cop

bb-slop-cop Bot commented Aug 14, 2026

Copy link
Copy Markdown

🚨 SLOP COP 🚨 · review

I am SlopCop, and I am reviewing this pull request now.

This change adds split panes to the production right sidebar. It lets people open and resize several sidebar views at the same time.

I will check security, code quality, architecture, performance, and the main user flow. I will post one final review after these checks finish.

Comment thread apps/app/src/components/secondary-panel/ThreadSecondaryPanel.tsx
Comment thread apps/app/src/components/secondary-panel/SidebarSplitContainer.tsx Outdated
Comment thread apps/app/src/components/secondary-panel/SidebarSplitContainer.tsx Outdated
Comment thread apps/app/src/components/secondary-panel/SidebarSplitContainer.tsx Outdated
Comment thread apps/app/src/components/secondary-panel/ThreadSecondaryPanel.tsx
Comment thread apps/app/src/components/secondary-panel/ThreadSecondaryPanel.tsx Outdated
Comment thread apps/app/src/components/secondary-panel/SidebarSplitContainer.tsx Outdated

@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

This PR lets people divide the right sidebar into several panes. It also saves each thread's pane layout.

I found seven issues. I would fix the first four before merge.

  1. The browser deck can unmount before it removes a closed native browser view. A hidden native view can also remain visible.
  2. A saved conversation full-screen state loses its only exit control after the sidebar splits.
  3. The compact drawer mounts all saved pane bodies, including terminal and browser views.
  4. Position-based React keys can move component state between panes.
  5. Pane focus calls a parent state update from a React state updater. I reproduced the React warning.
  6. A cancelled divider drag keeps changed DOM sizes but does not save them. I reproduced this size mismatch.
  7. No-op reconciliation causes repeat synchronous storage writes. Default layouts also create records without a retention limit.

The new code correctly uses the shared split-layout operations. However, it copies the existing split tree and divider renderer.

That copy already lost the existing divider's cancellation restore. A shared divider and stable pane-key helper would prevent this difference.

I found no injection, authorization, or command-execution defect. The native browser lifecycle issue can expose a hidden desktop view and keep private content active.

Validation passed:

  • The @bb/app type check passed.
  • The 23 focused tests passed.
  • The browser test covered split, resize, maximize, reload, and compact layouts.
  • The browser test reproduced the pointer cancellation defect and the React warning.
  • An independent GPT-5.6 review confirmed the seven findings.

I posted a line comment for each issue. This review uses the comment-only option.

brsbl added 5 commits August 14, 2026 04:44
…s-thr_4rr623umv4

# Conflicts:
#	apps/app/src/views/thread-detail/ThreadDetailSecondaryContent.test.tsx
#	apps/app/src/views/thread-detail/ThreadDetailSecondaryContent.tsx
…s-thr_4rr623umv4

# Conflicts:
#	apps/app/src/components/secondary-panel/ThreadSecondaryPanel.tsx
@brsbl
brsbl changed the base branch from bb/rename-queued-to-follow-ups-thr_4rr623umv4 to main August 15, 2026 02:30
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