The end-of-session dialog no longer carries a second "finish" button.
"TERMINER TOUT" is now the only way out, and what it does with the target
depends on the AI training setting:
- setting on: the target is always sent, with a discreet reminder saying so;
- setting off: a "CONTRIBUER À L'IA" switch (off by default, never
remembered) decides whether the target is sent or kept on the device;
- banned account or failed analysis: neither switch nor upload.
Turning the switch on for the first time shows the full program disclaimer
(what is sent, pseudonymity, banning rules); refusing leaves it off. That
text moved to a shared showAiConsentDialog() so the settings switch and the
session switch cannot drift apart, and a new is_ai_terms_accepted flag
remembers the acceptance without silently enabling the global setting.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Ajoute un didacticiel joué à la première utilisation : un voile sombre perce un
trou de lumière autour de l'élément à découvrir, une main animée mime le geste
attendu (tap, appui long, glisser, pincement à deux doigts pour zoomer) et une
bulle explique l'étape avec sa progression.
- visite d'accueil : nouvelle session, télémétrie, barre de navigation, réglages
- visite de l'éditeur d'impacts : ajouter, déplacer, zoomer au pincement, valider
- chaque visite n'est jouée qu'une fois (SharedPreferences)
- Paramètres > Aide & didacticiel > Revoir le didacticiel : réinitialise tout et
relance la visite au retour sur l'écran concerné
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Backend IA :
- Intégration d'OpenCV (WebAssembly) pour la détection et certification des cibles (anneaux concentriques, confiance).
- Ajout du système de journalisation complet des uploads (SQLite, IP, appareil, statut, métadonnées).
- Implémentation du système de modération (bannissement/débannissement de wallets, rejet 403 avec motifs).
- Harmonisation des codes d'erreur et messages JSON (UPLOAD_SUCCESS, WALLET_BANNED, etc.).
- Dashboard Next.js : page dédiée aux logs avec filtres, export CSV et actions de modération en un clic.
- Application Mobile (Flutter) :
- Encapsulation des réponses d'export dans AiExportResult avec gestion fine des erreurs et statuts.
- Mise à jour du disclaimer de participation à l'entraînement IA avec avertissements stricts de bannissement.
- Révocation de l'envoi de photos et affichage d'un bandeau explicatif en cas de suspension.
- Ajout d'un bouton manuel « Actualiser mon statut » dans les paramètres pour synchroniser l'état du compte.
- Possibilité de configurer l'URL/IP du serveur IA directement depuis les paramètres.
Retire imports, champs et variables locales non utilises (14 warnings) :
- imports inutilises (app, database_helper, impact_editor, target_calibration, session_provider)
- champs write-only de capture_screen (_cropService, _scanAnimation, _isCameraInitialized, _alignmentStatus) et _movingShotId
- bloc de calcul mort dans crop_screen et variables locales (themeProvider, ny)
_filterType (history_screen) volontairement conserve : c'est une fonctionnalite de filtre inachevee, pas du code mort.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>