Skip to content

Move panes between Workspaces by drag, context and dor - #887

Merged
nedtwigg merged 7 commits into
mainfrom
pane-workspace-move
Oct 1, 2026
Merged

nedtwigg merged 7 commits into
mainfrom
pane-workspace-move

Conversation

@nedtwigg

@nedtwigg nedtwigg commented Oct 1, 2026

Copy link
Copy Markdown
Member

Panes and minimized Surfaces can now move to another Workspace by dragging to its tab, or to + for a new Workspace. Terminal and Tool contexts also offer a Workspace picker; browsers use dragging. dor move <surface> <workspace> and dor move <surface> --new expose the same operation.

Moves preserve terminal Sessions and reconnect agent-browser Surfaces. Plain iframes reopen at their saved URL after a Window-wide typed confirmation; dirty or pending Tools refuse the move. Membership, refs, activity projections, and persistence move together, with rollback before commit and protection against stale saves. Moved terminals explain the new ref scope and stable-ID usage. A sole Surface cannot create an equivalent new Workspace.

The title explanation is separately changed to a bug icon directly beside the title, including VS Code.

Validation:

  • Full pnpm test and pnpm build.
  • Integration coverage for rollback, save races, moved-caller refs/ensure, iframe consent, and dirty Tool refusals.
  • Visible innerdogfood: terminal instance preserved; drag commits on release; agent-browser page state preserved; real builtin:file editor refreshes when clean and refuses a move with unsaved edits.
  • Claude review in surface:2, followed by /simplify; reviewed and tested the resulting changes.

nedtwigg and others added 7 commits October 1, 2026 14:31
Consolidate the move coordinator's consent, endpoint and close paths,
rechecking both Walls after every await; flush both Walls together and
publish the response once. Hold Window writes with a flag rather than a
frozen snapshot, and fence Workspace saves through `serialize`.

Measure drag targets once per gesture through the shared tab-element
helpers and touch the highlight only when the target changes. Share the
closed-select key handling with the browser-actions picker, parse the
dor destination in one helper, and replace repeated spec rules with
pointers to layout.md.

Add a regression test for an iframe that appears during the persistence
flush: dor refuses and the GUI prompts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	scripts/spec-word-budgets.json
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying mouseterm with  Cloudflare Pages  Cloudflare Pages

Latest commit: 47c5883
Status: ✅  Deploy successful!
Preview URL: https://936462a6.mouseterm.pages.dev
Branch Preview URL: https://pane-workspace-move.mouseterm.pages.dev

View logs

@nedtwigg
nedtwigg merged commit a254cf3 into main Oct 1, 2026
16 of 17 checks passed
@nedtwigg
nedtwigg deleted the pane-workspace-move branch October 1, 2026 23:25

This branch is waiting to be deployed

1 waiting deployment
hosted-preview — 47c5883a Waiting Oct 1, 2026 by nedtwigg via cleanup #654
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.

2 participants