Summary
Moving a document currently moves only the selected document. Its subdocuments stay at their old paths.
This breaks the document tree: after moving a parent document, descendants are still left behind under the old location instead of moving with the parent.
Current behavior
Today, the move flow creates:
a version ref for the selected document at the destination path
a redirect ref for the selected document at the source path
But it does not move descendant documents.
Expected behavior
When moving a document, all descendant documents should move with it.
Example:
source:
/projects/foochildren:
/projects/foo/spec/projects/foo/spec/notes
destination:
/archive/foo
Expected result:
/archive/foo/archive/foo/spec/archive/foo/spec/notes
And redirects should exist from the old paths to the new paths.
Proposed behavior
Query all descendant documents before confirming the move.
Show the user the full list of documents that will be moved.
Move each descendant to the destination-relative path.
Create redirect refs at the old paths for the parent and each moved descendant.
Refresh/invalidate affected old and new directory listings after the move.
Implementation notes
The current move implementation only handles a single document path, both in desktop and CLI flows.
There is already a useful precedent in the delete flow:
it queries child documents recursively
it shows the full list of affected paths before applying the operation
The move flow should follow the same pattern for discovering descendants and confirming impact.
Acceptance criteria
Moving a parent document also moves all descendants.
Descendants preserve their relative paths under the new parent.
The UI shows the full list of affected documents before confirmation.
Old paths resolve via redirects after the move.
Directory views/search refresh correctly for both source and destination trees.
Do you like what you are reading? Subscribe to receive updates.
Unsubscribe anytime