Excalidraw support #64

Closed
opened 2026-09-21 18:06:06 +01:00 by cruelacid · 1 comment
Owner

Part of #37.

What Relay does

Broken, and unfixed. Their issue #105, open since June 2026: "Relay
synchronization causes data corruption and merge conflicts in Excalidraw files."
The only workaround is Excalidraw's legacy mode. Their proposed fix, open PR
#107, gives up on merging and treats Excalidraw as an opaque attachment.
Excalidraw collaboration sits under Considering on their roadmap.

What we do today

.excalidraw.md is markdown containing a large embedded JSON payload, so it
syncs as text and merges character-wise — the exact hazard blob-policy.ts
documents for JSON.

This is a live data-safety question, not a feature request. It is worth
checking whether we already corrupt these files, before deciding whether to
support them properly.

Options, in increasing cost

  1. Classify .excalidraw.md as a blob — last-writer-wins with a visible
    conflict copy. Honest, cheap, and per CLAUDE.md disagreement beats a file
    that opens wrong. This is effectively Relay's PR #107.
  2. Structured merge via the Phase 17 machinery. Real work; Excalidraw's schema is
    not small.

Recommendation: do (1) now as a safety fix, and treat (2) as a genuine
feature later.

Risk

risk:none.

Verification

Two vaults edit one Excalidraw file concurrently. Today's behaviour is the first
thing to measure — if it corrupts, this stops being backlog.

Part of #37. ## What Relay does **Broken, and unfixed.** Their issue #105, open since June 2026: "Relay synchronization causes data corruption and merge conflicts in Excalidraw files." The only workaround is Excalidraw's legacy mode. Their proposed fix, open PR #107, gives up on merging and treats Excalidraw as an opaque attachment. Excalidraw collaboration sits under **Considering** on their roadmap. ## What we do today `.excalidraw.md` is markdown containing a large embedded JSON payload, so it syncs as text and merges character-wise — the exact hazard `blob-policy.ts` documents for JSON. **This is a live data-safety question, not a feature request.** It is worth checking whether we already corrupt these files, before deciding whether to support them properly. ## Options, in increasing cost 1. Classify `.excalidraw.md` as a **blob** — last-writer-wins with a visible conflict copy. Honest, cheap, and per `CLAUDE.md` disagreement beats a file that opens wrong. This is effectively Relay's PR #107. 2. Structured merge via the Phase 17 machinery. Real work; Excalidraw's schema is not small. **Recommendation: do (1) now as a safety fix**, and treat (2) as a genuine feature later. ## Risk `risk:none`. ## Verification Two vaults edit one Excalidraw file concurrently. Today's behaviour is the first thing to measure — if it corrupts, this stops being backlog.
Author
Owner

Moved to the Vikunja board as NEC-41: https://projectron.nerchure.com/tasks/41

Moved to the Vikunja board as **NEC-41**: https://projectron.nerchure.com/tasks/41
Sign in to join this conversation.
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Nectenda/nectenda#64
No description provided.