mirror of
https://github.com/Pandipipas/scoreko-electron-dev.git
synced 2026-06-05 21:22:07 +00:00
feat: Restore Electron renderer and enhance NodeCG runtime management
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
# Phase 1 Fix Summary
|
||||
|
||||
## Scope
|
||||
|
||||
This fix restores the Electron renderer after the Phase 1 architecture extraction. It keeps the new main-process structure, does not add a custom renderer, preload, or IPC layer, and does not revert the Phase 1 refactor.
|
||||
|
||||
## Root Cause
|
||||
|
||||
Phase 1 moved the real bootstrap module from `src/main/main.ts` to `src/main/app/bootstrap.ts`. After compilation, that changed the runtime `__dirname` from:
|
||||
|
||||
```text
|
||||
dist/main
|
||||
```
|
||||
|
||||
to:
|
||||
|
||||
```text
|
||||
dist/main/app
|
||||
```
|
||||
|
||||
The development root calculation still treated `__dirname` as if it were `dist/main`, so `rootPath` resolved to `dist` instead of the repository root. Electron then looked for the packaged NodeCG runtime at:
|
||||
|
||||
```text
|
||||
dist/lib/nodecg
|
||||
```
|
||||
|
||||
instead of:
|
||||
|
||||
```text
|
||||
lib/nodecg
|
||||
```
|
||||
|
||||
That prevented the main process from preparing and launching the correct NodeCG runtime, leaving the BrowserWindow without a valid dashboard to render.
|
||||
|
||||
During verification, a second compatibility issue appeared in the packaged runtime: the Vite/NodeCG bundle imports generated files from the bundle-level `nodecg` directory, but `prepare-nodecg-runtime.mjs` did not copy that directory into `lib/nodecg/bundles/scoreko-dev`. Without it, NodeCG could start but failed to mount the `scoreko-dev` extension, and dashboard URLs returned 404.
|
||||
|
||||
## Changes Made
|
||||
|
||||
- `src/main/app/bootstrap.ts`
|
||||
- Passes `dist/main` into the path helper by resolving one level above the compiled bootstrap directory.
|
||||
- Keeps path ownership in `src/main/app/paths.ts` and preserves the extracted bootstrap architecture.
|
||||
|
||||
- `scripts/prepare-nodecg-runtime.mjs`
|
||||
- Copies the generated bundle `nodecg` directory into the managed NodeCG runtime.
|
||||
- Treats that directory as required runtime output so an incomplete Vite/NodeCG build fails early.
|
||||
|
||||
- `src/main/nodecg/runtime-provisioner.ts`
|
||||
- Refreshes the managed runtime when the source runtime manifest was regenerated, even if the app and bundle versions are unchanged.
|
||||
- Still preserves user-owned `cfg`, `db`, and `logs`.
|
||||
|
||||
- `src/tests/runtime-provisioner.test.ts`
|
||||
- Adds coverage for refreshing managed runtime files when the source runtime manifest changes.
|
||||
|
||||
## Verification
|
||||
|
||||
Commands run successfully:
|
||||
|
||||
```text
|
||||
npm run typecheck
|
||||
npm test
|
||||
npm run lint
|
||||
```
|
||||
|
||||
Current test result:
|
||||
|
||||
```text
|
||||
53 tests passing
|
||||
```
|
||||
|
||||
Runtime verification:
|
||||
|
||||
- Rebuilt the NodeCG runtime.
|
||||
- Rebuilt `better-sqlite3` for Electron 39.5.1.
|
||||
- Started Electron with updates disabled and load delay set to zero.
|
||||
- Confirmed NodeCG served:
|
||||
- `http://127.0.0.1:9090` with `200 OK`
|
||||
- `http://localhost:9090/bundles/scoreko-dev/dashboard/scoreko-dev/main.html?standalone=true` with `200 OK`
|
||||
- `http://localhost:9090/bundles/scoreko-dev/dashboard/loading/main.html?standalone=true` with `200 OK`
|
||||
- Confirmed the Electron renderer target loaded:
|
||||
- title: `Dashboard`
|
||||
- URL: `http://localhost:9090/bundles/scoreko-dev/dashboard/scoreko-dev/main.html?standalone=true#/`
|
||||
- DOM element count: `311`
|
||||
- visible body text included the Scoreko dashboard navigation and controls.
|
||||
|
||||
## Architecture Notes
|
||||
|
||||
- No preload was added.
|
||||
- No IPC was added.
|
||||
- No custom renderer architecture was added.
|
||||
- BrowserWindow security settings remain explicit.
|
||||
- NodeCG remains owned by the main process.
|
||||
- Dashboard loading remains gated behind NodeCG readiness.
|
||||
Reference in New Issue
Block a user