# scoreko-electron-dev Wrapper de Electron para empaquetar una instalación de NodeCG que incluya el bundle `scoreko-dev`, inspirado en `opeik/runback-electron` pero actualizado a Electron + TypeScript moderno. ## Requisitos clave - Electron fijado en `39.5.1`. ## Qué hace - Arranca `lib/nodecg/index.js` como proceso hijo desde Electron. - Muestra la ruta de dashboard de carga del bundle (`/bundles//dashboard/loading.html`) servida por NodeCG mientras inicia. - Carga el dashboard del bundle en `http://localhost:/bundles//`. - Empaqueta NodeCG + assets dentro de la app final con `electron-builder`. ## Estructura esperada ```text scoreko-electron-dev/ ├─ lib/ │ └─ nodecg/ │ ├─ index.js │ ├─ node_modules/ │ └─ bundles/ │ └─ scoreko-dev/ ├─ src/main/main.ts ├─ static/icons/ └─ package.json ``` ## Scripts - `npm run dev`: modo desarrollo. - `npm run build`: compila TypeScript y copia assets. - `npm run start`: build y ejecución local. - `npm run pack`: genera app sin instalador. - `npm run dist`: genera instalador. - `npm run rebuild:native`: rebuild nativo auxiliar en `lib/nodecg`. ## Variables de entorno útiles - `NODECG_BUNDLE_NAME` (default: `scoreko-dev`) - `NODECG_PORT` (default: `9090`) - `SCOREKO_DASHBOARD_ROUTE` (default: `dashboard/example/main.html?standalone=true`) - `SCOREKO_LOADING_ROUTE` (default: `dashboard/loading/main.html?standalone=true`) - `SCOREKO_APP_TITLE` (default: `Scoreko`) - `SCOREKO_APP_USER_MODEL_ID` (default: `com.scoreko.desktop`) - `SCOREKO_APP_ICON_PATH` (default: búsqueda automática en `static/icons/icon.ico` y `static/icons/icon.png`) - `ELECTRON_LOAD_DELAY_MS` (default: `10000`) - `NODECG_STARTUP_TIMEOUT_MS` (default: `30000`) - `NODECG_KILL_TIMEOUT_MS` (default: `2500`) ## Assets de íconos incluidos Se incluye `static/icons/` con placeholder editable: - `static/icons/icon.svg` > En este repo no se versionan binarios. Para distribución final agrega localmente `static/icons/icon.ico` (Windows) y/o `static/icons/icon.png` (Linux/macOS runtime). ## Personalización (Windows / Electron) ### 1) Título de la app - **Runtime (ventanas):** `SCOREKO_APP_TITLE`. - **Build (instalador y ejecutable):** `build.productName`. ### 2) Ícono en barra de tareas y esquina superior Electron toma automáticamente el primer archivo existente en este orden: 1. `SCOREKO_APP_ICON_PATH` (si lo defines) 2. `static/icons/icon.ico` 3. `static/icons/icon.png` 4. `static/icon.ico` 5. `static/icon.png` ### 3) Ícono del `.exe` y accesos directos Quedó configurado en `package.json` con `build.win.icon` + `build.nsis.installerIcon`/`uninstallerIcon`. ### 4) Nombre/autor del popup de Firewall de Windows Ese diálogo usa metadata del ejecutable firmado: - Nombre de app: normalmente `build.productName` y metadata del binario. - Publisher/autor: certificado de firma de código (si no firmas puede verse `Unknown publisher`). Campos clave a revisar: - `description` - `author` - `build.productName` - `build.win.executableName` - `build.appId` Además, firma el `.exe` con certificado (`CSC_LINK` / `CSC_KEY_PASSWORD` en `electron-builder`). ## Checklist de personalización extra - `build.appId` - `build.artifactName` - `build.win.executableName` - `build.win.icon` - `build.nsis` (nombre del setup, íconos, shortcut) - `build.mac.icon` - `build.linux.icon` - `SCOREKO_APP_USER_MODEL_ID` - `SCOREKO_APP_ICON_PATH` ## Roadmap de refactor recomendado Si quieres una propuesta detallada de refactorización, limpieza y mejoras sin romper funcionalidad, revisa: `docs/refactor-roadmap.md`.