feat: complete pending roadmap items with doctor, hardening, and code quality

This commit is contained in:
Pandipipas
2026-02-21 19:27:11 +01:00
parent 710fea38c0
commit 2b0d627396
20 changed files with 1620 additions and 106 deletions
+19 -68
View File
@@ -4,6 +4,7 @@ Wrapper de Electron para empaquetar una instalación de NodeCG que incluya el bu
## Requisitos clave
- Node `>=22` (`.nvmrc` incluido).
- Electron fijado en `39.5.1`.
## Qué hace
@@ -33,81 +34,31 @@ scoreko-electron-dev/
- `npm run dev`: modo desarrollo.
- `npm run build`: compila TypeScript y copia assets.
- `npm run start`: build y ejecución local.
- `npm run test`: build + tests unitarios (`node:test`).
- `npm run doctor`: preflight de configuración y entorno (`lib/nodecg`, permisos, puerto y env vars).
- `npm run lint`: reglas mínimas de calidad con ESLint.
- `npm run format`: validación de formato con Prettier.
- `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
## Variables de entorno
- `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`)
La **fuente única de defaults** está en `.env.example`.
## Assets de íconos incluidos
1. Copia `.env.example` a `.env` (o exporta variables en tu shell/CI).
2. Ajusta sólo lo necesario.
3. Ejecuta `npm run doctor` para validar configuración antes de arrancar.
Se incluye `static/icons/` con placeholder editable:
## Build multi-plataforma (iconos)
- `static/icons/icon.svg`
- `build.win.icon`: `static/icons/icon.ico`
- `build.linux.icon`: `static/icons`
- `build.mac.icon`: `static/icons/icon.icns`
> 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).
> El `.icns` se referencia en la configuración de build y debe existir localmente para empaquetar macOS.
## Personalización (Windows / Electron)
## Troubleshooting y arquitectura
### 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`.
- Guía de troubleshooting: `docs/troubleshooting.md`
- Mapa de arquitectura: `docs/architecture.md`
- Roadmap: `docs/refactor-roadmap.md`