docs: P4 livré (supervision mobile : answer + Web Push + PWA)

README et CLAUDE.md reflètent désormais P4 comme livré (et non plus « à venir »),
avec les caveats Web Push (HTTPS/Tailscale, PWA installée sur iOS).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Johan LEROY
2026-06-15 12:23:53 +02:00
parent fbbfafae9b
commit 1cf4d29655
2 changed files with 6 additions and 4 deletions

View File

@@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## Projet
Arboretum : un daemon Node.js unique (`npx git-arboretum`) qui sert un dashboard web pour piloter les worktrees git et les sessions Claude Code qui tournent dessus, depuis n'importe quel appareil. **MVP atteint** : P1 (colonne vertébrale : monorepo, protocole WS, daemon, front, tests, CI), P2 (découverte & reprise des sessions), P3 (worktrees multi-repo, états fins busy/waiting/idle via `claude-adapter`, dashboard worktree-first) sont livrés. La phase en cours est **P4** (« supervision mobile & push » : répondre aux dialogues sans ouvrir le terminal, notifications Web Push, PWA installable). Voir les `VERDICT.md` dans `spikes/` pour les décisions techniques actées avant implémentation.
Arboretum : un daemon Node.js unique (`npx git-arboretum`) qui sert un dashboard web pour piloter les worktrees git et les sessions Claude Code qui tournent dessus, depuis n'importe quel appareil. **MVP atteint** : P1 (colonne vertébrale : monorepo, protocole WS, daemon, front, tests, CI), P2 (découverte & reprise des sessions), P3 (worktrees multi-repo, états fins busy/waiting/idle via `claude-adapter`, dashboard worktree-first) et P4 (« supervision mobile & push » : commande WS `answer` pour répondre aux dialogues sans ouvrir le terminal, notifications Web Push via VAPID, PWA installable) sont livrés. Voir les `VERDICT.md` dans `spikes/` pour les décisions techniques actées avant implémentation.
Les commentaires du code et la doc interne sont en **français** ; le README et les messages utilisateur en anglais. Conserver cette convention.
@@ -78,4 +78,6 @@ Les `spikes/sN-*/VERDICT.md` documentent des décisions qui contraignent l'impl
- La **vivacité** d'une session se déduit de `pid` + `procStart`, **jamais** de la présence du fichier registre.
- La distinction d'états fins (busy / waiting / idle) du `claude-adapter` (P3-B) nécessite une lecture d'écran via `@xterm/headless` (le strip ANSI naïf mange les espaces) + le registre `~/.claude/sessions`.
Le `SessionRuntimeStatus` du protocole reste `starting`/`running`/`exited` ; les états fins P3-B (`activity`, `waitingFor`, `dialog`) sont des champs **additifs optionnels** de `SessionSummary`, remplis par le `claude-adapter` pour les sessions claude managées (null pour bash / découvertes). P4 ajoutera la commande WS `answer` (répondre aux dialogues) et le Web Push.
Le `SessionRuntimeStatus` du protocole reste `starting`/`running`/`exited` ; les états fins P3-B (`activity`, `waitingFor`, `dialog`) sont des champs **additifs optionnels** de `SessionSummary`, remplis par le `claude-adapter` pour les sessions claude managées (null pour bash / découvertes).
**P4 (supervision mobile)** s'appuie sur ces champs : la commande WS `answer {channel, action, optionN?}` (validée dans `parseClientMessage` ET `pty-manager.answer` contre le dialogue courant) traduit une intention en keystrokes PTY ; `PushService` (clés VAPID en `settings`, abonnements liés au `tokenId` dans `push_subscriptions`) notifie sur le **front montant** vers `waiting` (débouncé). Côté web : `public/sw.js` (service worker push écrit à la main — **pas** de `vite-plugin-pwa`, trop lourd pour un SW push-only) + `public/manifest.webmanifest` (PWA installable). Web Push exige HTTPS (Tailscale Serve) ; sur iOS, la PWA doit être installée.