Files
snatchgame/CHANGELOG.md
josedario87 87f5b09f4d
All checks were successful
build-and-deploy / filter (push) Successful in 2s
build-and-deploy / build (push) Successful in 5s
build-and-deploy / deploy (push) Successful in 10s
docs: Complete production documentation and deployment guide
- Add comprehensive DEPLOYMENT.md with Docker and CI/CD details
- Update README.md with production URLs and architecture diagrams
- Document v0.0.9-alpha changes in CHANGELOG.md with full feature list
- Enhance CLAUDE.md with production architecture and security practices
- Document SSE optimizations, URL separation, and monitoring setup
- Include troubleshooting guides and maintenance commands
- Add network architecture diagrams and communication flows
2025-07-05 17:18:25 -06:00

11 KiB

Changelog

Todos los cambios notables de este proyecto serán documentados en este archivo.

El formato está basado en Keep a Changelog, y este proyecto adhiere a Semantic Versioning.

[Unreleased]

Planeado

  • Ronda 2-5: Implementar reglas evolutivas
  • Sistema de Judge rotativo
  • Shame tokens y penalizaciones
  • Efectos de sonido
  • PWA support
  • Multi-idioma

[0.0.9-alpha] - 2025-07-05

Added

  • 🐳 Docker Production Environment: Sistema completo de containerización
    • Dockerfiles individuales para server, client y admin
    • Docker Compose con orquestación completa
    • Health checks automáticos para todos los servicios
    • Restart policies para alta disponibilidad
  • ⚙️ Gitea Actions CI/CD Pipeline: Automatización completa de deployment
    • Build automático de imágenes Docker
    • Push a registry interno gitea.interno.com/nucleo000
    • Conditional building basado en archivos modificados
    • Deploy automático en main branch
  • 🌐 Production Network Architecture: Arquitectura de redes optimizada
    • Red "principal" para Nginx Proxy Manager
    • Red interna "snatchgame-network" para comunicación entre servicios
    • Separación de URLs internas (HTTP) y externas (HTTPS)
  • 🔧 Environment-based URL Configuration: URLs dinámicas según ambiente
    • SERVER_URL para comunicación interna entre contenedores
    • PUBLIC_SERVER_URL para comunicación frontend-backend
    • Configuración automática via /api/config endpoints

Changed

  • SSE Performance Optimizations: Comunicación admin optimizada
    • Polling reducido de 500ms a 250ms para updates más rápidos
    • Headers anti-buffering (X-Accel-Buffering, Content-Encoding)
    • Heartbeat mechanism cada 30 segundos
    • Auto-reconexión cliente cada 5 segundos en caso de error
  • 🏗️ Production URLs: Configuración de producción completa
    • snatchGame.interno.com (Cliente UI)
    • snatchGameServer.interno.com (Servidor Colyseus)
    • snatchgGameAdmin.interno.com (Admin UI)
  • 📦 Build Process: Optimización del proceso de build
    • build:prod script para omitir generación de tipos en Docker
    • npm ci para instalaciones más rápidas y reproducibles
    • Multi-stage builds para imágenes más pequeñas

Fixed

  • 🔌 SSL Certificate Issues: Separación URLs interna/externa
    • URLs HTTPS para comunicación navegador-servidor (frontend)
    • URLs HTTP para comunicación contenedor-contenedor (backend)
    • Resuelve errores de certificado SSL en comunicación interna
  • 🎯 Admin Service URL Configuration: URLs dinámicas basadas en ambiente
    • AdminService obtiene URL desde /api/config en lugar de hardcoded localhost
    • Soporte completo para desarrollo y producción
    • Inicialización async de URLs antes de llamadas API
  • 📊 SSE Connection Stability: Mejoras en estabilidad de conexión
    • Manejo mejorado de heartbeat messages
    • Logging detallado para debugging
    • Cleanup apropiado de intervalos en disconnection

Technical

  • 🐳 Docker Configuration:
    • Puertos de producción: 3067 (server), 3010 (client), 3011 (admin)
    • Alpine Linux base images para menor tamaño
    • wget para health checks (más ligero que curl)
  • 📡 Network Communication:
    • Separación limpia entre comunicación interna y externa
    • Optimización de headers SSE para mejor performance
    • Express middleware optimizado para SSE endpoints
  • 🔧 Environment Management:
    • Variables de entorno separadas por servicio
    • Runtime configuration via API endpoints
    • Support para development y production environments

Infrastructure

  • 🏗️ Complete Production Setup: Sistema listo para producción
    • Docker registry interno configurado
    • CI/CD pipeline completamente automático
    • High availability con health checks y restart policies
    • Network isolation y security best practices
  • 📊 Monitoring & Debugging: Herramientas de monitoreo mejoradas
    • Logging estructurado con timestamps
    • Connection tracking para SSE
    • Performance metrics para fetch requests
    • Detailed error handling y reporting

[0.0.8-alpha] - 2025-07-04

Added

  • Admin Dashboard Completo: UI de administración con información detallada de jugadores
  • Control de Jugadores: Expulsar jugadores individuales y todos los jugadores
  • Control de Rondas Global: Avanzar y retroceder rondas en todas las salas simultáneamente
  • Control de Juego: Pausar y reanudar juegos desde el admin
  • Notificaciones a Clientes: Los jugadores reciben notificaciones cuando son expulsados o cuando cambian las rondas
  • Información Detallada de Jugadores: Nombre, sala, rol, tipo de productor y tokens actuales
  • Redirección Automática: Los clientes expulsados vuelven automáticamente al home

Changed

  • API Oficial de Colyseus: Refactorizado todos los endpoints admin para usar matchMaker.query() y matchMaker.remoteRoomCall()
  • Arquitectura sin Variables Globales: Eliminado el hack de variables globales por implementación oficial
  • UI Admin Mejorada: Información más clara y organizada para comentaristas no-técnicos

Fixed

  • Notificación de Expulsión: Los clientes ahora reciben notificación correcta cuando son expulsados
  • URLs del Admin Service: Corregido para llamar al servidor Colyseus (puerto 2567) en lugar del admin (puerto 3001)
  • Expulsión Masiva: Todos los jugadores reciben notificación apropiada cuando se expulsan todos

Technical

  • GameRoom Methods: Implementado pauseGame(), resumeGame(), advanceRound(), previousRound(), _forceClientDisconnect(), _forceDisconnectAllClients(), getInspectData()
  • Client Notifications: Manejo de mensajes adminKicked, gamePaused, gameResumed, roundChanged
  • Type Safety: Mantenida sincronización de tipos TypeScript entre servidor y clientes

[0.0.5-alpha] - 2025-01-04

Añadido

  • 🎮 Juego Snatch or Share completo

    • Implementación del "Snatch Game" de Elinor Ostrom
    • Sistema de roles únicos: Productor de Pavos, Café, Maíz
    • Exactamente 3 jugadores por sala
    • Tokens múltiples (turkey, coffee, corn)
    • Sistema de puntuación: tokens propios = 1pt, ajenos = 2pts
  • 🔄 Sistema de ofertas comerciales

    • Ofertas simultáneas entre jugadores
    • Límite de 2 ofertas por target por jugador
    • Respuestas: Accept, Reject, Snatch
    • Cumplimiento parcial automático
    • Todas las ofertas son públicas
  • 🎨 UI/UX completamente rediseñada

    • Layout responsivo optimizado (desktop/móvil)
    • Componentes modulares: PlayerCard, TradeOfferCard, MakeOfferForm
    • Modal flotante para crear ofertas
    • Scroll customizado para lista de ofertas
    • Botones +/- prominentes para cantidades
    • Input compacto optimizado para números de 3 dígitos
  • 📱 Mejoras móviles

    • Layout vertical adaptativo
    • Cards de ofertas horizontales y compactas
    • Botones táctiles optimizados
    • Altura diferencial desktop vs móvil

Changed

  • 🏗️ Arquitectura del servidor

    • GameState con múltiples tipos de tokens
    • Player con rol de productor y tokens individuales
    • TradeOffer con inventarios de offering/requesting
    • Asignación automática de roles únicos
  • ⚙️ Sistema de tipos

    • Regeneración automática desde servidor
    • TokenInventory schema separado
    • Interfaces para ofertas comerciales
    • GameRoomOptions actualizado
  • 🎯 Lógica del juego

    • Ronda 1: Estado de naturaleza implementado
    • Ofertas más recientes aparecen arriba
    • Validación de límites por jugador
    • Cálculo automático de puntos en tiempo real

Fixed

  • 🐛 Problemas de layout

    • Overflow vertical en desktop eliminado
    • Altura móvil permite scroll natural
    • Posicionamiento de elementos mejorado
  • Rendimiento

    • Componentización reduce bundle size
    • CSS encapsulado por componente
    • Reactivity optimizada con computed properties
  • 📚 Documentación completa

    • README.md principal actualizado con enfoque educativo
    • README.md específico del servidor con API y schemas
    • README.md específico del cliente con componentes
    • gameRules.md con lógica detallada del juego
    • Roadmap actualizado con progreso real

Technical

  • 📊 Schemas Colyseus: GameState, Player, TradeOffer, TokenInventory
  • 🧩 Componentes Vue: 6 componentes modulares especializados
  • 📋 Validación: Límites de tokens, ofertas y jugadores
  • 🔄 Estado: Sincronización en tiempo real mejorada
  • 🛠️ Build: Generación automática de tipos client/server

[0.0.1-alpha] - 2025-01-03

Añadido

  • Funcionalidad core del juego

    • Juego multijugador de click battle en tiempo real
    • Soporte para hasta 8 jugadores simultáneos
    • Scoreboard en tiempo real
    • Auto-inicio cuando hay 2+ jugadores
    • Auto-pausa cuando <2 jugadores
  • Arquitectura técnica

    • Servidor Colyseus.io con TypeScript
    • Cliente Vue 3 con Composition API
    • Sincronización automática de tipos con schema-codegen
    • Sistema de logging configurable
    • Variables de entorno por ambiente
  • UI/UX

    • Pantalla de home con branding
    • Pantalla de espera con contador de jugadores
    • Pantalla de juego con botón animado
    • Modal de configuración
    • Diseño responsive
  • Desarrollo

    • VSCode tasks para desarrollo
    • Hot reload en desarrollo
    • TypeScript estricto en todo el proyecto
    • Sistema de tipos compartidos
    • Docker setup para producción
  • Documentación

    • README.md completo
    • CLAUDE.md para desarrollo interno
    • .gitignore comprehensivo
    • Estructura de proyecto documentada

Características técnicas

  • Backend: Colyseus.io 0.16+, Node.js 18+, TypeScript, Express
  • Frontend: Vue 3, TypeScript, Vite, CSS vanilla
  • Desarrollo: Schema-codegen, ESLint, Hot reload
  • Deploy: Docker, docker-compose, Nginx proxy

Estado actual

  • Funcionalidad básica del juego completamente funcional
  • Multijugador en tiempo real working
  • UI responsive y animada
  • Sistema de logging configurable
  • Documentación completa
  • ⚠️ En desarrollo activo - versión Alpha

Formato de versiones

  • Major.Minor.Patch-PreRelease
  • Alpha: Desarrollo inicial, funcionalidad básica
  • Beta: Características completas, testing intensivo
  • RC: Release Candidate, listo para producción
  • Stable: Versión estable para uso general

Tipos de cambios

  • Added para nuevas características
  • Changed para cambios en funcionalidad existente
  • Deprecated para características que serán removidas
  • Removed para características removidas
  • Fixed para bug fixes
  • Security para fixes de vulnerabilidades