playground: CRDT engine to snapshot format 8 (collab v0.37, crdt v0.39) - #125
Conversation
…crdt v0.39) Live collaboration was pinned to go-crdt/collab v0.33.0 / crdt v0.35.0 while the engine moved on. This takes it to collab v0.37.0 + crdt v0.39.0 — the pair that writes snapshot format version 8 (a ~45% smaller snapshot), and folds in the federation/eviction and read-only-participant retention fixes from collab v0.34–v0.37. The format-8 upgrade note warns that a v0.39 server sends format 8 to joining clients and no crdt before v0.38 can read it — that is a cross-version server concern; here both peers run the same deployed wasm build, so host and guest are always on the same format. Serverless signalling (paste blob / QR) and the in-memory-only credential posture are unchanged. wasm build, go vet, gofmt and the native collab sync suite (two-tab, localtab, handshake, peer-identity) all pass on the new pair; the headless two-tab browser-proofs run in CI. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Held as draft — this bump needs a cross-org change first. CI's two-tab browser-proofs fail on the new pair:
Root cause: the live-sync seam is inside Blocker: |
|
Correction — this was a CI flake, not a real regression. Ready to merge. I re-ran the browser proofs locally (system Chrome + puppeteer-core) against exactly this pair: Re-running the failed CI job then went fully green (build, bricolint, test, browser-proofs). The first run hit a transient flake in the headless two-tab proofs (both collab tests at once). The earlier note about Undrafting and merging. |
Live collaboration was pinned to
go-crdt/collab v0.33.0/crdt v0.35.0while the CRDT engine moved on. This takes the playground to collab v0.37.0 + crdt v0.39.0 — the pair that writes snapshot format version 8 (~45% smaller snapshots), and folds in the federation / eviction / read-only-participant-retention fixes from collab v0.34–v0.37.Why the latest pair, not Renovate #115
Renovate #115 bumps to collab v0.36.1 / crdt v0.37.0 — which is before snapshot v8 (introduced in crdt v0.38.0, required by collab v0.37.0). To actually ship the smaller-snapshot win, the playground needs this pair. #115 remains for its richdoc/toolkit bumps.
Format-8 compatibility
The upgrade note warns a v0.39 server sends format 8 to joining clients and no crdt before v0.38 can read it — that is a cross-version server concern. Here both peers run the same deployed wasm build, so host and guest are always on the same format; there is no mixed-version path. Serverless signalling (paste blob / QR) and the in-memory-only token posture are unchanged.
Verification
Local:
GOOS=js GOARCH=wasm go build ./...,go vet,gofmt -l, and the native collab sync suite (collab_test,collab_twotab_test,collab_localtab*,collab_panel_flow,collab_peer_identity,collab_qr,collab_paste_field) all pass on the new pair. The headless two-tab browser-proofs run in CI. Diff isplayground/go.mod+go.sumonly.🤖 Generated with Claude Code