diff --git a/README.md b/README.md index 086fd63..c412499 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Primera versión de una plataforma de juegos online en español. Svelte 5 + Svel - Perfil e historial con victoria, derrota, empate y posición. - Interfaz adaptada a móvil, temas claro/oscuro, avatar, color de fichas, sonidos y animaciones de cada juego. - Salida de partidas y cierres sin resultado por inactividad; pendientes actualizadas en tiempo real. -- Servicio personal en desarrollo de Juan V. Navarro Leal: popup breve de entrada y aceptación recordada con una cookie firmada. +- Servicio personal en desarrollo de Juan V. Navarro Leal: popup breve de entrada y aceptación recordada con una cookie firmada. Al rechazar el aviso, se vuelve a imaginacion.com. ## Desarrollo local diff --git a/deploy/activate-release.sh b/deploy/activate-release.sh index a768902..9ef89d9 100644 --- a/deploy/activate-release.sh +++ b/deploy/activate-release.sh @@ -21,6 +21,11 @@ for unit in mesa-game.service mesa-backup.service mesa-backup.timer; do install -m 0644 "deploy/$unit" "/etc/systemd/system/$unit" done if systemctl cat mesa-web.service >/dev/null 2>&1; then systemctl disable --now mesa-web.service; fi +# Open tabs may still request chunks from the preceding client build. +# Their content hashes keep them separate from the new release's assets. +if [[ -n "$previous" && -d "$previous/build/client/_app/immutable" ]]; then + cp -an "$previous/build/client/_app/immutable/." "$release/build/client/_app/immutable/" +fi ln -sfn "$release" /opt/mesa-abierta/current.next mv -Tf /opt/mesa-abierta/current.next /opt/mesa-abierta/current systemctl daemon-reload diff --git a/deploy/server-status.md b/deploy/server-status.md index 7056be4..ff24e9b 100644 --- a/deploy/server-status.md +++ b/deploy/server-status.md @@ -1,6 +1,6 @@ # Servidor de Juegoland -Versión 20261004-06. Web, API y WebSockets en mesa-game, 0.0.0.0:3000. +Versión 20261004-07. Web, API y WebSockets en mesa-game, 0.0.0.0:3000. El proxy Nginx existente de la red apunta a http://192.168.18.155:3000. Nginx y el antiguo servicio mesa-web están deshabilitados en la VM. @@ -8,7 +8,8 @@ Acceso local: http://192.168.18.155:3000. Dominio público: https://juegoland.imaginacion.com. 78 pruebas y compilación Linux verificadas. Dos clientes reales han comprobado por el dominio público la aceptación, cookies, WebSocket, chat, movimiento, turno y resultado. Las identidades sintéticas se eliminaron después de la prueba. -El popup breve se muestra sobre el catálogo; no hay página de condiciones completas. Open Graph y PNG de 1200×630 publicados para compartir. +El popup breve se muestra sobre el catálogo; no hay página de condiciones completas. «No acepto» y Escape vuelven a https://imaginacion.com/ sin ocultar el aviso mientras sigue abierta Juegoland. Open Graph y PNG de 1200×630 publicados para compartir. +El despliegue conserva los archivos inmutables del cliente anterior para que las pestañas abiertas puedan seguir cargando sus componentes. Damas mantiene la ficha seleccionada durante capturas encadenadas y permite recorrido diagonal largo de las damas. Las partidas existentes siguen disponibles. PostgreSQL permanece en loopback, con base y rol dedicados. Credenciales y datos existentes se conservan. APT y npm operan por IPv4. Copias diarias activas a las 03:15 Europe/Madrid. diff --git a/src/lib/client.svelte.ts b/src/lib/client.svelte.ts index df5b191..f957daf 100644 --- a/src/lib/client.svelte.ts +++ b/src/lib/client.svelte.ts @@ -10,7 +10,6 @@ export const consent = $state({ acceptedAt: null as string | null, expiresAt: null as string | null, reviewOpen: false, - dismissed: false, }); export const definitions = catalog as Definition[]; @@ -57,7 +56,6 @@ export async function api(path: string, input?: unknown): Promise { } if (response.status === 428 && result.code === 'TERMS_REQUIRED') { consent.accepted = false; - consent.dismissed = false; consent.reviewOpen = true; socket?.disconnect(); } diff --git a/src/lib/components/Dialog.svelte b/src/lib/components/Dialog.svelte index fef20be..2ff605f 100644 --- a/src/lib/components/Dialog.svelte +++ b/src/lib/components/Dialog.svelte @@ -19,7 +19,10 @@ class="modal {className}" bind:this={dialog} aria-labelledby={label} - oncancel={onclose} + oncancel={(event) => { + event.preventDefault(); + onclose(); + }} > {@render children()} diff --git a/src/lib/components/TermsConsent.svelte b/src/lib/components/TermsConsent.svelte index d29d595..7129421 100644 --- a/src/lib/components/TermsConsent.svelte +++ b/src/lib/components/TermsConsent.svelte @@ -9,7 +9,6 @@ const visible = $derived( consent.reviewOpen || (!consent.accepted && - !consent.dismissed && (!session.loading || !hasTermsCookie)), ); async function accept() { @@ -25,17 +24,14 @@ busy = false; } } - function close() { + function decline() { if (busy) return; - consent.reviewOpen = false; - consent.dismissed = true; - checked = false; - error = ''; + window.location.assign('https://imaginacion.com/'); } {#if visible} - +

Antes de jugar

{terms.introduction}

{terms.notice}

@@ -50,8 +46,8 @@ Una cookie recordará tu aceptación durante un año.

- No acepto