Skip to content

v0.2.1

Choose a tag to compare

@Axect Axect released this 17 Mar 09:45
· 9 commits to main since this release

Fixed

  • OT version tracking: fixed stale version numbers causing "Delete component does not match" errors — docState.version now correctly increments after self-update acks and remote updates, matching the ShareJS OT protocol
  • Timeout handling: send timeouts now enter an "uncertain" state instead of immediately clearing pending state, preventing content drift and duplicate sends when the server applies ops but the callback is lost
  • Pre-send race condition: added snapshot fence in _flushDoc to detect concurrent remote updates arriving during the 50ms content stability check

Changed

  • Replaced boolean sending flag and pendingContent string with structured pending record ({ baseVersion, targetContent, sentAt, sendEpoch }) for explicit in-flight operation tracking
  • Added monotonic sendEpoch counter to prevent stale ack confusion after resyncs
  • Self-update acks are now validated: stray/duplicate acks with no pending send are silently ignored instead of corrupting version state
  • Non-timeout send failures now trigger immediate resync instead of silently clearing state