This release is the first major hardening pass since 0.1.2, covering 24 commits focused on sync correctness, editor stability, server hardening, and regression coverage.
Reliability and correctness
- Replaced the old quadratic diff implementation with
fast-diff, removing a major large-file performance and memory risk. - Hardened disk self-write suppression so local file events are acknowledged by observed content, not just timing windows.
- Serialized plugin persistence writes to prevent saved-state races between settings, disk index, and blob queue updates.
- Switched markdown filesystem ingest to a coalescing dirty-set drain loop, so bursty local file events are processed with natural backpressure instead of per-event churn.
Collaboration and editor stability
- Hardened editor binding lifecycle and recovery to better handle stale or broken live bindings.
- Improved degraded-mode handling if Obsidian changes its internal editor API, with clearer user-visible warnings instead of silent failure.
- Reduced cursor and awareness glitches, including hiding inline remote device-name labels that could look like inserted text.
Server and security hardening
- Moved HTTP sync requests to
Authorization: Bearerauthentication. - Added a server-side 10 MB blob upload limit to match the default attachment policy.
- Bounded Cloudflare-side R2 and snapshot fan-out concurrency for safer operation under Workers limits.
- Hardened snapshot ID generation and replaced regex-based XML parsing with a proper parser.
Tooling and test coverage
- CI now runs the local regression suite and server typecheck instead of build-only verification.
- Added focused regression coverage for:
- diff behavior
- disk mirror suppression and locking
- markdown ingest coalescing
- closed-file mirroring
- folder rename handling
- Pinned build inputs for more reproducible builds.