From 3bd90c8bb794a5e35d648d2ab8f9712d65eaa153 Mon Sep 17 00:00:00 2001 From: Sylvain Bettinelli Date: Tue, 22 Sep 2026 08:05:25 +0000 Subject: [PATCH] =?UTF-8?q?CLAUDE.md=20:=20la=20r=C3=A8gle=20du=20cookie?= =?UTF-8?q?=20ne=20suffit=20plus,=20le=20SceneDelegate=20en=20porte=20la?= =?UTF-8?q?=20moiti=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La règle n°2 protégeait AppDelegate.swift. Depuis l'adoption d'UIScene, trois callbacks ont déménagé et UIKit ne les appelle plus sur l'AppDelegate même si on les y remet — un futur correctif posé au mauvais endroit compilerait sans broncher et casserait l'OAuth ou le flush des saisies widget en silence. Précisé au passage que didFinishLaunchingWithOptions reste appelé avant la connexion de la scène : c'est ce qui garantit l'ordre cookie -> WebView, et c'est documenté par Apple, pas supposé. Deux commandes ajoutées à la liste de ce qu'on ne lance pas sur ce projet : npx cap migrate (le guide officiel exclut les AppDelegate à gestion d'URL personnalisée) et npm audit fix --force (il redescend le CLI en v7, ce qui supprimerait le support UIScene qu'on vient d'ajouter). Co-Authored-By: Claude Opus 5 (1M context) --- CLAUDE.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index c7c6676..2f2be7e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -15,7 +15,8 @@ Instructions pour Claude Code sur ce projet. Lis ce fichier en début de session ## 🔒 Règles non négociables 1. **Le code web n'est PAS ici** — pour modifier l'UI/UX, c'est `coach_sportif/web/`. Ce repo ne touche QUE le natif (Swift, Kotlin, plugins Capacitor, config). -2. **Cookie inject AppDelegate** (iOS) : mécanisme critique pour l'auth WKWebView. Toute modif `AppDelegate.swift` doit préserver ce flux. +2. **Cookie inject AppDelegate** (iOS) : mécanisme critique pour l'auth WKWebView. Toute modif `AppDelegate.swift` doit préserver ce flux. Il vit dans `didFinishLaunchingWithOptions`, qui **reste appelé** en cycle de vie par scènes et **avant** la connexion de la scène — Apple documente la séquence, l'ordre cookie → WebView est donc garanti. +2bis. **⚠️ Cycle de vie UIScene depuis le 22/09/2026** (obligatoire iOS 27, Capacitor ≥ 8.5.2). Trois callbacks ont quitté `AppDelegate.swift` pour `SceneDelegate.swift`, et UIKit **ne les appelle plus sur l'AppDelegate même si on les y remet** : retour OAuth Google (`scene(_:openURLContexts:)`), Universal Links (`scene(_:continue:)`), flush des saisies widget (`sceneDidBecomeActive`). Aucun ne produit d'erreur de compilation s'il est mal placé — la panne est silencieuse. Le `SceneDelegate` instancie **`MainViewController`**, jamais un `CAPBridgeViewController` nu comme le template Capacitor : la sous-classe porte l'enregistrement des plugins et la config WKWebView. ⛔ Ne pas lancer `npx cap migrate` sur ce projet (le guide officiel exclut les AppDelegate à gestion d'URL personnalisée), ni `npm audit fix --force` (il redescend le CLI en v7 et supprime le support UIScene). 3. **Health Connect Android** : nécessite la privacy policy URL dans le manifest (validation Play Console). 4. **Pas d'extrapolation** : root cause vérifiable avant tout fix natif. iOS+Android = doubles surfaces de bug. 5. **Default yes** : décider et exécuter (sauf actions destructives).