Skip to content

Extension development

Guide for contributors working on the Strixonomy VS Code extension (extension/). End-user extension docs: VS Code extension overview.

Repository layout

Path Role
extension/src/ Extension host — activation, commands, tree views, LSP client
extension/webview-ui/ OntoUI React app (Vite) — inspector, graph, query workbench, etc.
extension/server/<platform>/ Bundled strixonomy-lsp binary (populated by build scripts)
crates/strixonomy-lsp/ Language server implementation (Rust)

Design specs live under docs/design/ and docs/ui/ (not at repo root).

Prerequisites

  • Rust 1.88+, Node 20, npm
  • VS Code 1.85+ for F5 debugging

See Contributing for full workspace setup.

Build and test

# Rust LSP binary
cargo build -p strixonomy-lsp --bins

# Extension + webviews
cd extension
npm ci
npm run compile          # builds webview-ui + esbuild bundle
STRIXONOMY_LSP_BIN="../target/debug/strixonomy-lsp" npm test

Press F5 in VS Code with the extension/ folder open (or use Run Extension launch config) after npm run compile.

npm run watch does not rebuild webviews

npm run watch runs esbuild only (extension host). After editing React under webview-ui/, run npm run build:webview or npm run compile before F5 — otherwise the Extension Development Host will show a stale UI.

Key docs

Topic Doc
Contributor workflow contributing.md
LSP / webview debugging debugging.md
Host ↔ React messages webview-protocol.md
Custom LSP methods lsp-api.md
OntoUI platform platform/OVERVIEW.md
UI specs ui/README.md

Pre-PR checks

Run extension-related CI locally:

cargo fmt --all --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo build -p strixonomy-lsp --bins
cd extension/webview-ui && npm ci && npm test
cd extension && STRIXONOMY_LSP_BIN=../target/debug/strixonomy-lsp npm ci && npm run compile && npm test
./scripts/check-doc-versions.sh

For full CI parity (Rust, docs, packaging, VS Code e2e): ./scripts/run-ci-local.sh — see Contributing.

Plugin UI work: see Capability providers and extension/webview-ui/src/capabilities/.