Skip to content

feat: move selected nodes between Spaces - #148

Merged
Yuqing (mydmdm) merged 13 commits into
mainfrom
fix/issue-142
Sep 3, 2026
Merged

feat: move selected nodes between Spaces#148
Yuqing (mydmdm) merged 13 commits into
mainfrom
fix/issue-142

Conversation

@mydmdm

@mydmdm Yuqing (mydmdm) commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add an explicit Move to Space action for selected nodes and Frame subtrees
  • support either an existing destination or a newly created, named Space
  • preserve hierarchy, relative geometry, styling, internal edges, artifacts, and eligible Agent conversations
  • replace the moved source footprint with a target Space Preview breadcrumb sized from the authoritative moved bounds and clamped to 480 x 320 through 2400 x 1600
  • coordinate destination creation/insertion, Agent rehome, source replacement, cleanup, and compensation with deterministic locking and explicit failure outcomes
  • add Agenetes durable thread rehome support and document the shipped architecture

Validation

  • pnpm typecheck
  • pnpm format
  • pnpm lint:fix
  • shared Move contract tests: 3 passed
  • server Move planner/service tests: 10 passed
  • web Move dialog tests: 2 passed

Closes #142

Yuqing (mydmdm) and others added 4 commits August 31, 2026 03:12
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@mydmdm Yuqing (mydmdm) changed the title docs: propose moving selected nodes between Spaces feat: move selected nodes between Spaces Sep 2, 2026
Yuqing (mydmdm) and others added 5 commits September 2, 2026 09:00
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Support named new Space destinations and leave a footprint-sized Space Preview breadcrumb at the source location.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add a default-enabled Move option for leaving the destination Space preview at the source location.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Validate both rename operands as direct Workspace children at the filesystem boundary.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Comment thread apps/server/src/modules/storage/backends/disk/canvas-dirs.ts Fixed
Yuqing (mydmdm) and others added 4 commits September 3, 2026 12:02
…ed in path expression'

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
… data used in path expression'"

This reverts commit ba8ee60.
Resolve direct Workspace children through a shared containment helper recognized by the path-injection query.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Direct agents to the shared CodeQL-aware path confinement helpers.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@mydmdm
Yuqing (mydmdm) merged commit b832df8 into main Sep 3, 2026
5 checks passed
@mydmdm
Yuqing (mydmdm) deleted the fix/issue-142 branch September 3, 2026 07:32
Yuge Zhang (ultmaster) added a commit to ultmaster/Huabu that referenced this pull request Sep 3, 2026
Two conflicts, one textual and one semantic.

`docs/architecture/canvas-storage.md`: main added the
`resolveDirectChildPath()` rename boundary above the paragraph this branch
rewrote. Both kept — the new paragraph, then this branch's version of the
deletion paragraph, whose last sentence stops calling the residual
direct-filesystem capabilities blockers for a non-Disk profile now that the
matrix declares them.

Cross-Space Move (microsoft#148) was written against the previous blob port and did
not conflict textually: it reached `getBlobStore().scope({kind: 'canvas',
canvasId})`, which this branch replaced with one area per user-visible family
behind `space(canvasId)`. Its artifact clone now reads and writes through
`space(id).artifacts`, which also puts the destination write behind the
cross-store rule the facade owns — a Space deleted mid-move can no longer
take orphan bytes with it.

Verified on the merge: server 1187 passed, web 1149 passed, shared 379
passed, typecheck across every package, lint (0 errors), format, i18n parity,
and license headers. The `Agenetes.rehome` type errors seen first were a
stale subtree build, not a merge defect — `pnpm run build:agenetes` clears
them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011J3JGQNx3Aecxc96HeuTPc
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.

Move selected nodes and Frames between Spaces

2 participants