fix(squid): récupération auto d'un indexeur silencieusement hors-service
Problème
Le statut de connexion Squid n'était fixé qu'à la connexion initiale et ne changeait que sur un déclencheur de reconnexion explicite. Si l'endpoint indexeur actif mourait en cours d'usage, le statut restait « connecté » : la vue activité continuait d'interroger un endpoint mort et seul un redémarrage de l'app récupérait.
Correctif
- Moniteur de vitalité périodique dans
ConnectionOrchestrator: sonde l'endpoint actif (SquidClientManager.pingActiveClient, requête block-height légère) toutes les 30 s, et retente aussi un Squid déconnecté tant que l'appareil est en ligne. - Sur échec → reconnexion via
Durt.reconnectSquid: transitions de statut correctes + notification de changement d'endpoint (les clients se rafraîchissent automatiquement). - Garde anti-réentrance sur
reconnectSquid: failover réactif, moniteur et bascule manuelle se collapsent en une seule reconnexion. - Récupération-à-vide avec back-off exponentiel (plafonné 5 min) pour ne pas marteler l'auto-discovery quand aucun indexeur n'est joignable.
Tests
test/services/squid/squid_client_manager_test.dart;flutter analyzeclean ; suite connexion/squid verte.- Validé en conditions réelles sur Windows (mort d'endpoint simulée → détection → bascule → récupération sans redémarrage).
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com