This guide covers the basic local development and verification workflow for Beam on Windows. Run the commands from the repository root in PowerShell.
- Node.js 22 or newer and Bun 1.4.0
- Rust stable with the MSVC toolchain for native rebuilds
- Git
Install the project dependencies once after cloning or when the lockfile changes:
bun install --frozen-lockfileUse two PowerShell terminals. Keeping the Vite server running separately lets Electron start as soon as its native capture engine is ready.
In the first terminal, start the Vite server:
bun run devIn a second terminal, start Electron:
bun run electron:devKeep both terminals open while developing. Stop the processes with Ctrl+C.
bun run electron:dev checks Cargo before starting. When Cargo is available, it rebuilds the engine and stops if compilation fails. Without Cargo, it looks for the exact application version and CPU architecture in packages/native-recorder. If the engine is missing in an interactive terminal, confirm the verified download with Y; answer N to stop. A non-interactive process never prompts and downloads only when BEAM_DOWNLOAD_CAPTURE_ENGINE=1 is set explicitly.
Create the Windows NSIS installer without publishing a release:
bun run electron:build -- --win nsis --publish neverThe installer and its build metadata are written to dist_electron/.
Run the JavaScript tests, the Vitest suite with coverage, and the TypeScript check with:
bun run test
bun run test:coverage
bun run typecheckThe TypeScript coverage gate is 90% for statements, branches, functions, and lines. Rust changes should also be checked with:
bun run rust-test
bun run rust-test:coverageRead and follow the repository guidelines:
- Update
package.jsonto a new stable semantic version, for example0.1.1. - Commit the change with a message beginning with
[RELEASE]and push it from theExtraBinossaccount.
The GitHub Actions workflow checks that the version is newer than the latest GitHub Release, validates every package and checksum in a draft release, then publishes the universal Windows installer and the macOS/Linux packages atomically.