- Eliminados todos los tipos 'any' en el dashboard
- Añadidas interfaces AdminGameData, AdminPlayerData y GameHistoryEntry
- Estabilizada renderización de iconos Lucide
- Asegurada compatibilidad total con el procesador de Gitea
- Corregir importación de tipos en useSocket.ts
- Estabilizar hooks de React para evitar advertencias de compilación
- Forzar nueva evaluación de Gitea Lint
- Memoizar acciones en useSocket (useMemo)
- Memoizar funciones en useSessionStorage (useCallback)
- Completar dependency arrays en page.tsx y dashboard/page.tsx
- Resolver advertencias de 'exhaustive-deps' para asegurar builds limpios
- Añadido listener de errores de socket para detectar fallos de reconexión
- Actualizada la lógica de transiciones de vista para evitar bloqueos en pantallas vacías
- Limpieza de sesión al fallar la reconexión
- Implementar persistencia de sesión en Dashboard mediante localStorage
- Añadir botón de desconexión (Logout)
- Implementar sistema de broadcast para que el Dashboard se actualice automáticamente ante cualquier cambio en el servidor
- Mejorar diseño táctico del dashboard con visor de estadísticas rápidas
- Permitir conexiones desde localhost, 127.0.0.1 y la IP de red local
- Corregir error de compilación de 'pg' reconstruyendo la imagen
- Añadir logs para depuración del dashboard de administración
- Crear Dashboard en /dashboard con protección por contraseña
- Integrar PostgreSQL para registro histórico de partidas (game_logs)
- Permitir forzar cierre de partidas y expulsar jugadores desde Dashboard
- Diseño premium e integración en tiempo real vía Sockets
- Botón de salir (casita verde) ahora en top-4 (arriba)
- Botón de historial movido a top-[46px] (debajo)
- Separación de 2px entre ambos botones
- Botones alineados verticalmente en la esquina superior derecha
- Pegado a la derecha (right-0)
- Mismo tamaño (px-2 py-3, icono w-4 h-4)
- Gradiente verde (from-green-600 to-green-700)
- Borde redondeado solo a la izquierda (rounded-l-lg)
- Sin texto, solo icono de casita
- strokeWidth aumentado a 3 para mayor visibilidad
- Mover botón de arriba-izquierda a arriba-derecha
- Cambiar color de amarillo a verde (bg-green-800)
- Cambiar icono de flecha por icono de casita (home)
- Cambiar texto de 'Salir' a 'Lobby'
- Actualizar tooltip a 'Volver al lobby'
- Agregar ARG en client/Dockerfile para NEXT_PUBLIC_API_URL
- Pasar build args en docker-compose.yml
- Asegurar que Next.js reciba la URL correcta del servidor
- Permitir acceso desde 192.168.1.131
- Crear archivo .env.example con configuración de red local
- Actualizar docker-compose.yml para usar variables de entorno
- Soportar acceso desde IP 192.168.1.131
- Documentar configuración en NETWORK-ACCESS.md
- Permitir acceso desde móviles y tablets en la misma red
- Agregar bandera hasReconnected para ejecutar reconexión solo una vez
- Evita que el useEffect se ejecute infinitamente
- Reduce carga del servidor significativamente
- Cambiar icono a power button (Heroicons)
- Mover botón debajo del nombre del agente en el lobby
- Hacer botón más compacto (circular)
- Mejorar layout del header del lobby
- Añadido sistema de sesiones con localStorage
- Nuevo hook useSessionStorage para manejar sesiones
- Botón de salir de la partida (ExitGameButton) en todas las pantallas del juego
- Botón de logout (LogoutButton) solo en el lobby
- Evento leave_game en servidor para cerrar partida cuando alguien sale
- Evento reconnect_session para reconectar jugadores después de recargar
- Actualizado GameBoard para incluir botón de salida
- Actualizado page.tsx para manejar sesiones y logout
- Removido el paso de copia con rsync/cp que causaba error
- El script deploy.sh ya hace git pull para actualizar el código
- Simplifica el workflow y evita dependencias innecesarias
- El runner solo ejecuta el script, no necesita copiar archivos
- Creado deploy.sh que se ejecuta directamente en el host
- Simplificado workflow para ejecutar el script en lugar de comandos inline
- El script maneja todo: git pull, docker build, docker deploy
- Evita problemas de 'docker: command not found' en el runner
- El runner solo necesita Node.js para checkout, luego ejecuta el script del host
- Agregado 'shell: bash' a todos los pasos con bloques 'run:'
- Resuelve el error 'docker: command not found' en scripts 2.sh, 3.sh, 4.sh
- El runner necesita saber explícitamente qué shell usar para ejecutar los comandos
- Agregado paso para instalar Node.js usando comandos del sistema
- Soporta Debian/Ubuntu, RedHat/CentOS, Alpine Linux
- Fallback a nvm para otros sistemas
- Necesario porque el runner no tiene Node.js preinstalado
- Las acciones de GitHub requieren Node.js para ejecutarse
- Movido setup-node antes del checkout
- actions/checkout@v4 requiere Node.js en el PATH para funcionar
- Esto debería resolver el error 'Cannot find: node in PATH'
- Eliminados parámetros innecesarios que causaban error de interpolación
- El checkout de Gitea Actions funciona automáticamente sin server-url, repository y token explícitos
- Agregado workflow de deployment automático (.gitea/workflows/deployment.yml)
- Workflow configurado para runner 'production-ready'
- Build y deploy automático con docker-compose_prod.yml
- Verificación de estado post-despliegue
- Documentación completa en CI-CD-README.md
- Documentar todas las nuevas funcionalidades implementadas
- Listar mejoras de UI de la sesión 2025-12-13
- Incluir assets añadidos y correcciones realizadas
- Marcar el juego como completamente funcional
- Marcar todas las fases como implementadas (funcional hasta victoria)
- Añadir sección de mejoras de UI recientes (2025-12-13)
- Actualizar problemas conocidos y próximos pasos
- Reflejar que el juego está completamente funcional, solo falta ajuste fino de tokens
- Mover timer de votación a esquina superior izquierda (fixed, 20px margen)
- Eliminar contador de votos rechazados en resultado de misión
- Ajustar posiciones de tokens de victoria/fracaso en el mapa
- Mantener mapa visible durante toda la fase MISSION_RESULT (eliminar timeout de 7s)
- Cambiar título intro de 'Guerra Total' a 'Traidores en París'
- Ajustar tamaño de cartas aceptar/rechazar líder a cuadradas (w-32 h-32)
TODO: Afinar posiciones de tokens 3, 4 y 5 en el mapa
- Intro: Change title to 'Sombras en París'
- Roll Call: Make screen fully responsive with fixed header
- Team Building: Clean up leader UI and make player tokens responsive
- Mission History: Fix expand/collapse interaction (z-index issue)
- Implementación completa del juego La Resistencia
- Sistema de roles: Aliados y Nazis (incluyendo Francotirador)
- Fases del juego: Selección de equipo, votación, misión, asesinato
- Interfaz de usuario con imágenes temáticas
- Sistema de WebSockets para multijugador en tiempo real
- Configuración Docker para desarrollo y producción
- Dockerfiles optimizados para cliente y servidor
- docker-compose.yml para desarrollo local
- docker-compose_prod.yml para despliegue en producción con Nginx Proxy Manager
- Base de datos PostgreSQL integrada
- Documentación de cambios y fases del juego
- Changed GameBoard background to show mission_success.png for ALLIED_WIN and mission_fail.png for NAZIS_WIN
- Hidden board area completely during victory phases
- Removed redundant background image from VictoryScreen component
- Fixed image extensions from .jpg to .png for victory backgrounds