From 54e6b4a809bc1e2ba7a773b8935ca8ff2c591971 Mon Sep 17 00:00:00 2001 From: "shakespeare.diy" Date: Thu, 27 Aug 2026 11:03:26 +0700 Subject: [PATCH] =?UTF-8?q?UX=20Move=201:=20kill=20the=20signup=20wall=20?= =?UTF-8?q?=E2=80=94=20one-tap=20silent=20account,=20no=20forced=20key=20d?= =?UTF-8?q?ownload?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - "Sign Up" now goes straight into a one-tap flow: a key is generated silently and the user is logged in immediately, landing on optional profile setup. - Removed the method-choice dialog (mnemonic vs nsec) and the generate/download steps from the default path — no crypto vocabulary, no gates. - Removed the forced key-download gate (Continue was disabled until download). Backup is now optional and deferred (BackupReminder already nudges post-login; the "done" step offers a gentle, jargon-free recovery-code reveal). - Softened copy throughout: "secret key" -> "recovery code / account backup", "your identity on Nostr" -> plain reassurance, CTA -> "Save & Start Skating". - Advanced signer-app path preserved under a subtle link. Co-authored-by: shakespeare.diy --- src/components/auth/LoginArea.tsx | 6 +- src/components/auth/SignupDialog.tsx | 544 +++++---------------------- 2 files changed, 97 insertions(+), 453 deletions(-) diff --git a/src/components/auth/LoginArea.tsx b/src/components/auth/LoginArea.tsx index be48e02..6743e39 100644 --- a/src/components/auth/LoginArea.tsx +++ b/src/components/auth/LoginArea.tsx @@ -40,7 +40,7 @@ export function LoginArea({ className, compact }: LoginAreaProps) { // Compact mode for mobile headers - icon only
- - - -
- - )} - - {/* Generate Step - Enhanced with animations */} - {step === 'generate' && ( -
-
- {/* Animated background elements */} - {showSparkles && ( -
- {[...Array(12)].map((_, i) => ( - - ))} -
- )} - -
- {isLoading ? ( -
-
- -
-
-
-
-
-

- - Generating your secret key... -

-

- Creating your secure key -

-
-
- ) : ( -
- -
-

- Ready to generate your secret key? -

-

- This key will be your password to access applications within the Nostr network. -

- -
-
- )} -
-
- - {!isLoading && ( - - )} -
- )} - - {/* Download Step - Whimsical and magical */} - {step === 'download' && ( -
- {/* Key reveal */} -
- {/* Sparkles */} -
- - - - -
- -
-
-
- -
-
- -
-
-
- -
-

- Your secret key has been generated! -

- - {/* Warning */} -
-
-
- - - Important Warning - -
-

- This key is your primary and only means of accessing your account. Store it safely and securely. -

-
-
-
-
- - {/* Your Keys - nsec and npub with copy buttons and privacy controls */} - - - {/* nsec (secret key) */} -
-
- -
- - -
-
-
- {showNsec ? nsec : '••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••'} -
-

⚠️ This is your PASSWORD - keep it secret and safe!

-
- - {/* npub (public key) */} -
-
- -
- - -
-
-
- {showNpub ? (() => { - try { - const { data } = nip19.decode(nsec); - const pk = getPublicKey(data as Uint8Array); - return nip19.npubEncode(pk); - } catch { - return 'Error generating npub'; - } - })() : '••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••'} -
-

✓ This is your USERNAME - safe to share publicly

-
- -
-

What's the difference?

-
    -
  • nsec = Your password. Never share this!
  • -
  • npub = Your username. Share this with friends!
  • -
-
-
-
- - {/* Security options */} -
- - -

Now download your secret key to keep it safe:

- -
- {/* Download Option */} - - - - - - - -
- - {/* Continue button */} - -
-
- )} - {/* Profile Step - Optional profile setup */} {step === 'profile' && (
@@ -658,11 +261,11 @@ const SignupDialog: React.FC = ({ isOpen, onClose, onComplete

- Almost there! Let's set up your profile + You're in! 🛹 Add a name so skaters know who you are

- Your profile is your identity on Nostr. + This is optional — you can skip it and fill it in later.

@@ -759,12 +362,12 @@ const SignupDialog: React.FC = ({ isOpen, onClose, onComplete {isPublishing ? ( <>
- Creating Profile... + Saving... ) : ( <> - Create Profile & Finish + Save & Start Skating )} @@ -788,50 +391,91 @@ const SignupDialog: React.FC = ({ isOpen, onClose, onComplete
)} - {/* Done Step - Account created with signer recommendation */} + {/* Done Step - Account created, gentle optional backup */} {step === 'done' && (
-
✅
+
🛹

- Account Created! + You're all set!

- Your Nostr account is ready to go! + Your account is ready. Go find some spots.

- - {/* Next Steps - Signer Recommendation */} - + + {/* Optional backup — no pressure, no jargon */} +
-
- +
+
-

Recommended: Set Up a Signer App

-

Keep your keys extra secure

+

Save a backup (optional)

+

So you never lose access to your account

- For better security, use a dedicated signer app instead of pasting your secret key everywhere. - Signer apps keep your keys safe while letting you use any Nostr app. + Your account lives on your device. Save a recovery code somewhere safe and + you'll be able to log back in on any device. You can also do this later from Settings.

- - - - + +
+

⚠️ Anyone with this code can access your account. Never share it.

+
+ )} + + + + Start Skating + + + +