10 Commits

Author SHA1 Message Date
cf68a72403 feat(watch): shared watch bridge contract package (#91-A) 2026-07-25 17:42:57 +02:00
77b271803d chore(deps): add file_picker and share_plus for local backup UI
Needed by F1/F2 (#84): file_picker selects the .gametime backup file
on import, share_plus opens the system share/save sheet on export.
2026-07-22 13:54:27 +02:00
8d6e5b4201 feat: verify embedded backup media checksums
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 13:30:06 +02:00
e60c8bbdb8 feat(online): session compte, stockage sécurisé et adapter API (ticket #64)
Ajoute l'adapter API distant (infrastructure/remote/auth_api.dart,
http_api_client.dart) et le stockage sécurisé du token d'auth
(infrastructure/security/secure_storage_auth_token_store.dart), câblés
dans app_bootstrap.dart. Étend le modèle Drift (migration
schemaVersion 9→10) et la couche application (ports, use cases,
entités) pour la session de compte. flutter pub get OK (ajout http,
flutter_secure_storage), build_runner OK, dart format appliqué,
analyze propre (mêmes infos préexistantes), 109/109 tests verts,
build APK debug validé. Premier ticket du chantier "Ajouter les
features serveur au client" (#63).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 21:25:49 +02:00
6947cee30c feat(exercice): exécution de séance avec module séquence et bips (ticket #60)
Ajoute le lecteur de bips d'étapes (presentation/exercise_step_audio.dart,
port ExerciseStepAudioCuePlayer injectable en test, jamais le vrai
audioplayers en test) et les fichiers audio associés
(assets/audio/step_countdown_short.wav, step_completion_long.wav).
Câble ActiveExerciseStepUseCases dans app_bootstrap.dart et l'expose à
WorkoutExecutionScreen. Les appels audio réels sont protégés par un
try/catch qui log sans jamais bloquer la progression d'étape. flutter
pub get OK (ajout audioplayers), analyze propre (mêmes infos
préexistantes + 2 nouvelles use_build_context_synchronously, non
bloquantes), 100/100 tests verts, build APK debug validé.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 20:07:56 +02:00
3605b3d99a fix(execution): carrousel de médias et chrono du score (tickets #41, #42, #43)
Corrige l'affichage des images (#41) et de la vidéo (#42) dans le
carrousel de médias, et le format du chrono de score qui n'affichait
que les secondes (#43) sur workout_execution_screen.dart. Ajoute la
dépendance video_player (2.13.0) pour la lecture vidéo. Ajuste
home_screen.dart, history_screen.dart et workout_template_screen.dart
en conséquence. flutter analyze propre, flutter test 77/77 vert (plus
aucun hang), pub get résolu.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 22:28:52 +02:00
9974e5b7ea feat(assets): icône d'application Android et iOS (ticket #19)
Génère les icônes via flutter_launcher_icons à partir des visuels
icon_full.png / icon_foreground.png : mipmap Android classiques,
icône adaptive (drawable-*/ic_launcher_foreground.png,
mipmap-anydpi-v26/ic_launcher.xml, values/colors.xml) et l'ensemble
AppIcon iOS. Configuration flutter_launcher_icons ajoutée à
pubspec.yaml. flutter analyze propre, 27/27 tests verts, build APK
debug validé, icônes vérifiées visuellement.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 23:53:04 +02:00
cb5cfc48ff fix(media): sélecteur de média pour les exercices (ticket #15)
Corrige/ajoute le sélecteur de média sur exercise_library_screen.dart
suite aux retours de QA. flutter analyze propre (1 warning mineur
"paramètre inutilisé" dans un test, sans impact), 27/27 tests verts,
build APK debug validé.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 22:22:59 +02:00
61941e879f feat(data): modèle de données Drift pour la persistance locale
Définit les tables Drift et les identifiants locaux (local_id.dart,
tables.dart), régénère app_database.g.dart. build_runner, flutter analyze
et build APK debug validés.

Versionne les fichiers générés .g.dart : projet solo sans pipeline CI qui
relance build_runner, on privilégie un clone immédiatement buildable.
Retire la règle **/*.g.dart (et freezed/gr.dart, non utilisés) du
.gitignore en conséquence.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 18:17:37 +02:00
085dabc6e2 feat(app): scaffolding initial du projet Flutter GameTime
Structure Flutter iOS/Android (lib/ organisé en couches domain,
application, infrastructure, presentation), intégration Drift pour la
persistance locale (sqlite3_flutter_libs), configuration des plateformes
android/ et ios/. Build APK debug validé.

Ajuste le .gitignore pour ignorer l'état d'exécution IdeA
(.ideai/permissions.json) au même titre que le reste du runtime.

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