diff --git a/apps/mana/apps/web/src/lib/stores/onboarding-flow.svelte.ts b/apps/mana/apps/web/src/lib/stores/onboarding-flow.svelte.ts index 4648b0696..c86d2827a 100644 --- a/apps/mana/apps/web/src/lib/stores/onboarding-flow.svelte.ts +++ b/apps/mana/apps/web/src/lib/stores/onboarding-flow.svelte.ts @@ -1,8 +1,8 @@ /** - * Ephemeral state for the three-screen onboarding flow — holds values + * Ephemeral state for the four-screen onboarding flow — holds values * a later screen needs from an earlier screen (the freshly-typed name * for Screen 2's greeting, the multi-selected template ids for the - * Screen 3 finish handler). + * Screen 3 finish handler, the wish text for Screen 4's submit). * * Deliberately module-local and non-persistent: * - The canonical source of truth is `authStore.user` (name) and the @@ -18,6 +18,7 @@ let pendingName = $state(null); let selectedTemplateIds = $state([]); +let pendingWish = $state(''); export const onboardingFlow = { get pendingName() { @@ -26,14 +27,21 @@ export const onboardingFlow = { get selectedTemplateIds() { return selectedTemplateIds; }, + get pendingWish() { + return pendingWish; + }, setPendingName(value: string) { pendingName = value.trim() || null; }, setSelectedTemplateIds(ids: string[]) { selectedTemplateIds = ids; }, + setPendingWish(value: string) { + pendingWish = value; + }, reset() { pendingName = null; selectedTemplateIds = []; + pendingWish = ''; }, }; diff --git a/apps/mana/apps/web/src/routes/(app)/onboarding/+layout.svelte b/apps/mana/apps/web/src/routes/(app)/onboarding/+layout.svelte index 5f08fe995..33467336d 100644 --- a/apps/mana/apps/web/src/routes/(app)/onboarding/+layout.svelte +++ b/apps/mana/apps/web/src/routes/(app)/onboarding/+layout.svelte @@ -1,16 +1,22 @@
-
-
- {#each [0, 1, 2] as step (step)} - - {/each} -
- -
+
+
+ {@render children()} +
-
- {@render children()} -
+
+ +
+ {#each [0, 1, 2, 3] as step (step)} + + {/each} +
+ +
+
diff --git a/apps/mana/apps/web/src/routes/(app)/onboarding/name/+page.svelte b/apps/mana/apps/web/src/routes/(app)/onboarding/name/+page.svelte index ba8bda267..748b700b8 100644 --- a/apps/mana/apps/web/src/routes/(app)/onboarding/name/+page.svelte +++ b/apps/mana/apps/web/src/routes/(app)/onboarding/name/+page.svelte @@ -60,23 +60,6 @@ } } - async function handleSkip() { - const fallback = (authStore.user?.email ?? '').split('@')[0] || 'du'; - saving = true; - error = null; - try { - // Persist the fallback too so the user shows up as something - // other than "User 1234" in admin UIs — cheap, idempotent. - await saveName(fallback); - } catch (err) { - console.warn('[onboarding/name] skip-save failed:', err); - } finally { - saving = false; - } - onboardingFlow.setPendingName(fallback); - await goto('/onboarding/look'); - } - function handleKeydown(e: KeyboardEvent) { if (e.key === 'Enter' && canSubmit) { e.preventDefault(); @@ -109,9 +92,6 @@
- + +
+ + +