feat(FN-2403): add project setup step to onboarding flow

- Introduce a new "project-setup" onboarding step between GitHub and first-task actions
- Gate first-task navigation on project selection and add contextual setup-wizard guidance
- Centralize ordered onboarding step definitions in shared state and reuse them for navigation/progress labels
- Extract ModelOnboardingModal styles into a dedicated component CSS file and update tests/mocks for the new step order
This commit is contained in:
Fusion
2026-04-25 06:35:52 -07:00
committed by gsxdsm
parent dbc9446a32
commit 81193e734a
13 changed files with 1508 additions and 1341 deletions

View File

@@ -5,7 +5,7 @@
* from where they left off if they dismiss the modal without completing.
*/
export type OnboardingStep = "ai-setup" | "github" | "first-task" | "complete";
export type OnboardingStep = "ai-setup" | "github" | "project-setup" | "first-task" | "complete";
interface OnboardingState {
currentStep: OnboardingStep | string; // string allows for future unknown steps
@@ -38,6 +38,12 @@ const DEFAULT_COMPLETED = false;
const DEFAULT_STEP_DATA: Partial<Record<OnboardingStep, Record<string, unknown>>> = {};
const DEFAULT_POST_ONBOARDING_DISMISSED_AT: string | undefined = undefined;
/**
* Ordered onboarding flow steps before completion.
* Keep this list in sync with ModelOnboardingModal's stepper rendering and navigation.
*/
export const ONBOARDING_FLOW_STEPS = ["ai-setup", "github", "project-setup", "first-task"] as const;
/**
* Step labels for display in the resume card.
* Fallback for unknown step IDs uses the raw key with title-case formatting.
@@ -45,6 +51,7 @@ const DEFAULT_POST_ONBOARDING_DISMISSED_AT: string | undefined = undefined;
export const ONBOARDING_STEP_LABELS: Record<OnboardingStep, string> = {
"ai-setup": "AI Setup",
github: "GitHub",
"project-setup": "Project",
"first-task": "First Task",
complete: "Complete",
};