Commit Graph

284 Commits

Author SHA1 Message Date
d1edb2397e chore(ideai): consolide l'ignore de .ideai dans .gitignore
Remplace la liste partielle de sous-chemins ignorés par un ignore complet
du répertoire .ideai (déjà retiré du suivi git dans le commit précédent).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-01 00:04:53 +02:00
d9d0937784 chore(ideai): retire .ideai du suivi git
L'état IdeA (agents, tickets, mémoire, conversations, run) est local par
agent/branche et ne doit pas être synchronisé via git ni fusionné entre
branches.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-01 00:03:21 +02:00
9291f96730 chore(ideai): synchronise etat tickets et agents
Cloture le ticket #183 (QA), ajoute les tickets #186 et #187,
re-attribue les permissions MCP entre agents.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 16:58:07 +02:00
e7ff1c2a19 fix(watch): corrige l'URL serveur et ajoute les tests associes (#186)
Aligne http_api_client.dart avec la config watch (build.gradle.kts,
WatchHeartRateCollector) et couvre le comportement par des tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 16:58:07 +02:00
89558808af test(server): ajoute tests fonctionnels sync et fixtures versionnees (#187)
Fixe .gitignore pour exclure .build-home/ et .pub-cache-local/ des
environnements locaux de build (bruit non versionne). Documente le
checklist d'integration serveur et met a jour le README en consequence.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 16:58:07 +02:00
05d91e3e84 merge: integre fix/distance-calories-nouvelle-seance dans develop
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 19:07:41 +02:00
078b742725 fix(watch): corrige la remontee distance/calories sur seance neuve dans WatchHeartRateCollector
QA vert cible. Complete le correctif precedent fix/distance-calories-health-services, insuffisant sur le cas seance neuve.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 19:07:41 +02:00
7e1458e36e merge: integre fix/distance-calories-health-services dans develop
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 18:29:20 +02:00
7ce40ebf36 fix(watch): retablit la remontee distance/calories Health Services
Corrige l'absence de distance/calories alors que la FC fonctionnait. Perimetre QA vert cible, sans changement UI.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 18:29:19 +02:00
3db37fff33 chore(ideai): met a jour carnet et issue du ticket #185
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 18:02:38 +02:00
933fc1121d fix(core): complete la nullification defensive de sourceExerciseId pour #185
Delta final apres QA vert : renforce la robustesse du pull des programmes quand l'exercice source reference par sourceExerciseId est absent.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 18:02:38 +02:00
dd882f07ae chore(ideai): met a jour carnets et issues des tickets #183 #185
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 17:12:03 +02:00
326bd1893c fix(core): fusionne la strategie Health Services au niveau seance et nullifie sourceExerciseId au pull si absent
Complement #183 : fusion de la strategie Health Services au niveau seance pour eviter que le premier exercice fige tout le choix de strategie sur la seance.
Fix #185 : nullification defensive de sourceExerciseId au pull quand l'exercice source est absent, pour ne plus casser le chargement des programmes apres suppression d'un exercice.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 17:12:03 +02:00
c43b93ef99 chore(ideai): met a jour carnets et issues des tickets #164 #174 #179 #180 #182 #183 #184
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 16:17:31 +02:00
2ae716206a feat(core): consolide le chainage type metier d'exercice -> strategie Health Services -> payload montre -> consommation Kotlin
Finalise #183 : modele/persistance des types metier d'exercice, mapping vers la strategie Health Services, propagation du payload dans le contrat watch bridge et consommation cote Kotlin montre. Perimetre complet QA vert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 16:17:31 +02:00
30e657a67f chore(ideai): met a jour carnets et issues des tickets #179 #180 #182 #183
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 14:55:52 +02:00
b4503d6b5f feat(watch): renforce la vibration de fin de chrono et consolide la remontee des donnees stats montre
Cote montre pour #180 (vibration timerFinished plus longue et plus forte) et #179 (contrat/collecte des donnees stats vers le telephone).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 14:55:52 +02:00
36691643d7 feat(ui): integre affichage stats par scope et selection des types metier d'exercice cote telephone
UI telephone pour #179 (graphes/statistiques par etape, serie, exercice, seance) et #183 (choix des types metier d'exercice, hors pont Health Services).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 14:55:52 +02:00
fdaa518fa9 feat(core): consolide modele donnees stats par scope, types metier d'exercice et correctif contrainte active_exercise_step_progress_states
Couche domaine/application/infra locale partagee par #179 (stockage stats par etape/serie/exercice/seance), #182 (correctif contrainte UNIQUE active_exercise_step_progress_states) et #183 (modele/persistance types metier d'exercice).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 14:55:52 +02:00
7b5801f959 chore(ideai): synchronise etat tickets/agents/skills pour vague #179 #180 #182 #183 #184
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 13:46:50 +02:00
7130635177 fix(watch): stabilise stats live, foreground et resync apres perte de connexion (#179-#189)
Reduit le cout radio des samples live et la cadence des projections telephone -> montre (#179-#183).
Restaure les statistiques live FC/distance/calories et le maintien foreground/ongoing activity (#184-#185).
Fiabilise le demarrage de seance et l'orchestration des permissions montre (#187).
Renforce la resynchronisation des statistiques live et du score apres perte puis retour de connexion (#188-#189).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 11:32:30 +02:00
639231e3fd merge(develop): integre correctifs integrite session valides QA (#190 #191 #192)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 09:43:48 +02:00
e6b6903eb3 fix(local): corrige contrainte CHECK change_log en fin de serie et contrainte UNIQUE active_exercise_step_progress_states (#190 #191)
Correctifs regroupes: memes hunks de drift_repositories.dart concernes par les deux tickets, decoupage atomique par ticket non applicable proprement.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 09:43:48 +02:00
97ad7b79cc fix(execution): corrige la reprise de seance affichant a tort Seance Terminee (#192)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 09:43:48 +02:00
0584ee337c merge(develop): integre lot UI WIP sans validation QA, sur demande explicite (#176 #177) 2026-07-29 12:41:59 +02:00
cd1379d678 merge(develop): integre lot watch critique/stats WIP sans validation QA, sur demande explicite (#157 #163 #164 #174 #175 #178) 2026-07-29 12:41:59 +02:00
ad82e91fe1 chore(ideai): synchronise etat de suivi (tickets, agents) 2026-07-29 12:41:30 +02:00
193827aacd wip(watch-ui): sauvegarde travail en cours lot UI (#176 #177) 2026-07-29 12:41:30 +02:00
74d6000606 wip(watch): sauvegarde travail en cours lot critique (#157 #163 #164 #174 #175 #178) 2026-07-29 12:34:07 +02:00
f523a5a8b5 chore(ideai): synchronise etat de suivi (tickets, agents) 2026-07-29 11:59:15 +02:00
957185d42b merge(develop): integre lot #165/#166/#169 QA + correctif sync workoutHistory-exercise + #157 distance live montre (inclut rework foreground #163 KO a revalider device avant cloture) 2026-07-29 11:22:17 +02:00
dd0c124818 chore(ideai): synchronise etat de suivi (tickets, agents) 2026-07-29 11:22:17 +02:00
30c6259748 fix(watch): finalise correctif sync workoutHistory/exercise et distance live montre (#157) 2026-07-29 11:22:17 +02:00
6f913e4e8d chore(tickets): ajoute tickets #170-171 (affichage répétitions étape score, suppression scroll étape répétitions seules)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 18:17:43 +02:00
bc533d6c45 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>
2026-07-28 17:59:43 +02:00
917777e18b chore(wip): consolidation intermédiaire multi-tickets (sprints Statistiques, UI, Bug resolution, Serveur-client)
Regroupe l'état de travail en cours réalisé dans un même worktree sur
plusieurs tickets/sprints (#85, #136, #145, #155-160, #162-164),
mélangeant des tickets QA et inProgress. Ne constitue pas une feature
terminée : commit de sauvegarde avant triage/split par ticket en
branches feature/* dédiées. Exclut les dossiers d'environnement de
build locaux et le heap dump parasite (.gitignore mis à jour).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 16:48:54 +02:00
58272e354a merge(develop): déverrouille les demandes de permissions capteurs montre
Intègre le correctif de throttling des demandes de permissions
READ_HEART_RATE / ACTIVITY_RECOGNITION côté montre, qui restaient
bloquées à granted=false après une première tentative. QA verte.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 13:17:16 +02:00
f71a155156 fix(watch): déverrouille les demandes de permissions capteurs montre
READ_HEART_RATE et ACTIVITY_RECOGNITION restaient bloquées à granted=false
à cause d'un verrou permanent après une première tentative de demande
("sensor permission request already attempted" en boucle dans les logs).
Remplace le verrou par sensorPermissionRequestInFlight avec throttling et
reprise au callback de permission, pour permettre de redemander sans
relancer l'app.

QA verte sur ce périmètre ciblé.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 13:17:10 +02:00
ab6fc81a37 merge(develop): fréquence cardiaque live montre/téléphone (ticket #155)
Intègre la mise en conformité avec le cadrage #155/#144/#142 (FC live
bridge montre -> téléphone, affichage écran de séance montre) ainsi que
la correction de la procédure de build/install montre. QA verte.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 13:03:50 +02:00
5ac3f6c695 docs(ideai): fige la procédure correcte de build/install APK montre
Corrige le script de build montre pour prioriser l'artefact canonique
watch_app/build/app/outputs/flutter-apk/app-release.apk et ne plus
recopier un fichier sur lui-même ; évite de réinstaller par erreur
l'artefact résiduel watch_app/build/watch_app/app/outputs/....

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 13:03:46 +02:00
592796915f feat(watch): fréquence cardiaque live montre/téléphone (ticket #155)
Met en conformité l'implémentation avec le cadrage produit acté
(#155, #144, #142) : diffusion de la FC live depuis la montre vers le
téléphone via le bridge, affichage sur l'écran de séance montre
(watch_session_screen) en plus de l'écran Stats existant.

Validé : bridge fonctionnel bout-en-bout, tests watch_session_screen OK.
Artefact canonique d'installation montre confirmé :
watch_app/build/app/outputs/flutter-apk/app-release.apk
(package com.gametime.app) ; ne pas utiliser l'artefact résiduel
watch_app/build/watch_app/app/outputs/flutter-apk/app-release.apk.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 13:03:40 +02:00
8bb74df763 merge(develop): corrige applicationId et signature partagée de l'APK montre
Intègre le correctif de packaging/signature de watch_app (applicationId
com.gametime.watch, signing partagé nettoyé) qui répare la détection du
bridge côté montre après le reset/remerge de develop. QA verte.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 12:18:55 +02:00
2e40694de4 fix(watch): corrige applicationId et nettoie la config de build montre
Répare la régression de packaging introduite par le reset/remerge de
develop : l'APK montre était packagée avec com.gametime.app au lieu de
com.gametime.watch (namespace correct mais applicationId hérité du
téléphone), ce qui cassait la détection du bridge. Aligne applicationId
sur com.gametime.watch, nettoie la config de signing partagée sur les
deux modules android/app et watch_app/android/app, et ajuste
use_cases + watch_session_screen en conséquence.

Validé : APK montre release package = com.gametime.watch, même SHA-256
de certificat sur les deux APKs (70cc69e8...45c7815), tests use_cases et
watch_session_screen OK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 12:18:48 +02:00
6e110a9fb9 merge(develop): intègre la résolution du lot #91 Wear OS après reset
Finalise l'intégration de feature/ticket91-wear-os-watch-sync (clôture
lot #91 : fréquence cardiaque live, notifications de séance, finitions
montre) sur develop@fda82d7, via la branche de résolution
integration/ticket91-into-develop. Conflits résolus sur entities.dart,
workout_execution_screen.dart et watch_companion_projection_test.dart
selon l'arbitrage Architect (base ticket91, invariants chronos réinjectés).
QA verte sur comportement et builds.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 11:35:31 +02:00
83f57b5640 merge(develop): clôture lot #91 Wear OS - fréquence cardiaque, notifications, finitions montre
Intègre le commit de clôture du lot #91 resté non fusionné. Conflits
attendus sur entities.dart, workout_execution_screen.dart et
watch_companion_projection_test.dart : arbitrage Architect - garder la
base feature/ticket91-wear-os-watch-sync sur ces 3 fichiers puis réinjecter
uniquement les invariants chronos utiles (Durée / Temps réalisé).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

# Conflicts:
#	lib/domain/entities.dart
#	lib/presentation/workout_execution_screen.dart
#	test/application/watch_companion_projection_test.dart
2026-07-28 11:35:22 +02:00
fda82d77d0 merge(develop): clarification chronos - Durée vs Temps réalisé
Intègre le lot de clarification des chronos (Durée / Temps réalisé,
renommage Durée par défaut (s), chrono unique visible à l'exécution).
QA verte sur les 6 fichiers de test couvrant use_cases, watch companion
projection, drift repositories, bibliothèque d'exercices, programme et
exécution de séance.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 09:37:54 +02:00
e3c7ca0dab feat(exécution): clarifie Durée et Temps réalisé, renomme Durée par défaut (s)
Sépare la notion de Durée (paramètre configuré) de Temps réalisé (résultat
mesuré au chronomètre), renomme le champ « Temps par défaut (s) » en
« Durée par défaut (s) » dans la bibliothèque d'exercices, et limite
l'exécution à un seul chrono visible à la fois. Le mode Score chrono est
conservé tel quel comme mode du score.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 09:37:44 +02:00
65d43b9768 feat(watch): clôture lot #91 - fréquence cardiaque live, notifications de séance et finitions montre
Consolide le lot applicatif watch companion validé :
- télémétrie fréquence cardiaque live remontée montre -> téléphone
  (collecteur watch, adapter Wear Data Layer, persistance Drift,
  propagation aux écrans historique/programme/profil/exécution)
- notifications de séance en arrière-plan côté téléphone (service
  foreground de statut + passerelle applicative)
- finitions montre : chrono d'étape, score d'étape, retrait du bouton
  "lancer une séance", thème, icônes et polices watch_app

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 05:56:12 +02:00
6d86700348 feat(watch): intégration Wear OS companion app (#91-A à #91-F)
Merge de la branche feature/ticket91-wear-os-watch-sync dans develop :
bridge de données partagé, service Android Data Layer, routage des
commandes montre vers les cas d'usage de session, et app compagnon
Wear OS (UX + client bridge).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-27 11:59:56 +02:00
c65a5a76a9 feat(watch): Wear OS companion app - UX surfaces + bridge client (#91-E, #91-F) 2026-07-25 20:00:01 +02:00