Skip to content

Add single-row vertical split groups and animated drag docking - #283

Open
cristicretu wants to merge 4 commits into
mainfrom
feat/drag-tab-groups
Open

cristicretu wants to merge 4 commits into
mainfrom
feat/drag-tab-groups

Conversation

@cristicretu

@cristicretu cristicretu commented Sep 13, 2026

Copy link
Copy Markdown
Owner

Dragging one vertical sidebar session onto another now creates a split represented by one ordinary sidebar row, with combined titles and a pane count. Selecting that row restores every pane and its last focused session; adding a third or later pane keeps the same single row.

Dragging a session, a whole group, or a pane header into the terminal shows animated docking targets on all four edges. The lifted preview reflects the pane arrangement, hovered targets expand and follow the pointer, and interrupted motion continues from its current position. Whole-group moves preserve nested ratios; Escape and center drops cancel without changing layouts. Reduced Motion skips target travel and the lift fade.

Inactive panes use a subtle 4% dim. Pane clicks update focus and selection during pointer capture, before terminal mouse reporting can consume the event, so active styling no longer waits for asynchronous store invalidation. Existing terminal entities remain mounted, and fixed panes avoid repeating the selection side effects in their body handler.

This PR starts from main and carries forward the durable split foundation from closed PR #180, including independent pane focus, resizing, persistence, keyboard commands, and notification navigation. Sidebar insertion bands retain reordering; Option/Alt retains the existing session handoff gesture. Layout mutations are atomic and bounded to eight panes.

Validation:

  • Workspace formatting and Clippy with warnings denied passed.
  • Same-event pointer focus regression passed across 40 switches with real preference persistence; test-event median 16.9 ms and p95 17.8 ms, including GPUI test rendering. Existing pane entities stayed unchanged.
  • Full workspace suite: 1,512 passed, 30 ignored; final app rerun after hover-focus polish: 646 passed, 17 ignored.
  • GPUI mouse regression covers two- and three-session grouping, ordinary row height, cancellation, and returning a closed pane to the sidebar while keeping its session alive.
  • Native macOS review with three disposable local shell sessions verified the single sidebar row and restored split panes.
  • cargo build --workspace --release passed.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Sep 13, 2026

Copy link
Copy Markdown

Deploying diri with  Cloudflare Pages  Cloudflare Pages

Latest commit: 36d835a
Status: ✅  Deploy successful!
Preview URL: https://ffc57441.diri-53j.pages.dev
Branch Preview URL: https://feat-drag-tab-groups.diri-53j.pages.dev

View logs

@cristicretu
cristicretu marked this pull request as ready for review September 13, 2026 12:06
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