feat(watch): routine quotidienne cochable sur l'Apple Watch
Pendant natif du backend coach_sportif (commit 772385b, déjà en prod). - CoachRoutineBridge (target App) : pousse blocs + état du jour vers la Watch via updateApplicationContext, relaie les coches Watch vers /api/routine/day puis notifie la WebView (event routineUpdated) - CoachWatch/RoutineStore : état persisté en UserDefaults, reset au changement de jour. Les blocs viennent de l'iPhone — rien codé en dur côté watchOS, donc modifier la routine côté web ne demande aucun rebuild - CoachWatch/RoutineView : liste cochable, progression, haptique, bouton de renvoi si la synchro a échoué - ConnectivityManager (watch) : sendRoutine() en sendMessage avec repli transferUserInfo (coche faite iPhone hors de portée -> livraison différée) ⚠️ CoachLiveBridge touché : routeIfNotLiveSample() aiguille les messages routineDone vers NotificationCenter. WCSession.delegate est unique côté iPhone, impossible d'en ajouter un second. Le flux live workout n'est pas modifié mais doit être re-vérifié au build. Les 3 nouveaux fichiers sont référencés dans project.pbxproj (bonne target) : aucun "Add Files" à faire sur le Mac. Runbook : docs/routine-watch-runbook-mac.md NON COMPILÉ — nécessite une session Xcode sur le Mac mini. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
21
COWORK.md
21
COWORK.md
@@ -30,6 +30,27 @@ Les deux ne communiquent **que via git + ce fichier**. ⚠️ La mémoire de cha
|
||||
- Watch : `CoachWidgetBridge.pushToWatch` (WCSession) → `CoachWatch/ConnectivityManager` reçoit → App Group montre + reload. Complications `CoachWatchWidgets/CoachWatchComplications.swift` (Forme circular/corner, Séance rectangular/inline). **Nouvelle target widget watchOS à créer dans Xcode.**
|
||||
- ⚠️ Étapes Mac obligatoires (App Group portail + capabilities + Target Membership + target Watch + build) : **TOUT est détaillé dans `docs/widgets-runbook-mac.md`.**
|
||||
|
||||
## 🆕 Routine quotidienne sur la Watch (2026-08-03, dev — non compilé)
|
||||
|
||||
Nouveau chantier, code complet côté dev, **build Mac requis**. Tout est détaillé
|
||||
dans **`docs/routine-watch-runbook-mac.md`** (archi, étapes, débogage).
|
||||
|
||||
- **Nouveaux fichiers, DÉJÀ référencés dans `project.pbxproj`** (aucun « Add
|
||||
Files » à faire) : `App/CoachRoutineBridge.swift` (target App),
|
||||
`CoachWatch/RoutineStore.swift` + `CoachWatch/RoutineView.swift` (target
|
||||
CoachWatch). Backup : `project.pbxproj.bak-routine`.
|
||||
- **Modifs** : `MainViewController.capacitorDidLoad()` enregistre
|
||||
`CoachRoutineBridgePlugin` ; `CoachWatch/ContentView` ouvre `RoutineView` en
|
||||
sheet ; `ConnectivityManager` (watch) gagne `sendRoutine()` + réception du
|
||||
`routineSnapshot`.
|
||||
- ⚠️ **`CoachLiveBridge` touché** — un seul ajout : `routeIfNotLiveSample()`
|
||||
aiguille les messages `routineDone` vers `NotificationCenter` au lieu de les
|
||||
émettre comme samples. Le délégué `WCSession` est unique côté iPhone, on ne
|
||||
pouvait pas en ajouter un second. **À re-vérifier au build** que le live
|
||||
workout (validé E2E le 31/05) fonctionne toujours.
|
||||
- Côté backend `coach_sportif` : **déjà en prod** (`/api/routine`,
|
||||
`/api/routine/check`, `/api/routine/day`, `data/routine_log.json`).
|
||||
|
||||
## 👉 À reprendre
|
||||
- ✅ **Phase 4 login — FAIT & DÉPLOYÉ** (révocation Apple à la suppression de compte) : code complet côté backend `coach_sportif` (commit `5ae6e2d`) + clé `.p8` déployée sur le VPS prod (vérifié 2026-06-26). Rien à coder. Détails : `coach_sportif/COWORK.md`.
|
||||
- **iOS — bloqué Mac** : builder + uploader TestFlight le natif accumulé (login Apple+Google natif, watchOS live, HeartRateRangeAlert). Sur le Mac : `cd ~/coach-ios && git pull && npm install && npx cap sync ios && open ios/App/App.xcworkspace` → Clean Build Folder → Archive → Upload.
|
||||
|
||||
Reference in New Issue
Block a user