- The document is a Yjs document bound to ProseMirror, drawn with the design system’s blocks. Letters typed at the same time on two devices merge in place.
- The key is 32 random bytes in the link, after the #. A browser never sends that part to a server. The document’s id on the relay is a hash of the key.
- Every Yjs update and every cursor position is encrypted with AES-GCM before it leaves the browser. The relay keeps the updates in order and passes them on over a WebSocket.
- With no network, the edits are kept on the device and sent when the connection is back. A socket that stops answering is closed after 9 seconds, so an edit is never sent into a dead connection.
- Versions are Yjs snapshots kept in the document itself, so they are encrypted too. A version is shown with what changed since the one before, and a restore is a new edit, so every later version stays in the history.
- The relay cannot merge what it cannot read, so a device sends the whole document, encrypted, when the log grows past 60 entries, and the relay replaces the entries it covers.
Keys: ⌘B bold, ⌘⇧X strike, ⌘E code, ⌘Z undoes only your own edits. Type # for a heading, a hyphen for a list, 1. for a numbered list, [] for a checklist and > for a quote.