# Prompt 6 — La app en la pantalla de inicio (y sin señal)

Requiere la página publicada en https (los service workers no corren en
http, salvo en localhost). La cola del prompt 3 ya guarda los gastos sin
señal; este prompt hace que la página misma abra en el avión, y que se
instale como app desde el navegador del teléfono.

---

Convierte mi página de gastos de viaje en una app instalable (PWA), sin
tocar el motor ni el almacén:

1. `manifest.webmanifest` junto a la página: `name`, `short_name`,
   `display: standalone`, `scope: "./"`, `id` y `start_url: "./"` (sin
   `start_url` Chrome NO deja instalar: su diagnóstico dice
   `start-url-not-valid`), colores de fondo y tema, e íconos PNG de 192 y
   512 px más uno `maskable`. Enlázalo en el `<head>` junto con
   `apple-touch-icon` (180 px) y `theme-color`.

2. `sw.js` (service worker) con RED PRIMERO y caché de respaldo: con red
   siempre se ve la versión nueva (el deploy no necesita "subir versión"),
   sin red se sirve lo último visto. Pide con `cache: 'no-cache'` para
   revalidar con el servidor (si no, la caché HTTP del navegador te sirve un
   JS viejo). Precarga la página y sus archivos al instalarse. Guarda la
   página SIN su query string (el enlace del grupo trae la clave: no quiero
   una copia por enlace ni la clave en caché) y respóndela con
   `ignoreSearch` cuando no haya red.

   Importante: el service worker SOLO toca GET del mismo origen y dentro de
   su propia carpeta. Nada de datos: si la hoja del grupo vive en el mismo
   origen (un servidor de pruebas, por ejemplo), su respuesta lleva la clave
   y la bitácora completa, y no debe quedar en la caché. Ponle versión al
   nombre de la caché y borra las viejas al activarse.

3. Regístralo desde la página. Y un detalle de iPhone: la app de la
   pantalla de inicio tiene almacenamiento PROPIO, separado del de Safari;
   al abrirla por primera vez no sabe de la hoja del grupo. Si la página
   corre instalada (`navigator.standalone` o `display-mode: standalone`) y
   no tiene hoja configurada, muestra un aviso con un botón "Pega el enlace
   del grupo" que acepte el enlace completo de WhatsApp y lo abra ahí mismo.
   En Android no pasa: la app instalada comparte almacenamiento con Chrome.

Cómo lo compruebo: en Chrome del teléfono, menú ⋮ → "Instalar app" (en
versiones nuevas: "Install and create shortcut" → Install). Debe abrir sin
barra de direcciones. Luego modo avión, cerrar la app y abrirla: tiene que
cargar con los saldos y decir "sin internet". Un gasto anotado sin señal
sube solo al volver la red.
