- Historique : le filtre par type de cible est désormais appliqué au
chargement ; correction du piège PopupMenuItem(value: null) qui
empêchait l'option « Tous » de réinitialiser le filtre ; icône
colorée quand un filtre est actif
- OpenCV : libération des Mat natifs (img, gray, blurred, circles)
dans un finally — detectTarget tourne toutes les secondes pendant
l'aperçu caméra et faisait grimper la mémoire native en continu
- Export IA : distance, arme et id de session réels transmis depuis
SessionProvider au lieu des placeholders (25 m / "Unknown")
- Tests : remplacement du test widget cassé (BullyApp sans providers)
par 14 tests qui passent — calcul de score concentrique (centre,
hors cible, ratio d'image, anneaux personnalisés), agrégation des
scores, analyse de groupement, et rendu du widget StatsCard
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Supprime 5 services inatteignables depuis l'UI (~3 000 lignes) :
distortion_correction, image_processing, target_detection,
opencv_impact_detection, target_rectify
- AnalysisProvider allégé (835 -> ~360 lignes) : retrait de la détection
par références, de la détection auto d'impacts, du workflow distorsion
et du doublon moveShot
- Retire les dépendances inutilisées google_mlkit_object_detection et
google_mlkit_document_scanner du pubspec
- Le bouton ↻ du Plotting efface désormais tous les impacts en un clic
(clearShots) sans relancer la détection auto ni toucher la calibration
- Nettoie les paramètres morts de TargetOverlay (referenceImpacts,
onAddShot), le flag _isSelectingReferences, _buildActionButtons vide
et le résidu _detectionTimer de capture_screen
- Supprime le dossier tests/ (brouillons d'expérimentation OpenCV)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>