-
Notifications
You must be signed in to change notification settings - Fork 33
🤖 feat: RightSidebar dock-lite with drag-and-drop and e2e tests #1340
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
5c7fc7b to
13d2de5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
ff4881d to
0fd9247
Compare
|
@codex review |
0fd9247 to
bfd6b1f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
@codex review |
afc69b4 to
0c9258d
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
@codex review |
1 similar comment
|
@codex review |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
@codex review |
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback". |
e0b22e0 to
7607c66
Compare
Implements an IDE-like dock-lite sidebar with nested split/tabset layout: - Terminal tab embedded in RightSidebar (stable, not destroyed on tab switch) - Tab dragging with @dnd-kit for reliable click vs drag disambiguation - Edge docking to create horizontal/vertical splits - Unified sidebar width across all tabs (resizing affects all equally) - Layout state persisted in localStorage Technical highlights: - Migrated from react-dnd HTML5Backend to @dnd-kit with PointerSensor - 8px distance activation constraint prevents accidental drags - DragOverlay for smooth cursor-following preview - No tooltip interference (not built on HTML5 Drag API) - Proper MUX_ROOT support for e2e tests --- _Generated with `mux` • Model: `anthropic:claude-opus-4-5` • Thinking: `high`_
65f6c0e to
fd4ea21
Compare
When switching between workspaces (e.g., SSH → Local), the TerminalTab was passing the old workspace's session ID to TerminalView before the useEffect synced the state. This caused errors like 'trying to open SSH terminal for local project'. Fix: Read sessionId directly from the Map instead of caching in useState. The Map lookup always returns the correct session for the current workspaceId, eliminating the timing bug. --- _Generated with `mux` • Model: `anthropic:claude-opus-4-5` • Thinking: `high`_
Sidebar layout (splits, tabs, terminal instances) is now stored per- workspace instead of globally. This allows each workspace to have its own pane configuration, including different numbers of terminals. Global settings that remain shared across workspaces: - Sidebar width (prevents layout flash when switching) - Collapsed state Changes: - RIGHT_SIDEBAR_LAYOUT_KEY → getRightSidebarLayoutKey(workspaceId) - Command palette layout commands only available with workspace context - Updated stories and tests to use workspace-specific keys --- _Generated with `mux` • Model: `anthropic:claude-opus-4-5` • Thinking: `high`_
Summary
Implements IDE-like "dock-lite" functionality for the RightSidebar with persistent nested splits, tabsets, drag-and-drop tab moving (including reordering), and stable embedded Terminal behavior.
Key Changes
Sidebar Width Unification
RIGHT_SIDEBAR_WIDTH_KEYreplaces per-tab width keysGlobal Drag Layer
SidebarDragLayercomponent for consistent drag preview across panesDrag Interruption Fix
DragAwarePanelResizeHandledisables pointer events during tab dragsE2E Test Infrastructure
dragElementhelper using programmaticDragEventdispatchmouse.move()which hangs in Xvfb environmentssidebarDragDrop.spec.tswith 3 tests:Testing
Generated with
mux• Model:anthropic:claude-opus-4-5• Thinking:high