Context
Mnemo currently uses last-write-wins for shared notes (and will for shared canvases too). For shared canvas in particular, two users dragging different cards simultaneously can clobber each other's positions on save. Same issue exists for shared .md notes today.
Proposal
Adopt a CRDT-based realtime collaborative editing layer (e.g. Yjs) covering both notes and canvases together. Goals:
- Simultaneous editing without lost writes
- Presence indicators (cursors, selections)
- Offline-tolerant with eventual convergence
- Single mechanism for notes and canvases — avoid divergence where canvases collaborate better than the notes embedded in them
Why deferred
- Significant infrastructure investment (WebSocket layer, CRDT runtime server-side, persistence strategy, conflict resolution for concurrent file system writes)
- Should land for notes and canvases together, not in isolation
- Canvas v1 will use last-write-wins matching the existing note model — acceptable for self-hosted personal/small-team usage
Related
- Canvas integration design (forthcoming spec in
docs/superpowers/specs/)
- Plugin ecosystem design (
docs/superpowers/specs/2026-03-23-plugin-ecosystem-design.md)
Acceptance criteria (high-level)
Context
Mnemo currently uses last-write-wins for shared notes (and will for shared canvases too). For shared canvas in particular, two users dragging different cards simultaneously can clobber each other's positions on save. Same issue exists for shared
.mdnotes today.Proposal
Adopt a CRDT-based realtime collaborative editing layer (e.g. Yjs) covering both notes and canvases together. Goals:
Why deferred
Related
docs/superpowers/specs/)docs/superpowers/specs/2026-03-23-plugin-ecosystem-design.md)Acceptance criteria (high-level)