Pierre a écrit le 2026-11-03 : « Il faudra vraiment que chaque page (l'aide, etc.) ait une URL. Utilise des liens accessibles, pas des états. »
Aujourd'hui, l'aide, le glossaire et le menu s'ouvrent par des boutons qui changent un état caché. On ne peut pas partager ces écrans, ni les ouvrir dans un onglet, ni y revenir avec le bouton retour du téléphone. Un lecteur d'écran ne les annonce pas comme des liens.
L'ADR 0013, accepté le matin même, ne donnait une adresse qu'aux positions du plateau. Il n'est pas encore mis en œuvre et aucun lien n'a circulé, ce qui permet d'élargir son format sans casser de lien existant.
Quoi
ADR 0013, amendement daté :
un schéma d'adresses unique pour tous les écrans, placé dans le fragment de l'adresse :
#/position/<Position ID>/<Match ID> : une position du plateau ;
la navigation par de vrais liens <a href>, alors que les actions de jeu restent des boutons ;
les écrans à venir (analyse, leçons, progression) suivent le même schéma.
Plan 0e.4 : il commence désormais par un petit routeur pur, testé unitairement. Tous les écrans existants passent par lui. Le test navigateur ouvre chaque adresse directement et vérifie le bouton retour.
Plan 0e.5 : l'accueil, le tutoriel et l'aide utiliseront ces adresses.
Feuille de route : la ligne 0e.4 est reformulée.
Comment
Le fragment est gardé pour les raisons de l'ADR :
il ne part pas au serveur ;
le service worker sert la même page en cache ;
il n'y a aucune configuration Caddy à changer.
L'adresse devient la source de vérité de la navigation : l'app écoute hashchange et dessine l'écran demandé.
Choix et compromis
Écartés :
des adresses sans #, avec l'API History : il faudrait une règle de repli côté serveur et dans le service worker ;
un état interne seul : c'est ce que Pierre refuse.
Le format des liens de position change (#/position/... au lieu de #position=...&match=...), avant toute utilisation. L'ADR l'explique dans son amendement.
Les confirmations et bandeaux éphémères n'ont pas d'adresse : ce ne sont pas des écrans.
Risques et déploiement
Documentation seule.
Comment vérifier
make lint && make test
Hors périmètre
L'implémentation (0e.4), qui viendra après la fusion de la révision UX et de 1b.
## Pourquoi
Pierre a écrit le 2026-11-03 : « Il faudra vraiment que chaque page (l'aide, etc.) ait une URL. Utilise des liens accessibles, pas des états. »
Aujourd'hui, l'aide, le glossaire et le menu s'ouvrent par des boutons qui changent un état caché. On ne peut pas partager ces écrans, ni les ouvrir dans un onglet, ni y revenir avec le bouton retour du téléphone. Un lecteur d'écran ne les annonce pas comme des liens.
L'ADR 0013, accepté le matin même, ne donnait une adresse qu'aux positions du plateau. Il n'est pas encore mis en œuvre et aucun lien n'a circulé, ce qui permet d'élargir son format sans casser de lien existant.
## Quoi
**ADR 0013, amendement daté :**
- un schéma d'adresses unique pour tous les écrans, placé dans le fragment de l'adresse :
- `#/` : la partie ;
- `#/accueil`, `#/aide/<question>`, `#/glossaire/<terme>`, `#/a-propos`, `#/tutoriel/<n>`, `#/parties/<id>`, `#/menu` : les écrans ;
- `#/position/<Position ID>/<Match ID>` : une position du plateau ;
- la navigation par de vrais liens `<a href>`, alors que les actions de jeu restent des boutons ;
- les écrans à venir (analyse, leçons, progression) suivent le même schéma.
**Plan 0e.4** : il commence désormais par un petit routeur pur, testé unitairement. Tous les écrans existants passent par lui. Le test navigateur ouvre chaque adresse directement et vérifie le bouton retour.
**Plan 0e.5** : l'accueil, le tutoriel et l'aide utiliseront ces adresses.
**Feuille de route** : la ligne 0e.4 est reformulée.
## Comment
Le fragment est gardé pour les raisons de l'ADR :
- il ne part pas au serveur ;
- le service worker sert la même page en cache ;
- il n'y a aucune configuration Caddy à changer.
L'adresse devient la source de vérité de la navigation : l'app écoute `hashchange` et dessine l'écran demandé.
## Choix et compromis
- **Écartés :**
- des adresses sans `#`, avec l'API History : il faudrait une règle de repli côté serveur et dans le service worker ;
- un état interne seul : c'est ce que Pierre refuse.
- **Le format des liens de position change** (`#/position/...` au lieu de `#position=...&match=...`), avant toute utilisation. L'ADR l'explique dans son amendement.
- **Les confirmations et bandeaux éphémères n'ont pas d'adresse** : ce ne sont pas des écrans.
## Risques et déploiement
Documentation seule.
## Comment vérifier
```
make lint && make test
```
## Hors périmètre
L'implémentation (0e.4), qui viendra après la fusion de la révision UX et de 1b.
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
Pierre a écrit le 2026-11-03 : « Il faudra vraiment que chaque page (l'aide, etc.) ait une URL. Utilise des liens accessibles, pas des états. »
Aujourd'hui, l'aide, le glossaire et le menu s'ouvrent par des boutons qui changent un état caché. On ne peut pas partager ces écrans, ni les ouvrir dans un onglet, ni y revenir avec le bouton retour du téléphone. Un lecteur d'écran ne les annonce pas comme des liens.
L'ADR 0013, accepté le matin même, ne donnait une adresse qu'aux positions du plateau. Il n'est pas encore mis en œuvre et aucun lien n'a circulé, ce qui permet d'élargir son format sans casser de lien existant.
Quoi
ADR 0013, amendement daté :
#/: la partie ;#/accueil,#/aide/<question>,#/glossaire/<terme>,#/a-propos,#/tutoriel/<n>,#/parties/<id>,#/menu: les écrans ;#/position/<Position ID>/<Match ID>: une position du plateau ;<a href>, alors que les actions de jeu restent des boutons ;Plan 0e.4 : il commence désormais par un petit routeur pur, testé unitairement. Tous les écrans existants passent par lui. Le test navigateur ouvre chaque adresse directement et vérifie le bouton retour.
Plan 0e.5 : l'accueil, le tutoriel et l'aide utiliseront ces adresses.
Feuille de route : la ligne 0e.4 est reformulée.
Comment
Le fragment est gardé pour les raisons de l'ADR :
L'adresse devient la source de vérité de la navigation : l'app écoute
hashchangeet dessine l'écran demandé.Choix et compromis
#, avec l'API History : il faudrait une règle de repli côté serveur et dans le service worker ;#/position/...au lieu de#position=...&match=...), avant toute utilisation. L'ADR l'explique dans son amendement.Risques et déploiement
Documentation seule.
Comment vérifier
Hors périmètre
L'implémentation (0e.4), qui viendra après la fusion de la révision UX et de 1b.
Generated with Claude Code https://claude.com/claude-code