Thank you for your interest in improving VS Arduino! This guide covers everything you need to get a development environment running and to submit changes.
- Node.js 20 or newer
- Visual Studio Code
^1.80.0 - Git
git clone https://github.com/HiTECH-Corporation/VS-Arduino.git
cd VS-Arduino
npm cinpm run compile # Compile the TypeScript extension sources into out/
npm run watch # Recompile automatically on file changesTo try your changes, open the repository in VS Code and press F5 — an Extension Development Host window launches with the extension loaded.
| Path | Purpose |
|---|---|
src/ |
Extension host sources (TypeScript) |
src/debugger/cortex-debug-core/ |
Embedded Cortex-Debug engine (ships in the extension) |
media/ |
Prebuilt Webview UI bundles and icons (committed build artifacts) |
scripts/ |
Build and release helper scripts |
out/ |
Compiled extension output (generated, not committed) |
Note on the Webview UI: the
media/bundles are committed build artifacts. The original UI design sources are maintained privately, so please do not hand-edit the bundled files inmedia/— describe the UI change you need in an issue instead.
- Code and comments are written in English.
- Prefer self-documenting code — clear names over explanatory comments.
- Follow the style of the surrounding code (formatting, naming, module structure).
- Do not introduce new runtime dependencies without discussing them in an issue first.
- Keep the existing Webview messaging architecture and
arduino-cliinvocation logic intact unless the change explicitly targets them.
- Fork the repository and create a branch from
main:git checkout -b fix/serial-monitor-timestamps
- Make your changes and verify that the extension compiles cleanly:
npm run compile
- Test your changes in the Extension Development Host (F5).
- Commit with a clear, imperative message describing what and why:
Fix timestamp drift in Serial Monitor panel view - Push your branch and open a Pull Request against
main. Describe the problem, the approach, and any testing performed.
Use the issue templates:
- Bug Report — include your extension version, VS Code version, OS, board, and the relevant
Output > VS Arduinolog. - Feature Request — describe the problem you are trying to solve, not only the proposed solution.
Releases are tag-driven and fully automated. Maintainers publish by updating the version in package.json and CHANGELOG.md, then pushing a matching v<version> tag — the CI pipeline builds, verifies, and publishes to both the Visual Studio Marketplace and Open VSX.
By contributing, you agree that your contributions will be licensed under the MIT License.