- Updated paths and configurations in doctor.mjs and prepare-nodecg-runtime.mjs to use new build-config.mjs imports. - Enhanced runtime installation checks and permissions validation. - Introduced new update configuration management in update-config.ts, including loading and validating update settings. - Implemented update service for managing update checks and downloads in update-service.ts. - Replaced update-utils.ts with update-schema.ts for better structure and clarity in update handling. - Added comprehensive tests for update download and settings management. - Ensured secure handling of download URLs and improved error handling in update processes.
scoreko-electron
Windows desktop installer for Scoreko. The packaged app includes Electron, NodeCG, the compiled scoreko-dev bundle, and the production modules needed to run it, so end users do not need Node.js, pnpm, or a cloned repository.
Build on a development machine
From the repository root:
pnpm install
Then from scoreko-electron-dev:
npm install
npm run dist:win
The installer is written to scoreko-electron-dev/release/Scoreko-setup-0.1.0.exe.
What the build does
- Builds the parent
scoreko-devbundle withpnpm build. - Creates
scoreko-electron-dev/lib/nodecgwith a small NodeCG runtime. - Installs production runtime modules into that runtime.
- Rebuilds
better-sqlite3for Electron before creating the installer. - Packages the runtime as an Electron extra resource outside the app archive.
Runtime behavior
On first launch, Scoreko copies the packaged NodeCG runtime to the user's app data folder and then relaunches itself before starting NodeCG. This keeps cfg, db, and logs writable on Windows even when the app is installed under Program Files, and avoids transient startup failures caused by freshly copied runtime files.
Useful scripts
npm run start: build everything and run Electron locally.npm run prepare:runtime: recreatelib/nodecgfrom the parent bundle.npm run rebuild:native: rebuild NodeCG native modules for Electron.npm run dist:win: create the Windows installer.npm run doctor: check the prepared runtime and the configured port.
Updates from Gitea
Scoreko can check a Gitea release feed without forcing the user to update. Edit static/updates.json before building:
{
"enabled": true,
"apiUrl": "http://gitea.local/api/v1/repos/OWNER/REPO/releases/latest",
"releasePageUrl": "http://gitea.local/OWNER/REPO/releases",
"assetPattern": "Scoreko-setup-.*\\.exe$"
}
For each release, bump package.json version, build with npm run dist:win, create a Gitea release tagged like v0.2.0, and attach release/Scoreko-setup-0.2.0.exe. When Scoreko sees a newer tag, it asks whether to download and install it.
Configuration
The defaults match the parent bundle:
NODECG_BUNDLE_NAME=scoreko-devNODECG_PORT=9090SCOREKO_DASHBOARD_ROUTE=dashboard/scoreko-dev/main.html?standalone=trueSCOREKO_LOADING_ROUTE=dashboard/loading/main.html?standalone=trueSCOREKO_UPDATES_ENABLED=trueSCOREKO_UPDATE_ASSET_PATTERN=Scoreko-setup-.*\.exe$
Copy .env.example only if you need local overrides while developing.