67 Commits

Author SHA1 Message Date
Resistencia Dev
c723b373d3 Feat: Add HelpModal and scrollable lobby list
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
2025-12-27 23:22:01 +01:00
Resistencia Dev
69e1f35886 feat: make admin dashboard password configurable via env variable NEXT_PUBLIC_ADMIN_PASSWORD
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
2025-12-23 00:00:03 +01:00
Resistencia Dev
98b5984a6b chore: bump version to 1.3.0
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
2025-12-22 23:47:33 +01:00
Resistencia Dev
b0eb3bd637 feat: shuffle mission reveal cards randomly on each client
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
2025-12-22 23:46:06 +01:00
Resistencia Dev
1a68ed2a5c feat(dashboard): track matches played per session instead of rounds in history
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
2025-12-22 23:35:58 +01:00
Resistencia Dev
904bd80bd5 feat(dashboard): add matchNumber to track games played per session
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 7s
2025-12-22 23:24:07 +01:00
Resistencia Dev
c4c08c64c3 feat(dashboard): show round info and results for active and finished games
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 10s
2025-12-22 23:03:31 +01:00
Resistencia Dev
1ad4f46aa4 feat(dashboard): refactor to collapsible compact lists 2025-12-22 22:59:33 +01:00
Resistencia Dev
797780fc94 feat: update voting timer styles (centered, grayscale, larger)
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
2025-12-22 22:13:53 +01:00
Resistencia Dev
77194bd8f6 chore: Bump version to 1.1.2
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
2025-12-22 20:52:44 +01:00
Resistencia Dev
3ac48e50fb fix: Redirigir al lobby cuando la partida deja de existir tras recargar
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
- 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
2025-12-22 18:38:07 +01:00
Resistencia Dev
91da241423 feat: Dashboard de Admin 2.0 - Persistencia y Actualizaciones en Tiempo Real
- 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
2025-12-22 18:24:25 +01:00
Resistencia Dev
3d68eddb8b feat: Implementar Dashboard de Administración y Historial de Partidas
- 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
2025-12-22 18:01:48 +01:00
Resistencia Dev
848eb0486d chore: Bump version to 1.1.0
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
2025-12-22 17:55:51 +01:00
Resistencia Dev
2a9d89ed9e style: Hacer que el panel de jugadores aparezca plegado por defecto 2025-12-22 17:52:34 +01:00
Resistencia Dev
6e9f4512fb style: Hacer que el historial de misiones aparezca plegado por defecto 2025-12-22 17:50:08 +01:00
Resistencia Dev
12ac47e6c1 style: Ajustar posición del historial a 60px para alineación perfecta 2025-12-22 17:47:06 +01:00
Resistencia Dev
7895df4fd0 fix: Aumentar separación entre botones de salir e historial
- Cambiar posición del historial de top-[46px] a top-[56px]
- Evita solapamiento entre los botones
- Separación de ~12px entre ambos
2025-12-22 17:44:24 +01:00
Resistencia Dev
8835e780eb feat: Intercambiar posiciones de botones de historial y salir
- 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
2025-12-22 17:43:41 +01:00
Resistencia Dev
8dc01132e7 feat: Igualar estilo del botón de lobby al botón de historial
- 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
2025-12-22 17:41:36 +01:00
Resistencia Dev
6369421cb6 fix: Posicionar botón de lobby debajo del botón de historial
- Cambiar top-4 a top-20
- Ahora el botón verde de lobby está debajo del botón de historial
2025-12-22 17:38:58 +01:00
Resistencia Dev
060b604e04 feat: Mejorar diseño del botón de salir de la partida
- 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'
2025-12-22 17:34:01 +01:00
Resistencia Dev
40c9de3388 fix: Configurar correctamente variables de entorno para acceso desde red local
- 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
2025-12-22 17:27:03 +01:00
Resistencia Dev
e9b4390db6 fix: Resolver bucle infinito de reconexiones
- Agregar bandera hasReconnected para ejecutar reconexión solo una vez
- Evita que el useEffect se ejecute infinitamente
- Reduce carga del servidor significativamente
2025-12-22 17:16:16 +01:00
Resistencia Dev
ef9d772441 revert: Restaurar tamaño original del botón de logout
- Padding vuelve a p-2
- Icono vuelve a w-5 h-5
- Tamaño más visible y usable
2025-12-22 17:13:23 +01:00
Resistencia Dev
5c7f52f793 fix: Reducir tamaño del botón de logout
- Padding reducido de p-2 a p-1.5
- Icono reducido de w-5 h-5 a w-4 h-4
- Botón más compacto y proporcional
2025-12-22 17:10:59 +01:00
Resistencia Dev
a6d1b11575 fix: Quitar posicionamiento fixed del botón de logout
- Ahora el botón se integra en el header del lobby
- Aparece al lado derecho del nombre del agente
- Ya no está arriba a la izquierda de forma fija
2025-12-22 17:09:17 +01:00
Resistencia Dev
1c03149bbd fix: Mejorar diseño del botón de logout
- 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
2025-12-22 17:08:07 +01:00
Resistencia Dev
53a5e3886e feat: Implementar sesiones persistentes y botones de salida
- 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
2025-12-22 16:51:35 +01:00
Resistencia Dev
be15983455 Chore: Actualización a versión 1.0.0
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 7s
2025-12-18 21:23:42 +01:00
Resistencia Dev
94d1ffbf56 Fix: Cambio a Rondas.mp3 y corrección lógica votación
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 7s
2025-12-18 20:31:30 +01:00
Resistencia Dev
c8bad3ea73 Actualización de assets y limpieza de archivos temporales
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
2025-12-16 17:27:33 +01:00
Resistencia Dev
4e601cdd6f Millores UI: text INTRO, velocitat drag REVEAL_ROLE, colors botons, cartes VOTING_TEAM redissenyades
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
2025-12-15 14:10:08 +01:00
Resistencia Dev
385f87cce0 Afegit botó per ocultar/mostrar l'historial de missions amb animació de lliscament
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 7s
2025-12-15 09:57:58 +01:00
Resistencia Dev
bb08fa9437 Millores UI: text MISSION_RESULT més gran, text centrat a MISSION_REVEAL, text ASSASSIN_PHASE centrat verticalment
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
2025-12-15 09:30:26 +01:00
Resistencia Dev
c2f1bbf4d4 Text adaptatiu per MISSION_RESULT: s'ajusta a qualsevol pantalla en una sola línia
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
2025-12-15 09:18:42 +01:00
Resistencia Dev
e1c08f775e Ajustats textos i mides de cartes: botó 'Ocultar/Mostrar', cartes MISSION mateix tamany que MISSION_REVEAL
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 7s
2025-12-15 09:08:37 +01:00
Resistencia Dev
fc6bc1ab54 Afegit botó per ocultar/mostrar els jugadors
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 7s
2025-12-14 22:06:47 +01:00
Resistencia Dev
13d56c2431 feat: Mejoras UI - Timer, mapa resultado misión y 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
2025-12-13 01:18:52 +01:00
Resistencia Dev
c67f97845a feat(ui): Enhance responsive design and game flow
- 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)
2025-12-12 19:14:14 +01:00
Resistencia Dev
59d2dd56bc Release v1.0 - Primera versión estable de Francia Ocupada
- 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
2025-12-10 12:58:00 +01:00
Resistencia Dev
6e65152648 feat: Fix victory screens background images
- 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
2025-12-08 22:39:05 +01:00
Resistencia Dev
f09e14f99a 🚪 Finalizar partida expulsa a todos al lobby - El host puede terminar la partida, eliminándola del listado y enviando a todos los jugadores al lobby 2025-12-08 20:51:46 +01:00
Resistencia Dev
31067bc168 🎴 Arreglada animación de las cartas - La carta de rol ahora vuelve a su posición al soltarla 2025-12-08 20:49:05 +01:00
Resistencia Dev
6a6cf7628b Checkpoint: Aplicación completamente funcional - Logo actualizado a 'FRANCIA OCUPADA' y botones de victoria redimensionados 2025-12-08 20:40:49 +01:00
Resistencia Dev
b836c53002 feat: Sistema completo de fin de juego y pantallas de victoria
Nuevas funcionalidades:
- Pantallas de victoria diferenciadas (NAZIS_WIN / ALLIED_WIN)
  * Diseño visual diferenciado (rojo para Nazis, azul para Aliados)
  * Timer de 30 segundos con auto-finalización
  * Estadísticas de misiones (exitosas vs fracasadas)
  * Opciones para el host: NUEVA PARTIDA o TERMINAR
  * Mensaje de espera para jugadores no-host

- Sistema de reinicio de partida
  * Método restartGame() que resetea todas las variables
  * Reasigna roles y líder aleatorios
  * Vuelve a fase REVEAL_ROLE manteniendo jugadores

- Sistema de finalización y expulsión
  * Método finalizeGame() que expulsa a todos después de 5s
  * Auto-expulsión si el host no decide en 30s
  * Limpieza de partida del servidor

Mejoras en MISSION_RESULT:
- Eliminado oscurecimiento de fondo (bg-transparent)
- Tiempo de visualización aumentado de 5 a 7 segundos
- Ahora se puede ver claramente el tablero con las fichas

Lógica de transiciones:
- 3 misiones fracasadas → NAZIS_WIN
- 3 misiones exitosas → ASSASSIN_PHASE
  * Asesino acierta (mata a Marlene) → NAZIS_WIN
  * Asesino falla → ALLIED_WIN

Archivos modificados:
- shared/types.ts: Nuevas fases NAZIS_WIN y ALLIED_WIN
- server/src/models/Game.ts: Métodos restartGame() y finalizeGame()
- server/src/index.ts: Eventos restart_game y finalize_game
- client/src/hooks/useSocket.ts: Acciones restartGame() y finalizeGame()
- client/src/components/GameBoard.tsx: Renderizado de VictoryScreen
- client/src/components/MissionResult.tsx: Sin oscurecimiento, 7s
- client/src/components/VictoryScreen.tsx: NUEVO componente
2025-12-08 13:41:44 +01:00
Resistencia Dev
774e1b982d feat: Títulos de misiones y fix timer votación post-misión
Nuevas funcionalidades:
- Títulos y subtítulos en cartas de misión
  * Título: 'MISIÓN X' (blanco, mayúsculas)
  * Subtítulo: Nombre de la misión (amarillo dorado)
  * Objeto missionNames con 5 nombres editables:
    1. Sabotaje en el Tren
    2. Rescate del Prisionero
    3. Destrucción del Puente
    4. Robo de Documentos
    5. Asalto al Cuartel General

Correcciones:
- Timer de votación de líder ahora se inicia correctamente después de terminar una misión
- Importado GamePhase en server/src/index.ts para comparaciones de fase
- Agregada lógica en finish_mission_result para iniciar timer cuando vuelve a VOTE_LEADER
- Votación se resuelve automáticamente si no todos votan (mayoría sobre votos emitidos)

Archivos modificados:
- client/src/components/GameBoard.tsx: Títulos de misiones
- server/src/index.ts: Fix timer post-misión
2025-12-08 13:13:33 +01:00
Resistencia Dev
06d2171871 fix: Sistema de votación de líder completamente refactorizado
- Timer de 10 segundos que se reinicia correctamente al cambiar de líder
- Votación por mayoría calculada sobre votos emitidos, no total de jugadores
- Si nadie vota, líder rechazado automáticamente
- Alemanes pueden ver carta de sabotaje en misiones
- Reset correcto de selectedTeam al cambiar de fase
- Contador de votos fallidos incrementa correctamente
- Logs mejorados para debugging

Fixes:
- Timer visual se reinicia con key basada en currentLeaderId
- Facción verificada correctamente (Faction.ALEMANES vs 'spies')
- forceResolveLeaderVote llama a resolución con votos actuales
- selectedTeam se limpia al salir de TEAM_BUILDING
2025-12-08 00:05:08 +01:00
Resistencia Dev
9e0e343868 feat: Actualizar roles y facciones a Francia Ocupada
- Cambiar nombre del juego de 'La Resistencia' a 'Francia Ocupada'
- Actualizar roles: Marlene, Capitán Philippe, Partisano, Comandante Schmidt, Francotirador, Agente Doble, Infiltrado, Colaboracionista
- Actualizar facciones: Aliados vs Alemanes
- Implementar timer de votación de líder con auto-avance
- Eliminar componentes de debug
2025-12-07 00:20:33 +01:00
Resistencia Dev
8f95413782 Checkpoint: Fix role shuffling bug and improve mission reveal flow 2025-12-06 00:32:09 +01:00