Build Instructions¶
This guide describes the supported development and packaging workflow for CodeXomics 0.722.0.
Supported Toolchain¶
| Component | Supported baseline |
|---|---|
| Node.js | 20.x or 22.x |
| npm | 10 or newer |
| Electron | 41.7.1 |
| electron-builder | 25.x |
| Python | 3.11 recommended for local MkDocs builds |
Node.js 20 and 22 are exercised by CI. Use an active LTS release and avoid changing the Electron pin without testing both CI versions and an unpacked package build.
Platform Requirements¶
- A current supported macOS release.
- Xcode Command Line Tools:
xcode-select --install. - Apple signing credentials only when producing distributable signed builds.
- Windows 10 or newer.
- Visual Studio Build Tools with the Desktop development with C++ workload when native modules need compilation.
- An Authenticode certificate only for signed release builds.
Install¶
Use npm ci in clean CI or release environments when the lockfile is already current.
Do not manually edit package-lock.json. If dependencies change, update the lockfile through npm.
Run Locally¶
Optional combined services:
npm run mcp-server
npm run start-with-mcp
npm run marketplace:start
npm run start-with-marketplace
npm run start-full
Validate Before Packaging¶
npm run lint
npm run version-validate
npm run tool-registry:validate
npm run test:coverage
npm run docs:validate
The Electron smoke suite launches the real application and may require a display server on Linux:
Package The Application¶
Fast unpacked package for the current platform:
Installer/package builds without publishing:
Cross-platform packaging generally requires building on each target operating system. npm run build:all is available, but native signing and platform tooling still apply.
Generated packages are written to dist/, which is build output and should not be edited manually.
Configured targets:
| Platform | Targets | Architectures |
|---|---|---|
| macOS | DMG and ZIP | x64 and arm64 |
| Windows | NSIS and portable EXE | x64 |
| Linux | AppImage, Snap, and DEB | x64 |
Signing And Publishing¶
Release credentials are supplied through environment variables and must never be committed.
macOS signing and notarization:
export CSC_LINK="/path/to/DeveloperID.p12"
export CSC_KEY_PASSWORD="<certificate password>"
export APPLE_ID="you@example.com"
export APPLE_APP_SPECIFIC_PASSWORD="<app-specific password>"
export APPLE_TEAM_ID="XXXXXXXXXX"
Windows signing:
GitHub publishing:
export GH_TOKEN="<token with repository release access>"
npx electron-builder --mac --win --linux --publish always
See the root RELEASING.md for the complete signed-release and auto-update workflow.
Documentation Builds¶
docs:servestarts a local preview.docs:validatechecks release metadata and runs a strict MkDocs build.docs:deploypublishes generated output to thegh-pagesbranch.
The source is always docs/ plus mkdocs.yml; never edit site/ directly.
Troubleshooting¶
Clean Dependency Reinstall¶
Prefer preserving the lockfile:
Native Module Problems¶
Confirm the active Node.js version matches the supported matrix before rebuilding.
Build Memory¶
Linux Headless Smoke Test¶
Version Mismatch¶
src/version.js is the application version source. After intentionally changing it, synchronize and validate: