Contributing
Thanks for helping make Vize sharper. The project is in its Real World Testing phase and moving toward v1 alpha, so small, focused changes with clear verification are the easiest to review. If you are here to report findings rather than open a PR, start with the Testing & Feedback guide.
Setup
Use the Node.js version from .node-version and the Rust version from rust-toolchain.toml. The
workspace declares a minimum supported Rust version (MSRV) of 1.95.0 in Cargo.toml
([workspace.package].rust-version); contributions must compile under that version.
Install dependencies from the workspace root:
vp install --frozen-lockfile --prefer-offline
If vp is not available yet, install Vite+ first.
Common Checks
Run the narrowest check that covers your change, then broaden when you touch shared behavior.
vp check <changed-files>
node --test tests/tooling/<test-file>.test.ts
cargo fmt --all -- --check
cargo test -p <crate>
Before opening a PR that changes shared tooling, release automation, native bindings, or compiler behavior, run the relevant workspace task from CI locally when practical.
For GitHub Actions changes, use actrun to lint or preview the workflow graph before pushing:
vp run actrun:lint
vp run actrun:dry-run
vp run actrun:job --job check-js
For Blacksmith Testbox job changes, also validate the workflow shape with
node --test tests/tooling/github-workflows.test.ts.
Language Processor Change Discipline
Vize follows compiler-project practice from rustc, TypeScript, TypeScript-Go, and Flow: classify the change, add the smallest meaningful fixture, review generated output as a contract, then broaden to parity, performance, or release gates when the touched surface needs it. See Language Engineering Practices for the full matrix.
Use one of these change classes in PRs when applicable:
Parser or AST
Compiler and codegen
Semantic analysis, lint, and cross-file analysis
Virtual TypeScript and type checking
Formatter and LSP
Runtime packaging, release, or docs
For language-facing changes, include the fixture or snapshot diff that proves the behavior. For snapshot refreshes, explain why the new output is correct and avoid broad baseline churn unless the PR is specifically about that output family.
When a compiler mismatch starts from an external repro or a local project file, use the playground
Compiler Inspector to inspect the official Vue output, Vize output,
Virtual TS, VIR, and cross-file graph. Add the inspector permalink to the PR body, then land the
minimized fixture or full snapshot that turns the output into a reviewed contract. Local batches can
be packaged with vize inspector <file-or-glob>, and agent handoff can use
vize inspector --format agent.
Pull Requests
Use Conventional Commits for commit messages and PR titles, such as
fix(vite-plugin): surface SFC compile errors.Keep PRs focused on one behavioral change or one documentation/governance change.
Include verification commands in the PR body.
Do not refresh large snapshot baselines unless the PR is specifically about those outputs.
Do not include secrets, registry tokens, private vulnerability details, or machine-local paths in issues, commits, or PRs.
Issues
Use the bug report template for regressions, crashes, incorrect diagnostics, package installation problems, and release failures. Use the feature request template for new integrations, API changes, or workflow improvements. A minimal reproduction — ideally a playground inspector link — makes a report much faster to act on.
Security issues should follow
SECURITY.md instead of the public
issue templates.
Code of Conduct and Governance
By participating, you agree to abide by the
Contributor Covenant v2.1. The
governance model and decision-making process are documented in
GOVERNANCE.md. For help finding
the right channel, see SUPPORT.md.