githubnext/chopinPublic

Let's compose rich plans together

Keep fast typing from being silently dropped

The plan service accepts at most 200 updates a second from one socket and
ignores the rest without replying. The provider sent one update per Lexical
update and only resent unacknowledged ones on the next open, so a fast burst
lost its tail, and Yjs then held every later update from that client behind
the missing one: nothing else typed in that session reached peers or survived
a reload.

The provider now merges updates made within 10 ms into one message, resends
anything still unacknowledged after a full resend interval, and merges a
replayed backlog into chunks under 64 KB.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
C5MAMaggie Appleton and Claude Opus 5.5 authored
3c67985Patch
Parent2624ff0
3 files changed+236-13
StackedSplit
e2e/collab.e2e.ts+16 −1
packages/editor/src/provider.test.ts+92 −1
packages/editor/src/provider.ts+128 −11