chore(wip): lot #165-169 validé QA + rework foreground #163 (KO - preuve device/toolchain insuffisante)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-28 17:59:43 +02:00
parent 917777e18b
commit bc533d6c45
32 changed files with 898 additions and 123 deletions

View File

@ -1,8 +1,8 @@
---
issueRef: "#136"
version: 8
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1785244375293
version: 9
updatedBy: {"kind":"user"}
updatedAt: 1785252649210
---
## #136 — Cadrage UX (2026-07-28)

View File

@ -2,15 +2,15 @@
id: "cd125c5f-5e37-4100-8b61-58cbaab5eac1"
number: 136
title: "[Bug] \"passer le repos\" sur la montre ne fonctionne pas"
status: "qa"
status: "closed"
priority: "medium"
sprint: "abc4f969-b169-45f7-988c-daeeab762201"
links: []
agentRefs: []
createdBy: {"kind":"user"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"user"}
createdAt: 1785141207792
updatedAt: 1785244375293
version: 8
updatedAt: 1785252649210
version: 9
---
Le bouton "passer le repos" sur la montre ne fonctionne pas, il me renvoie sur l'écran de la séance sur la montre mais ne passe pas le repos sur le téléphone

View File

@ -1,6 +1,6 @@
---
issueRef: "#157"
version: 4
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1785248859176
version: 5
updatedBy: {"kind":"user"}
updatedAt: 1785252668623
---

View File

@ -2,15 +2,15 @@
id: "4ba5c5bc-c575-4afc-bb55-93feb7e7ad9c"
number: 157
title: "[DevFrontend] Distance live montre sur séance en cours"
status: "qa"
status: "open"
priority: "medium"
sprint: "d5c18b44-0eec-46db-b8ab-506cfee0bfea"
links: [{"target":"#142","kind":"blocks"},{"target":"#106","kind":"relatesTo"},{"target":"#145","kind":"dependsOn"}]
agentRefs: []
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"user"}
createdAt: 1785180656723
updatedAt: 1785248859176
version: 4
updatedAt: 1785252668623
version: 5
---
Ajouter la distance parcourue live remontée par la montre compatible, avec affichage léger côté téléphone pendant la séance et réutilisation côté montre dans le panneau secondaire. Dégradation silencieuse si donnée indisponible.

View File

@ -1,6 +1,6 @@
---
issueRef: "#160"
version: 4
version: 5
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1785248859257
updatedAt: 1785254327417
---

View File

@ -2,7 +2,7 @@
id: "b5b4fe80-952f-4376-9271-de98817add32"
number: 160
title: "[DevFrontend] Graphiques historiques statistiques montre"
status: "inProgress"
status: "qa"
priority: "medium"
sprint: "d5c18b44-0eec-46db-b8ab-506cfee0bfea"
links: [{"target":"#106","kind":"relatesTo"},{"target":"#145","kind":"dependsOn"}]
@ -10,7 +10,7 @@ agentRefs: []
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1785180656778
updatedAt: 1785248859257
version: 4
updatedAt: 1785254327417
version: 5
---
Implémenter les graphiques et écrans d'historique pour les statistiques montre conservées : fréquence cardiaque avec détail par étape/série/exercice, distance parcourue, calories consommées. S'appuie sur la persistance historique et reste silencieux si certaines séries de données sont absentes.

View File

@ -1,6 +1,6 @@
---
issueRef: "#163"
version: 5
version: 6
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1785248859271
updatedAt: 1785254327435
---

View File

@ -10,7 +10,7 @@ agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}
createdBy: {"kind":"user"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1785242433447
updatedAt: 1785248859271
version: 5
updatedAt: 1785254327435
version: 6
---
Quand l'écran de la montre est éteint, la fréquence cardiaque n'est aps actualisée (l'affichage est assombris sur le téléphone et la fréquance ne change pas). Pour les statistiques il fauit que la fréquence cardiaque continue d'être enregistrée

View File

@ -0,0 +1,6 @@
---
issueRef: "#165"
version: 5
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1785254327333
---

View File

@ -0,0 +1,16 @@
---
id: "35ff6501-b5fd-4dd3-8b88-dc20e3c6c07d"
number: 165
title: "[Bug] impossible de lancer un chrono depuis la montre"
status: "qa"
priority: "high"
sprint: "abc4f969-b169-45f7-988c-daeeab762201"
links: []
agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}]
createdBy: {"kind":"user"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1785250763662
updatedAt: 1785254327333
version: 5
---
J'ai encore des cas ou je ne peux pas lancer de chrono depuis al montre. Par exemple j'avais deux étapes qui s'enchainaient et qui avaient un chrono, quand j'ai fais passer l'étape depuis la montre, je ne pouvais pas lancer le chrono de l'étape suivante

View File

@ -0,0 +1,67 @@
---
issueRef: "#166"
version: 8
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1785254327361
---
## #166/#167/#169 — Cadrage UX coordonné : slot "donnée dominante sans chrono" (UX, 2026-07-28)
Statut : **cadrage exploitable, à traiter comme une seule mini-refonte**, pas trois patchs indépendants (voir point 4). Détail complet ici sur #166, #167 et #169 pointent vers ce carnet + leur delta propre.
Base : écran `Séance active` déjà révisé par #161 (fermé) — un chrono/donnée dominante + un bouton d'action unique sur la même ligne, un seul libellé, FC en icône en pied d'écran. Ce lot traite les **cas où il n'y a pas de chrono actif**, laissés de côté par #161.
### Constat commun
Quand il n'y a pas de chrono actif, l'écran retombe aujourd'hui sur des solutions par défaut peu utiles : le compteur `SÉRIE X/Y` se répète en donnée dominante alors qu'il est déjà affiché en en-tête (#167), aucune action rapide n'est proposée pour une étape à répétitions alors que c'est justement l'action la plus probable à cet instant (#166), et un sous-titre `Prêt pour la série suivante` occupe une ligne entière pour une information déjà déductible du reste de l'écran (#169).
### 1. Comportement attendu par ticket
**#166** : sur une étape à répétitions (sans chrono), un bouton de validation/passage à l'étape suivante est visible directement sur l'écran principal — pas besoin de swiper vers `Actions`. Ce bouton déclenche la même commande que `Étape suivante` (valide l'étape, avance), pas un `Passer l'étape` (qui reste une action de contournement, toujours dans `Actions`).
**#167** : sur une étape à répétitions (sans chrono), la donnée dominante centrale devient le nombre de répétitions à faire pour cette étape, et non plus le nombre de séries de l'exercice (déjà visible en en-tête `SÉRIE X/Y`, donc redondant).
**#169** : le sous-titre `Prêt pour la série suivante` est supprimé, sans remplacement — l'écran (nom d'exercice + bouton `Démarrer l'exercice`) reste compréhensible sans lui.
### 2. Disposition recommandée — écran principal, cas étape reps-only
Réutilise **exactement** le template ligne chrono+bouton posé par #161, appliqué à la donnée reps au lieu du chrono :
```text
SÉRIE 2 / 5
Pompes tempo
Passage 1 / 3 · Étape 2 / 4
Répétitions
10 [✓]
♥ 132
```
- Légende `Répétitions` une seule fois, au-dessus de la valeur — même règle que le libellé de chrono (#161).
- Bouton icône `[✓]` (valider/étape suivante) à droite de la valeur, même ligne, même cible tactile ≥48dp que le bouton pause/play (#128/#161) — pas un nouveau composant, le même gabarit rejoue avec une icône différente.
- Un seul bouton d'action visible à la fois sur cette ligne : jamais `[✓]` et `[⏸]` en même temps. Si l'étape a aussi un chrono (score chrono d'étape, cas #140), ce cas reste géré par le layout dédié `_ManualScoreContent` existant, non touché par ce lot.
- Cœur FC inchangé, en pied d'écran (#161).
### 3. Disposition recommandée — écran `Prêt pour la série suivante`
```text
SÉRIE 3 / 5
Pompes tempo
[Démarrer l'exercice]
```
Le sous-titre disparaît, l'espace libéré n'est **pas** réutilisé pour un nouvel élément (contrainte explicite : ne pas ajouter de bruit) — juste un espacement plus respirant entre le nom d'exercice et le bouton.
### 4. Garde-fous de lisibilité / priorité visuelle
- Un seul élément "action" par écran, toujours à droite de la donnée dominante quand il y en a une (chrono → `[⏸]`, reps → `[✓]`) — jamais empilé en dessous, jamais dupliqué ailleurs. C'est la même règle que #161, appliquée maintenant au cas reps.
- Ne jamais afficher deux fois la même information sous deux formes (le principe qui motive #167) : si une donnée est déjà visible ailleurs sur l'écran (ex. `SÉRIE X/Y` en en-tête), elle n'a pas sa place une seconde fois dans le slot dominant.
- Suppression de texte (#169) : ne jamais compenser par un ajout ailleurs sauf besoin explicite ; le vide contrôlé est préférable au bruit, conformément à la contrainte utilisateur de ce lot.
- Icône `[✓]` distincte visuellement de `[⏸]`/`[▶]` pour éviter toute ambiguïté entre "valider l'étape" et "mettre en pause la séance" — même style (or sur fond `#141824`, anneau crimson au tap, cf. #128) mais pictogramme différent.
### 5. Coordination des 3 tickets
**Oui, à traiter comme une seule mini-refonte cohérente**, pas trois patchs séparés :
- #166 et #167 modifient la **même zone d'écran** (slot donnée dominante + bouton d'action pour une étape reps-only) — les livrer séparément risquerait qu'un commit écrase la mise en page de l'autre, ou que le bouton `[✓]` soit ajouté sans que la redondance `SÉRIE X/Y` soit corrigée en même temps (ou l'inverse).
- #169 touche un état adjacent du même écran (`Séance active` sans chrono actif) et applique le même principe (pas de texte qui ne porte pas d'action ni de donnée nécessaire) — le traiter isolément ferait revivre exactement la dérive de densité déjà diagnostiquée et corrigée par #161 (accumulation de correctifs isolés qui perdent la cohérence d'ensemble).
- Recommandation : un seul lot Architect/DevFrontend pour les trois, avec cette section comme spec unique de référence.

View File

@ -0,0 +1,16 @@
---
id: "71f99d03-7ac8-435f-92ef-087e61c0f873"
number: 166
title: "[UI] mettre un bouton sur l'écran principal de la montre pour passer à l'étape suivante dans le cas de répétitions dans une étape"
status: "qa"
priority: "medium"
sprint: "d5c18b44-0eec-46db-b8ab-506cfee0bfea"
links: []
agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}]
createdBy: {"kind":"user"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1785250931982
updatedAt: 1785254327361
version: 8
---
Quand on a une étape qui ne demande qu'un nombre de répétitions, il faudrait que le bouton pour calider l'étape directement sur l'écran principal de la montre.

View File

@ -0,0 +1,10 @@
---
issueRef: "#167"
version: 7
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1785254327381
---
## #167 — Cadrage UX (2026-07-28)
Spec complète et coordination avec #166/#169 : voir carnet #166 (« Cadrage UX coordonné : slot "donnée dominante sans chrono" »). Ce ticket = le remplacement de la donnée dominante (série → répétitions de l'étape) dans le template partagé décrit là-bas. Ne pas traiter séparément de #166 : même zone d'écran, même livraison.

View File

@ -0,0 +1,16 @@
---
id: "a321767d-8f07-45fc-aff6-935540009aa5"
number: 167
title: "[UI] Afficher le nombre de répétition à faire pour une étape sur la montre"
status: "qa"
priority: "medium"
sprint: "d5c18b44-0eec-46db-b8ab-506cfee0bfea"
links: []
agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}]
createdBy: {"kind":"user"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1785251047775
updatedAt: 1785254327381
version: 7
---
Il est important que l'utilisateur sache ce qu'il a a faire directement depuis sa montre. Dans le cas d'une étape qui demande un nombre de répétitions, il faut que l'utilisateur ai le nombre de répétition à faire sur la montre. Actuellement, si l'étape n'a que des répétition, on affiche le nombre de série de l'exercice, je préfèrerais avoir le nombre de répétition à faire plutot à la place

View File

@ -0,0 +1,10 @@
---
issueRef: "#169"
version: 6
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1785254327400
---
## #169 — Cadrage UX (2026-07-28)
Spec complète et coordination avec #166/#167 : voir carnet #166 (« Cadrage UX coordonné : slot "donnée dominante sans chrono" »), section 3. Suppression du sous-titre `Prêt pour la série suivante`, sans remplacement — l'espace libéré n'est pas réutilisé (contrainte explicite : pas d'ajout de bruit visuel). Peut être livré avec #166/#167 dans le même lot pour cohérence, mais son changement est indépendant techniquement (écran différent : `Prêt pour la série suivante`, pas l'écran étape reps-only).

View File

@ -0,0 +1,16 @@
---
id: "7e5b1ba4-5f5c-46d1-b05a-6d6f5af73f23"
number: 169
title: "[UI] Enlever \"Prêt pour la série suivante\" sur la montre"
status: "qa"
priority: "medium"
sprint: "d5c18b44-0eec-46db-b8ab-506cfee0bfea"
links: []
agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}]
createdBy: {"kind":"user"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1785251491623
updatedAt: 1785254327400
version: 6
---
Je pense que le titre "Prêt pour la série suivante" est a enlever de la montre, il prend de la place pour pas grand chose

View File

@ -1,3 +1,3 @@
{
"nextNumber": 165
"nextNumber": 170
}

View File

@ -1461,11 +1461,11 @@
"issueRef": "#136",
"path": "136",
"title": "[Bug] \"passer le repos\" sur la montre ne fonctionne pas",
"status": "qa",
"status": "closed",
"priority": "medium",
"sprint": "abc4f969-b169-45f7-988c-daeeab762201",
"assignedAgentIds": [],
"updatedAt": 1785244375293
"updatedAt": 1785252649210
},
{
"issueRef": "#137",
@ -1693,11 +1693,11 @@
"issueRef": "#157",
"path": "157",
"title": "[DevFrontend] Distance live montre sur séance en cours",
"status": "qa",
"status": "open",
"priority": "medium",
"sprint": "d5c18b44-0eec-46db-b8ab-506cfee0bfea",
"assignedAgentIds": [],
"updatedAt": 1785248859176
"updatedAt": 1785252668623
},
{
"issueRef": "#158",
@ -1723,11 +1723,11 @@
"issueRef": "#160",
"path": "160",
"title": "[DevFrontend] Graphiques historiques statistiques montre",
"status": "inProgress",
"status": "qa",
"priority": "medium",
"sprint": "d5c18b44-0eec-46db-b8ab-506cfee0bfea",
"assignedAgentIds": [],
"updatedAt": 1785248859257
"updatedAt": 1785254327417
},
{
"issueRef": "#161",
@ -1763,7 +1763,7 @@
"assignedAgentIds": [
"57695b92-24d0-4876-837c-76116e70a6ae"
],
"updatedAt": 1785248859271
"updatedAt": 1785254327435
},
{
"issueRef": "#164",
@ -1774,6 +1774,54 @@
"sprint": "abc4f969-b169-45f7-988c-daeeab762201",
"assignedAgentIds": [],
"updatedAt": 1785244375351
},
{
"issueRef": "#165",
"path": "165",
"title": "[Bug] impossible de lancer un chrono depuis la montre",
"status": "qa",
"priority": "high",
"sprint": "abc4f969-b169-45f7-988c-daeeab762201",
"assignedAgentIds": [
"57695b92-24d0-4876-837c-76116e70a6ae"
],
"updatedAt": 1785254327333
},
{
"issueRef": "#166",
"path": "166",
"title": "[UI] mettre un bouton sur l'écran principal de la montre pour passer à l'étape suivante dans le cas de répétitions dans une étape",
"status": "qa",
"priority": "medium",
"sprint": "d5c18b44-0eec-46db-b8ab-506cfee0bfea",
"assignedAgentIds": [
"57695b92-24d0-4876-837c-76116e70a6ae"
],
"updatedAt": 1785254327361
},
{
"issueRef": "#167",
"path": "167",
"title": "[UI] Afficher le nombre de répétition à faire pour une étape sur la montre",
"status": "qa",
"priority": "medium",
"sprint": "d5c18b44-0eec-46db-b8ab-506cfee0bfea",
"assignedAgentIds": [
"57695b92-24d0-4876-837c-76116e70a6ae"
],
"updatedAt": 1785254327381
},
{
"issueRef": "#169",
"path": "169",
"title": "[UI] Enlever \"Prêt pour la série suivante\" sur la montre",
"status": "qa",
"priority": "medium",
"sprint": "d5c18b44-0eec-46db-b8ab-506cfee0bfea",
"assignedAgentIds": [
"57695b92-24d0-4876-837c-76116e70a6ae"
],
"updatedAt": 1785254327400
}
]
}