Skip to content

feat: setup wizard shell + welcome preflight + first-run redirect (#49, #50, #57)#34

Merged
lan17 merged 4 commits intomainfrom
lev/wizard-2
Feb 26, 2026
Merged

feat: setup wizard shell + welcome preflight + first-run redirect (#49, #50, #57)#34
lan17 merged 4 commits intomainfrom
lev/wizard-2

Conversation

@lan17
Copy link
Copy Markdown
Owner

@lan17 lan17 commented Feb 26, 2026

Summary

  • implement refactor: centralize clip status transitions #49 wizard foundation:
    • add /setup route outside app shell and add a Setup nav link
    • build SetupWizardShell with progress, back/next/skip, and exit actions
    • add useWizardState with URL step sync (?step=), schema-versioned localStorage resume, and reset semantics
    • add responsive wizard styles and baseline setup page scaffold
  • implement #57 first-run redirect behavior:
    • add useSetupRedirect backed by typed GET /api/v1/setup/status
    • redirect dashboard -> /setup only for fresh state
    • fail open on setup-status API errors
    • suppress redirect if persisted wizard progress exists
    • add subtle "Re-run setup wizard" link on dashboard
  • implement refactor: narrow api route dependency surfaces #50 welcome + preflight step:
    • add WelcomeStep for wizard step welcome
    • wire manual preflight checks (Run checks) with pass/fail badges, latency display, and retry
    • show explicit auth-required guidance for unauthorized preflight responses
    • keep step progression non-blocking even when checks fail (warning only)
  • extend API typing surface for setup preflight:
    • update API codegen script + generated client/types for PreflightResponse
    • add HomeSecApiClient.runSetupPreflight() and parser
    • add usePreflightMutation

Ticket Links

Validation

  • make ui-check
    • pnpm api:check: pass
    • eslint: pass
    • vitest: pass (126 tests)
    • typecheck: pass
    • vite build: pass

Notes

  • Clarification: for TanStack useMutation, the mutation function does not receive query-style { signal } by default. Current preflight flow uses mutationFn: () => apiClient.runSetupPreflight(). Request cancellation via explicit AbortController is deferred.
  • local warning from Vite about Node 20.17.0 vs recommended 20.19+; build still succeeds in current environment.

@lan17 lan17 changed the title UI: wizard shell + routing + state persistence (#49) feat: UI: wizard shell + routing + state persistence (#49) Feb 26, 2026
@lan17 lan17 changed the title feat: UI: wizard shell + routing + state persistence (#49) feat: setup wizard shell + first-run redirect (#49, #57) Feb 26, 2026
@lan17 lan17 changed the title feat: setup wizard shell + first-run redirect (#49, #57) feat: setup wizard shell + welcome preflight + first-run redirect (#49, #50, #57) Feb 26, 2026
@lan17 lan17 merged commit 4ce496e into main Feb 26, 2026
3 checks passed
@lan17 lan17 deleted the lev/wizard-2 branch February 26, 2026 19:22
@codecov
Copy link
Copy Markdown

codecov Bot commented Feb 26, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.85%. Comparing base (81631d6) to head (f051eb8).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #34   +/-   ##
=======================================
  Coverage   82.85%   82.85%           
=======================================
  Files         107      107           
  Lines        9658     9658           
=======================================
  Hits         8002     8002           
  Misses       1656     1656           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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.

1 participant