# Continuación de Juegoland — 4 de octubre de 2026 El usuario ha pedido terminar los cambios actuales, dejar este handoff, hacer commit y push y cerrar por hoy. Los componentes de cartas y los juegos nuevos quedan para la siguiente sesión. ## Trabajo cerrado - El parchís sigue la distribución del tablero de referencia: rojo arriba a la izquierda, azul arriba a la derecha, verde abajo a la izquierda y amarillo abajo a la derecha. Las 68 casillas, sus números, las salidas 5/22/39/56 y los pasillos se dibujan con la geometría clásica. Los índices del motor se conservan, incluidos los de partidas antiguas. - Solo las cuatro casillas de salida del parchís tienen popover. En la oca lo conservan las casillas especiales; las normales y el inicio no lo tienen. - Los colores de las fichas son vivos y el amarillo es amarillo. La paleta compartida y los tokens visuales tienen los mismos colores sólidos; los textos del chat conservan tonos legibles para claro y oscuro. - El centro de cada casa del parchís muestra el avatar del jugador. Si no hay avatar, aparecen sus iniciales; las casas libres mantienen un símbolo neutro. - En mesas de dos o tres jugadores, cada jugador puede elegir entre todos los colores libres. Solo se asigna automáticamente el último color cuando se agota la paleta: cuatro jugadores con cuatro colores u ocho con ocho. Un color ocupado se rechaza y cambiar de color desmarca «listo». - El arreglo anterior del chat se conserva: utiliza primero el margen derecho libre y no desplaza el tablero mientras haya espacio. ## Código de referencia - `shared/parchis-board.mjs`: geometría de casillas, números, casas, salidas y pasillos. - `src/lib/components/ParchisMap.svelte`: tablero, avatares, fichas, animaciones y popovers de salida. - `src/lib/components/OcaBoard.svelte`: interacción solo en casillas especiales y contraste de números de fichas. - `shared/player-colors.mjs`: paleta y función `receivesLastColor`. - `server/platform.mjs` y `src/lib/components/PlayerColorChooser.svelte`: asignación y elección de colores. - `src/tokens.css` y `src/app.css`: sistema visual. Consultar `docs/design-system.md`, `docs/typography.md` y `docs/room-layout.md` antes de tocar estilos. - `tests/parchis-board.test.ts` y `tests/platform.test.ts`: posición de casillas y selección de colores, además de las pruebas existentes. ## Verificación y despliegue La suite contiene 81 pruebas. Ejecutar `npm run design:check`, `npm run check`, `npm test -- --maxWorkers=1` y `npm run build` al modificar el proyecto. La revisión visual de este cambio utiliza dos identidades sintéticas y un servidor aislado en `127.0.0.1:4185`; sus archivos y capturas están en `artifacts/`, ignorado por Git. No reiniciar los servidores de otras sesiones de Codex. El estado del despliegue se registra en `deploy/server-status.md`. Al cierre de esta sesión quedó activada la versión `20261004-12`, con 81 pruebas aprobadas en Linux y respuesta HTTP 200 del endpoint público de salud. Comprobar allí y con `readlink /opt/mesa-abierta/current` la versión vigente antes de continuar. - Proyecto local: `G:\dev\svelte\games`, rama `main`. - Repositorio: `https://g.activething.com/go/Juegoland.git`. - VM: `192.168.18.155`. - Servicio único: `mesa-game`, escucha en `0.0.0.0:3000` para web, API y WebSockets. - Dominio vigente: `https://juegoland.imaginacion.com/`. Usar este dominio en invitaciones; las menciones antiguas a games/juegolang ya no son la dirección vigente. - El proxy Nginx existente de la red apunta a `http://192.168.18.155:3000`. No instalar otro proxy ni Docker Compose en la VM. `mesa-web` y Nginx de la VM están deshabilitados. - PostgreSQL y las credenciales actuales se conservan. No copiar secretos al repositorio ni imprimirlos. - SSH por IPv4 con la clave local `$env:USERPROFILE\.ssh\senzapaura_deploy`. APT y npm deben usar IPv4. - Despliegue nativo: `deploy/deploy-native.ps1 -Release -Activate`. Verifica, hace copia de seguridad, migra y activa la versión; no reutilizar identificadores existentes. ## Siguiente sesión: componentes de cartas El usuario preparará imágenes de la baraja española y de póquer. Todavía no se han recibido ni se han creado estos componentes. Preparar una base reutilizable para carta, reverso, mano, mazo, descarte y bazas/mesa. Separar datos, imágenes, reglas e interacción; cada juego define sus acciones, animaciones y sonidos. Prever baraja española de 40/48 cartas y póquer de 52 con comodines opcionales. Identificar cartas por palo y valor mediante un manifiesto de recursos. Mantener manos legibles en móvil, selección accesible y acciones legales claras. No sustituir las imágenes que traerá el usuario por otra baraja. El servidor debe autorizar las acciones y ocultar las manos ajenas. Revisar `Platform.view` y la proyección `game.view(state, seat)` antes de implementar estados privados. Esta misma base sirve para dados ocultos y tableros privados de barcos. ## Juegos solicitados para incorporar poco a poco Cartas: brisca, tute de dos jugadores, la 31 y cinquillo. Otras posibilidades mencionadas para valorar después: escoba, chinchón, tute por parejas, pocha y mus. Otros juegos solicitados: - Serpientes y escaleras: el usuario aportará las imágenes del tablero, como hizo con la oca. - Guerra de barcos / hundir la flota: tableros privados de cada jugador. - El ahorcado. - Tres en raya. - Conecta cuatro. - Mancala: concretar la variante antes de implementar reglas. - Shut the Box: concretar dados y puntuación. - El mentiroso de dados y otros juegos de dados: concretar variantes y dados ocultos. No están implementados ni deben presentarse como disponibles en el catálogo. Incorporarlos uno a uno con motor, interfaz, reglas, sonidos, animaciones y validación completos. ## Preferencias que hay que respetar Usar el skill `C:\Users\dev\.codex\skills\frontend-design\SKILL.md`. Conservar el logo transparente y la identidad de Juegoland, los tokens de tipografía y espaciado y las opciones de tema claro/oscuro. Revisar capturas en escritorio y móvil: tamaños, alineaciones y proporciones son una prioridad expresa del usuario. Mantener PIN de cuatro cifras, registro opcional, invitaciones con mensaje del anfitrión, avatares editables, notificación de mensajes con el chat cerrado y partidas pendientes. Sonidos y animaciones deben diferenciarse por juego y acción. El popup de entrada debe ser breve; «No acepto» y Escape llevan a `https://imaginacion.com/`. No volver a añadir páginas legales extensas ni un aviso en lugar del popup. Este handoff no programa tareas para mañana ni abre otra sesión.