# Release y deploy log

Registro acumulativo de cambios que afecten publicaciones, deploys, APIs, workflows o entregables de GZ-Util.

## Publicado

### 2026-06-11 - Optimización de rendimiento del sitio estático

Estado: pendiente de desplegar.

- Cambio: eliminadas fuentes externas de la home y CSS compartido; icono de tema pasa a SVG inline; SheetJS, QR Code Styling, Lorem Ipsum y JSZip se cargan bajo demanda; SortableJS en Dowdall pasa a `defer` con SRI corregido; se redujo CSS duplicado de Dowdall; se añadieron dimensiones/carga diferida a iconos sociales y una `.htaccess` conservadora para caché.
- Superficie tocada: `www/index.html`, `www/styles.css`, `www/css/main.css`, `www/js/common.js`, varias herramientas bajo `www/herramientas/`, `www/.htaccess`.
- Verificacion: Chrome DevTools MCP en local; home sin cadena Google Fonts y LCP móvil emulado ~990 ms; rutas locales principales `200`; producción actual `200` para rutas principales; smoke de CSV a XLSX, CP Madrid CSV/XLSX, QR, Lorem, JSZip bajo demanda y Dowdall con Sortable operativo.
- Riesgos: `www/.htaccess` depende de que Apache permita `mod_expires`/`mod_headers`; `/herramientas/maps/` existe en producción pero no en este checkout y debe preservarse como superficie externa confirmada.
- Pasos manuales: desplegar por el flujo habitual de push a `main` y verificar producción después del workflow FTP.
- Rollback: revertir esta entrada y los cambios de rendimiento en los archivos indicados.

### 2026-06-11 - Robustez descargas CSV/XLSX en códigos postales Madrid

Estado: desplegado.

- Cambio: la exportacion XLSX pasa a generarse como `ArrayBuffer` y descargarse con la misma ruta Blob robusta que CSV; se anade fallback para navegadores sin `download` y captura de errores de generacion.
- Superficie tocada: `www/herramientas/codigos_postales_madrid/script.js`.
- Verificacion: smoke local correcto en Chromium, Firefox y WebKit con viewport escritorio y movil; CSV con BOM/UTF-8, comillas, comas y acentos; XLSX completo y por tabla reabierto con SheetJS y hojas/cabeceras esperadas.
- Riesgos: bajo; no cambia datos ni clasificacion, solo la mecanica de descarga.
- Pasos manuales: no aplica.
- Rollback: revertir `downloadWorkbook`, `downloadBlob`, `safelyDownload` y los handlers de descarga.

### 2026-06-11 - Legibilidad tablas códigos postales Madrid

Estado: desplegado.

- Cambio: ajustada la tabla de resultados para evitar cortes verticales de palabras y numeros; en movil las tablas de resumen pasan a formato etiqueta/valor.
- Superficie tocada: `www/herramientas/codigos_postales_madrid/`.
- Verificacion: smoke local correcto con datos largos tipo Getafe/Leganes/Rivas, tabla responsive sin cortes verticales, descarga CSV de municipios y sin overflow horizontal en movil.
- Riesgos: bajo; solo cambia presentacion y atributos `data-label` de celdas.
- Pasos manuales: no aplica.
- Rollback: revertir los cambios de `styles.css`, `script.js` y esta entrada.

### 2026-06-11 - Descargas por tabla en códigos postales Madrid

Estado: desplegado.

- Cambio: anadidos botones CSV/XLSX por cada tabla visible de resultados: municipios asignados, codigos ambiguos, fuera de Madrid y resultado por fila.
- Superficie tocada: `www/herramientas/codigos_postales_madrid/`.
- Verificacion: smoke local correcto con 8 botones de descarga, CSV/XLSX por tabla y comprobacion responsive movil sin overflow horizontal.
- Riesgos: bajo; reutiliza los datos ya calculados en cliente y no cambia la clasificacion.
- Pasos manuales: no aplica.
- Rollback: revertir los cambios de `index.html`, `styles.css` y `script.js` de la herramienta.

### 2026-06-11 - Herramienta códigos postales Madrid

Estado: desplegado.

- Cambio: nueva herramienta estatica `codigos_postales_madrid` para clasificar CSV/Excel por municipio de la Comunidad de Madrid, codigos ambiguos y fuera de Madrid.
- Superficie tocada: `www/herramientas/codigos_postales_madrid/`, `www/index.html`, `www/sitemap.xml`.
- Verificacion: smoke local correcto con CSV UTF-8, CSV con separador `;`, XLSX, descargas CSV/XLSX y comprobacion responsive desktop/movil sin overflow horizontal.
- Riesgos: la correspondencia se basa en una tabla estatica generada desde un dataset derivado del Callejero del Censo Electoral del INE; si la fuente cambia, hay que regenerar `data.js`.
- Pasos manuales: no aplica; publicado mediante el flujo habitual de `main`/FTP.
- Rollback: retirar el enlace de `www/index.html`, la entrada del sitemap y la carpeta `www/herramientas/codigos_postales_madrid/`.

## Como registrar un deploy

Usa una seccion por fecha, version, commit, run de GitHub Actions o servicio Railway, segun aplique.

```markdown
## YYYY-MM-DD - Superficie

Estado: pendiente / desplegado / rollback.

- Cambio:
- Superficie tocada:
- Verificacion:
- Riesgos:
- Pasos manuales:
- Rollback:
```
