Commit Graph

98 Commits

Author SHA1 Message Date
Pandipipas ade26ee714 Translate Spanish UI and runtime strings to English 2026-02-11 18:47:21 +01:00
Pandipipas c29aae5ce7 Merge pull request #39 from Pandipipas/add-team-and-country-options-to-scoreboardpanel-plhajv
Refactor ScoreboardPanel custom player flow and add team/country overrides
2026-02-11 10:48:19 +01:00
Pandipipas 43a49b5a37 Merge branch 'master' into add-team-and-country-options-to-scoreboardpanel-plhajv 2026-02-11 10:47:18 +01:00
Pandipipas d2439cf1ff Refactor scoreboard player input flow without behavior changes 2026-02-11 10:45:31 +01:00
Pandipipas dd6318dc88 Merge pull request #38 from Pandipipas/add-team-and-country-options-to-scoreboardpanel
Agregar edición de team/country en ScoreboardPanel con guardado manual
2026-02-11 10:42:08 +01:00
Pandipipas db3fb916d3 Fix custom name blur/reset behavior in scoreboard select 2026-02-11 10:39:36 +01:00
Pandipipas e7354500f4 Fix custom player id leaking in scoreboard input 2026-02-11 10:33:31 +01:00
Pandipipas 6d7e7b9b10 Fix custom player select behavior in scoreboard panel 2026-02-11 10:27:19 +01:00
Pandipipas 32837cbb36 Evitar mostrar IDs custom en selector de jugador 2026-02-11 01:37:51 +01:00
Pandipipas e08c1b9a1c Fixear visualización de nombre custom en selector de jugador 2026-02-11 01:34:08 +01:00
Pandipipas d5b08ef4ee Corregir override en escritura libre sin romper selección 2026-02-11 01:29:32 +01:00
Pandipipas e08d88ec33 Arreglar selección de jugador existente en ScoreboardPanel 2026-02-11 01:24:38 +01:00
Pandipipas 7d3725acb5 Fixear persistencia de texto libre al salir del select 2026-02-11 01:20:40 +01:00
Pandipipas 7e3f0853cd Corregir override libre y limpiar team/country al escribir jugador nuevo 2026-02-11 01:15:59 +01:00
Pandipipas 8581237838 Corregir selección libre de jugador en ScoreboardPanel 2026-02-11 01:10:07 +01:00
Pandipipas 04dbe94e34 Agregar overrides de team/country y guardado desde ScoreboardPanel 2026-02-11 01:05:05 +01:00
Pandipipas b3f4aae68a Mejorar override de jugadores y guardado rápido (#37) 2026-02-11 00:48:22 +01:00
Pandipipas 9820130f46 Agregar wrapper de Electron para ejecutar el bundle como app de escritorio (#36)
* Add Electron wrapper for running bundle as desktop app

* Fix Electron wrapper Node runtime mismatch with NodeCG

* Bump Electron wrapper to 39.5.1 and update docs

* Clarify runtime behavior in troubleshooting docs

* Make electron npm scripts cross-platform with cross-env

* Default NodeCG launch to system Node; keep Electron-node as opt-in

* Add Electron better-sqlite3 rebuild scripts for ABI issues

* Update default Electron URL to dashboard standalone example
2026-02-10 16:42:26 +01:00
Pandipipas ef10dae2ed Remove top header bar from dashboard views (#34) 2026-02-10 13:10:47 +01:00
Pandipipas f9dfa686ee fix: resolve eslint errors and vue template warnings (#33) 2026-02-10 13:01:20 +01:00
Pandipipas 2fcf4b5dce Stack player creation fields vertically (#32) 2026-02-10 12:52:58 +01:00
Pandipipas 48b098ac0a Remove legacy realName fallback from player normalization (#31) 2026-02-10 12:42:47 +01:00
Pandipipas 547f9ab95f Add country dropdown and flags (#28)
* Add country dropdown and flags

* Fix build for country flags

* Improve country select filtering and scoreboard teams

* Fix country select display value

* Fix country select input display
2026-02-09 22:42:00 +01:00
Pandipipas 2dfd57786d Adjust column sizes for dashboard layout 2026-02-09 18:37:32 +01:00
Pandipipas 2a83c9a0df Add loading dashboard panel (#23) 2026-02-09 01:20:25 +01:00
Pandipipas e045331a95 Add player filtering to scoreboard selects (#25)
* Add player filtering to scoreboard selects

* Hide selected player while typing

* Avoid duplicated text in player selects

* Show selected player only when not typing
2026-02-09 01:12:48 +01:00
Pandipipas 56a83e8301 Add graphics cards with copy and OBS drag (#24) 2026-02-09 00:41:21 +01:00
Pandipipas 440ccbfaa2 Agregar BracketPanel para selección de ronda y reubicar detalles en el dashboard (#22)
* Add bracket panel for round details

* Agregar BracketPanel para selección de ronda y reubicar detalles en el dashboard

### Motivation
- Separar y enriquecer el control de "Detalles de la ronda" en su propio panel para permitir selección de Stage, Bracket side o texto Custom.
- Mover la UI de ronda fuera de `ScoreboardPanel` para mantenerlo enfocado en jugadores y puntuaciones y colocar el nuevo `BracketPanel` a la derecha en el dashboard.
- No se empleó ninguna skill de `/opt/codex/skills`; los cambios se hicieron directamente sobre los componentes existentes.

### Description
- Se añadió `src/dashboard/example/components/BracketPanel.vue` con opciones de `Stage` (pools, top 128, ..., Grand Final Reset), `Bracket side` (None/Winners/Loosers) y modo `Custom` activable mediante `QBtnToggle`, y lógica para parsear/actualizar `scoreboard.round` en el store.
- Se eliminó el bloque de "Detalles de la ronda" de `src/dashboard/example/components/ScoreboardPanel.vue` para evitar duplicidad y mantener responsabilidad única.
- Se actualizó `src/dashboard/example/views/Dashboard.vue` para mostrar `ScoreboardPanel` y `BracketPanel` lado a lado dentro de tarjetas y ajustar estilos de layout.

### Testing
- Se levantó el servidor de desarrollo con `npx vite --host 0.0.0.0 --port 5173` y `vite` reportó inputs escritos y el servidor listo; `vue-tsc` devolvió `Found 0 errors`, por lo que el proyecto se inspeccionó sin errores de tipo.
- Se tomó una captura automática del dashboard mediante Playwright y el script guardó `artifacts/dashboard-bracket-panel.png` exitosamente.
- Los comandos de commit se ejecutaron y los cambios fueron registrados en el repositorio sin errores.

* Agregar BracketPanel para selección de ronda y reubicar detalles en el dashboard

### Motivation
- Separar y enriquecer el control de "Detalles de la ronda" en su propio panel para permitir selección de Stage, Bracket side o texto Custom.
- Mover la UI de ronda fuera de `ScoreboardPanel` para mantenerlo enfocado en jugadores y puntuaciones y colocar el nuevo `BracketPanel` a la derecha en el dashboard.
- No se empleó ninguna skill de `/opt/codex/skills`; los cambios se hicieron directamente sobre los componentes existentes.

### Description
- Se añadió `src/dashboard/example/components/BracketPanel.vue` con opciones de `Stage` (pools, top 128, ..., Grand Final Reset), `Bracket side` (None/Winners/Loosers) y modo `Custom` activable mediante `QBtnToggle`, y lógica para parsear/actualizar `scoreboard.round` en el store.
- Se eliminó el bloque de "Detalles de la ronda" de `src/dashboard/example/components/ScoreboardPanel.vue` para evitar duplicidad y mantener responsabilidad única.
- Se actualizó `src/dashboard/example/views/Dashboard.vue` para mostrar `ScoreboardPanel` y `BracketPanel` lado a lado dentro de tarjetas y ajustar estilos de layout.

### Testing
- Se levantó el servidor de desarrollo con `npx vite --host 0.0.0.0 --port 5173` y `vite` reportó inputs escritos y el servidor listo; `vue-tsc` devolvió `Found 0 errors`, por lo que el proyecto se inspeccionó sin errores de tipo.
- Se tomó una captura automática del dashboard mediante Playwright y el script guardó `artifacts/dashboard-bracket-panel.png` exitosamente.
- Los comandos de commit se ejecutaron y los cambios fueron registrados en el repositorio sin errores.

* Agregar BracketPanel para selección de ronda y reubicar detalles en el dashboard

### Motivation
- Separar y enriquecer el control de "Detalles de la ronda" en su propio panel para permitir selección de Stage, Bracket side o texto Custom.
- Mover la UI de ronda fuera de `ScoreboardPanel` para mantenerlo enfocado en jugadores y puntuaciones y colocar el nuevo `BracketPanel` a la derecha en el dashboard.
- No se empleó ninguna skill de `/opt/codex/skills`; los cambios se hicieron directamente sobre los componentes existentes.

### Description
- Se añadió `src/dashboard/example/components/BracketPanel.vue` con opciones de `Stage` (pools, top 128, ..., Grand Final Reset), `Bracket side` (None/Winners/Loosers) y modo `Custom` activable mediante `QBtnToggle`, y lógica para parsear/actualizar `scoreboard.round` en el store.
- Se eliminó el bloque de "Detalles de la ronda" de `src/dashboard/example/components/ScoreboardPanel.vue` para evitar duplicidad y mantener responsabilidad única.
- Se actualizó `src/dashboard/example/views/Dashboard.vue` para mostrar `ScoreboardPanel` y `BracketPanel` lado a lado dentro de tarjetas y ajustar estilos de layout.

### Testing
- Se levantó el servidor de desarrollo con `npx vite --host 0.0.0.0 --port 5173` y `vite` reportó inputs escritos y el servidor listo; `vue-tsc` devolvió `Found 0 errors`, por lo que el proyecto se inspeccionó sin errores de tipo.
- Se tomó una captura automática del dashboard mediante Playwright y el script guardó `artifacts/dashboard-bracket-panel.png` exitosamente.
- Los comandos de commit se ejecutaron y los cambios fueron registrados en el repositorio sin errores.

* Agregar BracketPanel para selección de ronda y reubicar detalles en el dashboard

### Motivation
- Separar y enriquecer el control de "Detalles de la ronda" en su propio panel para permitir selección de Stage, Bracket side o texto Custom.
- Mover la UI de ronda fuera de `ScoreboardPanel` para mantenerlo enfocado en jugadores y puntuaciones y colocar el nuevo `BracketPanel` a la derecha en el dashboard.
- No se empleó ninguna skill de `/opt/codex/skills`; los cambios se hicieron directamente sobre los componentes existentes.

### Description
- Se añadió `src/dashboard/example/components/BracketPanel.vue` con opciones de `Stage` (pools, top 128, ..., Grand Final Reset), `Bracket side` (None/Winners/Loosers) y modo `Custom` activable mediante `QBtnToggle`, y lógica para parsear/actualizar `scoreboard.round` en el store.
- Se eliminó el bloque de "Detalles de la ronda" de `src/dashboard/example/components/ScoreboardPanel.vue` para evitar duplicidad y mantener responsabilidad única.
- Se actualizó `src/dashboard/example/views/Dashboard.vue` para mostrar `ScoreboardPanel` y `BracketPanel` lado a lado dentro de tarjetas y ajustar estilos de layout.

### Testing
- Se levantó el servidor de desarrollo con `npx vite --host 0.0.0.0 --port 5173` y `vite` reportó inputs escritos y el servidor listo; `vue-tsc` devolvió `Found 0 errors`, por lo que el proyecto se inspeccionó sin errores de tipo.
- Se tomó una captura automática del dashboard mediante Playwright y el script guardó `artifacts/dashboard-bracket-panel.png` exitosamente.
- Los comandos de commit se ejecutaron y los cambios fueron registrados en el repositorio sin errores.

* Agregar BracketPanel para selección de ronda y reubicar detalles en el dashboard

### Motivation
- Separar y enriquecer el control de "Detalles de la ronda" en su propio panel para permitir selección de Stage, Bracket side o texto Custom.
- Mover la UI de ronda fuera de `ScoreboardPanel` para mantenerlo enfocado en jugadores y puntuaciones y colocar el nuevo `BracketPanel` a la derecha en el dashboard.
- No se empleó ninguna skill de `/opt/codex/skills`; los cambios se hicieron directamente sobre los componentes existentes.

### Description
- Se añadió `src/dashboard/example/components/BracketPanel.vue` con opciones de `Stage` (pools, top 128, ..., Grand Final Reset), `Bracket side` (None/Winners/Loosers) y modo `Custom` activable mediante `QBtnToggle`, y lógica para parsear/actualizar `scoreboard.round` en el store.
- Se eliminó el bloque de "Detalles de la ronda" de `src/dashboard/example/components/ScoreboardPanel.vue` para evitar duplicidad y mantener responsabilidad única.
- Se actualizó `src/dashboard/example/views/Dashboard.vue` para mostrar `ScoreboardPanel` y `BracketPanel` lado a lado dentro de tarjetas y ajustar estilos de layout.

### Testing
- Se levantó el servidor de desarrollo con `npx vite --host 0.0.0.0 --port 5173` y `vite` reportó inputs escritos y el servidor listo; `vue-tsc` devolvió `Found 0 errors`, por lo que el proyecto se inspeccionó sin errores de tipo.
- Se tomó una captura automática del dashboard mediante Playwright y el script guardó `artifacts/dashboard-bracket-panel.png` exitosamente.
- Los comandos de commit se ejecutaron y los cambios fueron registrados en el repositorio sin errores.
2026-02-09 00:12:27 +01:00
Pandipipas 975fb7ca5b Merge pull request #21 from Pandipipas/update-visual-style-to-match-scoreboard
Update scoreboard visuals to match Runback styling
2026-02-08 21:17:52 +01:00
Pandipipas 5350fa1dae Update scoreboard layout to match Runback style 2026-02-08 21:15:14 +01:00
Pandipipas 7cb91b427d Merge pull request #19 from Pandipipas/move-scoreboard-to-dashboard-window
Embed scoreboard panel into dashboard as half-screen window
2026-02-08 20:45:59 +01:00
Pandipipas 89d05df8dd Remove unnecessary dashboard header and description 2026-02-08 20:45:20 +01:00
Pandipipas 755a6f3821 Remove scoreboard route 2026-02-08 20:38:39 +01:00
Pandipipas c5c870ae5b Adjust dashboard scoreboard sizing 2026-02-08 20:34:33 +01:00
Pandipipas 09aeb2a2ff Embed scoreboard panel in dashboard 2026-02-08 19:56:37 +01:00
Pandipipas bf3c7107e6 Merge pull request #18 from Pandipipas/actualizar-scoreboard-en-tiempo-real
Save dashboard updates to NodeCG replicants for realtime graphics
2026-02-08 17:26:40 +01:00
Pandipipas 39106e9b5f Ensure players replicant saves synchronously 2026-02-08 17:25:09 +01:00
Pandipipas 62ce10df55 Fix replicant reactivity for scoreboard 2026-02-08 17:19:06 +01:00
Pandipipas aa6c9acf1c Fix dashboard replicant saves 2026-02-08 17:10:27 +01:00
Pandipipas 5dbb80aa0c Update example graphic configuration to enable fullbleed mode 2026-02-08 17:01:22 +01:00
Pandipipas b4a110fd1e Add Pinia persistence and scoreboard support (#15)
* Add scoreboard replicant and Pinia persistence

* Fix scoreboard replicant sync (#16)
2026-02-08 17:00:31 +01:00
Pandipipas e0323cca3f Align bundle name with folder (#12) 2026-02-08 13:18:17 +01:00
Pandipipas 5f13143586 Add players replicant schema and dashboard CRUD (#5)
* Add players replicant and dashboard CRUD

* Fix players table typing
2026-02-08 02:05:18 +01:00
Pandipipas ddb877adf5 Update dashboard sidebar accent colors
### Motivation
- Adjust the sidebar branding and selected-menu styling to match the requested visual change: insert a space between "by" and "Pandipipas" and use the accent color `#2596be` for the Pandipipas link and the sidebar selected/menu text.

### Description
- Updated `src/dashboard/example/main.vue` to insert a space between the "by" label and the Pandipipas link and set `.by-link` color to `#2596be`.
- Added `class="sidebar-drawer"` to the `QDrawer` and `active-class="sidebar-item-active"` to `QItem`, and included scoped CSS rules to color sidebar text, icons and the active menu item using `#2596be`.

### Testing
- Ran `npm install` and then `npm run watch` and observed `vue-tsc` report no type errors and Vite successfully wrote the dashboard input HTML (serve started), indicating build/type-check passed.
- Attempted an automated UI screenshot with Playwright, but Chromium crashed in this environment and the screenshot step failed.

------
[Codex Task](https://chatgpt.com/codex/tasks/task_e_6987852b9310832aa6db62a087febdf4)
2026-02-08 00:37:39 +01:00
Pandipipas efec2f45c6 Add sidebar branding header with logo and attribution
### Motivation
- Añadir branding al sidebar para mostrar el logo, el título del programa y la atribución enlazada a GitHub sin alterar la apariencia ni el comportamiento de los botones del menú.
- Mantener la arquitectura actual del dashboard y usar el asset local `image.png` ya presente en `src/dashboard/example`.

### Description
- Se modificó `src/dashboard/example/main.vue` para reemplazar el `QToolbar` del sidebar por un bloque `div.sidebar-header` que contiene la imagen del logo, el título y la atribución enlazada a `https://github.com/Pandipipas`.
- Se añadió la constante `logoUrl` usando `new URL('./image.png', import.meta.url).href` para cargar el logo desde el bundle.
- Se insertó un `QSeparator` entre el nuevo encabezado y la lista de menú existente para mantener separación visual sin cambiar los botones.
- Se añadieron estilos `scoped` para `sidebar-header`, `sidebar-logo` y las clases de la atribución para mantener apariencia y disposición consistentes.

### Testing
- Arrancado el servidor de desarrollo con `npx vite --host 0.0.0.0 --port 4173`, el servidor sirvió la entrada pero `vue-tsc` reportó errores por no resolver `vue-router` (dependencia/tipos faltantes). 
- Se ejecutó un script de Playwright para capturar una captura de pantalla del dashboard y la ejecución finalizó correctamente guardando el artefacto en `artifacts/sidebar.png`.

------
[Codex Task](https://chatgpt.com/codex/tasks/task_e_69877287b5d0832a8302b07edf1a8219)
2026-02-07 18:20:11 +01:00
Pandipipas a40e583403 Update logo image in dashboard 2026-02-07 18:19:37 +01:00
Pandipipas ae4eef53de Add routed dashboard layout with sidebar
### Motivation
- Provide a multi-tab dashboard layout so users can navigate between logical sections (Dashboard, Players, Graphics, Settings, About) via a persistent sidebar.
- Integrate `vue-router` to manage in-app navigation inside the Quasar layout for a cleaner, scalable dashboard structure.

### Description
- Added `vue-router` as a dev dependency and created `src/dashboard/example/router.ts` with routes for the five views (`/`, `/players`, `/graphics`, `/settings`, `/about`).
- Replaced the example dashboard UI with a Quasar `QLayout` in `src/dashboard/example/main.vue` that includes a left `QDrawer` sidebar and a `RouterView` outlet, and wired the app to the router in `src/dashboard/example/main.ts`.
- Added simple stub views for each tab under `src/dashboard/example/views/` (`Dashboard.vue`, `Players.vue`, `Graphics.vue`, `Settings.vue`, `About.vue`).
- Adjusted `src/dashboard/template.html` to remove the default NodeCG body margin (`margin: 0`) so the layout can occupy the full panel area.

### Testing
- Ran `npm install` which completed and added the new package with audit warnings about vulnerabilities reported. (succeeded)
- Started the dev server with `npx vite` which reported the inputs and served the bundle at `http://localhost:4173/bundles/scoreko-dev/` and `vue-tsc` reported `Found 0 errors` while watching. (succeeded)
- Attempted a Playwright screenshot run to capture the dashboard UI, but the Chromium process crashed (`TargetClosedError` / SIGSEGV) so no screenshot was produced. (failed)

------
[Codex Task](https://chatgpt.com/codex/tasks/task_e_69876e97329c832a8af7179a9175d88b)
2026-02-07 18:09:06 +01:00
Pandipipas 6955d2588f Initial commit 2026-02-07 14:43:43 +01:00