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>
This commit is contained in:
2026-07-28 05:56:12 +02:00
parent c65a5a76a9
commit 65d43b9768
80 changed files with 12292 additions and 892 deletions

File diff suppressed because it is too large Load Diff

View File

@ -9,23 +9,41 @@ ThemeData watchTheme() {
final textTheme = Typography.whiteMountainView.copyWith(
labelSmall: const TextStyle(
fontFamily: 'Archivo',
fontSize: 10,
fontWeight: FontWeight.w800,
color: muted,
letterSpacing: 0,
),
bodySmall: const TextStyle(
fontFamily: 'Archivo',
fontSize: 11,
color: muted,
height: 1.15,
letterSpacing: 0,
),
bodyMedium: const TextStyle(
fontFamily: 'Archivo',
fontSize: 13,
color: text,
height: 1.15,
letterSpacing: 0,
),
bodySmall: const TextStyle(fontSize: 11, color: muted, height: 1.15),
bodyMedium: const TextStyle(fontSize: 13, color: text, height: 1.15),
titleSmall: const TextStyle(
fontFamily: 'Archivo',
fontSize: 16,
fontWeight: FontWeight.w800,
color: text,
height: 1.05,
letterSpacing: 0,
),
displayLarge: const TextStyle(
fontSize: 44,
fontWeight: FontWeight.w900,
color: text,
fontFamily: 'Anton',
fontSize: 42,
fontWeight: FontWeight.w400,
color: Color(0xFFC9A24A),
height: 0.95,
letterSpacing: 0,
fontFeatures: [FontFeature.tabularFigures()],
),
);
@ -50,8 +68,10 @@ ThemeData watchTheme() {
padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 10),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
textStyle: textTheme.labelLarge?.copyWith(
fontFamily: 'Archivo',
fontSize: 13,
fontWeight: FontWeight.w800,
letterSpacing: 0,
),
),
),
@ -62,8 +82,10 @@ ThemeData watchTheme() {
side: const BorderSide(color: Color(0xFF303748)),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
textStyle: textTheme.labelLarge?.copyWith(
fontFamily: 'Archivo',
fontSize: 13,
fontWeight: FontWeight.w800,
letterSpacing: 0,
),
),
),