v0.21.0
This release consolidates all changes from the 0.20.x pre-release series (0.20.0b1 – 0.20.6b1).
✨ New Features
-
Comprehensive schema validation — Need extra options and links are now validated against JSON Schema during indexing, with support for typed fields (string, bool, int, float, list variants), custom
needs.fieldsdefinitions, andneeds.schema_definitions_from_jsonontology rules. Real-time LSP diagnostics cover a broad set of JSON Schema constraints. Also available via theubc schema validateCLI command. -
Dead link validation — Outgoing links targeting non-existent need IDs or part IDs now emit
needs.dead_linkdiagnostics, with incremental re-checking and per-link-type opt-out viaallow_dead_links. -
Fine-grained lint suppression — New
lint.per-file-ignoresandlint.message-ignoresoptions allow targeted suppression of diagnostics by file glob pattern, code, or message substring. -
needs.linksdict-based configuration — A new dict-based[needs.links]format for defining link types, aligning with the upcoming sphinx-needs v7 release. -
Model Context Protocol (MCP) server — Built-in MCP server in the VS Code extension provides programmatic access to project needs and metadata for external tools and AI systems.
-
Enhanced graph view — Need graph visualization with configurable depth, toolbar controls, back/forward navigation, zoom, and "Go to Source" action.
-
Project comparison with
ubc diff— CLI command for comparing schemas and needs between projects or Git revisions, with HTML export and--deny-externalsoption. -
Advanced filtering and querying — Regex matching (
=~/search()), variable-to-variable comparisons,len(var)expressions,filter_datacustom variables, anddocnameavailability inglobal_optionsandneedextendfilters. -
Variant options configuration —
needs.variant_optionsfor defining variant-specific need option sets, with improved variant syntax parsing from sphinx-needs. -
RST preview enhancements — Click-to-source navigation, scroll sync toggle, and modernized toolbar.
-
Needs Index tree view improvements — Grouping by type/status/tags, optimized server calls, and better performance.
-
CLI improvements —
-c/--configoverride option,ubc license config-filecommand, and--config-namesupport. -
Missing image/figure warnings — The indexer now emits
image.not_founddiagnostics for missing image or figure files. -
Source follow links configuration — New
source.follow_linksoption to control source file link resolution.
👌 Improvements
- Sphinx-needs v6 type safety: full type validation for need extra options with
schemadefinitions. - Schema validation aligned with sphinx-needs (
docname,is_external,is_importfields; all link fields included). - Deterministic diagnostic ordering (sorted by ID).
- Improved diagnostic location reporting for
needs.statusesandneeds.tags. - Extra links
copykey now supported. - Improved JSON import/export with better type handling and error reporting.
- Improved RST autocompletion for need directive options.
- Extension version displayed in VS Code home tree view.
‼️ Breaking Changes
- Removed deprecated Kuzu database support — The
ubc build json-to-kuzucommand,kuzuformat option, and related Python bindings have been removed. Migrate toparquetorjsonformats instead.
🐛 Fixes
- Fixed
parse_variants = trueon core fields being incorrectly rejected. - Fixed race conditions in Windows cache directory creation and
openNeedViewcommand. - Fixed edge-case "ID already registered" errors from duplicate links in LSP endpoints.
- Fixed
needextendunknown variable diagnostics not being emitted. - Fixed MCP server crash when
query_needswas called by Claude model. - Fixed needs graph view "Focus on main need" button and zoom behavior.
- Fixed missing VS Code configuration options not being registered.
- Fixed deployment issue with incorrect platform binaries (0.20.1b1).
- Fixed machine code handling for recent Windows 11 versions.