From 9bafd3d0e914e3f1f9cbe166756c52a030c9402f Mon Sep 17 00:00:00 2001 From: Tobi Lutke Date: Sun, 5 Apr 2026 18:15:09 -0400 Subject: [PATCH] docs: complete changelog for all PRs merged since v2.0.1 Cover ~25 community PRs including embedding stability fixes, BM25 field weight and hyphenation fixes, reranker context sizing, launcher reliability, XDG compliance, and the --no-rerank flag. --- CHANGELOG.md | 85 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 67 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21ce31a..705aa85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,44 +2,93 @@ ## [Unreleased] -### Added +### Changes - AST-aware chunking for code files via `web-tree-sitter`. Supported languages: TypeScript/JavaScript, Python, Go, and Rust. Code files are chunked at function, class, and import boundaries instead of arbitrary text positions. Markdown and unknown file types are unchanged. -- `--chunk-strategy ` flag for `qmd embed` and `qmd query`. - Default is `regex` (existing behavior). Use `auto` to enable AST-aware - chunking for code files. -- `qmd status` now shows AST grammar availability. -- SDK: `chunkStrategy` option on `embed()` and `search()` methods. -- GitHub Actions workflow to build the Nix flake on Linux and macOS. + `--chunk-strategy ` flag on `qmd embed` and `qmd query` + (default `regex`). SDK: `chunkStrategy` option on `embed()` and + `search()`. `qmd status` shows grammar availability. - `qmd bench ` command for search quality benchmarks. Measures precision@k, recall, MRR, and F1 across BM25, vector, hybrid, and full pipeline backends. Ships with an example fixture against - the eval-docs test collection. + the eval-docs test collection. #470 (thanks @jmilinovich) - `models:` section in `index.yml` lets you configure `embed`, `rerank`, - and `generate` model URIs per config. Resolution order is + and `generate` model URIs per collection. Resolution order is config > env var (`QMD_EMBED_MODEL`, `QMD_RERANK_MODEL`, - `QMD_GENERATE_MODEL`) > built-in default. + `QMD_GENERATE_MODEL`) > built-in default. #502 + (thanks @JohnRichardEnders) - CLI search output now emits clickable OSC 8 terminal hyperlinks when stdout is a TTY. Links resolve `qmd://` paths to absolute filesystem paths and open in editors via URI templates (default: `vscode://file/{path}:{line}:{col}`). Configure with `QMD_EDITOR_URI` - or `editor_uri` in the YAML config. + or `editor_uri` in the YAML config. #508 (thanks @danmackinlay) +- `--no-rerank` flag skips the reranking step in `qmd query` — useful + when you want fast results or don't have a GPU. Also exposed as + `rerank: false` on the MCP `query` tool. #370 (thanks @mvanhorn), + #478 (thanks @zestyboy) +- ONNX conversion script for deploying embedding models via + Transformers.js. #399 (thanks @shreyaskarnik) +- GitHub Actions workflow to build the Nix flake on Linux and macOS. ### Fixes -- Fix paths in nix flake -- Make the Nix flake's Bun dependency fetch a fixed-output derivation so - sandboxed Linux builds can install dependencies offline. +- Embedding: prevent `qmd embed` from running indefinitely when the + embedding loop stalls. #458 (thanks @ccc-fff) +- Embedding: truncate oversized text before embedding to prevent GGML + crash, and bound memory usage during batch embedding. #393 + (thanks @lskun), #395 (thanks @ProgramCaiCai) +- Embedding: set explicit embed context size (default 2048, configurable + via `QMD_EMBED_CONTEXT_SIZE`) instead of using the model's full + window. #500 +- Embedding: error on dimension mismatch instead of silently rebuilding + the vec0 table. #501 +- Embedding: handle vec0 `OR REPLACE` limitation in `insertEmbedding`. + #456 (thanks @antonio-mello-ai) +- Embedding: fix model selection when multiple models are configured. + #494 +- BM25: correct field weights to include all 3 FTS columns — title, + body, and path were not weighted correctly. #462 (thanks @goldsr09) +- BM25: handle hyphenated tokens in FTS5 lex queries so terms like + "real-time" match correctly. #463 (thanks @goldsr09) +- BM25: preserve underscores in search terms instead of stripping them. + #404 +- BM25: use CTE in `searchFTS` to prevent query planner regression with + collection filter. +- Reranker: increase default context size 2048→4096 and make + configurable via `QMD_RERANK_CONTEXT_SIZE`. Fix template overhead + underestimate 200→512. #453 (thanks @builderjarvis) +- GPU: catch initialization failures and fall back to CPU instead of + crashing. +- MCP: read version from `package.json` instead of hardcoding. #431 +- MCP: include collection name in status output. #416 +- Multi-get: support brace expansion patterns in glob matching. #424 +- Launcher: prioritize `package-lock.json` to prevent Bun false + positive. #385 (thanks @rymalia) +- Launcher: remove `$BUN_INSTALL` check that caused false Bun detection. + #362 (thanks @syedair) +- Launcher: skip Git Bash path detection on WSL. #371 + (thanks @oysteinkrog) +- Model cache: respect `XDG_CACHE_HOME` for model cache directory. #457 + (thanks @antonio-mello-ai) +- SQLite: add macOS Homebrew SQLite support for Bun and restore + actionable errors. #377 (thanks @serhii12) +- Pin zod to exact 4.2.1 to fix `tsc` build failure. #382 + (thanks @rymalia) +- Preserve dots and original case in `handelize()` — filenames like + `MEMORY.md` no longer become `memory-md`. #475 (thanks @alexei-led) +- Include `line` in `--json` search output so editor integrations can + jump directly to `file:line`. #506 (thanks @danmackinlay) +- Nix: fix paths in flake and make Bun dependency a fixed-output + derivation so sandboxed Linux builds work offline. #479 + (thanks @surma-dump) - Sync stale `bun.lock` (`better-sqlite3` 11.x → 12.x). CI and release script now use `--frozen-lockfile` to prevent recurrence. #386 (thanks @Mic92) -- Sync duplicated `handelize()` test expectations with the restored lowercase - behavior. -- Include `line` in `--json` search output so editor integrations can jump - directly to `file:line`. Closes #505 (thanks @danmackinlay) +- Approve native build scripts in pnpm so `better-sqlite3` and + tree-sitter modules compile correctly. Update vitest ^3.0.0 → ^3.2.4. ## [2.0.1] - 2026-03-10