Skip to content

feat(codex): vue Réseau, la constellation en deux rives - #93

Merged
Lunik merged 2 commits into
developfrom
claude/game-engagement-retention-lyk0n0-constellation
Oct 24, 2026
Merged

Lunik merged 2 commits into
developfrom
claude/game-engagement-retention-lyk0n0-constellation

Conversation

@Lunik

@Lunik Lunik commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Closes #91. Piste 3 de la page de travail pistes-retention.html (EtymoLogique/Design#51), portée depuis le prototype « deux rives ».

Ce qui change

  • Nouvelle vue « Réseau » du codex (vue=reseau dans l’adresse), entre Familles et Cabinet.
  • services/constellation.ts : des fonctions pures et déterministes.
    • construireReseau : les mots des fascicules débloqués, sans légendaire (ni mot ni brique). Pour chaque case, la première brique trouvée parmi les variantes de forme d’une même brique (allomorphes).
    • portee : les mots trouvés de la vue et ses bandes. Dans la vue « Tous », une brique tient la bande du premier fascicule qui l’emploie.
    • famille : les mots trouvés d’une brique et leur total, compté sur les fascicules débloqués.
    • disposer : la mise en page.
      • Une bande par fascicule, briques dans l’ordre alphabétique, une rangée de 44 px chacune.
      • La largeur des rives dépend de tout le réseau, pas de la vue : une nouvelle brique ne décale rien en largeur.
    • tracer : les courbes et les antennes.
      • Une courbe part à l’horizontale de sa brique, traverse la rivière et ne passe jamais sous une brique.
      • Dans la vue « Tous », une courbe de plus de 640 px de haut devient une antenne chiffrée (« ↓3 »), sauf pour la famille suivie et la dernière découverte.
  • Composant Constellation :
    • Sélecteur : les fascicules débloqués et « Tous ». La vue s’ouvre sur le dernier fascicule débloqué qui a au moins un mot trouvé.
    • Bascule Réseau / Liste : la liste dit la même chose en texte et sert aussi aux lecteurs d’écran.
    • Briques : chaque rangée entière est la cible, au toucher comme au clavier (Entrée, Espace).
    • Couleurs : la dernière découverte est en Corail ; sous chaque brique, une barre Rosée montre la progression de sa famille.
    • Panneau collé de la famille suivie : il se replie, ses mots ouvrent la carte au codex, et ses briques partenaires font suivre leur propre famille.
    • Animation : une brique insérée apparaît, celles qui changent de rangée glissent (240 ms). Rien sous le mouvement réduit.
  • Styles dans codex.css, avec les jetons de la palette uniquement.
  • Roadmap : une ligne ajoutée au jalon J2.

Aucun changement d’API ni de contrat.

Écarts avec l’issue, et choses à savoir

  • Un mot qui sert de brique (par exemple « biologie » dans « biologiste ») apparaît sur sa rive, en neutre Crème, comme dans la réserve.
  • ADR et maquette : toujours à écrire dans Design avant de sortir du brouillon.
  • check_identity sur codex.css remonte une erreur à la ligne 486 (bande-laterale). Elle existait déjà sur develop et cette PR ne la touche pas.

Vérifications

  • npm run typecheck et npm run lint : OK. Seul reste l’avertissement de Plis.tsx, qui existait avant cette PR.
  • npm test : 207 tests passent, dont 6 nouveaux tests du service et 2 du composant. Ils couvrent :
    • aucun chevauchement ;
    • les courbes restent entre les deux rives ;
    • une découverte ne déplace que les briques qui la suivent dans l’alphabet ;
    • ni légendaire ni fascicule verrouillé ;
    • les antennes.
  • Recette locale avec l’API, PostgreSQL et le catalogue d’essai, sur un joueur de 103 découvertes dans les fascicules 1 à 4 :
    • téléphone à 390 px et ordinateur à 1440 px, en atelier et en nocturne ;
    • aucune erreur dans la console, pas de débordement horizontal de la page ;
    • 0 chevauchement entre les 50 briques de la vue « Tous ».

Generated by Claude Code

…llation

First-slot bricks on the left bank, second-slot bricks on the right, one
band per unlocked fascicule, alphabetical rows of 44 px; each found word
is a curve across the river. The newest discovery is drawn in Corail, a
Rosée bar under each brick gives its family progress, long links in the
"Tous" view become counted antennas, a tapped brick opens its family in
a sticky panel, and a list view says the same in text.

The layout is a pure, deterministic function (services/constellation.ts):
no overlap, curves never under a brick or a label, and a discovery only
moves the bricks that follow it alphabetically. Only found bricks show;
no legendary, no locked fascicule (ADR 0043, 0051, 0069).

Closes #91

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0151stDRaZV3ScbhwvwjrfQ7
…udits

cargo audit flagged RUSTSEC-2026-0381/0382/0383/0385 and npm audit a high
advisory on vite 8.3.1 (and moderate ones on vitest): lockfile-only
updates to the patched versions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0151stDRaZV3ScbhwvwjrfQ7
(cherry picked from commit a140f55df0d3ce823acc6ff6d9534bce30e72ab8)

Lunik commented Oct 23, 2026

Copy link
Copy Markdown
Contributor Author

Les jobs « API et tâches (Rust) » et « PWA (TypeScript) » échouent, mais pas à cause de cette PR. Seuls les audits de dépendances échouent, et develop est touché de la même façon :

  • cargo audit remonte RUSTSEC-2026-0381, 0382, 0383 et 0385 ;
  • npm audit remonte une alerte élevée sur vite 8.3.1.

J’ai ajouté à cette branche le commit fix(deps), qui ne change que les fichiers de verrouillage. Il est identique sur #92, #94 et #95.


Generated by Claude Code

@Lunik
Lunik marked this pull request as ready for review October 24, 2026 14:09
@Lunik
Lunik merged commit 55f3d3e into develop Oct 24, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants