- Shipped
- 28 Agosti 2026, 03:48 UTC
- Author
- Kamo
- Commit
- a1907dc
Adds the client-side step model (app/lib/orgSetupWizard.ts), a thin API client for GET/PUT/DELETE /api/security/org-setup-wizard (app/lib/orgSetupWizardApi.ts), and the useOrgSetupWizard hook that the wizard page and the launchpad button will both build on. Pure logic lives in app/lib rather than beside the page because app/settings/** and app/hooks/** are not in vitest's include allowlist. isWizardFinished is decided solely by the server's completedAt latch, not by counting completed steps, so the launchpad button stays gone for an organization that already finished even after the step list grows. normalizeSummary is total over unknown input and drops step keys the client does not recognize. useOrgSetupWizard keeps `loaded` separate from `summary` so the launchpad button renders nothing until the real answer is known.