From 3dfd549af37e7df58bf095262ca3fad5c16a78f6 Mon Sep 17 00:00:00 2001 From: Sylvain Duchesne Date: Mon, 6 Jul 2026 15:52:45 +0200 Subject: [PATCH] docs(tech-stack): correct the dev shared-wallet command (real e2e password + file) A dummy FESTIPOD_SHARED_WALLET_PASSWORD=1 only makes the screen appear; the import fails because the displayed password must match the imported .ngw. Document the working invocation with the real e2e wallet (festipod-e2e-tests) + its file. Co-Authored-By: Claude Opus 4.8 (1M context) --- .project/concepts/tech-stack/knowledge_build-pipeline.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.project/concepts/tech-stack/knowledge_build-pipeline.md b/.project/concepts/tech-stack/knowledge_build-pipeline.md index a5f56cb..24d3f28 100644 --- a/.project/concepts/tech-stack/knowledge_build-pipeline.md +++ b/.project/concepts/tech-stack/knowledge_build-pipeline.md @@ -20,7 +20,13 @@ Le serveur sert `src/index.html`, qui charge `src/app/frontend.tsx` (voir `app-a `build.ts` injecte des **globals à la compilation** via `define` (p. ex. `__FESTIPOD_SHARED_WALLET_PASSWORD__` depuis `FESTIPOD_SHARED_WALLET_PASSWORD`, `__FESTIPOD_ACCESS_GATE_DISABLED__`). **Piège** : le serveur `src/index.ts` (utilisé par `bun run dev` ET `bun run start`) bundle `index.html` via l'import HTML de Bun, qui **n'applique aucun `define`** — ni `bun --define` ni `process.env` ne s'y propagent (vérifié). Donc une variable d'env passée à `bun run dev` n'atteint pas le bundle frontend par ce chemin. -Pour ces chemins servis depuis `src/`, la config passe donc au **runtime** : `src/index.ts` expose `/festipod-config.json` (lu depuis l'env), et l'entrée `src/app/frontend.tsx` la **fetch d'abord**, pose le global, **puis importe l'app dynamiquement** (`await import('./App')`) — ainsi `sharedWallet.ts` lit la valeur à son évaluation. Dans un bundle `build.ts` la valeur est déjà inline par `define`, donc le fetch est court-circuité (`NODE_ENV === 'production'`). Conséquence pratique : pour voir le flux « portefeuille partagé » en dev, lancer `FESTIPOD_SHARED_WALLET_PASSWORD=1 bun run dev` (+ `FESTIPOD_SHARED_WALLET_FILE=<.ngw>` pour un vrai téléchargement). +Pour ces chemins servis depuis `src/`, la config passe donc au **runtime** : `src/index.ts` expose `/festipod-config.json` (lu depuis l'env), et l'entrée `src/app/frontend.tsx` la **fetch d'abord**, pose le global, **puis importe l'app dynamiquement** (`await import('./App')`) — ainsi `sharedWallet.ts` lit la valeur à son évaluation. Dans un bundle `build.ts` la valeur est déjà inline par `define`, donc le fetch est court-circuité (`NODE_ENV === 'production'`). Conséquence pratique : pour exercer le flux « portefeuille partagé » en dev **de bout en bout** (téléchargement + import qui fonctionne), passer le VRAI mot de passe du wallet e2e **et** le fichier — le mot de passe affiché à l'écran doit correspondre au `.ngw` importé, sinon l'import échoue (une valeur factice comme `1` fait juste apparaître l'écran) : + +``` +FESTIPOD_SHARED_WALLET_PASSWORD=festipod-e2e-tests \ +FESTIPOD_SHARED_WALLET_FILE=./festipod-e2e-tests.ngw \ +bun run dev +``` ## Le harness de test est buildé à part