feat(auth): staging wallet partagé — import assisté par fichier + e2e multi-navigateur
Stopgap staging multi-user sur wallet partagé (cf. brief_2026-06-15_shared-wallet-shim). Distribution / import du wallet : - AccessGateScreen : barrière d'accès ON PAR DÉFAUT (désactivable via globalThis.__FESTIPOD_ACCESS_GATE_DISABLED__ pour tests/dev). Fournit le FICHIER .ngw + le mot de passe + un guide en 3 étapes (import assisté sur nextgraph.eu — le broker hébergé n'autorise pas l'import inline pendant l'auth web-app). - sharedWallet.ts + build.ts : fichier copié en /shared-wallet.ngw, mot de passe gravé. - Ancien LoginScreen (/login) retiré ; atterrissage post-login -> /home. - NextGraphContext : dé-piégeage de l'état "connecting" au retour (pageshow/bfcache). Couche multistore stopgap : storeRegistry, isolation, AccountContext, FestipodDataContext. Tests e2e multi-navigateur : - browserPool + world.openBrowser : contextes frais isolés, 2 axes orthogonaux (nb de navigateurs × modèle de wallet own/shared). - @humain : parcours humain complet (télécharge -> importe le fichier sur nextgraph.eu -> Entrer -> pseudo -> accueil). - Bypass de la barrière pour @e2e via context.addInitScript. - Convention @wip exclue via cucumber.json. Docs (concepts) : nextgraph-platform (knowledge_broker-import-constraint, decision_2026-06-17_assisted-wallet-import), bdd-testing (knowledge_multibrowser-harness). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -133,10 +133,27 @@ const result = await Bun.build({
|
||||
sourcemap: "linked",
|
||||
define: {
|
||||
"process.env.NODE_ENV": JSON.stringify("production"),
|
||||
// Access gate (ON by default) + shared wallet password, baked into the
|
||||
// browser bundle as globals (see src/app/AuthGate.tsx, sharedWallet.ts). The
|
||||
// wallet FILE is copied into the outdir below (served at /shared-wallet.ngw).
|
||||
"globalThis.__FESTIPOD_ACCESS_GATE_DISABLED__": JSON.stringify(
|
||||
process.env.ACCESS_GATE_DISABLED === "1",
|
||||
),
|
||||
"globalThis.__FESTIPOD_SHARED_WALLET_PASSWORD__": JSON.stringify(
|
||||
process.env.FESTIPOD_SHARED_WALLET_PASSWORD ?? "",
|
||||
),
|
||||
},
|
||||
...cliConfig,
|
||||
});
|
||||
|
||||
// Staging: copy the shared wallet FILE into the bundle so the access gate can
|
||||
// offer it for download (served at /shared-wallet.ngw). See sharedWallet.ts.
|
||||
if (process.env.FESTIPOD_SHARED_WALLET_FILE) {
|
||||
const { copyFileSync } = await import("fs");
|
||||
copyFileSync(process.env.FESTIPOD_SHARED_WALLET_FILE, path.join(outdir, "shared-wallet.ngw"));
|
||||
console.log(`📦 Copied shared wallet → ${path.join(outdir, "shared-wallet.ngw")}`);
|
||||
}
|
||||
|
||||
const end = performance.now();
|
||||
|
||||
const outputTable = result.outputs.map(output => ({
|
||||
|
||||
Reference in New Issue
Block a user