feat(sidebar): project workspace rows into pane splits
Problem
Workspace rows in the left sidebar currently export only the reorder/move payload. Pane drops therefore cannot project the workspace's surfaces, even though Cloud rows already use the live SurfaceResourceGroup capability.
Change
Workspace rows now export an opaque live surface-resource capability alongside the existing sidebar reorder payload. The captured group follows sidebar panel order and preserves exact remote placement identity. Pane destinations resolve it through the existing tab-transfer registry and SurfaceCatalog.projectGroup path; sidebar drops continue to consume the reorder payload.
Validation
python3 scripts/verify-local.py --repo . --affected origin/mainpassed app-source wiring, test wiring, and feature-flag checks.- Added/updated behavioral coverage in
cmuxTests/SidebarWorkspaceDragDelegateTests.swift. git diff --checkpasses.- Native Swift/XCTest execution was unavailable in the Linux cloud container.
Changelog
Added: workspace sidebar rows can be projected into pane splits while retaining normal sidebar reorder behavior.
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.
Summary by cubic
Makes workspace rows in the left sidebar droppable into pane splits by exporting a live SurfaceResourceGroup alongside the existing reorder payload. Pane destinations resolve the group through the tab-transfer registry; sidebar drops keep consuming the reorder payload.
- The exported group captures the workspace's panel order and exact remote placement identity, rather than exporting the whole remote workspace the row happens to mirror.
- Workspace-level groups are marked with
representsWorkspace, which gatessupportsNonDestructivePaneProjectionso local workspace rows stay reorder-only and pane drops can't move local panes out of their source workspace. - Sidebar reorder pasteboard types are excluded from pane-transfer routing so reorder drags aren't misread as projections.
Summary by CodeRabbit
- New Features
- Dragging eligible remote workspaces now supports transferring their panes while preserving their workspace and tab associations.
- Bug Fixes
- Sidebar tab-reorder drags are no longer mistaken for pane transfers.
- Workspace drag registrations are cleaned up when the drag source is released.