v1.3.1
What's Changed
- fix(release): scope draft-release artifact download to release assets by @suavecito585 in #40
- feat(release): single-source version setter + CI coherence gate (THE-256 Phase 1) by @suavecito585 in #38
- chore: napi v3 config migration + docs refresh (README/SECURITY/CONTRIBUTING) by @suavecito585 in #41
- docs(contributing): drop link to non-existent how-to-add-a-tool.md by @suavecito585 in #42
- fix(security): analysis follow-ups — symlink containment, JWT exp, bookmark HITL, napi output (H1/H2/M4/M8) by @suavecito585 in #43
- Fix cross-platform installability, path portability, JWT fallback, and TOCTOU races by @suavecito585 in #44
- fix(THE-233): runtime version from package.json + converged-scope docs by @suavecito585 in #45
- feat(cli): zero-config startup, config subcommands, actionable embedding errors by @suavecito585 in #46
- feat(mcp): expose vault notes as Resources + built-in Prompts by @suavecito585 in #47
- feat(cli): obsidian-tc plugin install --vault, vendoring the companion plugin by @suavecito585 in #48
- feat(tasks): point tasks_filter at native list_tasks on plugin degrade by @suavecito585 in #49
- test(security): property-based tests for glob ACL + vault-path primitives by @suavecito585 in #50
- docs: local-only quickstart, accurate add-a-tool walkthrough, comparison by @suavecito585 in #52
- chore(docker): run the server image as the non-root bun user by @suavecito585 in #51
- feat(dispatch): opt-in profile sink (handler vs overhead timing) by @suavecito585 in #53
- feat(mcp): paginate resources/list with a cursor by @suavecito585 in #54
- feat(bridge): point a missing companion at plugin install by @suavecito585 in #55
- chore(license): relicense Apache-2.0 -> AGPL-3.0-only (THE-260) by @suavecito585 in #56
- fix(dist): run the published bundle under Node, not just Bun by @suavecito585 in #58
- perf(search): atomic per-note indexing writes + memoized sqlite-vec load by @suavecito585 in #59
- fix(search): vec0 falls back to brute-force on failure; batch the vec→meta lookup by @suavecito585 in #60
- feat(health): surface native_loaded + vec_enabled on server_health and the boot line by @suavecito585 in #61
- docs: correct understated symlink defense, native-module + runtime claims, prebuild count by @suavecito585 in #62
- feat(mcp): cursor pagination for tools/list (parity with resources/list) by @suavecito585 in #63
- perf(search): batch the indexVault boot reconcile into one transaction per 100 notes by @suavecito585 in #64
- chore(docker): glibc base (oven/bun:1-slim) so the native prebuild can load by @suavecito585 in #65
- docs(g2.5): reconcile the native prebuild matrix to 8 triples (incl. musl) by @suavecito585 in #67
- feat(native): musl (Alpine) prebuilds + loader musl detection by @suavecito585 in #66
- ci(native): build-only musl cross-compile validation + doc residuals by @suavecito585 in #68
- docs(merge-progress): reflect THE-260 AGPL relicense (done) by @suavecito585 in #57
- chore: remove the internal THE-233 MERGE-PROGRESS.md from the public repo by @suavecito585 in #69
- chore(deps): freshen safe dependency floors + esbuild + bun CI pin by @suavecito585 in #70
- feat(mcp): derive tool annotations + title for tools/list by @suavecito585 in #71
- fix(security): bind HTTP tokens to a single vault (THE-267) by @suavecito585 in #72
- fix(security): fail-closed ACL defaults + honor strictReadDefault (THE-268) by @suavecito585 in #73
- fix(security): DNS-rebinding / cross-origin protection on HTTP transport (THE-271) by @suavecito585 in #74
- fix(security): bridge tools fail closed under a read whitelist (THE-270) by @suavecito585 in #75
- fix(security): canonicalize folder-ACL checks through symlinks (THE-269) by @suavecito585 in #76
- feat(mcp): tool-surface facade / progressive disclosure (THE-219) by @suavecito585 in #77
- perf(db): SQLite per-connection baseline + prepared-statement cache (THE-273) by @suavecito585 in #78
- feat(mcp): weight tool-name matches in find_capability ranking (THE-219) by @suavecito585 in #79
- fix(dist): stop leaking local state into .mcpb + minify server bundle & binaries (THE-276) by @suavecito585 in #80
- perf(index): batch embeddings across notes on index/reconcile (THE-277) by @suavecito585 in #81
- perf(plane): window contradiction-sweep judge calls under bounded concurrency (THE-277) by @suavecito585 in #82
- feat(mcp): domain-verb facade mode (THE-275) by @suavecito585 in #83
- fix(security): Unicode-normalization-insensitive folder ACL matching (THE-272) by @suavecito585 in #84
- ci: PR-triggered docker build gate (THE-276) by @suavecito585 in #85
- feat(mcp): emit tool/capability schemas as JSON Schema 2020-12 (THE-278) by @suavecito585 in #86
- feat(mcp): 2025-11-25 tool-surface alignment — tool-errors, outputSchema, icons (THE-278) by @suavecito585 in #87
- feat(auth): OAuth 2.0 Protected Resource Metadata + WWW-Authenticate (THE-278) by @suavecito585 in #88
- docs: reconcile the docs site with shipped reality (THE-278) by @suavecito585 in #89
- docs: reconcile README/ARCHITECTURE/CONTRIBUTING with shipped reality (THE-278) by @suavecito585 in #90
- docs: clean up residual OAuth + 4-platform mentions (THE-278) by @suavecito585 in #91
- fix(dist): Node node:sqlite fallback — self-contained .mcpb on mac/win/linux (THE-276) by @suavecito585 in #92
- dist: linux-arm64 binary + .mcpb release artifact + install matrix (THE-276) by @suavecito585 in #93
- ci: least-privilege permissions on ci-docker (CodeQL #8) by @suavecito585 in #94
- docs(security): prev_hash CAS write-safety + upstream #237 note (THE-252) by @suavecito585 in #95
- docs(governance): DCO sign-off requirement + dco check + dual-license note (THE-263) by @suavecito585 in #96
- dist: multi-stage Dockerfile — bun + dist-only runtime (THE-276) by @suavecito585 in #97
- feat(metrics): wire idempotency hit/skip counters + cache-bytes gauge (THE-197) by @suavecito585 in #98
- feat(search): opt-in terse projection on read/search hit paths (THE-251) by @suavecito585 in #99
- feat(sessions): dispatch-level tool-invocation tracing into active sessions (THE-209) by @suavecito585 in #100
- feat(periodic): wire Templater expansion into periodic-note creation (THE-207) by @suavecito585 in #101
- perf(native): zero-copy Float32Array cosine on the brute-force path (THE-266) by @suavecito585 in #102
- fix(dist): stop the .mcpb bundle leaking non-runtime tracked files (THE-276) by @suavecito585 in #103
- fix(obsidian-fit): canvas read-projection + query_base honesty guard + ARCHITECTURE reconcile (THE-284) by @suavecito585 in #104
- fix(acl): make enforcePathAcl root mandatory — uniform symlink-canonical enforcement (THE-286) by @suavecito585 in #105
- fix(search): push vault filter into the KNN + fall back under ACL crowding (THE-287) by @suavecito585 in #106
- feat(server): honor transports.stdio + throttle.enabled; add internal-error sink (THE-288) by @suavecito585 in #107
- feat(server): surface search-index degradation in server_health (THE-288 part 2) by @suavecito585 in #108
- fix(server): execute_template honors overwrite — no silent clobber (THE-289) by @suavecito585 in #109
- docs(security): document companion LRA-key = full-admin trust boundary (THE-289) by @suavecito585 in #110
- perf(mcp): memoize per-request JSON-schema + capability-search work (THE-294) by @suavecito585 in #111
- feat(m3): compare-and-swap (prev_hash) for bookmark + workspace JSON edits (THE-292) by @suavecito585 in #112
- chore(deps): override vite to ^7 to clear the 4 bun-audit advisories (THE-299) by @suavecito585 in #113
- feat(server): compute-abuse budgets — regex worker timeout, JSONLogic op budget, configurable idempotency reclaim (THE-293) by @suavecito585 in #114
- feat(server): periodic cache.db maintenance sweep (THE-292) by @suavecito585 in #115
- perf(mcp): single-serialization memo for dispatch results; close the server-cache item (THE-294) by @suavecito585 in #116
- fix(m1): index-on-write covers every M1 note mutation (THE-291 part 1) by @suavecito585 in #117
- fix(server): index-on-write coverage for the m3-m6 writers (THE-291 part 2) by @suavecito585 in #118
- feat(search): notes metadata table + FTS5 substrate (THE-291 part 3A) by @suavecito585 in #119
- feat(search): FTS5-accelerated search_text with disk-scan fallback (THE-291 part 3B-i) by @suavecito585 in #120
- feat(m1): metadata tools read the notes table when the index is ready (THE-291 part 3B-ii) by @suavecito585 in #121
- feat(bases): Obsidian Bases expression DSL subset evaluator (THE-281) by @suavecito585 in #122
- feat(bases): realign the .base model to shipped Obsidian 1.12 syntax (THE-280) by @suavecito585 in #123
- feat(companion): installable-product hardening — API floor, versions.json, shape self-check (THE-282) by @suavecito585 in #124
- docs: live-Obsidian write coherence contract (THE-283) by @suavecito585 in #125
- feat(acl): per-vault ACL — readOnly + glob whitelists per vault (THE-295) by @suavecito585 in #126
- feat(plane): wire the SleepTime scheduler; de-scope the README to reality (THE-296) by @suavecito585 in #127
- feat(auth): asymmetric JWT — RS256/ES256/EdDSA + local JWKS + kid rotation (THE-297) by @suavecito585 in #128
- docs: sole-interface cutover guide (THE-279) by @suavecito585 in #129
- docs: ARCHITECTURE.md truth pass — delete superseded design, document shipped storage (THE-298) by @suavecito585 in #130
- docs: README reframe + quickstart/why + prompt-injection section + metadata polish (THE-299) by @suavecito585 in #131
- chore: release 1.3.0 by @suavecito585 in #132
- chore: release 1.3.1 — publish public-access fix + recut of 1.3.0 batch by @suavecito585 in #133
Full Changelog: v1.2.1...v1.3.1