0.21.x

0.21.0

Released:

19.02.2026

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.fields definitions, and needs.schema_definitions_from_json ontology rules. Real-time LSP diagnostics cover a broad set of JSON Schema constraints. Also available via the ubc schema validate CLI command.

  • Dead link validation

    Outgoing links targeting non-existent need IDs or part IDs now emit needs.dead_link diagnostics, with incremental re-checking and per-link-type opt-out via allow_dead_links.

  • Fine-grained lint suppression

    New lint.per-file-ignores and lint.message-ignores options allow targeted suppression of diagnostics by file glob pattern, code, or message substring.

  • needs.links dict-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-externals option.

  • Advanced filtering and querying

    Regex matching (=~ / search()), variable-to-variable comparisons, len(var) expressions, filter_data custom variables, and docname availability in global_options and needextend filters.

  • Variant options configuration

    needs.variant_options for 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 / --config override option, ubc license config-file command, and --config-name support.

  • Missing image/figure warnings

    The indexer now emits image.not_found diagnostics for missing image or figure files.

  • Source follow links configuration

    New source.follow_links option to control source file link resolution.

👌 Improvements

  • Sphinx-needs v6 type safety: full type validation for need extra options with schema definitions.

  • Schema validation aligned with sphinx-needs (docname, is_external, is_import fields; all link fields included).

  • Deterministic diagnostic ordering (sorted by ID).

  • Improved diagnostic location reporting for needs.statuses and needs.tags.

  • Extra links copy key 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-kuzu command, kuzu format option, and related Python bindings have been removed. Migrate to parquet or json formats instead.

🐛 Fixes

  • Fixed parse_variants = true on core fields being incorrectly rejected.

  • Fixed race conditions in Windows cache directory creation and openNeedView command.

  • Fixed edge-case “ID already registered” errors from duplicate links in LSP endpoints.

  • Fixed needextend unknown variable diagnostics not being emitted.

  • Fixed MCP server crash when query_needs was 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.