feat(watch): séance guidée au poignet

Pendant natif du lecteur web. Bouton Démarrer par bloc : un exercice à la fois,
décompte en anneau, passage auto, haptique à chaque transition, pause et
navigation. Pendant une routine au sol, la montre est bien plus pratique que
d'aller chercher le téléphone — c'est tout l'intérêt de la version watchOS.

Chaque exercice écoulé est coché via RoutineStore.toggle, donc renvoyé à
l'iPhone puis au serveur : à la fin le bloc est à jour sur les trois surfaces.

La durée par exercice est désormais transmise dans le snapshot (duration_sec,
optionnel pour rester compatible avec les snapshots déjà persistés) : la vue
guidée utilise la vraie durée au lieu de répartir celle du bloc.

RoutineGuidedView.swift est déjà référencé dans le pbxproj (target CoachWatch),
aucun Add Files à faire. Backup : project.pbxproj.bak-guided

NON COMPILÉ — à inclure au prochain build Xcode.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Sylvain Bettinelli
2026-08-03 16:32:29 +00:00
parent 21d819a52b
commit f032ee2126
9 changed files with 2749 additions and 2 deletions

View File

@@ -9,6 +9,14 @@ struct RoutineExercise: Codable, Identifiable, Equatable {
let id: String
let name: String
let dose: String
/// Optionnel : absent des snapshots persistés avant le 2026-08-03. La vue
/// guidée retombe alors sur une répartition de la durée du bloc.
let durationSec: Int?
enum CodingKeys: String, CodingKey {
case id, name, dose
case durationSec = "duration_sec"
}
}
/// Un bloc de la routine quotidienne, tel que poussé par l'iPhone.