fix(pwa): BUG-005 chargement mobile via Cloudflare (SW network-first + no-cache)
CI / lint (push) Successful in 58s
CI / security (push) Successful in 40s
CI / test (push) Successful in 1m19s
CI / build (push) Successful in 37s
CI / e2e (push) Successful in 10m53s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s

This commit is contained in:
2026-09-11 17:13:16 -04:00
parent 4c4e415975
commit 7cf7d33b6d
10 changed files with 382 additions and 153 deletions
+13
View File
@@ -61,6 +61,19 @@ et [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
### Corrigé
- **BUG-005 — Chargement mobile incomplet derrière Cloudflare (`og.dracodev.net`)** —
le service worker utilisait une stratégie **cache-first avec un nom de cache fixe**
(`obsigate-v1`) et un précache de chemins erronés (`/frontend/js/…`) : le Cache Storage
du SW (distinct du cache navigateur/Cloudflare) servait un ancien build indéfiniment,
même après purge. Le middleware renvoyait en plus `Cache-Control: public, max-age=31536000,
immutable` sur des assets **non fingerprintés**. Correctifs : `frontend/sw.js` réécrit
(**network-first** pour HTML/JS/CSS, caches versionnés `SW_VERSION`, précache corrigé
`/static/js/…`, `skipWaiting`/`clients.claim`) ; migration ponctuelle `localStorage`
(suppression des anciens caches) en remplacement du kill-switch de session ; en-têtes
`no-cache` sur `/static`, `index.html`, `manifest.json` et pages HTML ; rechargement unique
sur `controllerchange`. Tests : `tests/frontend/sw.test.mjs` + `TestStaticCaching`.
Guide Cloudflare : [docs/PWA_GUIDE.md](./docs/PWA_GUIDE.md).
- **Typage backend (mypy) — 33 erreurs corrigées** (`backend/main.py`, `indexer.py`,
`auth/router.py`, `pdf_reader.py`, `export.py`, `bookslm_routes.py`) : annotations de types,
gardes `None` sur `get_user()`, `PdfReader: Any` et import `PROVIDERS` manquant dans `main.py`