🛑 L'ÉVÉNEMENT MANQUAIT, ET CE N'ÉTAIT PAS UN ÉCOUTEUR MORT MAIS UN BUG. Mesuré à la
clôture de S3c : geoleaf:cache:cancelled avait deux écouteurs et zéro émetteur.
Le pré-vol E3.5 avait relevé le même chiffre et en avait tiré « l'interface l'écoute
pour rien » — vrai sur la mesure, faux sur le geste.
Ce que fait l'écouteur (handleCancelled, offline-ui) : il remet la barre de
progression à zéro, réactive le bouton et rend la main. Sans émetteur, un utilisateur
qui annule voit « ⏹️ Stopping… » indéfiniment, bouton désactivé, sans aucun moyen
de relancer autre chose qu'un rechargement de page. L'écouteur avait raison ; c'est
l'émetteur qui manquait.
⚠️ Émis ici et non dans Downloader : c'est l'orchestrateur qui possède le cycle de
vie d'un téléchargement de profil, et Downloader.cancelDownload() est aussi appelé
par des chemins internes. Un émetteur par intention, pas par mécanisme.
Enforces the configured maxCacheBytes budget over the IndexedDB layer/tile
cache by evicting least-recently-cached records. No-op when the budget is
disabled (0/missing) or IndexedDB is unavailable. Emits
geoleaf:cache:evicted (detail = eviction summary) when records are removed.
Failures are swallowed — eviction must never break a successful download.
Interrompt le téléchargement en cours, et le DIT.
🛑 L'ÉVÉNEMENT MANQUAIT, ET CE N'ÉTAIT PAS UN ÉCOUTEUR MORT MAIS UN BUG. Mesuré à la clôture de S3c :
geoleaf:cache:cancelledavait deux écouteurs et zéro émetteur. Le pré-vol E3.5 avait relevé le même chiffre et en avait tiré « l'interface l'écoute pour rien » — vrai sur la mesure, faux sur le geste.Ce que fait l'écouteur (
handleCancelled,offline-ui) : il remet la barre de progression à zéro, réactive le bouton et rend la main. Sans émetteur, un utilisateur qui annule voit « ⏹️ Stopping… » indéfiniment, bouton désactivé, sans aucun moyen de relancer autre chose qu'un rechargement de page. L'écouteur avait raison ; c'est l'émetteur qui manquait.⚠️ Émis ici et non dans
Downloader: c'est l'orchestrateur qui possède le cycle de vie d'un téléchargement de profil, etDownloader.cancelDownload()est aussi appelé par des chemins internes. Un émetteur par intention, pas par mécanisme.