--- name: gametime-session-execution-timer-refactor description: memory note gametime-session-execution-timer-refactor metadata: type: project --- # GameTime — Refonte exécution séance et logique chronos Décision UX/architecture issue de la demande utilisateur du 2026-07-20. ## Principe d'affichage L'écran d'exécution de séance doit organiser les informations autour d'une carte `Exercice actif`, placée sous le compteur `SÉRIE X / Y`. Cette carte regroupe : - nom de l'exercice ; - accès médias ; - `Temps de série` si la mesure temps est active ; - action primaire `Démarrer l'exercice` quand un chrono doit démarrer au début de la série. Le temps de série ne doit plus être une information isolée en bas de l'écran. ## Principe de démarrage `Démarrer l'exercice` est le point de départ global. Il lance tous les chronos qui commencent logiquement au début de la série : - timer de série si `timeEnabled` ; - chrono de la première étape si cette première étape est de type temps ; - chrono score de série si `scoreInputMode == stopwatch`. L'objectif est de minimiser les actions pendant l'effort, notamment quand l'utilisateur n'a pas le téléphone près de lui. ## États et invariants - Le timer de série est un état persistant dédié, pas un simple `DateTime` UI volatile. - Pause séance suspend tous les chronos running : série, score chrono, étape, score chrono étape si présent, repos. - Reprise restaure l'état exact ; un état `Chrono suivant prêt` reste prêt et ne démarre pas automatiquement. - `Terminer la série` arrête/enregistre les chronos actifs. - `Passer la série` ignore les chronos et confirme si un chrono ou une séquence est en cours. - Le repos démarre seulement après terminer/passer la série et doit être pause-aware (`pausedAt` + `accumulatedPausedMs`). ## Implémentation locale Une implémentation a été réalisée sans commit : domaine/application/persistance, écran Flutter et tests ciblés. QA a validé les vérifications exécutables dans le sandbox (`git diff --check`, `dart analyze` exit 0). Les commandes `flutter analyze` et `flutter test` restent à relancer dans un environnement où le SDK Flutter peut écrire dans son cache.