From 28b9312d4f90f1e3a62a457fec70a0259204bddd Mon Sep 17 00:00:00 2001 From: Pandipipas <62224708+Pandipipas@users.noreply.github.com> Date: Tue, 10 Feb 2026 17:52:42 +0100 Subject: [PATCH] fix: use bundle dashboard loading screen instead of static loading file (#8) --- README.md | 10 ++++++++-- src/main/main.ts | 13 ++++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 329de4d..ca78040 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Wrapper de Electron para empaquetar una instalación de NodeCG que incluya el bu ## Qué hace - Arranca `lib/nodecg/index.js` como proceso hijo desde Electron. -- Muestra una ventana de carga mientras NodeCG inicia. +- Muestra la pantalla de carga propia del bundle (`dashboard/loading.html`) mientras NodeCG inicia. - Carga el dashboard del bundle en `http://localhost:/bundles//`. - Empaqueta NodeCG + assets dentro de la app final con `electron-builder`. @@ -29,7 +29,6 @@ scoreko-electron-dev/ │ └─ bundles/ │ └─ scoreko-dev/ ├─ src/main/main.ts -├─ static/loading.html └─ package.json ``` @@ -68,3 +67,10 @@ Recompila nativos contra Electron 39.5.1: npm run rebuild:native npm run rebuild:better-sqlite3:electron ``` + + +## Variables de entorno útiles + +- `NODECG_BUNDLE_NAME` (default: `scoreko-dev`) +- `SCOREKO_DASHBOARD_ROUTE` (default: `dashboard/index.html`) +- `SCOREKO_LOADING_ROUTE` (default: `dashboard/loading.html`) diff --git a/src/main/main.ts b/src/main/main.ts index 5d72872..d37680f 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -7,6 +7,7 @@ const APP_TITLE = "Scoreko"; const DEFAULT_NODECG_PORT = process.env.NODECG_PORT ?? "9090"; const DEFAULT_BUNDLE_NAME = process.env.NODECG_BUNDLE_NAME ?? "scoreko-dev"; const DEFAULT_DASHBOARD_ROUTE = process.env.SCOREKO_DASHBOARD_ROUTE ?? "dashboard/index.html"; +const DEFAULT_LOADING_ROUTE = process.env.SCOREKO_LOADING_ROUTE ?? "dashboard/loading.html"; const LOAD_DELAY_MS = Number.parseInt(process.env.ELECTRON_LOAD_DELAY_MS ?? "2500", 10); const STARTUP_TIMEOUT_MS = Number.parseInt(process.env.NODECG_STARTUP_TIMEOUT_MS ?? "30000", 10); const USE_SYSTEM_NODE = (process.env.NODECG_USE_SYSTEM_NODE ?? "false").toLowerCase() === "true"; @@ -15,7 +16,7 @@ const NODE_BINARY = process.env.NODECG_NODE_BINARY ?? "node"; const isDev = !app.isPackaged; const rootPath = isDev ? path.resolve(__dirname, "../..") : process.resourcesPath; const nodecgPath = path.resolve(rootPath, "lib", "nodecg"); -const loadingPath = path.resolve(rootPath, "static", "loading.html"); +const loadingPath = path.join(rootPath, "lib", "nodecg", "bundles", DEFAULT_BUNDLE_NAME, DEFAULT_LOADING_ROUTE); const dashboardUrl = `http://localhost:${DEFAULT_NODECG_PORT}/bundles/${DEFAULT_BUNDLE_NAME}/${DEFAULT_DASHBOARD_ROUTE}`; const baseUrl = `http://127.0.0.1:${DEFAULT_NODECG_PORT}`; @@ -125,6 +126,16 @@ function validateNodeCGInstall(): void { ].join("\n"), ); } + + if (!fs.existsSync(loadingPath)) { + throw new Error( + [ + "No se encontró el loading del dashboard dentro del bundle.", + `Ruta esperada: ${loadingPath}`, + "Ajusta SCOREKO_LOADING_ROUTE o verifica que exista dashboard/loading.html en el bundle.", + ].join("\n"), + ); + } } function enrichNodeCGFailureMessage(baseMessage: string): string {