Vuer RTC

September 29, 2026 (UTC) — SDK 0.9.2 / server 0.5.2: safe journal watermarks

SDK 0.9.2 and server 0.5.2 are published. The SDK folds only acknowledged journal entries in canonical replay order when their causal history is represented, retaining unresolved gaps and text identities. The server broadcasts the persisted snapshot clock only after checkpoint storage and journal deletion commit. Reconnecting clients receive the same baseline through normal state transfer.

Registry tarballs were verified against the published integrity metadata and installed in a fresh temporary project. The client install exposes compactToWatermark; the server package contains the watermark broadcast. Live production acceptance confirmed bounded recovery: after 501 acknowledged edits, a legacy client left 503 journal entries retained; an updated client reconnected, applied another 501 edits, and reduced the journal to zero. Text survived both steps, with 1,024 characters in the final document. This acceptance covers the tested room and sequence; it does not imply that legacy journal gaps in every room can be compacted without a fresh checkpoint.

September 24, 2026 (UTC) — SDK 0.9.1 / server 0.5.1: MERGE and EXACT

SDK 0.9.1 and server 0.5.1 are published from RTC #106. Downloaded registry tarballs match the reviewed packages byte-for-byte; a fresh registry installation type-checks and imports both with the existing React peer and generated Prisma client. SDK 0.9.1 adds optional wire declarations only; its executable JavaScript is unchanged from 0.9.0. The server correction restores concurrent, nontransactional ordinary native writes without whole-journal copies. EXACT uses a temporary same-Note barrier only for its request; it never changes future writes or other Notes. Reads observe a coherent source/identity baseline without activating that barrier.

Additive generation observations and optional native expectedGeneration reject MERGE batches whose original identity baseline crossed a destructive reset or history rewrite. Lossless checkpoint compaction preserves generation and character IDs. Rare maintenance keeps atomic persistence and temporary same-Note coordination. Existing editor messages omit the additive field and continue unchanged. See the concurrency example.

Local validation passed 513 SDK tests (1 skipped), 266 server tests (2 skipped), and real Mongo concurrency, epoch, retry and unknown-commit-outcome cases. Measured bookkeeping overhead is nonzero; see the reviewed performance audit. Package publication does not establish authority rollout, production latency, or manual acceptance; those gates retain separate receipts in DreamLake #706.

September 24, 2026 (UTC) — conditional commits

TypeScript SDK 0.9.0 and RTC server 0.5.0 are published from the reviewed RTC #102 implementation. Downloaded registry tarballs match the reviewed artifacts byte-for-byte; a fresh registry installation imports both SDK 0.8.10 and 0.9.0 successfully. Package publication does not itself establish authority deployment or live compatibility; those receipts are tracked separately in DreamLake #706.

The optional conditional protocol reads one source/checkpoint/revision cut and accepts a validated native text batch only against that exact RTC identity revision. Native operations and retry acknowledgements persist atomically; identical retries return the original result. In server 0.5.0, ordinary CRDT writers shared the authority queue; server 0.5.1 removes that permanent queue. See Server for the wire contract and operational limits.

  • Keep one authoritative process per room; this release has no distributed fencing.
  • Install the additive ConditionalReceipt collection and unique index through a reviewed schema rollout. Publish SDK first, then server; deploy the authority before dependent conditional writers.
  • Verify every browser/API checkpoint consumer uses SDK 0.8.10 or newer. Mixed 0.8.10/0.9.0 checkpoint tests preserve IDs, tombstones, and anchored Unicode edits in both directions. A legacy plain-text checkpoint remains readable; it cannot recover previously discarded identities or reconcile an unknown pending draft.
  • Retain source and identity receipts across deployment. Investigate incompatible or divergent rooms without resetting existing ropes or replacing Note bodies.
  • Update dependent versions/lockfiles, publish these owning docs and generated skills from the Dockit documentation lineage, then verify deployed package versions and guarded concurrent editing. DreamLake #706 tracks the separate release and rollout gates.

Local release validation: SDK 513 passing tests (1 skipped), server 246 passing (2 skipped), package/docs builds, and real Mongo transaction rollback, retry, compaction/restart, and identity replay checks. These checks do not establish production completion.

September 19, 2026

TypeScript SDK 0.8.10, RTC server 0.4.2, and Python SDK 0.0.2 preserve collaborative text character identities across checkpoints, reloads, and API bridges.

  • Graph stores restore additive Snapshot.textRopes metadata automatically before replaying later edits. TypeScript writers use encodeTextSnapshot to persist materialized checkpoints without losing IDs and deleted anchors.
  • Python snapshots accept the same metadata, hydrate TypeScript rope fields, and preserve local agent IDs when editing after refresh.
  • The server returns note-body checksums on the editor socket. Compare only fresh responses at equal committed clocks after pending edits are acknowledged. Slow checks and different clocks mean catch-up, not proven divergence.
  • Initial local edits no longer mutate the loaded checkpoint. Tests cover simultaneous post-refresh edits and deleted-anchor replay.

Deploy the server first, then upgrade browser, API, and CLI checkpoint consumers. Preserve the full snapshot envelope in bridges. Old readers can display string graph fields but cannot safely apply compacted text edits without hydration. This release cannot reconstruct IDs discarded by legacy checkpoints or repair previously garbled text automatically.

See Networking for the wire protocol and Python for integration.