The first collaborative version of Palimpsa is live. Two people can now edit the same document at the same time and see each other's caret in the prose.
We chose Yjs CRDTs because they merge clean even when peers go offline. The actual data path is:
- Edits become CRDT operations in your local browser.
- Operations sync to peers over WebRTC (no server in the keystroke path).
- Every 1.5 seconds, a debounced snapshot goes to Firestore as a safety net.
- Your IndexedDB is the canonical local copy. Reload, and the document loads from local first; the snapshot reconciles in the background.
The trade-off this stack makes is in favour of writers, not infrastructure. You can type on a plane, on a train, or with the WiFi off, and your work is saved. When you reconnect, it merges. There is no save dialog.
The signaling servers we use today are the public Yjs defaults. That's fine for now; we'll self-host them when traffic warrants it.