v1.3.0
Release Notes — v1.3.0
Date: 2026-03-21
Previous release: v1.2.0 (2026-03-19)
Commits: 21
Changes: 186 files changed, 11,054 insertions, 1,223 deletions
Tests: 1,507 tests across 36 suites (all passing)
Highlights
MCP Authentication & Per-User Access Control
MCP endpoints were previously open to anyone who knew the URL. Now:
- API key authentication on MCP session creation (
Authorization: Bearer <apiKey>) - If users are configured, a valid API key is required; otherwise backward-compatible (no auth)
- Per-user tool visibility — mutation tools are hidden from users with read-only access (
r) on a graph - Users with
denyaccess don't see the graph's tools at all - Timing-safe API key comparison (reuses existing
resolveUserFromApiKey)
Per-Graph Readonly Mode
New readonly: boolean option in graph config:
projects:
my-project:
graphs:
knowledge:
readonly: true # searchable, but all mutation tools hidden- Mutation MCP tools not registered (clients don't see them)
- REST mutations return 403 Forbidden
- File mirror (
.notes/,.tasks/,.skills/) skips readonly graphs - Tools explorer respects readonly (defense-in-depth)
- Readonly overrides per-user
rwaccess — it's a graph-level lock
Mega Prompt Builder
New UI feature — Simple and Advanced modes for generating AI prompts from project context:
- Simple mode: quick prompt generation from selected context
- Advanced mode: tab-based UI with granular content selection, code/docs sources, and preview
- Content audit and quality improvements
Connect MCP Dialog
New "Connect" button in the UI header:
- Config snippets for .mcp.json, Claude CLI, Cursor, and Windsurf
- Auto-detects and pre-fills API key when auth is enabled
- Copy-to-clipboard for each config variant
Code Parser — 6-Phase Audit
Deep audit of tree-sitter code parsing and related systems:
- Phase 1: Fix TSX grammar loading, WASM memory leak, symbol extraction accuracy
- Phase 2: Graph structure, indexer robustness, import resolution improvements
- Phase 3: Search quality — symbol matching,
includeBodysupport - Phase 4: Docs link extraction, wiki-link caching
- Phase 5: Persistence safety, embedding vector compression, stop words
- Phase 6: Embedder test fixes, search quality end-to-end tests
UI Bundle Optimization
- Vendor code splitting via Vite
manualChunks— react, mui, mui-icons, markdown, md-editor, graph - Lazy loading of
@uiw/react-md-editor(~679 kB) viaReact.lazy - Initial bundle reduced from 1,942 kB to ~653 kB
Security
- MCP auth: Bearer API key required when users are configured
- Readonly enforcement: mutation tools hidden from MCP, 403 on REST, mirror watcher skipped
- Security hardening: input validation, safe graph operations (full project audit)
- License change: ISC → Elastic License 2.0 (ELv2) — source-available, self-hosting allowed, managed service prohibited
Server Startup
- HTTP server now starts after all initialization and indexing completes
- Startup banner shows all project/workspace MCP endpoints when ready
Testing
- +267 new tests (1,240 → 1,507)
- REST API coverage: all 70 endpoints tested
- MCP auth tests (config parsing, readonly, user access)
- MCP readonly tests (tool visibility, canAccess/canMutate)
- REST readonly tests (403 on mutations, 200 on reads)
- Code parser, docs, graphs, search — comprehensive coverage
- Search quality end-to-end tests
Documentation
Updated docs across the board:
configuration.md— readonly mode, examplesauthentication.md— MCP auth section, per-user tool visibilityapi-mcp.md— auth requirements, readonly tool hidingapi-rest.md— readonly in project list responsesecurity.md— MCP auth, readonly as defense-in-depthtesting.md— updated test counts and patternsnpm-package.md— license update- UI help guides — readonly mentions in knowledge, task, skill tool docs
Community
- CONTRIBUTING.md — development workflow, project structure, test patterns, guidelines
- CODE_OF_CONDUCT.md — Contributor Covenant 2.1
- SECURITY.md — vulnerability reporting policy (GitHub Security Advisories + email)
Breaking Changes
- License: Changed from ISC to Elastic License 2.0. Self-hosting and modification are permitted; offering as a managed/hosted service is not.
- MCP auth: If
usersare configured ingraph-memory.yaml, MCP clients now requireAuthorization: Bearer <apiKey>header. Existing setups without users are unaffected.
Upgrade Notes
- Update MCP client configs to include API key header if auth is enabled
- Review graph configs — add
readonly: trueto graphs that should be read-only - Review license terms if distributing or hosting the software