diff --git a/bin/init.js b/bin/init.js index 73a7ed9..47eb604 100644 --- a/bin/init.js +++ b/bin/init.js @@ -338,6 +338,43 @@ export async function init(projectName = null, autoAcceptDefaults = false) { ]); answers.useTunnel = hostingAnswer.useTunnel; + // Ask about Neynar Sponsored Signers / SIWN + const sponsoredSignerAnswer = await inquirer.prompt([ + { + type: 'confirm', + name: 'useSponsoredSigner', + message: + 'Would you like to use Neynar Sponsored Signers and/or Sign In With Neynar (SIWN)?\n' + + 'This enables the simplest, most secure, and most user-friendly Farcaster authentication for your app.\n\n' + + 'Benefits of using Neynar Sponsored Signers/SIWN:\n' + + '- No auth buildout or signer management required for developers\n' + + '- Cost-effective for users (no gas for signers)\n' + + '- Users can revoke signers at any time\n' + + '- Plug-and-play for web and React Native\n' + + '- Recommended for most developers\n' + + '\n⚠️ A seed phrase is required for this option.\n', + default: false, + }, + ]); + answers.useSponsoredSigner = sponsoredSignerAnswer.useSponsoredSigner; + + if (answers.useSponsoredSigner) { + const { seedPhrase } = await inquirer.prompt([ + { + type: 'password', + name: 'seedPhrase', + message: 'Enter your Farcaster custody account seed phrase (required for Neynar Sponsored Signers/SIWN):', + validate: (input) => { + if (!input || input.trim().split(' ').length < 12) { + return 'Seed phrase must be at least 12 words'; + } + return true; + }, + }, + ]); + answers.seedPhrase = seedPhrase; + } + // Ask about analytics opt-out const analyticsAnswer = await inquirer.prompt([ { @@ -601,7 +638,6 @@ export async function init(projectName = null, autoAcceptDefaults = false) { } if (answers.seedPhrase) { fs.appendFileSync(envPath, `\nSEED_PHRASE="${answers.seedPhrase}"`); - fs.appendFileSync(envPath, `\nSPONSOR_SIGNER="${answers.sponsorSigner}"`); } fs.appendFileSync(envPath, `\nUSE_TUNNEL="${answers.useTunnel}"`); diff --git a/package.json b/package.json index 775601a..e893232 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@neynar/create-farcaster-mini-app", - "version": "1.5.7", + "version": "1.5.8", "type": "module", "private": false, "access": "public", diff --git a/src/components/ui/NeynarAuthButton/AuthDialog.tsx b/src/components/ui/NeynarAuthButton/AuthDialog.tsx index 436efb0..a458ab4 100644 --- a/src/components/ui/NeynarAuthButton/AuthDialog.tsx +++ b/src/components/ui/NeynarAuthButton/AuthDialog.tsx @@ -191,20 +191,22 @@ export function AuthDialog({ {content.showOpenButton && content.qrUrl && (