diff --git a/docs/adr/0013-position-dans-l-adresse.md b/docs/adr/0013-position-dans-l-adresse.md index c06ddc1..0ba224a 100644 --- a/docs/adr/0013-position-dans-l-adresse.md +++ b/docs/adr/0013-position-dans-l-adresse.md @@ -47,3 +47,41 @@ moteur sait les lire et les écrire (`engine.h`). - Les liens restent valables tant que GNU Backgammon garde ces formats, stables depuis des années. - Les liens contiennent la position, rien d'autre : pas de donnée personnelle. + +## Amendements + +### 2026-11-03 — Une adresse pour chaque écran, des liens plutôt que des états + +Demandé par Pierre : « il faudra vraiment que chaque page (l'aide, etc.) ait +une URL. Utilise des liens accessibles, pas des états. » Aucun lien de +position n'a encore circulé : le format ci-dessus est remplacé par un schéma +unique pour tous les écrans, avant sa première mise en œuvre. + +- Chaque écran a son adresse, dans le fragment (pour les mêmes raisons + qu'au-dessus : hors ligne, service worker, aucune configuration serveur) : + + | Écran | Adresse | + | --- | --- | + | Partie en cours | `#/` | + | Accueil | `#/accueil` | + | Aide (onglet Jouer) | `#/aide`, une question : `#/aide/` | + | Les mots du jeu | `#/glossaire`, un terme : `#/glossaire/` | + | À propos | `#/a-propos` | + | Tutoriel | `#/tutoriel`, une étape : `#/tutoriel/` | + | Mes parties | `#/parties`, une partie : `#/parties/` | + | Réglages / menu | `#/menu` | + | Une position | `#/position//` (Match ID facultatif) | + + Les identifiants de gnubg sont encodés avec `encodeURIComponent`. Les + écrans à venir (analyse, leçons, progression) suivront le même schéma. +- On change d'écran par de vrais liens (``), pas par des + boutons qui modifient un état caché : le lien se partage, s'ouvre dans un + nouvel onglet, se lit aux lecteurs d'écran comme un lien, et le bouton + « retour » du téléphone ramène à l'écran précédent. Les actions de jeu + (lancer, jouer, doubler) restent des boutons : elles ne sont pas des écrans. +- Les feuilles (menu, explication) et panneaux qui sont des écrans à part + entière ont aussi leur adresse ; une confirmation ou un bandeau éphémère + n'en a pas. +- Une adresse inconnue mène à la partie en cours avec un message clair. +- L'adresse de l'écran courant est la source de vérité de la navigation : + l'application l'écoute (`hashchange`) et dessine l'écran correspondant. diff --git a/docs/feuille-de-route.md b/docs/feuille-de-route.md index d19aa37..e99fed4 100644 --- a/docs/feuille-de-route.md +++ b/docs/feuille-de-route.md @@ -24,7 +24,7 @@ Demandes de Pierre du 2026-11-03, traitées avant d'ouvrir l'étape 1. | Sous-étape | Contenu | État | Plan | | --- | --- | --- | --- | | 0e.3 | Révision UX arbitrée (session « identité », sur délégation de Pierre) : portrait stable, bandeaux de compte de points, menu en feuille et nouvelle partie annulable, vibrations, écran allumé, paysage « plateau = écran » dès la rotation (ADR 0012 amendé) | ⏳ | `plans/2026-11-03-revision-ux.md` | -| 0e.4 | Position dans l'adresse : chaque position du plateau a un lien direct (ADR 0013) | ⏳ | `plans/2026-11-03-position-dans-l-adresse.md` | +| 0e.4 | Une adresse par écran (aide, glossaire, menu, mes parties…) et par position, par de vrais liens (ADR 0013 amendé) | ⏳ | `plans/2026-11-03-position-dans-l-adresse.md` | | 0e.5 | Page d'accueil, installation en un toucher (« Ajouter à l'écran d'accueil », proposée par l'app), tutoriel des règles très didactique avec plateaux illustrés, aide réécrite sur un ton plus humain ; textes à valider par Pierre | ⏳ | `plans/2026-11-03-accueil-tutoriel-aide.md` | ## Étapes suivantes diff --git a/docs/plans/2026-11-03-accueil-tutoriel-aide.md b/docs/plans/2026-11-03-accueil-tutoriel-aide.md index addb98b..6bf31ca 100644 --- a/docs/plans/2026-11-03-accueil-tutoriel-aide.md +++ b/docs/plans/2026-11-03-accueil-tutoriel-aide.md @@ -47,6 +47,8 @@ Traiter les points 2 et 3 du message de Pierre du 2026-11-03 et sa demande d'ins - `beforeinstallprompt` simulé dans Chromium ; - captures dans `build/browser-shots/accueil-tutoriel/` pour la recette design. +Chaque écran (accueil, étapes du tutoriel, onglets et questions de l'aide) a son adresse et s'ouvre par un vrai lien, selon l'amendement de l'ADR 0013 ; le routeur vient de 0e.4. + `make lint`, `make test` et `make test-browser` doivent passer. Aucune nouvelle dépendance. ## Critères de réussite diff --git a/docs/plans/2026-11-03-position-dans-l-adresse.md b/docs/plans/2026-11-03-position-dans-l-adresse.md index a1f3b5d..5c79e45 100644 --- a/docs/plans/2026-11-03-position-dans-l-adresse.md +++ b/docs/plans/2026-11-03-position-dans-l-adresse.md @@ -1,20 +1,29 @@ -# Position dans l'adresse (0e.4) +# Une adresse pour chaque écran, et pour chaque position (0e.4) - **Date** : 2026-11-03 - **Étape** : 0e.4 (feuille de route) -- **Statut** : prévu (après la fusion de la révision UX, qui touche les mêmes fichiers) +- **Statut** : prévu (après la fusion de la révision UX et de 1b) - **Exécutant** : sous-agent general-purpose, dans un worktree ## Objectif -Appliquer l'ADR 0013 : chaque position du plateau a un lien direct. +Appliquer l'ADR 0013 et son amendement du 2026-11-03 : chaque écran (aide, +glossaire, menu, mes parties…) a son adresse et s'ouvre par un vrai lien ; +chaque position du plateau a un lien direct. ## Consignes ADR 0007, 0008 et 0013. Aucune nouvelle dépendance. -1. Lecture du fragment `#position=…&match=…` au chargement et sur - `hashchange` ; validation par le moteur ; message clair si illisible. +0. **Routeur** : un petit module pur (sans dépendance) qui traduit le + fragment en écran et inversement, testé unitairement ; l'app dessine + l'écran demandé par l'adresse, sur `hashchange`. Tous les écrans existants + (aide et ses questions, glossaire et ses termes, à propos, menu, mes + parties de 1b) passent par lui, avec de vrais liens `` ; le bouton + retour du navigateur ramène à l'écran précédent. Les actions de jeu restent + des boutons. +1. Lecture de `#/position//` ; validation par le + moteur ; message clair si illisible. 2. Vue de la position, non jouable, avec « Jouer à partir d'ici » (nouvelle partie depuis la position, la partie en cours restant reprenable) et « Retour à ma partie ». @@ -26,8 +35,10 @@ ADR 0007, 0008 et 0013. Aucune nouvelle dépendance. position (test aller-retour). 5. Scénarios Gherkin (« Ouvrir un lien vers une position », « Partager la position »), fiches du glossaire (Position ID, Match ID si absentes). -6. `make lint`, `make test`, `make test-browser` (ouvrir un lien, jouer à - partir d'ici, revenir, lien invalide). +6. `make lint`, `make test`, `make test-browser` : chaque adresse du tableau + de l'ADR ouverte directement dans un nouvel onglet montre le bon écran ; + « retour » du navigateur ; liens reconnus comme liens (rôle `link`) ; + position : ouvrir un lien, jouer à partir d'ici, revenir, lien invalide. ## Critères de réussite