Boton cerrar y cerrar la pestaña apaga JARVIS

Cerrar el panel dejaba el proceso vivo (whisper agarrando la grafica, el
microfono escuchando). Ahora hay un boton "cerrar" (dos clics) y cerrar la
ultima pestaña apaga JARVIS del todo: para la voz, suelta whisper y cierra
el proceso, via SIGINT (la misma limpieza que Ctrl+C).
This commit is contained in:
sito 2026-08-16 16:31:11 +02:00
parent 3a2a1bb111
commit fde0fc1c72
6 changed files with 95 additions and 10 deletions

View file

@ -758,6 +758,13 @@
} else if (tipo === "medidas") {
ponMedidas(datos);
} else if (tipo === "cerrando") {
// JARVIS se esta apagando: cerrar la ventana del panel. En chromium
// --app window.close() cierra la ventana de la aplicacion.
document.body.classList.add("parado");
ponEstado("parado");
setTimeout(() => { try { window.close(); } catch (e) {} }, 300);
} else if (tipo === "telemetria") {
if (datos.nucleos) ponNucleos(datos.nucleos);
ponConstantes(datos);
@ -851,6 +858,35 @@
}
});
// Cerrar JARVIS del todo. Dos clics para no apagarlo por un roce: el primero
// arma ("pulsa otra vez"), el segundo lo manda. Si no se confirma en 3 s,
// vuelve a como estaba. Al confirmar, Python contesta "cerrando" y la ventana
// se cierra sola.
(function () {
const b = document.getElementById("cerrar");
if (!b) return;
const rotulo = b.querySelector(".rotulo");
let armado = false, reloj = null;
b.addEventListener("click", () => {
if (!armado) {
armado = true;
b.classList.add("armado");
rotulo.textContent = "¿seguro?";
reloj = setTimeout(() => {
armado = false;
b.classList.remove("armado");
rotulo.textContent = "cerrar";
}, 3000);
return;
}
clearTimeout(reloj);
rotulo.textContent = "cerrando";
try {
window.webkit.messageHandlers.accion.postMessage("cerrar");
} catch (e) { /* suelto en el navegador: no hay Python que apagar */ }
});
})();
// Lanza la tanda de prueba. No cambia nada en el boton: lo que hay que mirar
// son las tarjetas, que es justo lo que se quiere comprobar.
document.getElementById("prueba").addEventListener("click", (ev) => {
@ -944,14 +980,5 @@
{ pid: 1201, nombre: "pipewire", cpu: 2.0, mem: 0.3 },
],
}});
window.jarvis.recibe({ tipo: "medidas", datos: {
n: 240,
lat_p50: 2.1, lat_p95: 4.8, lat_max: 7.2,
lat_cerebro: 2.7, lat_catalogo: 0.2,
pct_cerebro: 44, pct_catalogo: 53, pct_ruido: 3,
vol24: 87, porhora: [2, 0, 1, 4, 6, 3, 5, 8, 4, 2, 1, 3],
rag: { hit5: 95, hit1: 82 },
}});
}
})();