Skip to content

Commit 254e304

Browse files
bm-clawdclaude
andauthored
docs: update v0.19.0 release notes with post-draft changes (#626)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 496af07 commit 254e304

1 file changed

Lines changed: 51 additions & 11 deletions

File tree

docs/releases/v0.19.0.md

Lines changed: 51 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
v0.19.0 is a major release that introduces semantic vector search, a schema validation system,
66
project-prefixed permalinks, per-project cloud routing, and a significant upgrade to FastMCP 3.0.
7-
It includes 66 commits since v0.18.0 spanning new features, architectural improvements, and
7+
It includes 80+ commits since v0.18.0 spanning new features, architectural improvements, and
88
stability fixes across both SQLite and Postgres backends.
99

1010
---
@@ -16,13 +16,15 @@ stability fixes across both SQLite and Postgres backends.
1616
Full vector and hybrid search for SQLite (via sqlite-vec) and Postgres (via pgvector).
1717

1818
- **Hybrid search mode** combines full-text search (FTS) with vector similarity for best results
19+
- **Score-based fusion** replaces RRF for hybrid ranking — `max(vec, fts) + 0.3 * min(vec, fts)` preserves dominant signals and rewards dual-source agreement (#577)
1920
- **Default search mode** is now `hybrid` when semantic search is enabled, `text` when disabled
2021
- Embedding providers: FastEmbed (local, default) or OpenAI API
2122
- Configurable similarity threshold via `semantic_min_similarity` (default 0.55)
2223
- Per-query `min_similarity` override on `search_notes` tool
2324
- Auto-backfill: existing entities get embeddings generated on first startup
2425
- Backend-specific distance-to-similarity conversion (cosine for SQLite, inner product for Postgres)
2526
- FTS fallback: if semantic dependencies are missing, search gracefully degrades to text-only
27+
- sqlite-vec knn `k` parameter capped at 4096 to prevent backend errors
2628

2729
**Configuration:**
2830
```json
@@ -84,18 +86,19 @@ Cloud projects can target specific workspaces for multi-tenant environments.
8486

8587
## New Tools and Capabilities
8688

87-
### JSON Output Mode
89+
### Dashboard (`bm project info`)
8890

89-
All MCP tools now support `output_format="json"` for machine-readable responses.
91+
`bm project info` now displays an htop-inspired compact dashboard with:
9092

91-
- Default remains `"text"` for human-readable output (no breaking changes)
92-
- `build_context` defaults to `"json"` with slimmed payloads (redundant fields stripped)
93-
- CLI tool commands support `--format json` flag
93+
- Horizontal bar charts for note types (top 5)
94+
- Embedding coverage bar with Unicode block characters
95+
- Colored status dots for at-a-glance health
96+
- `EmbeddingStatus` schema and `get_embedding_status()` service method for programmatic access
9497

95-
### Structured Metadata Search
98+
### Unified Metadata Search
9699

97-
`search_notes` now supports filter-only searches — `query` is optional, so you can search
98-
purely by frontmatter metadata without passing an empty string.
100+
`search_by_metadata` has been merged into `search_notes` — one tool for all searches.
101+
`query` is now optional, so you can search purely by frontmatter metadata.
99102

100103
```
101104
search_notes(metadata_filters={"status": "in-progress"})
@@ -106,6 +109,14 @@ search_notes(tags=["security"]) # convenience shorthand
106109
search_notes(status="draft") # convenience shorthand
107110
```
108111

112+
### JSON Output Mode
113+
114+
All MCP tools now support `output_format="json"` for machine-readable responses.
115+
116+
- Default remains `"text"` for human-readable output (no breaking changes)
117+
- `build_context` defaults to `"json"` with slimmed payloads (redundant fields stripped)
118+
- CLI tool commands support `--format json` flag
119+
109120
### `tag:` Search Shorthand
110121

111122
Search by tag using convenient shorthand syntax.
@@ -119,14 +130,25 @@ search_notes("tag:coffee AND tag:brewing")
119130

120131
Entities now track `created_by` and `last_updated_by` fields for attribution.
121132

122-
### Matched Chunk Text in Search
133+
### Improved Search Result Content (#609)
123134

124-
Search results now include `matched_chunk` field showing the specific text that matched.
135+
Search results now surface more relevant context:
136+
137+
- `matched_chunk_text` populated for FTS-only hybrid results (no more fallback to truncated content)
138+
- `TOP_CHUNKS_PER_RESULT` increased from 3 to 5, catching answers deeper in large notes (~2700 → ~4500 chars)
139+
- `CONTENT_DISPLAY_LIMIT` doubled from 2000 to 4000 chars for results without matched chunks
125140

126141
---
127142

128143
## Architecture Changes
129144

145+
### Score-Based Hybrid Fusion (#577)
146+
147+
RRF (Reciprocal Rank Fusion) compressed all fused scores to ~0.016, destroying ranking
148+
differentiation. The new formula `max(vec, fts) + FUSION_BONUS * min(vec, fts)` preserves
149+
dominant signals and rewards dual-source agreement. Zero-score results now produce zero
150+
fused score instead of receiving a 0.1 weight floor.
151+
130152
### FastMCP 3.0 Upgrade
131153

132154
Upgraded from FastMCP 2.12.3 to 3.0.1.
@@ -204,6 +226,7 @@ making all major CLI commands scriptable for CI pipelines and automation.
204226

205227
## Bug Fixes
206228

229+
- **#577**: RRF fusion compressed all hybrid scores to ~0.016, destroying ranking differentiation
207230
- **#582**: build_context returns empty results on valid note identifiers
208231
- **#575**: Remove hardcoded "main" default from default_project
209232
- **#595**: recent_activity dedup and pagination across MCP tools
@@ -216,6 +239,10 @@ making all major CLI commands scriptable for CI pipelines and automation.
216239
- **#533**: Fix recent_activity prompt defaults
217240
- **#530**: Prevent spurious `metadata: {}` in frontmatter output
218241
- **#601**: Return matched chunk text in search results
242+
- **#606**: Accept `null` for `expected_replacements` in `edit_note`
243+
- **#579, #607**: Guard against closed streams in promo panel and missing vector tables on shutdown
244+
- **#609**: FTS-only hybrid results missing `matched_chunk_text`; content limits too conservative
245+
- Cap sqlite-vec knn `k` parameter at 4096 to prevent backend errors
219246
- Parameterize SQL queries in search repository type filters
220247
- Double-default display in project list
221248
- `ensure_frontmatter_on_sync` default changed to `True`
@@ -224,6 +251,13 @@ making all major CLI commands scriptable for CI pipelines and automation.
224251

225252
---
226253

254+
## Security
255+
256+
- Upgrade `cryptography` for CVE advisory
257+
- Upgrade `python-multipart` for security advisory
258+
259+
---
260+
227261
## Internal / Developer
228262

229263
- **#598**: Upgrade FastMCP 2.12.3 → 3.0.1 with tool annotations
@@ -233,6 +267,8 @@ making all major CLI commands scriptable for CI pipelines and automation.
233267
- **#596**: Fix CLI runtime defects and audit regressions
234268
- CLI refactoring and workspace-aware cloud project listing
235269
- Split and speed up PR test matrix in CI
270+
- Fix CI: collect coverage from test jobs instead of re-running all tests
271+
- Create `search_vector_chunks` in test fixtures for Postgres compatibility
236272

237273
---
238274

@@ -251,6 +287,10 @@ making all major CLI commands scriptable for CI pipelines and automation.
251287
- **Semantic search dependencies** are now included by default. If sqlite-vec fails to load,
252288
search gracefully falls back to FTS. Run `bm reindex --embeddings` to generate embeddings
253289
for existing content.
290+
- **Hybrid search scoring** has changed from RRF to score-based fusion. Search result ordering
291+
may differ — results should be more accurate with better score differentiation.
292+
- **`search_by_metadata`** is removed as a standalone tool. Use `search_notes` with
293+
`metadata_filters` instead (same parameters, same behavior).
254294
- **Project-prefixed permalinks** are enabled by default. Existing notes keep their current
255295
permalinks until modified. Set `permalinks_include_project: false` to disable.
256296
- **Frontmatter on sync** is now enabled by default. Files without frontmatter will have it

0 commit comments

Comments
 (0)