# Parties enregistrées, branches et export SGF (1b) - **Date** : 2026-11-03 - **Étape** : 1b (`docs/etape-1.md`) - **Statut** : prévu (lancé après la fusion de 0e.1) - **Exécutant** : sous-agent general-purpose, dans un worktree ## Objectif Garder toutes les parties du joueur sur le téléphone, avec leurs branches, et les exporter au format SGF de GNU Backgammon. ## Consignes ADR 0007 (domaine pur, stockage derrière une interface), ADR 0008 (scénarios et glossaire). Aucune nouvelle dépendance : l'API IndexedDB du navigateur directement. 1. **Stockage IndexedDB** derrière l'interface de `app/src/storage/` : une liste de parties (identifiant, date de début et de dernière action, adversaire et niveau, score, état en cours ou finie, résultat) et le journal d'événements de chacune. Migration transparente de la partie en cours enregistrée aujourd'hui dans `localStorage`. Si IndexedDB est indisponible (navigation privée), repli sur le comportement actuel. 2. **Branches** : le journal est déjà un arbre (événements avec parent, `goBackTo`). Exposer dans le domaine la liste des branches d'une partie (feuilles de l'arbre, avec le coup d'origine) et le passage de l'une à l'autre. « Rejouer d'ici » depuis un coup passé crée une branche ; la branche d'origine reste intacte et rechargeable. Pas d'écran d'analyse ici (1e) : un accès minimal suffit pour le test (menu « Mes parties » : reprendre une partie, voir ses branches). 3. **Nouvelle partie annulable** : l'arbitrage UX (plan `2026-11-03-revision-ux.md`, point 3) prévoit « Reprendre l'ancienne » pendant 10 s. Fournir l'API de stockage qui le permet (reprendre une partie par son identifiant) ; l'interface viendra avec la révision UX. 4. **Export SGF** : une partie (et ses branches en variantes) au format SGF de GNU Backgammon, téléchargeable depuis « Mes parties ». Vérification par le gnubg de bureau de référence (Docker existant) : le fichier exporté se charge sans erreur et ses positions successives sont les mêmes que celles du journal, sur des parties générées par les tests. 5. Scénarios Gherkin : reprendre une partie parmi plusieurs, rejouer d'ici sans perdre l'original, exporter une partie. Fiches du glossaire pour les nouveaux termes (branche, SGF…). `make lint`, `make test` et `make test-browser` passent (ajouter au test navigateur : deux parties enregistrées, reprise de la première après rechargement). Commits fréquents ; pas de push ni de MR. ## Critères de réussite - Après rechargement, la liste des parties et chaque branche sont intactes. - Un SGF exporté se charge dans gnubg de bureau avec les mêmes positions. - Les trois commandes de test passent. ## Résultat À remplir à la clôture.