Skip to content

v0.21.0

Choose a tag to compare

@chrisjsewell chrisjsewell released this 19 Feb 13:29
35a9cf2

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 configurationneeds.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.