Skip to content

0.2.6

Choose a tag to compare

@github-actions github-actions released this 04 Aug 02:10
· 2 commits to main since this release

Every file in a shared folder now syncs

Vault Rooms used to sync a fixed list of file types and silently skip everything else — an audio clip, a video, a
.docx, or a file with no extension simply never reached your teammates, with nothing in the UI saying so.

  • Markdown, .txt, .canvas, .json, .csv, and .excalidraw sync as text; everything else now syncs as
    binary
    , including images, PDFs, audio, video, Office documents, and unrecognized or extensionless files.
  • Binary content counts against the server's size limit at roughly 1.33x its real size, so a large video or
    Office file hits the ceiling sooner than its size on disk suggests.
  • Dotfiles and dotfolders never sync — any path segment starting with ., such as .env or a .secrets/
    folder. Sharing a folder should not risk shipping local credentials that happen to live inside it. This is the
    same rule that already excluded the vault's config folder, .git/, and node_modules/.
  • Mixed versions stay safe rather than corrupting. A teammate still on 0.2.5 or older doesn't learn those new
    paths exist at all, instead of receiving content their build would write to disk incorrectly. Both devices need
    0.2.6 to exchange them; see the new Troubleshooting entry in the README.

Offline note creates and renames are no longer lost

Creating or renaming a Markdown note while the connection is down used to be forgotten — an already-open note kept
merging fine, but structural changes had no recovery, and restarting Obsidian discarded the intent entirely.

  • The intent is now written to disk, survives a full Obsidian restart, and replays once the connection is back.
  • A rename keeps the note's identity, epoch, and history at its new path.
  • Rapid create → rename → delete sequences collapse to what you actually ended up with, so only the final path is
    created.
  • A dropped acknowledgement can no longer produce a duplicate note. The relay records each structural
    operation's outcome in the same transaction as the change itself, so a retry returns the original result rather
    than repeating the mutation.
  • Access revoked while you were offline rejects the pending change instead of honouring it.
  • Turning Live editing off with a pending change converts it to normal whole-file sync rather than stranding it.
  • Replay needs the relay on 0.2.6 or newer. Against an older host the change stays queued and you get one notice
    saying the server must be upgraded — nothing is lost in the meantime.

Live editing skips *.excalidraw.md

An .excalidraw.md file is a drawing stored as structured JSON inside a Markdown file. Merging that JSON
character by character can produce a drawing that no longer loads, so it now stays on the whole-file lane like
.canvas and .excalidraw. Ordinary Markdown notes are unaffected.

Update notifications

On load, Vault Rooms makes a single anonymous request to GitHub's public Releases API and tells you if a newer
version is out. It sends no vault content, no room or file names, and no identifier of you or your server, and it
fails silently when you're offline or the domain is blocked. Blocking api.github.com is safe and does not affect
sync. This is the only request that leaves your local network; it is documented in
SECURITY.md and can be blocked at your firewall if your environment
requires that.

Smaller fixes

  • A conflict copy of a file without an extension (e.g. LICENSE) is now recognised as a conflict copy instead
    of being treated as a new file and pushed back to the server.
  • Room settings now have a sticky "Save room settings" row at the bottom of the modal, so the action is always
    reachable without scrolling back up.
  • The conflict-policy setting reads "If two people save a non-live file at once" and says plainly that it does
    not apply to Markdown notes using Live editing.
  • Binary uploads are validated before they are stored, so a malformed payload is rejected rather than recorded with
    a hash that doesn't match what a receiving device would write.
  • Dependency: fast-uri is pinned to a patched version (GHSA-7p8r-x3mc-p8w7). It only ever reached the optional
    standalone relay through Fastify - the plugin bundle contains no Fastify at all - so nothing that ships to
    Obsidian was affected.

Upgrading

Nothing to do. The database migration is additive, and existing servers, rooms, saved connections, per-room
live-editing values, and pending sync state are unchanged. Settings written by older builds load as-is; anything
unrecognized in the new pending-operation journal is discarded rather than executed.

For the two new features to work between two devices, both need 0.2.6: offline replay requires the relay side,
and the widened file types require both sides.