WIZ-2 Wizard shell + 6-step stepper #673

Closed
opened 2026-05-01 19:26:36 +00:00 by claude-desktop · 1 comment
Collaborator

User story

As an operator, I want a clean /onboarding route with a 6-step stepper, Back/Continue navigation, and refresh-resilient state, so my wizard progress isn't lost if I accidentally navigate away.

Acceptance criteria

  • New route apps/web/src/routes/onboarding.tsx.
  • No <AppShell> wrapper — minimal chrome with the project logo + a 6-dot stepper (Welcome ◯ Repos ◯ Types ◯ Customize ◯ Tokens ◯ Done).
  • Active step pulled from ?step=N URL param. Back / Continue mutate the URL via navigate().
  • Each step transition PATCH /onboarding/state with the step's data + current_step.
  • On refresh: read /onboarding/state, restore URL + form state.
  • Esc / external nav: confirm dialog "Leave the wizard? Your progress is saved — re-enter /onboarding to resume."
  • Welcome screen shows session-known forge info: Connected to <forge_url> as <account_login> (read from c.get("session") via a /me-style endpoint or extend an existing one).

Tests

  • Render: step 1 (Welcome) shows the welcome card + session info.
  • Continue advances ?step=2 and renders the Repos screen placeholder.
  • Refresh mid-flow: state restored from server.
  • Esc / nav-away triggers confirm dialog.

Out of scope

  • Per-screen content (WIZ-3..WIZ-7).

References

  • specs/first-login-wizard.md §Story WIZ-2
  • Depends on WIZ-1 (setup state endpoints).
## User story As an operator, I want a clean `/onboarding` route with a 6-step stepper, Back/Continue navigation, and refresh-resilient state, so my wizard progress isn't lost if I accidentally navigate away. ## Acceptance criteria - [ ] New route `apps/web/src/routes/onboarding.tsx`. - [ ] No `<AppShell>` wrapper — minimal chrome with the project logo + a 6-dot stepper (`Welcome ◯ Repos ◯ Types ◯ Customize ◯ Tokens ◯ Done`). - [ ] Active step pulled from `?step=N` URL param. Back / Continue mutate the URL via `navigate()`. - [ ] Each step transition `PATCH /onboarding/state` with the step's data + `current_step`. - [ ] On refresh: read `/onboarding/state`, restore URL + form state. - [ ] Esc / external nav: confirm dialog `"Leave the wizard? Your progress is saved — re-enter /onboarding to resume."` - [ ] Welcome screen shows session-known forge info: `Connected to <forge_url> as <account_login>` (read from `c.get("session")` via a `/me`-style endpoint or extend an existing one). ### Tests - [ ] Render: step 1 (Welcome) shows the welcome card + session info. - [ ] Continue advances `?step=2` and renders the Repos screen placeholder. - [ ] Refresh mid-flow: state restored from server. - [ ] Esc / nav-away triggers confirm dialog. ## Out of scope - Per-screen content (WIZ-3..WIZ-7). ## References - `specs/first-login-wizard.md` §Story WIZ-2 - Depends on **WIZ-1** (setup state endpoints).
Collaborator

🤖 Auto-assigned to dev (heuristic: area:dashboard + body 1419 bytes (≤ 2 KB) — dev). Reply /unassign to reroute.

🤖 Auto-assigned to **dev** (heuristic: area:dashboard + body 1419 bytes (≤ 2 KB) — dev). Reply `/unassign` to reroute.
Sign in to join this conversation.
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
charles/claude-hooks#673
No description provided.