Files
coach-ios/docs/live-activity-runbook-mac.md
Sylvain Bettinelli ce048ee634 Runbook Mac pour builder le correctif Live Activity
Build simple (aucun fichier neuf, aucune capability), mais avec un piège :
la montre doit être rebuildée elle aussi, sinon rien ne change — le message
de fin de séance part de CoachWatch.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 12:54:40 +00:00

4.4 KiB

Build du correctif « Live Activity fantôme » — runbook Mac

Écrit le 2026-08-11. Concerne le commit 5e9b4a3 (La Live Activity restait affichée après la fin de séance).

Compte 15 minutes. C'est un build simple : aucun fichier nouveau, aucune target à créer, aucune capability à ajouter. Les cinq fichiers modifiés sont déjà membres de leurs targets (vérifié dans project.pbxproj).

⚠️ La montre doit être rebuildée aussi, pas seulement l'iPhone : le message de fin de séance part de CoachWatch. Un build iPhone seul ne corrige rien.


Étape 1 — Récupérer le code

Xcode fermé (Cmd+Q, pas juste la fenêtre) :

cd ~/coach-ios
git pull
git log --oneline -1     # doit afficher 5e9b4a3 ou plus récent

Pas besoin de npm install ni de npx cap sync ios : aucune dépendance ni config Capacitor n'a bougé. Si Xcode râle sur no such module 'Capacitor', alors seulement, lance npx cap sync ios (Xcode fermé).

Étape 2 — Build sur l'iPhone

open ios/App/App.xcodeproj
  1. iPhone branché et déverrouillé, Apple Watch au poignet et appairée
  2. Schéma App + ton iPhone comme destination
  3. Run (Cmd+R)

Pas de Clean Build Folder nécessaire — cinq fichiers modifiés, la compilation incrémentale suffit.

Étape 3 — Installer la nouvelle app sur la Watch

L'app watchOS est embarquée dans l'app iPhone, mais watchOS ne la réinstalle pas toujours tout de suite. Le plus fiable : builder directement dessus.

  1. Schéma CoachWatch (menu des schémas, en haut)
  2. Destination : ton Apple Watch Ultra 3
  3. Run (Cmd+R)

Le premier lancement sur la montre peut demander 2-3 minutes et afficher « Waiting to attach » — c'est normal.

Alternative sans Xcode : iPhone → app WatchApps installées → Coach → attendre la réinstallation. Plus lent et moins déterministe.

Vérifier que la montre a bien la nouvelle version : dans les logs (étape 4), la ligne fin de séance signalée à l'iPhone n'existe que dans ce build.

Étape 4 — Tester (3 minutes)

Le test se fait dans cet ordre, en gardant Console.app ouvert sur le Mac :

Console.app → ton iPhone dans la colonne de gauche
Filtre : subsystem:ch.hypnotruck.coach
  1. Démarrer une séance depuis l'app Coach sur la Watch → la Live Activity apparaît sur l'iPhone (cœur + FC qui bouge) → log Live Activity started
  2. Terminer la séance sur la Watch → log côté montre : fin de séance signalée à l'iPhone (reason=session-ended) → log côté iPhone : fin de séance reçue de la Watch puis Live Activity endedla Live Activity disparaît immédiatement de l'écran

C'est ce dernier point qui valide le correctif. Avant, elle restait ~4 h avec la dernière FC figée.

  1. Écran verrouillé : referme l'iPhone pendant la séance, termine sur la montre, rallume l'écran. La bannière ne doit plus être là. C'est le cas qui échouait vraiment — le watchdog reposait sur un Timer qui ne tourne pas quand l'app est suspendue.

  2. Vérifie au passage que la FC remonte toujours sur /live (le flux de samples n'a pas changé, mais CoachLiveBridge a été touché).

Le cœur fantôme actuellement à l'écran

Il vient de l'ancien build. Il partira soit au premier liveEnded reçu (la nouvelle app reprend la main dessus via adoptExisting()), soit après 6 h, soit tout de suite si tu le fermes à la main (appui long → fermer).

Étape 5 — TestFlight (facultatif)

Rien de spécifique ici : c'est la procédure habituelle, étapes 7 à 9 de docs/SESSION-XCODE.md. Pense à incrémenter le numéro de build.


Si ça ne compile pas

Erreur Cause probable Solution
cannot find 'CoachAuth' in scope CoachAuth.swift absent (non versionné) étape 2 de docs/SESSION-XCODE.md
no such module 'Capacitor' sync manquant npx cap sync ios, Xcode fermé
value of type 'ConnectivityManager' has no member 'sendEnded' la target CoachWatch compile un ancien ConnectivityManager.swift vérifie que le git pull a bien eu lieu et que Xcode n'a pas restauré un pbxproj en mémoire
erreur de signing sur CoachWatch profil pas régénéré Signing & Capabilities → décoche/recoche Automatically manage signing

En cas de blocage, envoie-moi l'étape, le message exact, et :

cd ~/coach-ios && git log --oneline -3 && git status -sb