Evita la "sessione scaduta" e i deploy che restano invisibili all'utente.
- api.js: refresh PROATTIVO dell'access token ~2 min prima della scadenza
(scheduleTokenRefresh su exp del JWT, riprogrammato ad ogni setTokens) +
ensureFreshToken() per rinnovo immediato al ritorno sulla scheda. Con refresh
a 7gg l'utente resta loggato senza mai vedere il login.
- common.js: watch versione (poll version.json ogni 5 min + su visibilitychange)
→ banner "È disponibile una nuova versione — Aggiorna" (reload) quando cambia;
nudge service worker (registration.update); su visibilitychange chiama anche
api.ensureFreshToken(). Nessun hard-refresh manuale.
- Cache-buster api/common ?v=20260729b. version 1.25.12. Solo frontend.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>