Skip to content

0.2.3

Choose a tag to compare

@github-actions github-actions released this 27 Jul 09:13
· 28 commits to main since this release

Live editing (CRDT sync) has been through extended two-device testing on a real LAN. That run found a
number of real defects that no automated test had caught; this release fixes all of them. If you use live
editing, upgrade both devices before using it again.

Fixed — data loss and corruption

  • A note open in an editor could have its unsaved text deleted for everyone when the sync handshake
    ran. An open editor is now the source of truth for its own note: its on-disk copy is never reconciled
    back while it's open, because Obsidian's autosave is allowed to lag behind what you typed.
  • Note content duplicated itself on every unmount/remount, compounding each cycle. A document is now
    only seeded from your local copy when the server confirms it genuinely created it.
  • Unmounting a room left it subscribed, its editors still attached, and its retired document still
    sending updates — which produced a self-sustaining update loop between two devices. Unmounting is now a
    single atomic teardown.
  • A CRDT note could become permanently undeletable, failing with "the file changed on the server
    before your edit was applied" on every attempt.
  • Renaming a note could fork it into two files, or trigger a runaway rename loop that generated dozens of
    files with stacking names.
  • Renaming a note onto a name that had merely been deleted failed with an opaque error.

Fixed — sync that silently didn't happen

  • A newly created note is now announced immediately. Previously a note you created but hadn't typed in was
    invisible to everyone else until they reconnected.
  • Edits no longer take ~3 seconds to appear. Live updates were being dropped by any device that didn't
    happen to have the note open, leaving it to wait for a slower fallback.
  • After restarting the host, both vaults now agree on the file list without anyone having to open a file
    first.
  • Edits are no longer stranded when the server reports it has no document at that path; the client
    re-establishes it and keeps your text.

Changed

  • Two people creating a note at the same time now get two notes. Every new Obsidian note starts with
    the same default name, so the first to reach the relay keeps it and the other is filed under a name
    including its creator, with a notice explaining why. Their text is never merged together.
  • A name you type is never rewritten. Renaming onto a name a teammate already used is refused with a
    notice so you can pick another.
  • The "Live editing (CRDT sync)" toggle now applies immediately. It previously only took effect if you
    also pressed "Save room settings", so it could silently revert — which looked exactly like live editing
    being broken.

Added

  • Command: "Vault Rooms: Diagnose live editing (CRDT) for the active note" — reports which link in the
    live-editing chain is missing (room, its setting, push permission, editor binding, session) instead of
    leaving you to guess.

Upgrade notes

  • Copy main.js, manifest.json, and styles.css to both devices and fully restart Obsidian; the
    embedded relay holds state, so reloading the plugin alone isn't enough.
  • Content that was already duplicated, or stray files created by the old rename bug, are real data on the
    server — this release stops producing them but does not clean them up. Delete them while connected so
    the deletion propagates.
  • Live editing remains off by default, per room.