Files
GameTime/.ideai/memory/gametime-ux-step-chaining-override.md
Blomios d771bf672f docs(ideai): mémoire chaînage de chronos, clôture ticket #75, cadrage #76-#79
Ajoute les notes mémoire d'architecture et UX pour l'auto-enchaînement
des chronos d'étapes, clôture le ticket #75, reflète les tickets
#63/#70, ajoute le cadrage des tickets #76 à #79.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 13:42:54 +02:00

8.3 KiB

name, description, metadata
name description metadata
gametime-ux-step-chaining-override memory note gametime-ux-step-chaining-override
type
project

GameTime — Enchaînement configurable des chronos d'étapes (ticket #73, UX 2026-07-20)

Conception UX pour rendre configurable le comportement d'enchaînement automatique entre deux étapes chronométrées consécutives dans un exercice à séquence.

Mémoire de référence : gametime-ux-exercise-steps.

Décision structurante

Le comportement historiquement fixe devient un réglage hiérarchique :

séance-modèle > programme > exercice

La valeur effective pendant l'exécution est la valeur la plus spécifique renseignée :

  • override séance si présent ;
  • sinon override/config programme si présent ;
  • sinon valeur par défaut de l'exercice.

Valeur par défaut recommandée pour les exercices existants et nouveaux : activé, afin de préserver le comportement livré aux tickets #54/#60.

Libellé commun :

Enchaîner automatiquement les chronos consécutifs

Aide commune :

Quand une étape Temps est suivie d'une autre étape Temps, le chrono suivant démarre dès que le précédent arrive à 0.

Si désactivé, aide complémentaire :

L'app attendra ton démarrage avant de lancer le chrono suivant.

1. Niveau Exercice

Surface : ExerciseFormScreen, section Séquence d'étapes.

Afficher le réglage uniquement si Rythmer cet exercice avec des étapes est activé.

Placement recommandé : juste sous le switch Rythmer cet exercice avec des étapes, avant la liste des étapes.

UI :

Séquence d'étapes
[ON] Rythmer cet exercice avec des étapes

[ON] Enchaîner automatiquement les chronos consécutifs
     Quand une étape Temps est suivie d'une autre étape Temps, le chrono suivant démarre dès que le précédent arrive à 0.

Si désactivé :

[OFF] Enchaîner automatiquement les chronos consécutifs
      L'app attendra ton démarrage avant de lancer le chrono suivant.

Ne pas masquer le réglage s'il n'y a pas encore deux étapes Temps consécutives : l'utilisateur peut encore ajouter/réordonner des étapes. Le réglage est simplement sans effet tant qu'aucun enchaînement Temps -> Temps n'existe.

2. Niveau Programme

Surface : écran Personnaliser l'exercice dans un programme (ProgramExerciseCustomizationScreen).

Afficher une nouvelle section Séquence seulement si l'exercice possède des étapes.

Placement recommandé : après Objectifs, avant Repos, car le réglage concerne le déroulé interne de l'exercice, pas les mesures de série.

UI recommandée : switch + indication d'héritage.

État sans override programme :

Séquence
[ON] Enchaîner automatiquement les chronos consécutifs
     Réglage de l'exercice

Si l'utilisateur change le switch, cela crée une personnalisation programme :

Séquence
[OFF] Enchaîner automatiquement les chronos consécutifs
      Personnalisé pour ce programme

[Revenir au réglage de l'exercice]

Règle UX : il doit toujours être possible de supprimer l'override programme via Revenir au réglage de l'exercice. Sans ce retour, un simple switch force une valeur locale permanente et ne respecte pas le modèle hiérarchique.

Résumé compact de l'exercice dans le programme : ne pas ajouter ce détail dans la ligne compacte par défaut. Le réglage reste dans Personnaliser pour éviter de surcharger la liste.

3. Niveau Séance-modèle

Surface : détail d'un programme intégré dans une séance-modèle (WorkoutTemplateProgramDetailScreen), là où l'utilisateur surcharge déjà le nombre de séries et les cibles numériques.

Afficher la section Séquence dans chaque carte exercice seulement si l'exercice possède des étapes.

Placement recommandé : après les champs numériques de l'exercice, dans la même carte.

UI :

État sans override séance :

Séquence
[ON] Enchaîner automatiquement les chronos consécutifs
     Réglage du programme

État avec override séance :

Séquence
[OFF] Enchaîner automatiquement les chronos consécutifs
      Personnalisé pour cette séance

[Revenir au réglage du programme]

Règle UX : la séance doit pouvoir revenir au réglage du programme. C'est nécessaire pour conserver une vraie résolution séance > programme > exercice.

Point d'attention Architect : WorkoutTemplateExerciseOverride ne porte aujourd'hui que des overrides numériques. Il faudra un override booléen nullable, par exemple autoStartNextTimedStepOverride, pour représenter non renseigné / activé / désactivé.

4. Exécution quand le réglage est activé

Comportement inchangé :

  • une étape Temps arrive à 0 ;
  • bip long ;
  • si l'étape suivante est aussi Temps, son chrono démarre immédiatement ;
  • pas de pause ni bouton intermédiaire.

C'est aussi le comportement à conserver pour les exercices existants après migration.

5. Exécution quand le réglage est désactivé

Cas ciblé : étape Temps suivie directement d'une autre étape Temps.

Quand le premier chrono arrive à 0 :

  • bips des 3 dernières secondes inchangés ;
  • bip long à 0 inchangé ;
  • l'app passe à l'étape suivante ;
  • le chrono suivant ne démarre pas ;
  • l'écran attend une action explicite.

État visuel attendu dans le module SÉQUENCE :

ÉTAPE 2 / 4
Dribble main gauche
Objectif : 10 s

00:10
Chrono suivant prêt

[Démarrer le chrono]
[Passer l'étape]

Différence de libellé :

  • première étape chronométrée de la séquence : bouton Démarrer la séquence ;
  • étape chronométrée mise en attente après une autre étape Temps : bouton Démarrer le chrono.

Style Court Blazer :

  • timer 00:10 en Anton, primaire or ;
  • label Chrono suivant prêt en Archivo, texte secondaire ;
  • optionnel : petit badge contour primaire PRÊT ;
  • panneau avec surface habituelle + liseré crimson 2 px ;
  • pas de rouge/alerte : c'est un état attendu, pas une erreur.

Si plusieurs étapes Temps se suivent et que le réglage est désactivé, l'app attend avant chaque nouveau chrono.

Si la dernière étape d'un passage est Temps et que le passage suivant commence aussi par Temps : appliquer la même règle. L'écran peut afficher :

Passage 2 / 10
ÉTAPE 1 / 4
Dribble main droite

Chrono suivant prêt
[Démarrer le chrono]

6. Interaction avec étapes à répétitions

Aucun changement.

  • Temps -> Répétitions : le chrono finit, l'app affiche l'étape à répétitions et attend Étape suivante comme aujourd'hui.
  • Répétitions -> Temps : après Étape suivante, si l'étape suivante est Temps, le chrono peut démarrer immédiatement selon le comportement déjà existant pour démarrer une étape Temps après action utilisateur. Le nouveau réglage cible uniquement le cas Temps -> Temps automatique.

7. Pause, reprise, app fermée

Si le réglage est désactivé et que l'app est dans l'état Chrono suivant prêt :

  • pause/reprise conserve cet état prêt ;
  • aucun temps ne s'écoule pour l'étape suivante ;
  • après kill/reprise, revenir au même état avec le bouton Démarrer le chrono.

Si l'app est en arrière-plan pendant un chrono et que celui-ci atteint 0 :

  • si l'enchaînement est activé, l'app peut recalculer et avancer dans les chronos consécutifs comme prévu ;
  • si l'enchaînement est désactivé, l'app s'arrête au premier état Chrono suivant prêt et n'avance pas plus loin sans action utilisateur.

8. Libellés définitifs

Réglage :

Enchaîner automatiquement les chronos consécutifs

Aide activée :

Le chrono suivant démarre dès que le précédent arrive à 0.

Aide désactivée :

L'app attendra ton démarrage avant de lancer le chrono suivant.

État d'exécution :

Chrono suivant prêt

Bouton :

Démarrer le chrono

Retour héritage programme :

Revenir au réglage de l'exercice

Retour héritage séance :

Revenir au réglage du programme

9. Découpage conseillé

  1. Domain · réglage auto-start chronos d'étapes : valeur exercice + overrides programme/séance nullable.
  2. ExerciseForm · switch valeur par défaut.
  3. ProgramExerciseCustomization · override avec retour au réglage exercice.
  4. WorkoutTemplateProgramDetail · override avec retour au réglage programme.
  5. WorkoutExecution · état Chrono suivant prêt + résolution effective.