1.3 KiB
1.3 KiB
| id | title | status | assignee | created_date | labels | dependencies | priority | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| task-027 | Implement proper Automerge CRDT sync for offline-first support | In Progress | 2025-12-04 21:06 |
|
high |
Description
Replace the current "last-write-wins" full document replacement with proper Automerge CRDT sync protocol. This ensures deletions are preserved across offline/reconnect scenarios and concurrent edits merge correctly.
Current problem: Server does currentDoc.store = { ...newDoc.store } which is full replacement, not merge. This causes "ghost resurrection" of deleted shapes when offline clients reconnect.
Solution: Use Automerge's native binary sync protocol with proper CRDT merge semantics.
Acceptance Criteria
- #1 Server stores Automerge binary documents in R2 (not JSON)
- #2 Client-server communication uses Automerge sync protocol (binary messages)
- #3 Deletions persist correctly when offline client reconnects
- #4 Concurrent edits merge deterministically without data loss
- #5 Existing JSON rooms are migrated to Automerge format
- #6 All existing functionality continues to work