Au premier test sur le Fairphone 4, le 2026-11-03, Pierre a trouvé la saisie du coup moins confortable que dans CBG (GNU Backgammon pour Android) :
un pion qui n'a qu'une destination demande deux touchers ;
le coup part dès le dernier demi-coup, sans possibilité de se reprendre ;
on ne voit pas quels dés ont déjà servi ;
seuls les dés en attente réagissent au toucher ;
toucher le videau propose le double sans confirmation, alors qu'un double ne se reprend pas.
Ce sont les points 6, 7, 8, 9 et 11 de son message.
Il a aussi demandé de « supprimer la partie test du moteur totalement » (point 1). Les pages /moteur/ de l'étape 0b n'ont plus d'usage depuis les mesures de l'ADR 0009.
Enfin, la session « identité » a relayé un défaut qu'il a remarqué : les flèches 12 et 13 avaient la même couleur, contrairement à la charte (impaires en point-a, paires en point-b).
Quoi
Toucher un pion qui n'a qu'une case d'arrivée le joue aussitôt. S'il en a plusieurs, ses cases s'allument comme avant.
Le coup attend la validation. Une fois tous les dés joués, ou quand plus rien n'est jouable, on le valide en touchant les dés (d'un côté ou de l'autre du plateau) ou avec « Valider ». Jusque-là, « Annuler » reprend le dernier pion déplacé, un à la fois.
Chaque dé déjà joué est estompé. Un double s'affiche en quatre dés, estompés un par un.
Les zones de dés des deux moitiés du plateau lancent les dés quand c'est le moment de lancer.
Toucher le videau ou « Doubler » ouvre une confirmation : « Doubler à 2 ? L'ordinateur pourra prendre ou passer. », avec Doubler et Annuler.
Plus rien sous /moteur/. Le site n'a plus de pages de test, et l'aide n'y renvoie plus. make bench mesure toujours le moteur sous Node, avec engine-wasm/benchmark.mjs. L'ADR 0009 reçoit un amendement daté.
La couleur des flèches suit leur numéro, et non plus leur colonne (pointColor dans board-model.ts, avec son test).
Comment
Le travail a été délégué à un sous-agent, selon le plan docs/plans/2026-11-03-saisie-du-coup.md, supprimé dans cette MR. L'agent a été interrompu une fois par la limite d'usage, puis a repris. La couleur des flèches lui a été confiée en cours de route, pour éviter un conflit dans board-view.ts.
La partie reste un journal d'événements (ADR 0007). Le coup en cours de saisie vit dans le domaine, hors du journal :
c'est une pile de demi-coups ;
chaque demi-coup garde la position après lui et l'indicateur « coup complet » rendu par le moteur (checkHalfMoves) ;
undoLastHalfMove dépile ;
confirmMove écrit enfin MovePlayed.
Aucune règle n'est réimplémentée : ce qui est légal et ce qui est complet vient toujours du moteur.
Les dés utilisés se retrouvent avec la formule qui génère déjà les candidats dans nextHalfMoves : de « from » vers « from − dé », ou vers la sortie. La confirmation du videau est un <dialog> natif, ouvert par showModal(). Il est accessible et compatible avec la CSP stricte : aucun script ni style en ligne.
La session principale a fusionné main dans la branche sans conflit, puis relancé les trois commandes :
make lint : aucun problème ;
make test : 10/10, avec 12 scénarios Cucumber ;
make test-browser : Chromium et Firefox au vert. Sous Firefox, par exemple : 43 demi-coups d'un seul toucher et 7 en deux, 21 coups validés (dont 7 par le bouton), 3 doubles en quatre dés, des lancers en touchant les deux côtés, la confirmation du videau, aucune violation de CSP, aucune erreur.
Choix et compromis
Le coup en cours reste hors du journal : il ne survit pas à un rechargement de la page. L'enregistrer demanderait de nouveaux événements, donc de changer le format durable du journal. Ce n'est pas justifié pour quelques secondes de saisie.
La validation explicite ajoute un toucher par coup. C'est le comportement de CBG demandé par Pierre ; le toucher unique pour un pion à destination unique le compense.
« Annuler » occupe l'écran pendant le recalcul des coups possibles. Sans ce blocage, une course apparaissait sous Firefox : les dés étaient relus avant le redessin.
Quand plusieurs dés produisent la même sortie, le plus petit est marqué comme joué. C'est une convention d'affichage, à revoir si Pierre en préfère une autre.
Risques et déploiement
Parties en cours : leurs coups sont dans le journal, elles se reprennent normalement.
Cache : le service worker change de version avec le site, ce qui efface l'ancien cache, pages /moteur/ comprises.
Instabilité des tests sous charge : les tests construisent une image Docker locale, ustagammon/site-test:local. Quand deux sessions la construisent en même temps, docker build échoue parfois avec « parent snapshot ... does not exist ». Une nouvelle tentative passe. C'est la cause probable de l'échec unique de make test vu deux fois aujourd'hui. Correctif prévu : un nom d'image propre à chaque copie de travail.
Retour arrière : redéployer l'image précédente dans CapRover (docs/deploiement.md).
Comment vérifier
git switch main && git pull
make lint && make test && make test-browser
make site && ls build/site # pas de dossier moteur
curl -sI https://ustagammon.sans.pub/moteur/ # 404 après déploiement
## Pourquoi
Au premier test sur le Fairphone 4, le 2026-11-03, Pierre a trouvé la saisie du coup moins confortable que dans CBG (GNU Backgammon pour Android) :
- un pion qui n'a qu'une destination demande deux touchers ;
- le coup part dès le dernier demi-coup, sans possibilité de se reprendre ;
- on ne voit pas quels dés ont déjà servi ;
- seuls les dés en attente réagissent au toucher ;
- toucher le videau propose le double sans confirmation, alors qu'un double ne se reprend pas.
Ce sont les points 6, 7, 8, 9 et 11 de son message.
Il a aussi demandé de « supprimer la partie test du moteur totalement » (point 1). Les pages /moteur/ de l'étape 0b n'ont plus d'usage depuis les mesures de l'ADR 0009.
Enfin, la session « identité » a relayé un défaut qu'il a remarqué : les flèches 12 et 13 avaient la même couleur, contrairement à la charte (impaires en point-a, paires en point-b).
## Quoi
- **Toucher un pion qui n'a qu'une case d'arrivée le joue aussitôt.** S'il en a plusieurs, ses cases s'allument comme avant.
- **Le coup attend la validation.** Une fois tous les dés joués, ou quand plus rien n'est jouable, on le valide en touchant les dés (d'un côté ou de l'autre du plateau) ou avec « Valider ». Jusque-là, « Annuler » reprend le dernier pion déplacé, un à la fois.
- **Chaque dé déjà joué est estompé.** Un double s'affiche en quatre dés, estompés un par un.
- **Les zones de dés des deux moitiés du plateau lancent les dés** quand c'est le moment de lancer.
- **Toucher le videau ou « Doubler » ouvre une confirmation** : « Doubler à 2 ? L'ordinateur pourra prendre ou passer. », avec Doubler et Annuler.
- **Plus rien sous /moteur/.** Le site n'a plus de pages de test, et l'aide n'y renvoie plus. `make bench` mesure toujours le moteur sous Node, avec `engine-wasm/benchmark.mjs`. L'ADR 0009 reçoit un amendement daté.
- **La couleur des flèches suit leur numéro**, et non plus leur colonne (`pointColor` dans `board-model.ts`, avec son test).
## Comment
Le travail a été délégué à un sous-agent, selon le plan `docs/plans/2026-11-03-saisie-du-coup.md`, supprimé dans cette MR. L'agent a été interrompu une fois par la limite d'usage, puis a repris. La couleur des flèches lui a été confiée en cours de route, pour éviter un conflit dans `board-view.ts`.
La partie reste un journal d'événements (ADR 0007). Le coup en cours de saisie vit dans le domaine, hors du journal :
- c'est une pile de demi-coups ;
- chaque demi-coup garde la position après lui et l'indicateur « coup complet » rendu par le moteur (`checkHalfMoves`) ;
- `undoLastHalfMove` dépile ;
- `confirmMove` écrit enfin MovePlayed.
Aucune règle n'est réimplémentée : ce qui est légal et ce qui est complet vient toujours du moteur.
Les dés utilisés se retrouvent avec la formule qui génère déjà les candidats dans `nextHalfMoves` : de « from » vers « from − dé », ou vers la sortie. La confirmation du videau est un `<dialog>` natif, ouvert par `showModal()`. Il est accessible et compatible avec la CSP stricte : aucun script ni style en ligne.
La session principale a fusionné `main` dans la branche sans conflit, puis relancé les trois commandes :
- `make lint` : aucun problème ;
- `make test` : 10/10, avec 12 scénarios Cucumber ;
- `make test-browser` : Chromium et Firefox au vert. Sous Firefox, par exemple : 43 demi-coups d'un seul toucher et 7 en deux, 21 coups validés (dont 7 par le bouton), 3 doubles en quatre dés, des lancers en touchant les deux côtés, la confirmation du videau, aucune violation de CSP, aucune erreur.
## Choix et compromis
- **Le coup en cours reste hors du journal** : il ne survit pas à un rechargement de la page. L'enregistrer demanderait de nouveaux événements, donc de changer le format durable du journal. Ce n'est pas justifié pour quelques secondes de saisie.
- **La validation explicite ajoute un toucher par coup.** C'est le comportement de CBG demandé par Pierre ; le toucher unique pour un pion à destination unique le compense.
- **« Annuler » occupe l'écran pendant le recalcul des coups possibles.** Sans ce blocage, une course apparaissait sous Firefox : les dés étaient relus avant le redessin.
- **Quand plusieurs dés produisent la même sortie, le plus petit est marqué comme joué.** C'est une convention d'affichage, à revoir si Pierre en préfère une autre.
## Risques et déploiement
- **Parties en cours :** leurs coups sont dans le journal, elles se reprennent normalement.
- **Cache :** le service worker change de version avec le site, ce qui efface l'ancien cache, pages /moteur/ comprises.
- **Instabilité des tests sous charge :** les tests construisent une image Docker locale, `ustagammon/site-test:local`. Quand deux sessions la construisent en même temps, `docker build` échoue parfois avec « parent snapshot ... does not exist ». Une nouvelle tentative passe. C'est la cause probable de l'échec unique de `make test` vu deux fois aujourd'hui. Correctif prévu : un nom d'image propre à chaque copie de travail.
- **Retour arrière :** redéployer l'image précédente dans CapRover (`docs/deploiement.md`).
## Comment vérifier
```
git switch main && git pull
make lint && make test && make test-browser
make site && ls build/site # pas de dossier moteur
curl -sI https://ustagammon.sans.pub/moteur/ # 404 après déploiement
```
Sur le téléphone, avec https://ustagammon.sans.pub :
- toucher un pion qui n'a qu'une case d'arrivée ;
- finir un coup et constater qu'il attend ;
- toucher « Annuler » deux fois ;
- toucher les dés de gauche pour valider ;
- lancer un double et voir quatre dés ;
- toucher le videau et lire la question ;
- vérifier que les flèches 12 et 13 n'ont pas la même couleur.
## Hors périmètre
- Garder le coup en cours après un rechargement de la page.
- Une page de mesure du moteur sur le téléphone : les chiffres de l'ADR 0009 restent la référence.
- La révision UX arbitrée (0e.3), qui suit.
Generated with Claude Code https://claude.com/claude-code
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
Au premier test sur le Fairphone 4, le 2026-11-03, Pierre a trouvé la saisie du coup moins confortable que dans CBG (GNU Backgammon pour Android) :
Ce sont les points 6, 7, 8, 9 et 11 de son message.
Il a aussi demandé de « supprimer la partie test du moteur totalement » (point 1). Les pages /moteur/ de l'étape 0b n'ont plus d'usage depuis les mesures de l'ADR 0009.
Enfin, la session « identité » a relayé un défaut qu'il a remarqué : les flèches 12 et 13 avaient la même couleur, contrairement à la charte (impaires en point-a, paires en point-b).
Quoi
make benchmesure toujours le moteur sous Node, avecengine-wasm/benchmark.mjs. L'ADR 0009 reçoit un amendement daté.pointColordansboard-model.ts, avec son test).Comment
Le travail a été délégué à un sous-agent, selon le plan
docs/plans/2026-11-03-saisie-du-coup.md, supprimé dans cette MR. L'agent a été interrompu une fois par la limite d'usage, puis a repris. La couleur des flèches lui a été confiée en cours de route, pour éviter un conflit dansboard-view.ts.La partie reste un journal d'événements (ADR 0007). Le coup en cours de saisie vit dans le domaine, hors du journal :
checkHalfMoves) ;undoLastHalfMovedépile ;confirmMoveécrit enfin MovePlayed.Aucune règle n'est réimplémentée : ce qui est légal et ce qui est complet vient toujours du moteur.
Les dés utilisés se retrouvent avec la formule qui génère déjà les candidats dans
nextHalfMoves: de « from » vers « from − dé », ou vers la sortie. La confirmation du videau est un<dialog>natif, ouvert parshowModal(). Il est accessible et compatible avec la CSP stricte : aucun script ni style en ligne.La session principale a fusionné
maindans la branche sans conflit, puis relancé les trois commandes :make lint: aucun problème ;make test: 10/10, avec 12 scénarios Cucumber ;make test-browser: Chromium et Firefox au vert. Sous Firefox, par exemple : 43 demi-coups d'un seul toucher et 7 en deux, 21 coups validés (dont 7 par le bouton), 3 doubles en quatre dés, des lancers en touchant les deux côtés, la confirmation du videau, aucune violation de CSP, aucune erreur.Choix et compromis
Risques et déploiement
ustagammon/site-test:local. Quand deux sessions la construisent en même temps,docker buildéchoue parfois avec « parent snapshot ... does not exist ». Une nouvelle tentative passe. C'est la cause probable de l'échec unique demake testvu deux fois aujourd'hui. Correctif prévu : un nom d'image propre à chaque copie de travail.docs/deploiement.md).Comment vérifier
Sur le téléphone, avec https://ustagammon.sans.pub :
Hors périmètre
Generated with Claude Code https://claude.com/claude-code