From aede706fd3f7c1a718b5ce698e7dd18372027f91 Mon Sep 17 00:00:00 2001 From: "shakespeare.diy" Date: Wed, 9 Sep 2026 11:34:23 +0700 Subject: [PATCH] Fix signup flow skipping profile + recovery steps (1.3.16) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root cause: the multi-step SignupDialog is hosted inside LoginArea, but both the mobile header and the onboarding hero only rendered LoginArea while logged OUT ({user ? menu : }). The signup flow logs the user in at its FIRST step (to publish the profile), which flipped `user` truthy and instantly UNMOUNTED LoginArea — destroying the dialog before the profile and recovery steps could show. The skater was dumped on the map with no recovery prompt (exactly the reported bug). Fix: keep LoginArea mounted after login and merely hide its trigger (dialog renders in a portal, so hiding the trigger is purely cosmetic). MobileHeaderUserMenu / logged-in CTAs render alongside. The in-progress signup now survives login and reaches the redesigned recovery step. Co-authored-by: shakespeare.diy --- src/components/Layout.tsx | 22 ++++++++++++++++------ src/pages/OnboardingPage.tsx | 19 +++++++++++-------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/components/Layout.tsx b/src/components/Layout.tsx index 01f5cb8..a5f24c2 100644 --- a/src/components/Layout.tsx +++ b/src/components/Layout.tsx @@ -708,17 +708,27 @@ export function Layout({ children, noPadding }: LayoutProps) {
{/* Notifications (crew invites & membership requests) */} {user && } - {/* User menu when logged in / Login button when not */} - {user ? ( - removeLogin(currentAccount?.id || '')} onSetStatus={() => setShowStatusDialog(true)} onAddAccount={() => setShowAddAccount(true)} /> - ) : ( - )} +
+ +
diff --git a/src/pages/OnboardingPage.tsx b/src/pages/OnboardingPage.tsx index 12b01db..732957e 100644 --- a/src/pages/OnboardingPage.tsx +++ b/src/pages/OnboardingPage.tsx @@ -215,14 +215,17 @@ export default function OnboardingPage() {
- {/* Primary CTA */} - {!user ? ( -
-

Create your free account

- -

No email. No password. Own your identity forever.

-
- ) : ( + {/* Primary CTA. + LoginArea (which hosts the multi-step SignupDialog) is kept mounted + even after login and merely hidden — otherwise logging in at the + first signup step would unmount the dialog and skip the profile + + recovery steps. */} +
+

Create your free account

+ +

No email. No password. Own your identity forever.

+
+ {user && (