Fonctionnalité — Mise à jour automatique
L'application vérifie d'elle-même qu'une nouvelle version a été déployée, l'installe et redémarre — sans rien demander à l'utilisateur.
Description
Le service worker (registerType: 'autoUpdate') installe seul toute nouvelle version dès qu'elle est détectée. La logique de décision (quand vérifier, quand recharger) vit dans src/lib/app-update.ts, testée sans navigateur ; src/pwa.ts la branche sur les vraies API du navigateur.
Objectif
Que l'utilisateur ait toujours la dernière version sans jamais avoir à agir, tout en évitant qu'un déploiement cassé fasse clignoter l'application.
Comment ça se déclenche
| Quand | Quoi |
|---|---|
| Toutes les 30 min, au retour au premier plan, au retour du réseau | Vérification automatique auprès du serveur |
| Bouton « Rechercher une mise à jour » (Import / Export) | Même vérification, à la demande — et le garde-fou anti-boucle est levé pour l'occasion |
| Une nouvelle version est trouvée | Le service worker l'installe et prend la main tout seul |
| La nouvelle version s'active | Onglet actif → bandeau « Nouvelle version installée » pendant 4 s, puis rechargement. Onglet en arrière-plan → rechargement immédiat |
Paramètres associés
Aucun réglage utilisateur — voir Paramètres. Le comportement est fixe.
Données utilisées
localStorage : fromages-maj-verifiee-le (dernière vérification aboutie, affichée à l'utilisateur). La date du dernier rechargement de mise à jour vit en sessionStorage pour le garde-fou anti-boucle et ne survit pas à la fermeture de l'onglet.
Résultat — la carte « Version de l'application »
Import / Export ouvre sur une carte affichant : la version (dérivée de la date du build, croissante, comparable, suivie du commit git court), la date du build, l'ancienneté de la dernière vérification, et un bouton pour en chercher une tout de suite.
Hors connexion
La vérification a besoin du réseau ; elle échoue silencieusement (état offline) sans casser l'application.
Limites
Deux rechargements à moins de 10 minutes d'intervalle sont ignorés (garde-fou anti-boucle), sauf demande explicite via le bouton.
Erreurs possibles
Voir les états unsupported, error, offline dans Codes et erreurs.