v1.0.7
tobi/qmdv1.0.7Feb 18, 2026by github-actions[bot]
AI Summary
This release adds LiquidAI LFM2-1.2B as an alternative base model for query expansion fine-tuning and introduces multi-collection search support via multiple -c flags. Several bug fixes are included for JSON output, path resolution, and XDG_CONFIG_HOME support.
Key Highlights
- Added LiquidAI LFM2-1.2B as alternative base model (2x faster at decode/prefill)
- Support multiple `-c` flags to search across several collections
- Return empty JSON array `[]` instead of no output when `--json` finds no results
- Resolve relative paths passed to `--index` to prevent malformed config
- Respect `XDG_CONFIG_HOME` for collection config path
New Features
- LiquidAI LFM2-1.2B model support for query expansion fine-tuning
- Multi-collection search with multiple `-c` flags
- XDG_CONFIG_HOME support for config path resolution
Full Release Notes
## [1.0.7] - 2026-02-18 ### Changes - LLM: add LiquidAI LFM2-1.2B as an alternative base model for query expansion fine-tuning. LFM2's hybrid architecture (convolutions + attention) is 2x faster at decode/prefill vs standard transformers — good fit for on-device inference. - CLI: support multiple `-c` flags to search across several collections at once (e.g. `qmd search -c notes -c journals "query"`). #191 (thanks @openclaw) ### Fixes - Return empty JSON array `[]` instead of no output when `--json` search finds no results. - Resolve relative paths passed to `--index` so they don't produce malformed config entries. - Respect `XDG_CONFIG_HOME` for collection config path instead of always using `~/.config`. #190 (thanks @openclaw) - CLI: empty-collection hint now shows the correct `collection add` command. #200 (thanks @vincentkoc) ## [1.0.6] - 2026-02-16 ### Changes - CLI: `qmd status` now shows models with full HuggingFace links instead of static names in `--help`. Model info is derived from the actual configured URIs so it stays accurate if models change. - Release tooling: pre-push hook handles non-interactive shells (CI, editors) gracefully — warnings auto-proceed instead of hanging on a tty prompt. Annotated tags now resolve correctly for CI checks. ## [1.0.5] - 2026-02-16 The npm package now ships compiled JavaScript instead of raw TypeScript, removing the `tsx` runtime dependency. A new `/release` skill automates the full release workflow with changelog validation and git hook enforcement. ### Changes - Build: compile TypeScript to `dist/` via `tsc` so the npm package no longer requires `tsx` at runtime. The `qmd` shell wrapper now runs `dist/qmd.js` directly. - Release tooling: new `/release` skill that manages the full release lifecycle — validates changelog, installs git hooks, previews release notes, and cuts the release. Auto-populates `[Unreleased]` from git history when empty. - Release tooling: `scripts/extract-changelog.sh` extracts cumulative notes for the full minor series (e.g. 1.0.0 through 1.0.5) for GitHub releases. Includes `[Unreleased]` content in previews. - Release tooling: `scripts/release.sh` renames `[Unreleased]` to a versioned heading and inserts a fresh empty `[Unreleased]` section automatically. - Release tooling: pre-push git hook blocks `v*` tag pushes unless `package.json` version matches the tag, a changelog entry exists, and CI passed on GitHub. - Publish workflow: GitHub Actions now builds TypeScript, creates a GitHub release with cumulative notes extracted from the changelog, and publishes to npm with provenance. ## [1.0.0] - 2026-02-15 QMD now runs on both Node.js and Bun, with up to 2.7x faster reranking through parallel GPU contexts. GPU auto-detection replaces the unreliable `gpu: "auto"` with explicit CUDA/Metal/Vulkan probing. ### Changes - Runtime: support Node.js (>=22) alongside Bun via a cross-runtime SQLite abstraction layer (`src/db.ts`). `bun:sqlite` on Bun, `better-sqlite3` on Node. The `qmd` wrapper auto-detects a suitable Node.js install via PATH, then falls back to mise, asdf, nvm, and Homebrew locations. - Performance: parallel embedding & reranking via multiple LlamaContext instances — up to 2.7x faster on multi-core machines. - Performance: flash attention for ~20% less VRAM per reranking context, enabling more parallel contexts on GPU. - Performance: right-sized reranker context (40960 → 2048 tokens, 17x less memory) since chunks are capped at ~900 tokens. - Performance: adaptive parallelism — context count computed from available VRAM (GPU) or CPU math cores rather than hardcoded. - GPU: probe for CUDA, Metal, Vulkan explicitly at startup instead of relying on node-llama-cpp's `gpu: "auto"`. `qmd status` shows device info. - Tests: reorganized into flat `test/` directory with vitest for Node.js and bun test for Bun. New `eval-bm25` and `store.helpers.unit` suites. ### Fixes - Prevent VRAM waste from duplicate context creation during concurrent `embedBatch` calls — initialization lock now covers the full path. - Collection-aware FTS filtering so scoped keyword search actually restricts results to the requested collection.