CLAUDE.md : la règle du cookie ne suffit plus, le SceneDelegate en porte la moitié
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) <noreply@anthropic.com>
This commit is contained in:
@@ -15,7 +15,8 @@ Instructions pour Claude Code sur ce projet. Lis ce fichier en début de session
|
|||||||
## 🔒 Règles non négociables
|
## 🔒 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).
|
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).
|
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.
|
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).
|
5. **Default yes** : décider et exécuter (sauf actions destructives).
|
||||||
|
|||||||
Reference in New Issue
Block a user