v2.0.0
tobi/qmdv2.0.0Mar 10, 2026by github-actions[bot]
AI Summary
QMD 2.0 declares a stable library API with the SDK as the primary interface. The MCP server is now a clean consumer of the SDK, source code is reorganized into cli and mcp subdirectories, and Node 25 support is added along with a runtime-aware bin wrapper for bun installs.
Key Highlights
- Stable SDK API with QMDStore interface - search, retrieval, collection/context management, indexing, lifecycle
- Unified search() API - query for auto-expansion or queries for pre-expanded lex/vec/hyde
- MCP server rewritten as clean SDK consumer with zero internal store access
- Source organized into src/cli/ and src/mcp/ subdirectories
- Runtime-aware bin wrapper detects bun vs node to avoid ABI mismatches
New Features
- QMDStore interface with search, retrieval, collection/context management, indexing, lifecycle methods
- getDocumentBody() method
- getDefaultCollectionNames() method
- Maintenance class
- Unified search() replacing query/search/structuredSearch split
- Utility exports: extractSnippet, addLineNumbers, DEFAULT_MULTI_GET_MAX_BYTES
Full Release Notes
## [2.0.0] - 2026-03-10
QMD 2.0 declares a stable library API. The SDK is now the primary interface —
the MCP server is a clean consumer of it, and the source is organized into
`src/cli/` and `src/mcp/`. Also: Node 25 support and a runtime-aware bin wrapper
for bun installs.
### Changes
- Stable SDK API with `QMDStore` interface — search, retrieval, collection/context
management, indexing, lifecycle
- Unified `search()`: pass `query` for auto-expansion or `queries` for
pre-expanded lex/vec/hyde — replaces the old query/search/structuredSearch split
- New `getDocumentBody()`, `getDefaultCollectionNames()`, `Maintenance` class
- MCP server rewritten as a clean SDK consumer — zero internal store access
- CLI and MCP organized into `src/cli/` and `src/mcp/` subdirectories
- Runtime-aware `bin/qmd` wrapper detects bun vs node to avoid ABI mismatches.
Closes #319
- `better-sqlite3` bumped to ^12.4.5 for Node 25 support. Closes #257
- Utility exports: `extractSnippet`, `addLineNumbers`, `DEFAULT_MULTI_GET_MAX_BYTES`
### Fixes
- Remove unused `import { resolve }` in store.ts that shadowed local export