Le guide Xcode annoncait un fichier a ajouter, il y en a quatre

SESSION-XCODE.md disait « une seule exception : CoachWatchComplications.swift ».
C'etait vrai le 3 aout, jour ou il a ete ecrit. Le widget de saisie rapide est
arrive le 6 aout avec trois fichiers Swift de plus, et aucun n'appartient a une
target : CoachQuickLog.swift, CoachQuickSync.swift, CoachQuickWidget.swift.
Verifie dans project.pbxproj, pas suppose.

Consequence si on suivait le guide tel quel : l'extension ne compile pas, et le
widget « Saisie des repas et boissons » n'apparait nulle part - sans que rien
n'explique pourquoi, puisque le guide affirmait qu'il n'y avait rien a ajouter.

Une etape 4b liste les trois fichiers avec leur Target Membership exact.
CoachQuickLog va dans DEUX cibles, l'extension ecrivant la file que l'app vide.
Et ce qui est deja fait est dit comme tel, pour ne pas le refaire : le widget
est enregistre dans le WidgetBundle, et CoachQuickSync.flush() est bien appele
par AppDelegate.

Le point 4 du runbook widgets demandait de verifier le schema coachapp:// dans
l'Info.plist. Il est barre : depuis e715804 les boutons pointent sur des URL
https routees par Universal Links, precisement parce que coachapp:// n'etait
routé nulle part et ouvrait l'app sur sa derniere page consultee.

Aucun code touche, uniquement de la documentation de session.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sylvain Bettinelli
2026-08-11 11:40:49 +00:00
parent ebb9273dc3
commit ddfd95cbd7
2 changed files with 48 additions and 9 deletions

View File

@@ -14,19 +14,33 @@ t'arrêter après l'étape 6** et publier un autre jour.
## Avant de commencer — ce qui a changé
Bonne nouvelle : **il n'y a presque plus de fichiers à ajouter à la main.** Les
Swift sont déjà déclarés dans les bonnes targets (commits `caeac37`, `f30cc60`).
La plupart des Swift sont déjà déclarés dans les bonnes targets (commits
`caeac37`, `f30cc60`). **Quatre** ne le sont pas et doivent être ajoutés à la
main — état vérifié dans `project.pbxproj` le 2026-08-11 :
Une seule exception : `CoachWatchComplications.swift`, qui a besoin d'une target
qui n'existe pas encore. C'est l'étape 5 — **et elle est facultative** (elle
n'apporte que les complications sur le cadran de la montre).
| Fichier | Target Membership à cocher | Étape |
|---|---|---|
| `App/CoachQuickLog.swift` | **App + CoachLiveActivity** | 4b |
| `App/CoachQuickSync.swift` | **App** seule | 4b |
| `CoachLiveActivity/CoachQuickWidget.swift` | **CoachLiveActivity** seule | 4b |
| `CoachWatchWidgets/CoachWatchComplications.swift` | **CoachWatchWidgets** (target à créer) | 5 |
⚠️ Les trois premiers sont arrivés le **2026-08-06**, après la rédaction de ce
guide, qui annonçait « une seule exception » — c'était vrai le 3 août. Sans eux,
le widget « Saisie des repas et boissons » ne se compile pas. Leur runbook
détaillé est `docs/widgets-runbook-mac.md`.
Déjà fait côté code, à ne pas refaire : `CoachQuickWidget()` est enregistré dans
le `WidgetBundle` (`CoachLiveActivityBundle.swift`) et `CoachQuickSync.flush()`
est appelé depuis `AppDelegate` (l. 57).
| Ce que tu vas activer | Étape |
|---|---|
| Login Apple + Google natif | rien à faire, déjà câblé |
| Live workout watchOS | rien à faire, déjà câblé |
| Routine sur la Watch | rien à faire, déjà câblé |
| Widgets iPhone (Séance du jour, Score de forme) | étapes 2-3 (App Group) |
| Widgets iPhone (Séance du jour, Score de forme) | étapes 3-4 (App Group) |
| Widget Saisie rapide (eau, café, photo, scan) | étape 4b (3 fichiers à ajouter) |
| Complications sur le cadran Watch | étape 5 (facultative) |
---
@@ -117,6 +131,29 @@ bloqué par les modifications locales :
git add -A ios/App && git commit -m "chore(xcode): App Groups sur App, LiveActivity et Watch" && git push
```
## Étape 4b — Les trois fichiers du widget « Saisie rapide » *(~5 min)*
Ils existent dans le repo depuis le 6 août mais n'appartiennent à aucune target :
tant qu'ils n'y sont pas, le widget eau/café n'existe pas et l'extension ne
compile pas.
Dans Xcode, clic droit sur le dossier de la cible → **Add Files to "App"…**
**décoche** *Copy items if needed* → coche la ou les targets du tableau. Pour un
fichier déjà présent dans l'arborescence, passe par l'inspecteur de droite
(`Cmd+Option+1`) → **Target Membership**.
| Fichier | Cocher |
|---|---|
| `ios/App/App/CoachQuickLog.swift` | **App** *et* **CoachLiveActivity** |
| `ios/App/App/CoachQuickSync.swift` | **App** seule |
| `ios/App/CoachLiveActivity/CoachQuickWidget.swift` | **CoachLiveActivity** seule |
`CoachQuickLog.swift` doit bien être dans **les deux** cibles : l'extension
écrit la file d'attente, l'app la vide.
Rien d'autre à câbler — `CoachQuickWidget()` est déjà dans le `WidgetBundle` et
`CoachQuickSync.flush()` est déjà appelé par `AppDelegate`. Puis commit + push.
## Étape 5 — Complications Watch *(facultative, ~15 min)*
**Tu peux sauter cette étape** et y revenir plus tard : tout le reste fonctionne