- CoachWidgetBridge : lit le score en NSNumber.intValue (le cast `as? Int`
renvoyait nil quand le web envoie un float → score widget perdu par
intermittence). CoachWidgetStore.save renvoie un Bool ; le plugin fait
call.reject si la sauvegarde échoue au lieu de résoudre ok:true à tort.
- CoachAppleAuth : sur double-tap, rejette l'ancien pendingCall (Promise JS
ne pend plus indéfiniment) ; accès pendingCall confiné au main thread ;
erreur d'annulation testée par domaine ASAuthorizationError (pas rawValue nu).
Swift pur, non compilé ici (pas de Xcode) — à valider au prochain build Mac.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
L'App Group n'étant pas partagé entre appareils, le snapshot transite par
WatchConnectivity : iPhone CoachWidgetBridge.pushToWatch (updateApplicationContext)
-> CoachWatch/ConnectivityManager reçoit -> App Group de la montre + reload des
complications. Nouvelles complications (CoachWatchWidgets/CoachWatchComplications.swift) :
Forme (accessoryCircular/corner, Gauge) + Séance du jour (accessoryRectangular/inline).
⚠️ Reste Mac : créer la target widget watchOS + App Group/capability + Target
Membership. Runbook complet dans docs/widgets-runbook-mac.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>