Koinos One development usually has two loops: the Electron/React desktop app and
the native teleno_node binary. Use the smallest loop that exercises the code
you changed, then widen validation for cross-layer, packaging, backup, restore,
producer, storage, or protocol-sensitive behavior.
- Node.js and npm for the renderer and Electron build.
- A CMake toolchain for
node/teleno-node. - Native dependencies required by the Koinos/Teleno C++ build.
- Submodules initialized when native or protocol code is needed.
Initialize submodules when needed:
npm run submodules:initRun the full app development stack:
npm run devRun only the Vite renderer:
npm run dev:renderernpm run dev starts the Vite renderer, TypeScript watch for the Electron main
process, and the Electron dev shell. The first-run assistant must remain closed
in normal Vite and Electron development runs.
Build the manual, renderer, Electron main process, and build identity metadata:
npm run buildThe build command runs npm run docs:build,
scripts/generate-build-info.js,
the Vite build, and the Electron TypeScript build.
Build only the manual site:
npm run docs:buildBuild the native node from an existing CMake build directory:
cmake --build node/teleno-node/build --target teleno_node --parallelRun native tests from the build directory:
ctest --test-dir node/teleno-node/build --output-on-failureThe compatibility target koinos_node still depends on teleno_node for old
automation, but the active native binary name is teleno_node.
Run a focused native test group while iterating:
ctest --test-dir node/teleno-node/build -R backup --output-on-failureGeneral TypeScript and renderer tests:
npm run testFocused UI tests:
npm run test:ui
npm run test:ui:backupElectron smoke test:
npm run test:ui:electronPackage staging and packaged-app verification are part of packaging commands, but can be run directly:
npm run test:package-staging
npm run test:packagedmacOS packaging:
npm run package:mac
npm run package:mac:dir
npm run package:mac:unsignedWindows packaging is present but secondary to current macOS work:
npm run package:winUse scripts when the change touches parity, backup, restore, packaging, or network behavior. Examples:
scripts/smoke-native-backup-restore.sh
scripts/smoke-public-bootstrap-promotion.sh
scripts/compare-jsonrpc-parity.py
scripts/compare-grpc-parity.sh
scripts/validate-grpc-client-compatibility.sh
scripts/run-koinos-integration-compat.sh
scripts/verify-package-staging.js
scripts/verify-packaged-app.jsThe manual is built by MkDocs from
docs/manual/
with use_directory_urls: false. Keep this setting so the in-app
Documentation iframe loads concrete HTML files under /manual-site/...html
rather than falling back to app routes.
After adding, removing, or renaming manual pages:
- Update
mkdocs.yml. - Use relative Markdown links for pages inside the manual.
- Link source files, source folders, and Markdown files outside the manual to the official GitHub repository.
- Run:
mkdocs build --strictThe output is generated under build/docs/manual-site/.
- GUI-only changes: run
npm run test, the relevant Playwright test, and visually inspect the changed screen. - Electron bridge changes: run
npm run build, focused IPC tests, and an Electron smoke when behavior crosses the preload boundary. - Native component changes: rebuild
teleno_nodeand run focused CTest suites. - Backup, restore, packaging, producer, storage, P2P, JSON-RPC, or gRPC changes: add the relevant smoke, parity, package, or live-validation script.
- Documentation changes: run
mkdocs build --strict; runnpm run buildwhen the generated manual is part of the app build being validated.
Do not run live mainnet or producer-mutating scripts without a fresh explicit user request and a reviewed plan.
- The first-run assistant must not open during normal Vite or Electron development runs.
- GUI copy changes must update
src/i18n.tsfor English and Spanish. - GUI layout changes must be inspected visually and checked for box overflow.
- Restore and producer workflows must remain observer-first unless explicitly and safely activated.