Skip to content

Basalt Sync 0.10.0

Latest

Choose a tag to compare

@waynehoover waynehoover released this 17 Sep 21:05
· 6 commits to main since this release

MCP grew the tools it was missing, and learned to serve more than one vault.
Nothing in the sync engine or the server moved.

Several vaults from one endpoint

basalt mcp --vault personal=/srv/personal --vault work=/srv/work exposes up to
ten separately paired directories from one process. Each keeps its own sync
connection, keys, history, read queue and mutation queue; the process takes
every lock before it starts and holds them until all admitted work drains.
list_vaults reports names, access modes and readiness without leaking host
paths. With more than one configured, every other tool requires a vault
argument, because a shared "current vault" setting is a way to write into the
wrong one.

One caveat, stated plainly: the HTTP credential belongs to the first configured
directory and authorizes the whole endpoint in its launch mode. If different
clients should reach different vaults, run separate endpoints with separate
credentials.

Tags, and the preview that comes before them

add_tags, remove_tags, manage_tags and rename_tag, plus a tag mode for
search_notes that matches nested descendants and reads frontmatter and body
while ignoring code, comments and link syntax.

Every tag and namespace tool returns a bounded preview first. Applying it
requires handing back every affected base and the exact edits; if recomputing
the plan produces anything different, the request is refused. A batch validates
all of its inputs and verifies and flushes every before-image before it
publishes a single change, then rechecks each source and reports per-file
results. A failure part-way keeps the completed work and all recovery copies
rather than rolling back over somebody else's save.

Also

  • prepend_note, which inserts exact text at the start and keeps an existing
    UTF-8 BOM where it belongs.
  • compare_versions, for the difference between two historical versions, or
    between one and what is on disk now.
  • delivery_status, which says whether your other devices have actually
    received what you wrote: received, waiting, or unconfirmed.
  • create_directory.
  • Moves publish a verified destination, update approved links, and delete the
    source last and recoverably. They use ordinary sync create/delete semantics
    and do not promise atomic remote visibility or history across the rename.

Permanent deletion and mutation of recovery copies are still unavailable, and
there is still no whole-file writer. A correct base proves nobody else changed
the note; it does not prove a model's replacement kept everything.

Upgrading

Update the plugin through Obsidian or replace its three files. CLI users can run
npm install -g basalt-sync@0.10.0. Server 0.9.0 is unchanged and needs no
upgrade
: no server file moved in this release, protocol 7 and the stored data
format are the same, and existing pairings keep working.