diff --git a/frontend/src/app/components/OnboardingV3/OnboardingV3Root.tsx b/frontend/src/app/components/OnboardingV3/OnboardingV3Root.tsx index ea59cb7b..961a8091 100644 --- a/frontend/src/app/components/OnboardingV3/OnboardingV3Root.tsx +++ b/frontend/src/app/components/OnboardingV3/OnboardingV3Root.tsx @@ -19,6 +19,8 @@ type Beat = 'welcome' | 'newos' | 'connect' | 'apps' | 'theme' | 'card'; const V2_STORAGE_KEY = 'openswarm.onboarding.v2'; const WINDOWED_BEATS: Beat[] = ['welcome', 'newos']; +// The opening is its own vivid moment (electric blue -> indigo -> violet), deliberately off-brand; the user's picked color takes over from the theme beat on. +const INTRO = { core: '#93b5ff', mid: '#5b6cff', edge: '#a855f7' }; // Decides whether the v3 full-screen flow owns this launch. Only genuinely fresh installs see it: anyone with the v2 tour key or existing sessions is auto-marked skipped so an update never re-onboards a veteran. function useOnboardingV3Gate(): boolean { @@ -56,12 +58,12 @@ const IntroBeat: React.FC<{ c: ClaudeTokens; line: string; sub?: string; onNext:
@@ -71,7 +73,7 @@ const IntroBeat: React.FC<{ c: ClaudeTokens; line: string; sub?: string; onNext: transition={{ type: 'spring', stiffness: 160, damping: 18, delay: 0.2 }} style={{ position: 'relative', marginBottom: 22 }} > - +