Skip to content

v2.0.0 — True semantic search, multi-vault, block-level retrieval

Latest

Choose a tag to compare

@msdanyg msdanyg released this 14 Jul 03:50

v2.0.0 — True semantic search, multi-vault, block-level retrieval

The headline: search_notes now actually searches by meaning. V2 runs the same embedding model your vault's Smart Connections index used — locally, via transformers.js — to embed your queries. Conceptual queries like "individual freedom and the state" that returned zero results in v1 now resolve to the right notes and the right sections of those notes. Nothing ever leaves your machine.

Added

  • True semantic search — query embedding with your vault's own model (~25MB download on first search, cached forever, offline afterward)
  • Multi-vault: SMART_VAULT_PATH accepts comma-separated paths (alias SMART_VAULT_PATHS); tools take an optional vault parameter; new list_vaults tool
  • Block-level retrieval: search matches individual sections and returns content snippets inline — one tool call instead of search-then-read
  • Freshness: edits in Obsidian are picked up automatically (throttled incremental reload), no server restart
  • get_note_content's include_blocks now actually extracts the named blocks
  • Explicit "mode": "keyword-fallback" (+ per-result "match": "keyword" markers) when the embedding model can't load — never a silent downgrade

Fixed

  • Path traversal in get_note_content (reads outside the vault are rejected)
  • Crash on regex metacharacters in search queries
  • .ajson deletion entries (null) are now honored

Removed (breaking)

  • get_embedding_neighbors tool (required hand-typing a 384-number vector)
  • search_notes response shape changed (adds vault, scope, block, snippet, mode)

Changed

  • Requires Node >= 20; MCP SDK updated to the current 1.x line; real vitest suite (56 CI tests + opt-in live-model tests)

See CHANGELOG.md and the migration notes in the README.