Jusqu'ici, l'application ne proposait qu'une partie libre, contre un ordinateur de niveau fixe (2 plis). Un débutant de l'Atelier du Huit jouait donc contre un adversaire trop fort, et un joueur de club ne pouvait pas s'entraîner au match, la forme habituelle des tournois.
La sous-étape 1c de docs/etape-1.md demande de choisir sa partie :
une partie libre, ou un match en N points avec les règles de Crawford et de Jacoby ;
contre l'ordinateur, au niveau voulu ;
avec ou sans le conseil du maître.
La charte (docs/identite/charte/ecrans-etape-1.md, chapitre 1c) fixe l'écran et l'affichage du score.
Quoi
Écran « Nouvelle partie » (#/nouvelle-partie). Il s'ouvre depuis le menu, l'accueil et la fin de partie. Les choix sont gardés d'une partie à l'autre :
Choix
Options
Par défaut
Type de partie
partie libre, ou match en 3, 5, 7 ou 11 points
partie libre
Niveau
six niveaux, de Débutant à Champion
Intermédiaire
Conseil du maître
activé ou non
activé
Pendant un match, l'écran de jeu montre :
« Match en N points » et le score de chaque camp ;
« partie Crawford » quand c'est le cas : le videau est alors masqué.
Fin de partie : « Partie suivante » lance la partie suivante avec le score. En fin de match, le panneau donne le vainqueur et le score final.
L'ordinateur double, prend et passe comme celui de GNU Backgammon, au niveau choisi.
Comment
Le travail a été délégué à un sous-agent, interrompu une fois par la limite d'usage. Aucune règle n'est écrite hors du moteur.
Moteur : trois fonctions ajoutées à engine.h. Aucun fichier de gnubg n'est modifié.
engine_level_double_decision et engine_level_take_decision reprennent ComputerTurn de gnubg (play.c l. 1312-1398 et 1139-1235) : fenêtre de marché, double facultatif à 0 pli, réponse au double.
engine_match_after_game donne le score après une partie, la fin du match et la partie Crawford suivante (play.c l. 1817-1820).
engine-cli les expose (double, take, aftergame), et matchid code désormais un match.
Domaine :
chaque partie d'un match est une partie à part entière ;
son GameStarted porte le niveau et le match ;
son GameEnded porte le match après la partie, tel que le moteur l'a calculé ;
l'adaptateur passe le match au moteur dans le Match ID.
Format des événements, version 2 : une migration testée (migrateJournal) rend explicite le niveau des anciennes parties, qui était implicitement 2 plis. L'ADR 0007 est amendé pour le format, l'ADR 0013 pour la nouvelle adresse.
Correspondance des niveaux, documentée dans docs/glossaire/niveau-de-jeu.md :
make test : 10/10, dont le scénario jouer-un-match.feature (niveau ; match en 3 points avec dés imposés ; Crawford ; Jacoby) ;
make test-browser : passe en un seul passage dans Chromium et Firefox. Le nouveau script match.mjs joue un match en 3 points jusqu'au bout, avec une partie Crawford et un rechargement en plein match.
Choix et compromis
Un journal par partie, plutôt qu'un seul journal pour tout le match. Les branches, l'export SGF et « Mes parties » ne changent pas. En contrepartie, « Mes parties » montre chaque partie du match séparément.
Les niveaux 3 et 4 plis sont écartés : trop lents sur le téléphone.
Pas de castor : l'ordinateur prend, comme gnubg quand il ne peut pas en faire.
Longueur de match par défaut de 5 points : la charte ne la fixe pas. Pierre peut la changer.
Le conseil du maître n'est encore qu'un réglage : le conseil lui-même arrive avec 1d.
« Nouvelle partie » dans le menu ouvre désormais l'écran des choix, au lieu de lancer la partie tout de suite.
Risques et déploiement
Journaux migrés en version 2 à leur reprise. Une version antérieure de l'application ne relirait plus une partie reprise par celle-ci. Le schéma IndexedDB, lui, ne change pas.
Moteur WebAssembly modifié : il est reconstruit par make site et distribué par le mécanisme de mise à jour.
Retour arrière : annuler la fusion. Les parties jouées entre-temps restent en version 2.
Comment vérifier
make lint && make test && make test-browser
build/engine-cli --level 2ply double /38AAABQAAAAAA MAEAAAAAAAAA
build/engine-cli aftergame MAFgAAAAAAAE 0 2 # partie Crawford suivante
ls build/browser-shots/match/
Après la publication, ouvrir #/nouvelle-partie, choisir un match en 3 points au niveau Débutant, et le jouer jusqu'au bout.
Hors périmètre
« Mes parties » : l'affichage du match lui-même.
Export SGF : le numéro de la partie dans le match et la règle de Jacoby.
Conseil du maître : il arrive avec 1d.
Fairphone 4 : l'essai du niveau Champion sur le téléphone.
## Pourquoi
Jusqu'ici, l'application ne proposait qu'une partie libre, contre un ordinateur de niveau fixe (2 plis). Un débutant de l'Atelier du Huit jouait donc contre un adversaire trop fort, et un joueur de club ne pouvait pas s'entraîner au match, la forme habituelle des tournois.
La sous-étape 1c de `docs/etape-1.md` demande de choisir sa partie :
- une partie libre, ou un match en N points avec les règles de Crawford et de Jacoby ;
- contre l'ordinateur, au niveau voulu ;
- avec ou sans le conseil du maître.
La charte (`docs/identite/charte/ecrans-etape-1.md`, chapitre 1c) fixe l'écran et l'affichage du score.
## Quoi
- **Écran « Nouvelle partie »** (`#/nouvelle-partie`). Il s'ouvre depuis le menu, l'accueil et la fin de partie. Les choix sont gardés d'une partie à l'autre :
| Choix | Options | Par défaut |
| --- | --- | --- |
| Type de partie | partie libre, ou match en 3, 5, 7 ou 11 points | partie libre |
| Niveau | six niveaux, de Débutant à Champion | Intermédiaire |
| Conseil du maître | activé ou non | activé |
- **Pendant un match**, l'écran de jeu montre :
- « Match en N points » et le score de chaque camp ;
- « partie Crawford » quand c'est le cas : le videau est alors masqué.
- **Fin de partie** : « Partie suivante » lance la partie suivante avec le score. En fin de match, le panneau donne le vainqueur et le score final.
- **L'ordinateur double, prend et passe comme celui de GNU Backgammon**, au niveau choisi.
## Comment
Le travail a été délégué à un sous-agent, interrompu une fois par la limite d'usage. Aucune règle n'est écrite hors du moteur.
**Moteur** : trois fonctions ajoutées à `engine.h`. Aucun fichier de gnubg n'est modifié.
- `engine_level_double_decision` et `engine_level_take_decision` reprennent `ComputerTurn` de gnubg (play.c l. 1312-1398 et 1139-1235) : fenêtre de marché, double facultatif à 0 pli, réponse au double.
- `engine_match_after_game` donne le score après une partie, la fin du match et la partie Crawford suivante (play.c l. 1817-1820).
engine-cli les expose (`double`, `take`, `aftergame`), et `matchid` code désormais un match.
**Domaine** :
- chaque partie d'un match est une partie à part entière ;
- son `GameStarted` porte le niveau et le match ;
- son `GameEnded` porte le match après la partie, tel que le moteur l'a calculé ;
- l'adaptateur passe le match au moteur dans le Match ID.
**Format des événements, version 2** : une migration testée (`migrateJournal`) rend explicite le niveau des anciennes parties, qui était implicitement 2 plis. L'ADR 0007 est amendé pour le format, l'ADR 0013 pour la nouvelle adresse.
**Correspondance des niveaux**, documentée dans `docs/glossaire/niveau-de-jeu.md` :
| Nom affiché | Niveau gnubg |
| --- | --- |
| Débutant | beginner |
| Amateur | casual |
| Intermédiaire | intermediate |
| Avancé | advanced |
| Expert | 0 pli |
| Champion | 2 plis |
**Vérification**, après fusion de main (MR !44) :
- `make lint` : aucun problème ;
- `make test` : 10/10, dont le scénario `jouer-un-match.feature` (niveau ; match en 3 points avec dés imposés ; Crawford ; Jacoby) ;
- `make test-browser` : passe en un seul passage dans Chromium et Firefox. Le nouveau script `match.mjs` joue un match en 3 points jusqu'au bout, avec une partie Crawford et un rechargement en plein match.
## Choix et compromis
- **Un journal par partie**, plutôt qu'un seul journal pour tout le match. Les branches, l'export SGF et « Mes parties » ne changent pas. En contrepartie, « Mes parties » montre chaque partie du match séparément.
- **Les niveaux 3 et 4 plis sont écartés** : trop lents sur le téléphone.
- **Pas de castor** : l'ordinateur prend, comme gnubg quand il ne peut pas en faire.
- **Longueur de match par défaut de 5 points** : la charte ne la fixe pas. Pierre peut la changer.
- **Le conseil du maître n'est encore qu'un réglage** : le conseil lui-même arrive avec 1d.
- **« Nouvelle partie » dans le menu** ouvre désormais l'écran des choix, au lieu de lancer la partie tout de suite.
## Risques et déploiement
- **Journaux migrés en version 2** à leur reprise. Une version antérieure de l'application ne relirait plus une partie reprise par celle-ci. Le schéma IndexedDB, lui, ne change pas.
- **Moteur WebAssembly modifié** : il est reconstruit par `make site` et distribué par le mécanisme de mise à jour.
- **Retour arrière** : annuler la fusion. Les parties jouées entre-temps restent en version 2.
## Comment vérifier
```
make lint && make test && make test-browser
build/engine-cli --level 2ply double /38AAABQAAAAAA MAEAAAAAAAAA
build/engine-cli aftergame MAFgAAAAAAAE 0 2 # partie Crawford suivante
ls build/browser-shots/match/
```
Après la publication, ouvrir `#/nouvelle-partie`, choisir un match en 3 points au niveau Débutant, et le jouer jusqu'au bout.
## Hors périmètre
- **« Mes parties »** : l'affichage du match lui-même.
- **Export SGF** : le numéro de la partie dans le match et la règle de Jacoby.
- **Conseil du maître** : il arrive avec 1d.
- **Fairphone 4** : l'essai du niveau Champion sur le téléphone.
Generated with Claude Code https://claude.com/claude-code
Fenêtre de marché et double facultatif à 0 pli (play.c), réponse au
double, règle de Crawford automatique ; commandes double, take et
aftergame d'engine-cli, matchid étendu aux matchs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Partie de match (score et Crawford dits par le moteur), niveau choisi
porté par GameStarted, ordinateur joué comme ComputerTurn de gnubg ;
migration des journaux de la version 1 ; scénarios, glossaire, ADR 0007
et 0013 amendés.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Écran #/nouvelle-partie (type de partie, niveau, conseil du maître,
choix gardés), score du match en portrait et en paysage, videau caché
pendant la partie Crawford, « Partie suivante » ; test navigateur d'un
match en 3 points jusqu'au bout.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conflits résolus dans web/app.css (styles ajoutés des deux côtés) et
app/src/ui/help.ts (commentaire de main, fiche de la branche).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Après la fusion de main, l'aide amenait la carte du terme en haut alors
que la marge de défilement est posée sur son titre (dt).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conflits : l'aide garde l'approche de main (défilement sur la carte du
terme) ; styles des deux côtés conservés.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Paysage : pendant la partie Crawford, la consigne de la bande centrale
commence par « Partie Crawford · » ; la police se resserre si besoin.
- Écran « Nouvelle partie » en paysage : deux colonnes au-dessus de la
barre d'action (type de partie et longueur à gauche, niveau et conseil
du maître à droite), tout tient en 915x412 et en 844x320.
- Fin de partie : « Rejouer » relance tout de suite une partie aux mêmes
réglages (un match de même longueur après un match), « Partie suivante »
dans un match qui continue, lien « Changer les réglages ».
- Recette automatique : aucun élément interactif visible sous une barre
d'action collée, vérifié sur chaque écran capturé (tests/browser/recette.mjs).
- Scénario « Comment rejouer avec les mêmes réglages ? ».
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Pourquoi
Jusqu'ici, l'application ne proposait qu'une partie libre, contre un ordinateur de niveau fixe (2 plis). Un débutant de l'Atelier du Huit jouait donc contre un adversaire trop fort, et un joueur de club ne pouvait pas s'entraîner au match, la forme habituelle des tournois.
La sous-étape 1c de
docs/etape-1.mddemande de choisir sa partie :La charte (
docs/identite/charte/ecrans-etape-1.md, chapitre 1c) fixe l'écran et l'affichage du score.Quoi
Écran « Nouvelle partie » (
#/nouvelle-partie). Il s'ouvre depuis le menu, l'accueil et la fin de partie. Les choix sont gardés d'une partie à l'autre :Pendant un match, l'écran de jeu montre :
Fin de partie : « Partie suivante » lance la partie suivante avec le score. En fin de match, le panneau donne le vainqueur et le score final.
L'ordinateur double, prend et passe comme celui de GNU Backgammon, au niveau choisi.
Comment
Le travail a été délégué à un sous-agent, interrompu une fois par la limite d'usage. Aucune règle n'est écrite hors du moteur.
Moteur : trois fonctions ajoutées à
engine.h. Aucun fichier de gnubg n'est modifié.engine_level_double_decisionetengine_level_take_decisionreprennentComputerTurnde gnubg (play.c l. 1312-1398 et 1139-1235) : fenêtre de marché, double facultatif à 0 pli, réponse au double.engine_match_after_gamedonne le score après une partie, la fin du match et la partie Crawford suivante (play.c l. 1817-1820).engine-cli les expose (
double,take,aftergame), etmatchidcode désormais un match.Domaine :
GameStartedporte le niveau et le match ;GameEndedporte le match après la partie, tel que le moteur l'a calculé ;Format des événements, version 2 : une migration testée (
migrateJournal) rend explicite le niveau des anciennes parties, qui était implicitement 2 plis. L'ADR 0007 est amendé pour le format, l'ADR 0013 pour la nouvelle adresse.Correspondance des niveaux, documentée dans
docs/glossaire/niveau-de-jeu.md:Vérification, après fusion de main (MR !44) :
make lint: aucun problème ;make test: 10/10, dont le scénariojouer-un-match.feature(niveau ; match en 3 points avec dés imposés ; Crawford ; Jacoby) ;make test-browser: passe en un seul passage dans Chromium et Firefox. Le nouveau scriptmatch.mjsjoue un match en 3 points jusqu'au bout, avec une partie Crawford et un rechargement en plein match.Choix et compromis
Risques et déploiement
make siteet distribué par le mécanisme de mise à jour.Comment vérifier
Après la publication, ouvrir
#/nouvelle-partie, choisir un match en 3 points au niveau Débutant, et le jouer jusqu'au bout.Hors périmètre
Generated with Claude Code https://claude.com/claude-code