---
title: "STATUS — jah-public — 2026-10-12"
date: 2026-10-12
time: "09:31"
author: agent
publishedBy: code
status: pub
tags: ["status", "jah-public"]
---

# STATUS — jah-public

_Article généré automatiquement depuis le STATUS.md de jah-public — 2026-10-12. Les chemins locaux, les hôtes internes et les noms de variables ont été neutralisés._

# STATUS — jah-public

> Une session = une porte machine. Le site public est un chantier **hors produit Jah** : rien ici
> ne touche le village ni la prod du jeu.

## Session

> **11/10 (soir) — Le site devient l'interface : contenu réel, pont produit, carte du monde.**
> Demande FG (« va beaucoup plus loin côté contenu, intégration, visualisation, explication —
> maintenant c'est notre interface »).
>
> **Livré** :
> - **Pont produit** : `server/nouveautes.mjs` lit `JahMessenger/CHANGELOG-USER.md` en lecture
>   seule → `GET /api/nouveautes` (52 versions structurées) et `GET /api/version` (live 4.1.6).
>   `JAH_PRODUIT` pose le chemin si le dépôt n'est pas voisin.
> - **Nouveautés dynamiques** : `patch-notes.html` rend les versions du produit à la volée
>   (`mini-mark.js` — nœuds DOM, zéro `innerHTML`), filtres ères/versions/correctifs, repli
>   honnête si le pont est coupé. `live.js` affiche aussi la version en ligne (accueil,
>   nouveautés, avancement).
> - **`monde.html`** : la carte du village en pixel SVG cliquable (Place en octogone, feu, six
>   tipis, fontaine, kiosque, sept lieux), fiches des lieux, jour/crépuscule/nuit, « peint par
>   le code » — en phase avec le relooking pixel 4.1.5/4.1.6 du jeu.
> - **`charte.html`** : les douze règles du produit racontées, serveur autoritaire, six maillons.
> - **Wiki étoffé** : rituels et rendez-vous, appels, glossaire du village (9 mots).
>   **Le jeu** : + « Comment Jah est construit » (agents, CI, charte).
> - Captures `--site` via le serveur quand il tourne (le rendu dynamique a besoin des /api).
>
> **Garde** : 42 fichiers, exit 0 — deux URL littérales dans les sources ont dû être reformulées
> (`[hôte interne]` dans l'aide, `https://…` dans un commentaire) : la garde lit tout le texte.

> **11/10 — Le vrai site est né : direction A (fenêtres MSN 2005 pixel/rétro), six pages servies
> sur 5233.**
> Demande FG (« développe tout le site en utilisant le look pixel msn retro de jahmessenger
> jahstyle ») — la porte FG « choisir la direction » est franchie : **A**, l'identité du produit.
>
> **Livré** :
> - `site/` : six pages réelles (accueil `index.html`, le jeu, wiki, nouveautés, avancement,
>   **aide au compte** — nouvelle) + `404.html` + `favicon.svg`, zéro dépendance, modules ES.
> - `site/styles/` : les quatre feuilles du squelette + `theme.css` (direction A déscopée) ;
>   chaque page s'ouvre sur une **fenêtre MSN complète** (barre de titre dégradée, `_ □ ✕`, barre
>   d'état), trame cathodique discrète, ciel étoilé, papillon en filigrane.
> - `server/serveur.mjs` : `node:http` sur **5233** (`npm start`), GET/HEAD, anti-traversée,
>   `/readyz`, et un **vrai compteur de visites** (`/api/compteur`, fichier `data/*.local.json`
>   ignoré par git) affiché à diodes en pied de page — jamais de faux vivant : en `file://` ou en
>   panne, il affiche des tirets.
> - Gardes étendues : `check-design.mjs` inspecte désormais `design/` **et** `site/` (38 fichiers,
>   exit 0) ; `capture.mjs --site` photographie les pages réelles (9 captures, débordement 0).
>
> **Pas fait (avec raison)** : aucune donnée du jeu n'est lue — le pont lecture seule attend la
> route publique du produit (lot JahMessenger + §14) ; patch notes et avancement restent écrits à
> la main, et **le disent** dans leur barre d'état. Pas de déploiement : sous-domaine + Caddy,
> porte FG.

> **08/10 — Chantier ouvert : maquettes du site public, trois directions Y2K.**
> Demande FG (« prépare un dossier frère et dépôt privé pour le site web public du jeu… cherche et
> propose des prototypes… style jahstyle + jahmessenger, design JV années 2000 »).
>
> **Décisions prises** (alignement du 08/10) :
> - Nom : dossier `jah-public`, dépôt privé `FGDidou/jah-public`.
> - Compte : pont **lecture seule** vers le jeu via une **route publique dédiée** du jeu (pas de
>   table `accounts` dupliquée, pas de session sur le site) — lot `JahMessenger` + §14.
> - Saveur : **les trois directions** sont maquettées (A fenêtres MSN, B portail Flash/Habbo,
>   C Skyblog/GeoCities) pour que FG tranche à l'œil.
> - Identité de référence : **le jeu** (MSN 2005 + kikoolol) ; le blog reste une porte de sortie.
> - Teaser : **lien** vers la copie du blog, pas de duplication.
> - Port dev **5233**, URL sur un **nouveau sous-domaine** (§14 : DNS + Caddy).
>
> **Ce que l'audit a changé au plan** : une page publique Jah existe déjà (le blog sert `/vfjah/`) ;
> le blog expose déjà une API d'articles (`GET /api/articles`) ; la page *Patch notes* a déjà trois
> maquettes de hiérarchie (06/10) ; la landing existe en germe
> (`docs/prototypes/2026-10-06-accueil-nouveau-joueur/tuto-kikoo.html`). Le site **succède** à
> `/vfjah/` au lieu de le doubler, et **consomme** l'API au lieu de refaire un listing.

### Avancement

| Étape | État |
| --- | --- |
| Squelette du dépôt (README, STATUS, CHANGELOG, design/) | **livré** |
| Squelette CSS partagé (tokens MSN, fenêtre MSN, page, chrome fansite) | **livré** |
| 3 directions × 5 pages autonomes | **livré** |
| Carte du contenu neutre (`contenu.html`, arbre macro → micro) | **livré** |
| Comparateur `design/maquettes/2026-10-08-site-public/index.html` | **livré** |
| Captures 1280×800 / 390×844 + vérif à l'œil | **livré** (12 captures, débordement 0) |
| Porte machine `npm run check:design` | **livré** (38 fichiers, exit 0 ; étendue à `site/`) |
| Serveur d'aperçu `scripts/serve-maquettes.mjs` (5291) + Tailscale `/jah` + notif Telegram | **livré** |
| Dépôt distant privé `FGDidou/jah-public` (créé + poussé) | **livré** |
| Choix FG de la direction | **tranché : A** (fenêtres MSN 2005 pixel/rétro) |
| Site réel `site/` — 6 pages + 404 dans la peau MSN | **livré** (11/10) |
| Serveur `node:http` 5233 + `/readyz` + compteur réel | **livré** (11/10) |
| Captures du site réel (`capture:site`) | **livré** (12 captures, débordement 0) |
| Pont lecture seule vers le produit (`/api/nouveautes`, `/api/version`) | **livré** (11/10, fichier CHANGELOG-USER.md ; la route HTTP du jeu reste à faire) |
| Pages monde + charte, wiki étoffé | **livré** (11/10) |
| Branchement auto avancement / boîte à idées | après la route publique du jeu (§14) |
| Sous-domaine + Caddy (déploiement) | **porte FG** (§14) |

### Actions FG

0. **Le site existe et il est branché** : `npm start` → http://[hôte interne]/ (relais du soir :
   [`handoffs/2026-10-11-2230-contenu-integration-monde.md`](handoffs/2026-10-11-2230-contenu-integration-monde.md)).
   Le dépôt distant `FGDidou/jah-public` (privé) attend le push — pas poussé sans accord.
1. **Trancher le sort de `/vfjah/` du blog** : ce site le **remplace** (recommandé) ou le complète.
2. Sous-domaine + Caddy + port **5233** (décision §14, faite au moment du déploiement).
3. Si le pont compte est retenu : valider le lot `JahMessenger` qui ouvre une **route publique**
   en lecture seule (aucune donnée d'auteur n'en sortira) — il débloquera le branchement auto des
   patch notes, de l'avancement et de la boîte à idées.

## Portes

| Porte | État |
| --- | --- |
| Maquettes ouvrables sans serveur, en 1280×800 et 390×844 | **porte du lot** |
| Aucun puits HTML, aucune ressource tierce, aucun fichier > 600 lignes | **garde** (design + site) |
| Rendu du site réel, `/readyz` local | **porte du lot** (11/10) |
| Smoke Playwright contre le serveur | à brancher (le smoke œil est fait via `capture:site`) |

*Rappel : on ne coche jamais R2.*