|
4 | 4 |
|
5 | 5 | v0.19.0 is a major release that introduces semantic vector search, a schema validation system, |
6 | 6 | project-prefixed permalinks, per-project cloud routing, and a significant upgrade to FastMCP 3.0. |
7 | | -It includes 80+ commits since v0.18.0 spanning new features, architectural improvements, and |
| 7 | +It includes 90+ commits since v0.18.0 spanning new features, architectural improvements, and |
8 | 8 | stability fixes across both SQLite and Postgres backends. |
9 | 9 |
|
10 | 10 | --- |
@@ -138,6 +138,13 @@ Search results now surface more relevant context: |
138 | 138 | - `TOP_CHUNKS_PER_RESULT` increased from 3 to 5, catching answers deeper in large notes (~2700 → ~4500 chars) |
139 | 139 | - `CONTENT_DISPLAY_LIMIT` doubled from 2000 to 4000 chars for results without matched chunks |
140 | 140 |
|
| 141 | +### `write_note` Overwrite Guard (#632) |
| 142 | + |
| 143 | +`write_note` is now non-idempotent by default. If a note already exists, the tool returns an |
| 144 | +error instead of silently overwriting. Pass `overwrite=True` to replace, or use `edit_note` |
| 145 | +for incremental updates. Config option `write_note_overwrite_default` restores the old upsert |
| 146 | +behavior. |
| 147 | + |
141 | 148 | --- |
142 | 149 |
|
143 | 150 | ## Architecture Changes |
@@ -242,6 +249,14 @@ making all major CLI commands scriptable for CI pipelines and automation. |
242 | 249 | - **#606**: Accept `null` for `expected_replacements` in `edit_note` |
243 | 250 | - **#579, #607**: Guard against closed streams in promo panel and missing vector tables on shutdown |
244 | 251 | - **#609**: FTS-only hybrid results missing `matched_chunk_text`; content limits too conservative |
| 252 | +- **#631**: `build_context` related_results schema validation failure — replaced fragile `_slim_context()` stripping with Pydantic `exclude=True` field config |
| 253 | +- **#630**: Skip workspace resolution when client factory is active — prevents 401 errors in cloud MCP server mode |
| 254 | +- **#30**: `tag:` prefix query fails with hybrid search — moved tag prefix parsing to MCP tool level so it works with all search modes |
| 255 | +- **#31**: `search_notes` returns cluttered observation/relation-level results — now defaults to entity-level results |
| 256 | +- **#28**: `schema_infer` and `schema_diff` return raw Pydantic models as "undefined" in LLM output — added markdown formatters |
| 257 | +- Fix `schema_validate` identifier resolution (now uses LinkResolver) and text rendering (markdown formatter) |
| 258 | +- Fix `Post(**metadata)` crash when frontmatter contains `content` or `handler` keys |
| 259 | +- Fix list-valued frontmatter fields (`title`, `type`) crashing on `.strip()` — now coerced to strings |
245 | 260 | - Cap sqlite-vec knn `k` parameter at 4096 to prevent backend errors |
246 | 261 | - Parameterize SQL queries in search repository type filters |
247 | 262 | - Double-default display in project list |
@@ -297,3 +312,6 @@ making all major CLI commands scriptable for CI pipelines and automation. |
297 | 312 | added on next sync. Set `ensure_frontmatter_on_sync: false` to preserve old behavior. |
298 | 313 | - **Config migration** runs automatically for cloud projects with bisync — `local_sync_path` |
299 | 314 | is promoted to `path` so filesystem operations work correctly. |
| 315 | +- **`write_note` is no longer idempotent** — calls to `write_note` for existing notes now |
| 316 | + return an error unless `overwrite=True` is passed. Use `edit_note` for incremental changes, |
| 317 | + or set `write_note_overwrite_default: true` in config to restore the old behavior. |
0 commit comments