All notable changes to the KiCad Custom Design Rules extension are documented here. Format follows Keep a Changelog; this extension adheres to Semantic Versioning.
- IntelliSense completion. Inside
(condition "…")/(constraint assertion "…")strings: receiver members afterA./B./AB., and receivers + functions at an identifier boundary. While writing rule structure: constraint types after(constraint, layer names after(layer, severities after(severity, categories after(constraint disallow, and the structural keywords. Each item carries type/units or argument shape and a short doc. - Hover help: hover a constraint type, property, function, layer, severity, or disallow category for its description and argument/type.
- The extension is now activated (
onLanguage:kicad-dru) and esbuild-bundled. Completion and hover read a singledata/api.jsonstamped with the KiCad version and audit date. The completion/hover logic lives in pure, vscode-free modules covered by unit tests (npm run test:unit, part ofnpm test). - Distinct function highlighting and the publish-workflow PAT-guard fix (from the prior review) ship together with the above.
- CI: a Test workflow runs the grammar snapshot tests (
npm test) on every push and pull request, so grammar regressions are caught before merge. - Retargeted to KiCad 10 stable (10.0.0 shipped 2026-03-20; the 9.0 line
ended at 9.0.9). Constraint/function membership re-verified against the
10.0.0source tag. - Grammar test harness:
vscode-tmgrammar-snapsnapshots lock the tokenisation of every fixture undertests/fixtures/(npm test), so grammar edits can't silently regress colouring. - Snippets added for the constraints that were master-only on KiCad 9 and
shipped in KiCad 10 stable:
solder_mask_expansion,solder_mask_sliver,solder_paste_abs_margin,solder_paste_rel_margin,via_dangling(no value),bridged_mask(no value). Thethrough_via/blind_viadisallow keywords are likewise stable in KiCad 10 (already offered by thedisallowsnippet). - Grammar recognition of the KiCad 11 / master net-chain family —
constraints
net_chain_length,stub_length,return_path(the latter with its(layer "…")/(net "…")sub-clauses), and functionsinNetChain,hasNetChain,inNetChainClass. These are not in KiCad 10.0.0 stable (a 10.0.0 DRC parser rejects them), so they are highlighted by the grammar but deliberately kept OUT of the snippet set — the current grammar-vs-snippet isolation boundary. - Initial syntax highlighting for
.kicad_drufiles: rule blocks, constraints, conditions withA./B.accessors and operators, layers, severities, disallow categories, comments, strings, numbers with units. - Snippets for the common rule patterns (clearance, disallow, length, via and track sizing, hole-to-hole, assertion).
- Language configuration:
#line comments, paren matching, paren-based folding, auto-closing pairs.