Vuelve a imaginacion.com al rechazar el aviso de entrada

main
dev 4 days ago
parent 04f1dff1c7
commit 11701d3699

@ -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

@ -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

@ -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.

@ -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<T>(path: string, input?: unknown): Promise<T> {
}
if (response.status === 428 && result.code === 'TERMS_REQUIRED') {
consent.accepted = false;
consent.dismissed = false;
consent.reviewOpen = true;
socket?.disconnect();
}

@ -19,7 +19,10 @@
class="modal {className}"
bind:this={dialog}
aria-labelledby={label}
oncancel={onclose}
oncancel={(event) => {
event.preventDefault();
onclose();
}}
>
{@render children()}
</dialog>

@ -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/');
}
</script>
{#if visible}
<Dialog label="terms-title" onclose={close} className="terms-consent">
<Dialog label="terms-title" onclose={decline} className="terms-consent">
<h2 id="terms-title">Antes de jugar</h2>
<p class="terms-author">{terms.introduction}</p>
<p>{terms.notice}</p>
@ -50,8 +46,8 @@
Una cookie recordará tu aceptación durante un año.
</p>
<div class="terms-actions">
<button class="button secondary" disabled={busy} onclick={close}
>Ahora no</button
<button class="button secondary" disabled={busy} onclick={decline}
>No acepto</button
>
<button
class="button primary"

Loading…
Cancel
Save

Powered by TurnKey Linux.