docs: COWORK.md — coordination multi-Claude (git + workflow build)
This commit is contained in:
32
COWORK.md
Normal file
32
COWORK.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# COWORK — coordination multi-Claude (coach-ios)
|
||||||
|
|
||||||
|
Ce repo est travaillé **en parallèle par 2 instances de Claude** :
|
||||||
|
|
||||||
|
- **Claude « dev » (serveur Linux, sans Xcode)** : écrit le **code** (Swift des plugins, config projet) + le backend/web (repo `coach_sportif`). **Ne peut PAS builder iOS** (pas de Xcode).
|
||||||
|
- **Claude « Cowork » (app Claude sur le Mac mini de Sylvain)** : fait les **builds Xcode, la signature, les tests sur device**. → C'est toi si tu lis ça depuis le Mac.
|
||||||
|
|
||||||
|
Les deux ne communiquent **que via git + ce fichier**. ⚠️ La mémoire de chaque Claude est **locale à sa machine** (non partagée) → **l'état partagé, c'est CE fichier** : tiens-le à jour.
|
||||||
|
|
||||||
|
## 🔑 Règles d'or (pour ne pas se bloquer)
|
||||||
|
1. **`git pull` AVANT de toucher au projet** ; **`git push` après chaque changement.**
|
||||||
|
2. ⚠️ **Ne jamais laisser Xcode ouvert pendant un `git pull`** — Xcode garde/réécrit le `pbxproj` en mémoire → fichiers Swift non compilés + conflits (ça nous a bloqués 2× le 2026-06-05). Quitter Xcode (`Cmd+Q`), pull, rouvrir.
|
||||||
|
3. Après toute modif faite **dans Xcode** (package SPM, capability, signing) → **commit + push `project.pbxproj` (+ `Package.resolved`) immédiatement**, sinon le prochain `git pull` est bloqué par les modifs locales.
|
||||||
|
4. Zone sensible = `ios/App/App.xcodeproj/project.pbxproj` : le Claude dev y ajoute les fichiers Swift (entrées manuelles), le Claude Mac y ajoute les packages SPM. → committer de suite limite les collisions.
|
||||||
|
|
||||||
|
## 🛠️ Workflow type « le dev a poussé du code natif, build-le »
|
||||||
|
1. **Quitter Xcode.**
|
||||||
|
2. `git pull`
|
||||||
|
3. Nouveau `*.swift` ? vérifier qu'il est dans le projet : `grep -c <Nom>.swift ios/App/App.xcodeproj/project.pbxproj` (doit être ≠ 0). Si Xcode ne le voit pas après ouverture → clic droit dossier **App** → *Add Files to "App"…* (décocher *Copy items*, cocher target **App**).
|
||||||
|
4. Ouvrir Xcode → **Clean Build Folder** (`Cmd+Shift+K`) → **Run** (`Cmd+R`) sur l'iPhone.
|
||||||
|
5. Erreurs → corriger, committer le fix, push.
|
||||||
|
6. Diagnostic plugins : Safari → Développement → iPhone → coach.hypnotruck.ch → console → `Object.keys(Capacitor.Plugins).filter(k=>k.indexOf('Coach')===0)`.
|
||||||
|
|
||||||
|
## 📍 État natif actuel (2026-06-05)
|
||||||
|
- **Capacitor 8 n'auto-découvre PAS les plugins in-app** → tous enregistrés dans `MainViewController.capacitorDidLoad()` : CoachWorkoutKit, CoachHealthRoute, CoachWorkoutObserver, CoachLiveBridge, **CoachAppleAuth**, **CoachGoogleAuth**.
|
||||||
|
- **Login natif Apple + Google = OK, validé device.** Apple via `AuthenticationServices` (intégré). Google via **SDK GoogleSignIn** (SPM, lié à la target App) + `GIDClientID`/URL scheme dans Info.plist. Les deux POSTent l'id_token sur `/auth/apple|google/web` (backend) → cookie de session.
|
||||||
|
- watchOS `CoachWatch` + Live Activity en place (chantiers antérieurs, cf. `HANDOFF-WATCHOS.md`).
|
||||||
|
|
||||||
|
## 👉 À reprendre
|
||||||
|
- **Phase 4 login** : révocation Apple sur suppression de compte (clé `.p8`, Team `TZ2PVTRKNY`) — avant publication App Store.
|
||||||
|
- Android natif (Play Console).
|
||||||
|
- Backend/web : voir `coach_sportif/COWORK.md`.
|
||||||
Reference in New Issue
Block a user