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:
Sylvain Duchesne
2026-06-30 12:04:02 +02:00
parent 222658a75d
commit 266e33556d
40 changed files with 2224 additions and 360 deletions
-3
View File
@@ -5,8 +5,6 @@
import { HomeScreen } from '../modules/home/screens/HomeScreen';
import { SettingsScreen } from '../modules/home/screens/SettingsScreen';
// Auth module
import { LoginScreen } from '../modules/auth/screens/LoginScreen';
import { WelcomeScreen } from '../modules/auth/screens/WelcomeScreen';
// Event module
@@ -34,7 +32,6 @@ export interface Screen {
export const screens: Screen[] = [
{ id: 'welcome', name: 'Bienvenue', path: '/', component: WelcomeScreen },
{ id: 'login', name: 'Connexion', path: '/login', component: LoginScreen },
{ id: 'home', name: 'Accueil', path: '/home', component: HomeScreen },
{ id: 'events', name: 'Découvrir', path: '/events', component: EventsScreen },
{ id: 'create-event', name: 'Relayer événement', path: '/events/new', component: CreateEventScreen },