Skip to content

Fix chargement infini (skeleton) sans espace actif - #9

Merged
PiLep merged 1 commit into
mainfrom
cursor/fix-infinite-skeleton-4dd8
Jul 27, 2026
Merged

Fix chargement infini (skeleton) sans espace actif#9
PiLep merged 1 commit into
mainfrom
cursor/fix-infinite-skeleton-4dd8

Conversation

@PiLep

@PiLep PiLep commented Jul 27, 2026

Copy link
Copy Markdown
Owner

Problème

Après connexion, l’UI pouvait rester bloquée sur le skeleton sans erreur : loaded dépendait d’un tenantId jamais obtenu.

Causes :

  1. Le provisioning d’espace est best-effort à la connexion (fix OTP) — une session peut exister sans org active.
  2. Le client retentait organization.create / setActive en silence (slug non unique, tables absentes, etc.) → loaded restait false à jamais.

Correctifs

  • POST /api/tenant/bootstrap via requireTenant() (slug unique + SQLite partagée)
  • TenantProvider : plus de boucle silencieuse ; état d’erreur + Réessayer
  • AppShell : skeleton pendant le bootstrap, puis écran d’erreur si échec
  • Timeout 45s sur le fetch des cours (évite des skeletons partiels bloqués)
  • Doc : rappeler npm run auth:migrate si tables multi-tenant manquantes

Test plan

  • Se connecter sans org active → l’espace se provisionne et le portefeuille s’affiche
  • Sans migration org → message « Tables multi-tenant manquantes » + bouton Réessayer (plus de skeleton infini)
  • npm test / npx tsc --noEmit OK
Open in Web Open in Cursor 

Bootstrap the active organization via a server requireTenant endpoint
instead of a silent client-side create loop, surface a retryable error
when provisioning fails, and time out hung chart fetches so the UI can
leave the skeleton state.

Co-authored-by: Pile <pierre@kanta.fr>
@PiLep
PiLep marked this pull request as ready for review July 27, 2026 19:58
@PiLep
PiLep merged commit 163647e into main Jul 27, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants