Thank you for your interest in contributing to Multimeter!
- Fork the repository and clone your fork.
- Install dependencies from the repo root:
npm install
- Build all packages:
npm run compile
- Run tests:
npm run test
core/— Pure TypeScript library: parsing, execution, network logic. No VS Code orfsdependencies.mmtview/— React + VS Code webview UI for.mmtfiles.mmtcli/— CLI app; thetestlightbinary used in CI and local runs.src/— VS Code extension host code (activation, editor provider, assistant).docs/— User-facing documentation.
- Keep
core/platform-neutral — novscode,fs, browser, or Node-specific globals. Use dependency injection. - Implement new behavior in
core/first, then wire it to the extension (src/), webview (mmtview/), and CLI (mmtcli/). - Use 2-space indentation; always use curly braces for all control structures, even single-line bodies.
- Add or update unit tests in
core/src/*.test.tsfor any logic changes. - Do not duplicate token-matching regex or variable replacement logic — use
core/src/variableReplacer.ts.
- Create a branch with a descriptive name (e.g.
fix/websocket-timeout,feat/add-grpc-assert). - Keep commits focused and use short, imperative commit messages (e.g.
Fix WebSocket reconnect,Add gRPC assertion support). - Open a pull request against the
mainbranch with a clear description of the change and why it is needed. - Ensure all tests pass and the build succeeds before requesting review.
Please use GitHub Issues to report bugs or request features. Include steps to reproduce, expected behavior, and actual behavior when reporting bugs.
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.