docs: record the prefill seam and the optional local config
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
2e60bd08d8
commit
23e58b17ee
@@ -126,3 +126,58 @@ deux avals du parseur ont chacun le leur : la liste affiche l'adresse pour ne pa
|
||||
montrer une ligne vide (cas majoritaire), le content script décide s'il pose
|
||||
**aussi** les coordonnées (`input_18`). Écrire l'adresse dans le payload
|
||||
détruirait le signal « pas de lieu » dont il a besoin.
|
||||
|
||||
## 2026-07-17 — [T1] Pré-remplissage : content scripts classiques + `globalThis`
|
||||
|
||||
Le formulaire mairie est pré-rempli par deux content scripts (`config.js`,
|
||||
`formulaire-valeurs.js`, `formulaire-mairie.js`), **classiques — pas des modules
|
||||
ESM** — qui communiquent par des namespaces `globalThis` (`EchoConfig`,
|
||||
`EchoFormulaire`).
|
||||
|
||||
**Pourquoi pas ESM :** un content script n'est pas un module (`import` y lève une
|
||||
`SyntaxError`), et le `import()` dynamique y est cassé côté Firefox (bugs ouverts
|
||||
1803950 / 1536094). Restait à convertir la couture `transfert.js`, figée le
|
||||
2026-07-14 : non.
|
||||
|
||||
⚠️ **`config.js` et `formulaire-valeurs.js` n'ont NI `import` NI `export`, et
|
||||
c'est délibéré — ne pas « corriger ».** Un fichier sans les deux est valide **à la
|
||||
fois** comme script classique (content script, background) et comme module ESM
|
||||
(`import "./config.js"` depuis `presentation.js` et depuis `bun test`). C'est ce
|
||||
qui permet à `presentation.js` de partager l'adresse du café **sans build**. Le
|
||||
jour où quelqu'un y ajoute un `export`, les content scripts cassent
|
||||
silencieusement.
|
||||
|
||||
**Corollaire : l'ordre des tableaux `js` du manifest EST la dépendance**
|
||||
(`config` → `valeurs` → `mairie`), testé dans `extension.test.ts`.
|
||||
|
||||
**`CLE_EVENEMENT_EN_ATTENTE` est dupliquée** dans `formulaire-valeurs.js`
|
||||
(l'original vit dans `transfert.js`, en ESM, inatteignable depuis un content
|
||||
script classique). Un **test de dérive** garantit l'égalité des deux.
|
||||
|
||||
**Config (a) : défauts committés + `config.local.json` optionnel.** Les défauts
|
||||
(thème, tarifs, café) sont dans `config.js` ; seuls organisateur et email sont
|
||||
personnels et vivent dans `config.local.json` (gitignoré). Le fichier n'est
|
||||
**pas requis** : un clone frais doit marcher, il laisserait sinon l'extension
|
||||
cassée par défaut. Absent ou invalide → défauts nus, manque **signalé** dans le
|
||||
bandeau, jamais d'exception.
|
||||
|
||||
**C'est le background qui lit `config.local.json`**, puis le passe par le
|
||||
storage. Un content script ne pourrait le `fetch(runtime.getURL(...))` que si le
|
||||
fichier était en `web_accessible_resources` — ce qui **exposerait l'email à la
|
||||
page de la mairie**. Le fichier étant optionnel, il ne peut pas non plus être
|
||||
listé dans un tableau `js` (Firefox refuse d'installer si un fichier déclaré
|
||||
manque) : `fetch` + repli est la seule voie.
|
||||
|
||||
**On ne remplit que ce qu'on sait ; le reste est dit, jamais inventé.** Pas
|
||||
d'heure « 00:00 » pour une journée entière, pas de `lat|lng` deviné pour un lieu
|
||||
hors café, pas d'organisateur par défaut. Ce qui manque part dans le bandeau
|
||||
(`aCompleter`). En particulier, **`input_6_35` (accessibilité) est laissé
|
||||
intact** : `RECHERCHE.md` le dit « fixe », mais la machine ne sait pas si le lieu
|
||||
est accessible — cocher au hasard sur un formulaire **modéré** serait exactement
|
||||
le « champ rempli faux » qu'on veut éviter.
|
||||
|
||||
**Séparation calcul / DOM** : `formulaire-valeurs.js` est pur et testé (les dates
|
||||
sont le vrai risque, invisible sous `TZ=Europe/Paris`) ; `formulaire-mairie.js`
|
||||
est fin, impur et **non testé unitairement** — aucun harnais DOM dans le repo, et
|
||||
happy-dom n'émulerait de toute façon pas Gravity Forms. C'est le test humain qui
|
||||
tranche.
|
||||
|
||||
Reference in New Issue
Block a user