v0.24.1
Knowns v0.24.1
Highlights
Search is now smarter and more reliable. BM25 replaces the old heuristic keyword engine for docs, tasks, and memories — ranking by term frequency and field weight instead of simple substring matching. A new knowns code search command brings the same BM25 scoring to code symbols. Two bug fixes ship alongside to make sure empty queries stay empty.
Added
- BM25 lexical search — docs, tasks, and memories now use BM25 (k1=1.2, b=0.75) with field weighting and rerank boosts instead of the previous heuristic keyword backend. Results are more relevant and consistently ranked
- Code symbol search — new
knowns code search <query>command discovers symbols across the codebase using LSP DocumentSymbols with BM25 scoring and regex fallback for 10 languages (Go, TypeScript, Python, Rust, C#, Java, Kotlin, C++, PHP, Ruby, Swift). Supports--pathscoping - Normalized search scores — all search scores are now normalized to 0.0–1.0 across CLI and MCP surfaces for consistent comparison
Fixed
- BM25 source-type boost — source-type tie-breaking boost (
+0.30task,+0.20doc) was unconditionally applied to every document regardless of query match. This caused gibberish queries to return the full corpus instead of empty results. Boost is now only applied whenBM25Score > 0 - Search dialog empty state —
CommandEmptyfrom cmdk v1.x withshouldFilter=falsedid not reliably render. Replaced with explicit conditional rendering based on component state so "No results found." always appears correctly
Full Changelog: v0.24.0...v0.24.1