Compare commits

...
7 Commits
Author SHA1 Message Date
pierre 4837d5c26e Fusion de la MR !26 : journal 2026-11-03 08:58:54 +00:00
Pierre MARTINandClaude Opus 5.5 31174e9817 Journal : coordination design et développement
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 09:58:52 +01:00
pierre 6793a0a3db Fusion de la MR !25 : couleur des flèches 2026-11-03 08:57:24 +00:00
Pierre MARTINandClaude Opus 5.5 e8372872be Charte : couleur des flèches selon leur numéro (impaires, paires)
Les flèches impaires sont en point-a (noyer clair), les paires en
point-b (chêne), comme sur un vrai plateau ; le dessin de référence
alternait en miroir. Signalé par Pierre.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 09:57:21 +01:00
Pierre MARTINandClaude Opus 5.5 b5d8eed262 Fusion de la MR !22 : étape 1 découpée, revue UX arbitrée, plans 1a et 0e.3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 07:13:30 +01:00
pierre 5d0cf45539 Fusion de la MR !23 : règles d'interaction 2026-11-03 06:12:51 +00:00
Pierre MARTINandClaude Opus 5.5 4403fc2844 Charte : règles d'interaction, jetons de mouvement, ADR 0012 précisé
interaction.md : réponse immédiate, annuler plutôt que confirmer,
mouvement (durées et courbes), vibrations, clavier sur ordinateur,
mises en page de l'écran de jeu, pictogrammes. ADR 0012 : placement des
contrôles en paysage après la revue UX (colonne de commandes à gauche,
sorties libres, comptes en pastilles sur la barre).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 07:12:49 +01:00
7 changed files with 162 additions and 5 deletions
+20
View File
@@ -77,3 +77,23 @@ paru « vraiment pas optimale ».
La bascule automatique écartée plus haut était celle qui forçait
l'orientation ; ici, seule la mise en page suit l'orientation choisie par le
joueur.
### 2026-11-03 — Placement des contrôles en paysage, après la revue UX
La revue UX de l'étape 0e.2 a montré deux conflits dans le placement décrit
par l'amendement précédent : la moitié basse de la colonne des sorties est une
cible de jeu (toucher fait sortir un pion), et les pions frappés s'empilent
depuis le milieu de la barre. Arbitrage de la session design, sur délégation
de Pierre :
- une colonne de commandes à gauche, dans le cadre : menu en haut, videau au
milieu (il monte ou descend selon son propriétaire), « Annuler le
demi-coup » en bas, remplacé par « Revoir » quand le coup de l'ordinateur
est montré ; « Quitter le plein écran » passe dans le menu ;
- la colonne des sorties reste réservée aux pions sortis ;
- les comptes de points sont des pastilles aux deux bouts de la barre, aux
couleurs du camp, en 13 px.
Maquettes : rangée « Révision UX (étape 0e) : paysage » du canevas
(variantes thème sombre, barre d'adresse visible et fin de partie). Règles de
comportement : `docs/identite/charte/interaction.md`.
+1
View File
@@ -14,6 +14,7 @@ Décisions : ADR 0010. Fichiers du logo et des icônes : `../logo/`.
| Fichier | Contenu |
| --- | --- |
| `guide-de-marque.md` | Règles d'usage : ton, couleurs, typographie, formes, mouvement, icônes, composants |
| `interaction.md` | Comportement : réponse immédiate, annuler plutôt que confirmer, mouvement, vibrations, clavier, mises en page de l'écran de jeu (portrait, paysage, ordinateur), pictogrammes |
| `tokens.json` | Toutes les valeurs, thèmes clair et sombre, avec une note d'usage par couleur |
| `bundle.css` | Styles des composants ; mêmes noms de classes que `web/app.css` |
| `board.js` | Dessin de référence du plateau (repère 640 × 520), pour comparaison |
+1 -1
View File
@@ -34,7 +34,7 @@ window.UstaBoard = (function () {
o += '<rect class="board-tray" x="' + TRAY_X + '" y="' + TB + '" width="' + TRAY_W + '" height="' + (H / 2 - TB - 4) + '" rx="4"/>';
o += '<rect class="board-tray" x="' + TRAY_X + '" y="' + (H / 2 + 4) + '" width="' + TRAY_W + '" height="' + (H / 2 - TB - 4) + '" rx="4"/>';
for (var point = 1; point <= 24; point++) {
var pl = place(point), x = colX(pl.col), cls = (pl.col % 2 === 0) === pl.top ? "point-a" : "point-b";
var pl = place(point), x = colX(pl.col), cls = point % 2 === 1 ? "point-a" : "point-b"; // impairs en noyer, pairs en chêne
var base = pl.top ? TB : H - TB, apex = pl.top ? TB + PH : H - TB - PH;
o += '<polygon class="' + cls + '" points="' + x + ',' + base + ' ' + (x + PW) + ',' + base + ' ' + (x + PW / 2) + ',' + apex + '"/>';
if ((state.targets || []).indexOf(point) >= 0)
+6 -2
View File
@@ -22,7 +22,7 @@ La palette, c'est le bois, les pions et le café, avec **un seul accent : le rou
- `accent-soft` : fond léger pour signaler « c'est à vous », avec du texte `text` dessus.
- Les appréciations de coups ont leurs propres couleurs, distinctes de la brique : `verdict-good` (vert), `verdict-doubtful` (ocre), `verdict-bad` (lie-de-vin). **Toujours avec le mot et l'icône**, jamais la couleur seule.
- `brand-laiton` (via `last-move`) marque le dernier coup joué, comme les charnières en laiton d'un plateau de tavla. Rien d'autre.
- Le plateau : cadre `frame` en noyer, fond `bed`, flèches alternées `point-a` (noyer clair) et `point-b` (chêne), barre `bar`, sorties `tray`. Le joueur a les pions ivoire (`checker-player`, l'apprenti), l'ordinateur les pions noyer (`checker-computer`, le maître), comme dans le logo.
- Le plateau : cadre `frame` en noyer, fond `bed`, flèches impaires en `point-a` (noyer clair) et paires en `point-b` (chêne), barre `bar`, sorties `tray`. Le joueur a les pions ivoire (`checker-player`, l'apprenti), l'ordinateur les pions noyer (`checker-computer`, le maître), comme dans le logo.
- **À éviter** : le vert feutre de casino, le noir et or, les dégradés, les néons.
Les deux thèmes, clair et sombre, sont complets. Tous les textes atteignent 4,5:1 sur leurs fonds dans les deux thèmes ; les contours et marques porteuses de sens, 3:1.
@@ -56,6 +56,10 @@ Sobre et utile : un pion glisse vers sa flèche (150 à 250 ms, sans rebond), le
- Icônes d'interface : traits simples de 2px à bouts ronds, dessinés en SVG dans le code (pas de police d'icônes, pas d'émoji). Les seules icônes du système pour l'instant : les trois appréciations de coups (coche, point d'interrogation, croix) et la copie (deux feuillets).
- Dés, pions et videau sont dessinés en SVG avec les couleurs du plateau, jamais en images.
## Interaction
Règles de comportement (réponse immédiate, annuler plutôt que confirmer, mouvement, vibrations, clavier, mises en page de l’écran de jeu) : section « Interaction ».
## Composants
Plateau (`Board`) et ses pièces (`Checker`, `Die`, `DoublingCube`), boutons (`Button`), barre haute (`TopBar`), zone de consigne (`GamePrompt`), appréciation d'un coup (`MoveVerdict`), fiche de glossaire (`GlossaryCard`), carte de leçon (`LessonCard`) et « Demander à une IA » (`AskAI`). Chacun a sa fiche avec ses règles d'usage et un aperçu dans les deux thèmes.
Plateau (`Board`) et ses pièces (`Checker`, `Die`, `DoublingCube`), boutons (`Button`), barre haute (`TopBar`), zone de consigne (`GamePrompt`), appréciation d’un coup (`MoveVerdict`), pictogrammes (`Icons`), fiche de glossaire (`GlossaryCard`), carte de leçon (`LessonCard`) et « Demander à une IA » (`AskAI`). Chacun a sa fiche avec ses règles d'usage et un aperçu dans les deux thèmes.
+72
View File
@@ -0,0 +1,72 @@
# Interaction
Ustagammon doit se sentir **net et rapide**, comme un outil bien réglé : chaque toucher répond tout de suite, rien ne saute, rien n'interrompt la partie sans raison. La chaleur vient de la matière et du ton ; la précision vient du comportement.
## Principes
1. **Réponse immédiate.** Un toucher produit un effet visible en moins de 100 ms : le pion part, le bouton s'enfonce. Le moteur calcule ensuite, en arrière-plan ; l'interface ne l'attend jamais pour réagir.
2. **Rien ne bouge sous le doigt.** Les zones de l'écran de jeu ont une hauteur fixe : seuls leurs contenus changent. Une ligne vide garde sa place.
3. **Annuler plutôt que confirmer.** Une action se fait tout de suite et se rattrape pendant 10 s par un bandeau « Reprendre » (nouvelle partie, abandon). Une boîte de confirmation n'est permise que pour une décision de jeu irréversible qui engage la partie : prendre ou passer un double, doubler.
4. **Une seule action principale par moment**, en brique, à droite, sous le pouce.
5. **Le joueur garde la main.** L'app ne joue jamais à sa place : quand aucun coup n'est possible, les dés se barrent et le joueur passe en les touchant (demande explicite de Pierre).
6. **Le maître parle après le coup, discrètement** (ADR 0011) : une ligne réservée sous le plateau, qui s'ouvre sur l'explication si on la touche. Jamais de fenêtre qui s'impose.
7. **Le sens passe toujours par deux canaux** : couleur et mot, vibration et marque visible, raccourci et bouton.
## Mouvement
| Jeton | Valeur | Usage |
| --- | --- | --- |
| `duration-instant` | 90ms | Retour d'appui d'un bouton, apparition du contour d'un pion jouable. |
| `duration-fast` | 160ms | Pion qui glisse d'une flèche à l'autre, dés qui se posent, bandeaux. |
| `duration-moderate` | 240ms | Feuille du menu qui monte, panneau de fin de partie, bascule de mise en page. |
| `easing-standard` | cubic-bezier(0.2, 0, 0, 1) | Tout ce qui se déplace : départ franc, arrivée douce. |
| `easing-exit` | cubic-bezier(0.4, 0, 1, 1) | Ce qui disparaît. |
- Pas de rebond, pas d'élastique, pas de fondu de plus de 240 ms.
- Les coups de l'ordinateur se jouent demi-coup par demi-coup, 160 ms par pion, 120 ms de pause entre deux : on suit le coup sans l'attendre.
- Le bouton enfoncé descend de 1 px et s'assombrit de 6 %, sans ombre.
- `prefers-reduced-motion` : les déplacements deviennent des apparitions instantanées ; les dés ne roulent pas.
## Vibrations
Activées par défaut, désactivables dans le menu (« Vibrations »). Elles doublent un événement visible, jamais seules. Rien ne vibre pour un toucher de bouton ni pour le lancer des dés.
| Moment | Motif (ms) |
| --- | --- |
| Votre pion se pose | `12` |
| Un pion est frappé | `25, 40, 25` |
| L'ordinateur propose de doubler | `40, 60, 40` |
| Fin de partie gagnée | `30, 50, 30, 50, 60` |
| Fin de partie perdue | `60` |
Les durées se règlent en main sur le Fairphone 4. Une seule vibration à la fois : la dernière annule la précédente.
## Clavier (ordinateur)
Chaque action a son raccourci, affiché sur le bouton en petite touche (`kbd`) quand un clavier est détecté. `?` ouvre la liste.
| Touche | Action |
| --- | --- |
| `Espace` | Lancer les dés ; jouer le coup quand il est complet ; passer quand aucun coup n'est possible |
| `←` `→` | Choisir un pion jouable (le focus se voit : anneau `focus`) |
| `↑` `↓` | Choisir sa case d'arrivée |
| `Entrée` | Poser le pion |
| `Z` | Annuler le demi-coup (aussi `Ctrl+Z`) |
| `D` | Doubler |
| `P` / `N` | Prendre / passer, quand l'ordinateur double |
| `F` | Plein écran |
| `M` | Menu |
| `?` | Aide et raccourcis |
| `Échap` | Fermer le menu, l'aide ou la bulle ouverte ; ne touche jamais à la partie |
Le plateau entier se joue au clavier : c'est aussi ce qui le rend accessible aux lecteurs d'écran.
## Pictogrammes
Trait de 2 px à bouts ronds, sur une grille de 20 × 20, `currentColor`, dessinés en SVG dans le code. Le jeu complet : menu, aide, plein écran, quitter le plein écran, annuler (flèche de retour), revoir (flèche circulaire), fermer, chevron, copier, et les trois appréciations (coche, point d'interrogation, croix dans un cercle). En portrait, la barre haute affiche un libellé de 13 px sous chaque pictogramme ; en paysage et sur ordinateur, le pictogramme seul avec son `aria-label`.
## Mises en page de l'écran de jeu
- **Portrait** : barre haute, bandeau de l'ordinateur, plateau, bandeau du joueur (teinté `accent-soft` quand c'est à lui), ligne du maître ou du dernier coup, consigne, et barre d'actions collée en bas. Hauteurs fixes.
- **Paysage** (dès que le téléphone est tourné ; ADR 0012) : le plateau est l'écran. Colonne de commandes à gauche dans le cadre (menu, videau, annuler ou revoir), sorties à droite, comptes de points en pastilles aux deux bouts de la barre, consigne et dés dans la bande centrale. Numéros des flèches à 12 px au moins.
- **Ordinateur** : plateau à gauche, colonne à droite avec les bandeaux des joueurs, la liste des coups, la consigne, les actions et leurs raccourcis.
+35 -2
View File
@@ -195,7 +195,7 @@
"light": "#6B4430",
"dark": "#3A2519"
},
"usage": "Flèches sombres (noyer clair), une sur deux."
"usage": "Flèches impaires (1, 3, 5…), noyer clair."
},
{
"name": "point-b",
@@ -203,7 +203,7 @@
"light": "#C9AE88",
"dark": "#7E6142"
},
"usage": "Flèches claires (chêne), une sur deux."
"usage": "Flèches paires (2, 4, 6…), chêne."
},
{
"name": "point-number",
@@ -526,5 +526,38 @@
},
"meta": {
"source": "Brief créatif + ADR 0010 + web/app.css (noms des variables du plateau)"
},
"duration": {
"tokens": [
{
"name": "duration-instant",
"value": "90ms",
"usage": "Retour d'appui d'un bouton, contour d'un pion jouable."
},
{
"name": "duration-fast",
"value": "160ms",
"usage": "Pion qui glisse, dés qui se posent, bandeaux."
},
{
"name": "duration-moderate",
"value": "240ms",
"usage": "Feuille du menu, panneau de fin de partie, bascule de mise en page. Jamais plus long."
}
]
},
"easing": {
"tokens": [
{
"name": "easing-standard",
"value": "cubic-bezier(0.2, 0, 0, 1)",
"usage": "Tout ce qui se déplace : départ franc, arrivée douce."
},
{
"name": "easing-exit",
"value": "cubic-bezier(0.4, 0, 1, 1)",
"usage": "Ce qui disparaît."
}
]
}
}
+27
View File
@@ -136,3 +136,30 @@ Une entrée datée par session : ce qui a été fait, décidé, et la suite.
**Reste à faire**
- Firefox sur le téléphone reste à mesurer.
## 2026-11-03 (jour) : coordination design et développement
**Fait**
- Leçons numérotées, conseil du maître après le coup et bilan de fin de partie
retenus par Pierre (ADR 0011) ; mode immersif en paysage (ADR 0012), puis
vue paysage dès la rotation, avec le plateau qui occupe tout l'écran.
- Revue UX du designer de la session de développement (étape 0e.2), arbitrée
par la session design sur délégation de Pierre : portrait à zones fixes,
compte de points en bandeaux (pastilles en paysage), menu en feuille,
« annuler plutôt que confirmer », pas de passage automatique du tour,
vibrations, pictogrammes, clavier sur ordinateur. Règles dans
`docs/identite/charte/interaction.md` (MR !23), second amendement de
l'ADR 0012 (placement des contrôles en paysage).
- Maquettes des variantes sur le canevas (paysage clair, sombre, avec barre
d'adresse, fin de partie ; portrait révisé, conseil, nouvelle partie
annulable ; menu ; ordinateur avec raccourcis).
- Couleur des flèches corrigée dans la charte (impaires en noyer clair, paires
en chêne ; MR !25). La correction dans l'app est faite par la session de
développement, dans la MR de saisie du coup.
**Reste à faire**
- Implémentation par la session de développement (plan
`docs/plans/2026-11-03-revision-ux.md`), puis revue design sur ses captures
Playwright (412×915, 915×412, 844×320, clair et sombre) avant l'essai de
Pierre sur le téléphone.
- Réglage en main des vibrations sur le Fairphone 4.