Skip to content
Development preview · v0.0.1Windows x64 · Source-grounded guide

Build and package the native app

Work in the repository’s desktop/ directory. The native source is Electron, React and TypeScript; it is not the static interface atlas and not the marketing website. Use a Windows x64 environment, a Node version compatible with the pinned toolchain, and the committed dependency lockfile. Model weights stay outside the application package.

These are actual scripts from desktop/package.json:

Terminal window
Set-Location .\desktop
npm ci
npm run typecheck
npm test
npm run build
npm start

npm start launches Electron and can initialize the private runtime. Run it deliberately on a machine where that ownership is appropriate. npm run dev starts the controlled development path; do not expose a development renderer to untrusted network content.

The build prepares self-hosted fonts, identity assets, companion art, Windows icons and third-party notices. The exact frozen About-derived PNG is a source asset; ordinary verification must not overwrite it with a new random frame. Dynamic visual QA and static icon generation are separate operations.

npm run prepare:runtime prepares verified runtime resources. Read the script’s pinned manifest, supported backend and licensing before running it. Do not substitute a binary solely because its filename matches. Record distribution identity separately from the engine’s reported revision.

Terminal window
npm run dist

The packaging script uses verified Electron, compiled ASAR, runtime resources, Windows metadata and the available Inno Setup toolchain. It emits a portable distribution, per-user installer and provenance artifacts. The resulting installer is not publisher-signed merely because the compiler is signed.

Exclude model files, personal app profiles, developer caches and service credentials. Verify installed files against the release manifest and exercise the actual packaged and installed executable; a development Electron pass is insufficient.

Check native security settings, fonts/assets, all five pages, exact context validation, actual model load/generation, Stop/recovery, unload, persistence and owned-port shutdown. Use an explicit isolated profile for automation. After closing it, verify the normal profile branch without test messages or model loading.

Avoid concurrent GPU tests and CPU-heavy builds while benchmarking. Preserve raw receipts and classify failures correctly: an automation selector error is different from an engine error, and a user changing pages can hide a completed response. No source-control repository URL is invented by these docs; coordinate the actual publication workflow with the project owner.