- vitest 4 traía vite 8 anidado con esbuild 0.28: el lockfile quedaba
incompleto para npm ci y el npm 10.8.2 del runner fallaba con
"Missing @esbuild/* from lock file" / EBADPLATFORM. vitest 3 usa el
vite 5 del proyecto como peer: sin árbol anidado, esbuild solo 0.21.5
- jsdom 30 exige Node >=22.22 (el runner tiene 20.20): bajado a jsdom 26
- tests.yml sobre el runner real (self-hosted, Node del sistema) en vez
de ubuntu-latest, que no existe como label
- aserciones de max()/calc() tolerantes a la serialización de jsdom 26
- Campo universal de ubicación (Google Maps/Waze/OSM/coordenadas/dirección)
sobre proveedores extensibles (src/utils/ubicacion) con resolver e inferencia
inversa Nominatim (nombre/provincia pre-rellenados, alias cooficiales)
- FAB flotante abajo a la derecha que abre la pasarela en un modal accesible
(Escape, foco contenido, responsive); sin descripción ni puntuación;
avisos de duplicado y filtro de palabras dentro del modal
- Aviso PWA reposicionado: tarjeta abajo a la izquierda en móvil,
botón compacto arriba a la izquierda en PC (no tapa el FAB)
- Suite de pruebas: 88 unitarias/componente (vitest + RTL, offline) y
10 de integración (supertest + SQLite :memory: y Nominatim real opt-in)
- CI: workflow de Gitea Actions con npm test + build en push/PR e
integración manual