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>
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>
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>
file_picker's android/build.gradle guards `apply plugin:
'org.jetbrains.kotlin.android'` behind a runtime AGP-version check that
is false on this project's AGP 9 (it assumes AGP's built-in Kotlin
support is active instead). Flutter's own FlutterPluginUtils only
scans the file's text for that apply statement to decide whether to
auto-apply Kotlin itself, so it is fooled by the same guarded line and
skips applying it too. With android.builtInKotlin=false (needed for
other plugins like audioplayers_android), no Kotlin plugin ever runs
for file_picker, so its Kotlin sources -- including FilePickerPlugin --
never compile, breaking `flutter build apk --release` with:
cannot find symbol: class FilePickerPlugin
Force-apply org.jetbrains.kotlin.android for the file_picker subproject
once AGP's library plugin is present, and pin its Kotlin compile
jvmTarget to 17 (file_picker's own jvmTarget setup is behind the same
dead guard, so it would otherwise default to the running JDK's target
and conflict with the javac target). Verified with a full
`flutter build apk --release`.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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>