Canvas structural merge over disk #45
Labels
No labels
area:docs
area:identity
area:ops
area:plugin
area:server
channel:community
channel:direct
channel:owned
channel:press
channel:social
e2ee-constrained
gate:at-ga
gate:pre-ga
marketing
parity
relay:absent
relay:planned
relay:requested
relay:supported
risk:additive
risk:contract
risk:none
usability
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Nectenda/nectenda#45
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of #37. Depends on the
structuredfile kind.What Relay does
Real-time CRDT merge within the board — nodes and edges merged individually
rather than whole-file last-writer-wins. Graduated from beta and enabled by
default in 0.8.12 (9 Sep 2026), free on every tier including Free.
(
docs.relay.md/how-relay-works/canvas-collaboration/, read 21 Sep 2026.)What we do today
.canvasis a blob: last-writer-wins with a visible conflict copy. Two peoplemoving different nodes produces a conflict, not a merge.
What changes
A canvas is JSON with
nodesandedges. Model them asY.Map/Y.Arrayinsidethe file's own Y.Doc and serialise to disk on change: two people moving different
nodes both win, and Obsidian reloads the file.
Deliberately over disk, not in the view. This closes the honest part of the
gap without touching Obsidian's undocumented
leaf.view.canvasinternals. Livein-view multiplayer is tracked separately and is a decision with ongoing upkeep,
not something this issue implies.
Risk
risk:none. No server change.Verification
Two vaults move different nodes concurrently; both survive. Then the case that
matters more: two vaults edit the same node, and the result is either a clean
merge or a visible conflict copy — never a canvas that opens wrong. Per
CLAUDE.md, data safety beats convergence.Moved to the Vikunja board as NEC-22: https://projectron.nerchure.com/tasks/22