El sw.js experimental (mayo) tenía tres problemas graves:
1. Estrategia cache-first para TODO: una vez cacheada una página o asset, el
navegador servía la versión vieja indefinidamente, incluso tras deploys
("los cambios no se ven"). También cacheaba HTML con tokens CSRF caducados.
2. cache.put() sobre peticiones POST (no soportado, TypeError) → interceptaba
y podía romper peticiones Livewire de forma intermitente.
3. Su precache incluía /css/app.css y /js/app.js, inexistentes con Vite →
"Failed to execute 'addAll' on 'Cache': Request failed" en cada instalación.
Se sustituye por un SW de auto-limpieza (kill switch): al actualizarse en el
navegador borra todos los caches, se desregistra y recarga las pestañas.
Los layouts siguen registrándolo para que los clientes con la PWA vieja se
limpien solos; más adelante podrá retirarse el registro por completo.
Suite 94 passing.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Campo "Idioma por defecto" al crear/editar usuario (columna locale ya existente),
como desplegable Alpine con banderas SVG reales (no emoji, que en Windows se ven
como "ES"/"GB") servidas localmente: public/images/flags/{es,gb}.svg.
- User: locale añadido a fillable. UserForm: propiedad/validación/guardado de locale.
- LanguageSwitcher de la cabecera usa las mismas banderas SVG.
- Regla CSS [x-cloak] en el layout para evitar parpadeo de desplegables Alpine.
Tests: UserLocaleTest (2) — crear/editar persisten el idioma.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>