La sous-étape 1i demande des gestes naturels sur le plateau (cadrage, principe d'expérience 2). Jusqu'ici, on ne pouvait que toucher un pion, puis toucher sa case d'arrivée.
La charte (ecrans-etape-1.md, chapitre 1i) décrit deux gestes :
le glisser-déposer : pion agrandi à 115 %, porté 12 px au-dessus du doigt, fantôme au point de départ, retour silencieux s'il est lâché hors d'une case permise ;
le double toucher : il joue le seul coup évident.
La révision UX avait laissé de côté le clavier complet. Le filet intérieur des pions, l'écho du logo, n'était pas dessiné.
Quoi
Glisser-déposer, à la souris comme au doigt. Lâché sur une case permise, le pion s'y pose en 160 ms et le téléphone vibre. Lâché ailleurs, le pion revient sans vibration ni message. Le toucher pion puis case reste possible.
Double toucher. Deux touchers rapprochés sur un pion jouent le coup évident :
soit le seul coup légal complet qui commence par ce pion ;
soit le seul coup possible.
S'il n'y a pas de coup évident, le second toucher compte comme un toucher simple. Le coup attend ensuite sa validation, comme tout coup saisi.
Clavier. ← → choisissent un pion, ↑ ↓ choisissent sa case, Entrée le pose. Les raccourcis s'affichent en petites touches sur ordinateur.
Filet des pions. Chaque pion porte son filet intérieur.
Comment
Le travail a été délégué à un sous-agent, interrompu par la limite d'usage.
Domaine. Il gagne Game.obviousMove. Chaque demi-coup essayé est soumis au moteur (checkHalfMoves), et la recherche s'arrête dès que deux positions finales différentes apparaissent. Aucune règle n'est réimplémentée.
Gestes. Ils sont dans app/src/ui/board-gestures.ts, avec les Pointer Events et la capture du pointeur.
Pion glissé. Il bouge par l'attribut SVG transform, sans redessiner le plateau et sans .style., comme l'exige la CSP. Chaque pion est un groupe disque plus filet, et c'est ce groupe qui glisse : le surcoût est négligeable.
Tests.
Unitaires : obvious-move.test.ts, sur le vrai moteur, et board-gestures.test.ts.
Scénario d'aide « Puis-je faire glisser un pion, ou jouer au clavier ? ».
Test navigateur tests/browser/plateau.mjs : glisser-déposer complet, lâcher hors cible, double toucher, coup joué au clavier, filet des pions.
Vérification :
make lint : aucun problème ;
make test : 10/10 ;
make test-browser : suite complète au vert dans Chromium et Firefox, relancée par la session principale sur la version finale.
Choix et compromis
Second toucher sans coup évident. Il vaut un toucher simple au lieu d'être ignoré, comme le prévoit la charte. Sinon, des touchers rapides sur une pile seraient avalés.
Validation. Le coup évident n'est pas validé d'office : le joueur garde « Annuler ».
touch-action: none. Il est réservé au plateau de la partie ; les autres plateaux laissent défiler la page.
Raccourcis. Ils s'affichent sur ordinateur, ou après une frappe au clavier.
Écarts avec board.js. La barrette laiton, la place du videau et les points des dés restent volontairement comme dans la révision UX, qui fait foi. La session design met board.js à jour.
Risques et déploiement
Format durable. Aucun changement.
À vérifier sur le Fairphone 4. En plein écran, avec le repli par rotation CSS, la position sous le doigt dépend de getScreenCTM.
Retour arrière. Annuler la fusion.
Comment vérifier
make lint && make test && SCRIPTS=plateau make test-browser
ls build/browser-shots/plateau/
Sur le téléphone :
glisser un pion jusqu'à sa case ;
lâcher un pion hors cible : il revient à sa place ;
avec un 6-1 depuis #/position/BQAACAIAAAAAAA, toucher deux fois un pion pour jouer le coup évident.
Hors périmètre
Le tutoriel garde le seul toucher.
La consigne parle encore de « case » au lieu de « flèche » : ce sera corrigé dans le prochain lot.
## Pourquoi
La sous-étape 1i demande des gestes naturels sur le plateau (cadrage, principe d'expérience 2). Jusqu'ici, on ne pouvait que toucher un pion, puis toucher sa case d'arrivée.
La charte (`ecrans-etape-1.md`, chapitre 1i) décrit deux gestes :
- **le glisser-déposer** : pion agrandi à 115 %, porté 12 px au-dessus du doigt, fantôme au point de départ, retour silencieux s'il est lâché hors d'une case permise ;
- **le double toucher** : il joue le seul coup évident.
La révision UX avait laissé de côté le clavier complet. Le filet intérieur des pions, l'écho du logo, n'était pas dessiné.
## Quoi
- **Glisser-déposer**, à la souris comme au doigt. Lâché sur une case permise, le pion s'y pose en 160 ms et le téléphone vibre. Lâché ailleurs, le pion revient sans vibration ni message. Le toucher pion puis case reste possible.
- **Double toucher.** Deux touchers rapprochés sur un pion jouent le coup évident :
- soit le seul coup légal complet qui commence par ce pion ;
- soit le seul coup possible.
S'il n'y a pas de coup évident, le second toucher compte comme un toucher simple. Le coup attend ensuite sa validation, comme tout coup saisi.
- **Clavier.** ← → choisissent un pion, ↑ ↓ choisissent sa case, Entrée le pose. Les raccourcis s'affichent en petites touches sur ordinateur.
- **Filet des pions.** Chaque pion porte son filet intérieur.
## Comment
Le travail a été délégué à un sous-agent, interrompu par la limite d'usage.
- **Domaine.** Il gagne `Game.obviousMove`. Chaque demi-coup essayé est soumis au moteur (`checkHalfMoves`), et la recherche s'arrête dès que deux positions finales différentes apparaissent. Aucune règle n'est réimplémentée.
- **Gestes.** Ils sont dans `app/src/ui/board-gestures.ts`, avec les Pointer Events et la capture du pointeur.
- **Pion glissé.** Il bouge par l'attribut SVG `transform`, sans redessiner le plateau et sans `.style.`, comme l'exige la CSP. Chaque pion est un groupe disque plus filet, et c'est ce groupe qui glisse : le surcoût est négligeable.
- **Tests.**
- Unitaires : `obvious-move.test.ts`, sur le vrai moteur, et `board-gestures.test.ts`.
- Scénario d'aide « Puis-je faire glisser un pion, ou jouer au clavier ? ».
- Test navigateur `tests/browser/plateau.mjs` : glisser-déposer complet, lâcher hors cible, double toucher, coup joué au clavier, filet des pions.
**Vérification** :
- `make lint` : aucun problème ;
- `make test` : 10/10 ;
- `make test-browser` : suite complète au vert dans Chromium et Firefox, relancée par la session principale sur la version finale.
## Choix et compromis
- **Second toucher sans coup évident.** Il vaut un toucher simple au lieu d'être ignoré, comme le prévoit la charte. Sinon, des touchers rapides sur une pile seraient avalés.
- **Validation.** Le coup évident n'est pas validé d'office : le joueur garde « Annuler ».
- **`touch-action: none`.** Il est réservé au plateau de la partie ; les autres plateaux laissent défiler la page.
- **Raccourcis.** Ils s'affichent sur ordinateur, ou après une frappe au clavier.
- **Écarts avec `board.js`.** La barrette laiton, la place du videau et les points des dés restent volontairement comme dans la révision UX, qui fait foi. La session design met `board.js` à jour.
## Risques et déploiement
- **Format durable.** Aucun changement.
- **À vérifier sur le Fairphone 4.** En plein écran, avec le repli par rotation CSS, la position sous le doigt dépend de `getScreenCTM`.
- **Retour arrière.** Annuler la fusion.
## Comment vérifier
```
make lint && make test && SCRIPTS=plateau make test-browser
ls build/browser-shots/plateau/
```
Sur le téléphone :
- glisser un pion jusqu'à sa case ;
- lâcher un pion hors cible : il revient à sa place ;
- avec un 6-1 depuis `#/position/BQAACAIAAAAAAA`, toucher deux fois un pion pour jouer le coup évident.
## Hors périmètre
- Le tutoriel garde le seul toucher.
- La consigne parle encore de « case » au lieu de « flèche » : ce sera corrigé dans le prochain lot.
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
La sous-étape 1i demande des gestes naturels sur le plateau (cadrage, principe d'expérience 2). Jusqu'ici, on ne pouvait que toucher un pion, puis toucher sa case d'arrivée.
La charte (
ecrans-etape-1.md, chapitre 1i) décrit deux gestes :La révision UX avait laissé de côté le clavier complet. Le filet intérieur des pions, l'écho du logo, n'était pas dessiné.
Quoi
Glisser-déposer, à la souris comme au doigt. Lâché sur une case permise, le pion s'y pose en 160 ms et le téléphone vibre. Lâché ailleurs, le pion revient sans vibration ni message. Le toucher pion puis case reste possible.
Double toucher. Deux touchers rapprochés sur un pion jouent le coup évident :
S'il n'y a pas de coup évident, le second toucher compte comme un toucher simple. Le coup attend ensuite sa validation, comme tout coup saisi.
Clavier. ← → choisissent un pion, ↑ ↓ choisissent sa case, Entrée le pose. Les raccourcis s'affichent en petites touches sur ordinateur.
Filet des pions. Chaque pion porte son filet intérieur.
Comment
Le travail a été délégué à un sous-agent, interrompu par la limite d'usage.
Game.obviousMove. Chaque demi-coup essayé est soumis au moteur (checkHalfMoves), et la recherche s'arrête dès que deux positions finales différentes apparaissent. Aucune règle n'est réimplémentée.app/src/ui/board-gestures.ts, avec les Pointer Events et la capture du pointeur.transform, sans redessiner le plateau et sans.style., comme l'exige la CSP. Chaque pion est un groupe disque plus filet, et c'est ce groupe qui glisse : le surcoût est négligeable.obvious-move.test.ts, sur le vrai moteur, etboard-gestures.test.ts.tests/browser/plateau.mjs: glisser-déposer complet, lâcher hors cible, double toucher, coup joué au clavier, filet des pions.Vérification :
make lint: aucun problème ;make test: 10/10 ;make test-browser: suite complète au vert dans Chromium et Firefox, relancée par la session principale sur la version finale.Choix et compromis
touch-action: none. Il est réservé au plateau de la partie ; les autres plateaux laissent défiler la page.board.js. La barrette laiton, la place du videau et les points des dés restent volontairement comme dans la révision UX, qui fait foi. La session design metboard.jsà jour.Risques et déploiement
getScreenCTM.Comment vérifier
Sur le téléphone :
#/position/BQAACAIAAAAAAA, toucher deux fois un pion pour jouer le coup évident.Hors périmètre
Generated with Claude Code https://claude.com/claude-code