# UniConvert PWA - Guía

Convertidor universal de unidades (30 magnitudes, prefijos de quetta a quecto, unidades de Planck) como app instalable en Chromebook y con uso sin conexión.

## 1. Archivos

Todos deben estar en la misma carpeta, en la raíz del sitio.

| Archivo | Para qué sirve |
|---|---|
| `index.html` | La app completa (interfaz, conversiones, favoritos, ajustes) |
| `manifest.json` | Nombre, iconos, colores y atajos de la app instalada |
| `sw.js` | Service worker: guarda la app para uso sin conexión y gestiona actualizaciones |
| `icon.svg` | Icono vectorial |
| `icon-192.png`, `icon-512.png` | Iconos estándar |
| `icon-maskable-512.png` | Icono para ChromeOS/Android (evita recortes en el estante) |
| `guide.pdf`, `guide.md` | Esta guía; se abre desde el botón Ayuda de la app y también funciona sin conexión |

## 2. Publicar (HTTPS obligatorio)

Chrome solo permite instalar y usar el service worker en HTTPS (o en `localhost` para pruebas).

**Prueba local**

1. Abre una terminal en la carpeta `uniconvert`.
2. Ejecuta `python3 -m http.server 8080`.
3. Abre `http://localhost:8080` en Chrome.

**Cloudflare Pages**

- Con el panel: Workers y Pages > Crear > Pages > Subir activos, y sube la carpeta completa.
- Con la terminal: `npx wrangler pages deploy uniconvert --project-name uniconvert`.

## 3. Instalar en el Chromebook

1. Abre la dirección de la app en Chrome y entra una vez con tu código de licencia.
2. Recarga la página una vez, para que el service worker tome el control.
3. Menú de Chrome (los tres puntos) > Instalar UniConvert (o Guardar y compartir > Instalar).
4. Clic derecho en su icono del estante > Fijar.

La app se abre en ventana propia y funciona sin conexión. En Ajustes > Estado puedes comprobar si el modo sin conexión está listo.

## 4. Uso

**Pestañas**

- **Convertir:** menú de magnitudes con buscador. Elige una, escribe el valor y elige las unidades.
- **Favoritos:** magnitudes fijadas con el botón de estrella y las últimas 30 conversiones (un clic las reabre).
- **Ajustes:** estado de la app, instalar, buscar actualización, borrar caché y enlaces a esta guía (PDF y MD).
- **Ayuda:** el botón «Ayuda» de la barra superior abre la guía en PDF.

**Atajos de teclado**

| Atajo | Acción |
|---|---|
| `/` | Buscar magnitud |
| `Alt+S` | Intercambiar unidades |
| `Alt+C` | Copiar resultado |
| `Alt+Flecha izquierda` | Volver |

También puedes hacer clic sobre el resultado para copiarlo.

**Atajos del icono:** clic derecho sobre el icono de la app > Longitud, Masa, Tiempo o Guía y ayuda.

## 5. Actualizar la app

1. Cambia los archivos y sube la carpeta de nuevo.
2. En `sw.js`, cambia el nombre de la caché (`const V='uniconvert-v3'` a `v4`, `v5`...) cada vez que modifiques archivos. Así se borra la caché antigua.
3. Al abrir la app aparecerá el botón **Actualizar** arriba a la derecha. Púlsalo y la app se recarga con la versión nueva.

Sin ese botón, la nueva versión también se verá en la segunda apertura tras subir los cambios.

## 6. Problemas frecuentes

| Problema | Solución |
|---|---|
| No aparece el botón Instalar | Comprueba que usas HTTPS, que `manifest.json` e iconos cargan (herramientas de desarrollo > Application) y recarga una vez |
| No funciona sin conexión | Recarga la página una vez con conexión; revisa Ajustes > Estado |
| No se ven los cambios | Ajustes > Borrar caché, o cambia el nombre de caché en `sw.js` |
| Icono recortado en el estante | Comprueba que `icon-maskable-512.png` está en la carpeta |
| Abro `index.html` con doble clic y no instala | Normal: hace falta servidor (`localhost` o HTTPS) |

## 7. Licencia

Los códigos de licencia están en texto plano dentro de `index.html`, así que cualquiera puede verlos. Sirve como barrera básica. Para un cobro real, valida los códigos en un servidor (por ejemplo un Worker de Cloudflare con KV).

## 8. Ideas siguientes

- Añadir capturas de pantalla al manifest para un cuadro de instalación más completo.
- Ajuste de número de decimales y tema claro/oscuro.
- Constantes físicas como página nueva.
