From 8ed412db2267fc8e7ca58f41e4d5aab0a96b1ed2 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 8 Jan 2026 12:19:16 +0100 Subject: [PATCH] feat: streamline quickstart provider selection --- CHANGELOG.md | 1 + src/commands/onboard-providers.ts | 17 +++++++++++++---- src/wizard/onboarding.ts | 4 +++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13dcc5638..948c8017a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - Agent system prompt: avoid automatic self-updates unless explicitly requested. - Onboarding: tighten QuickStart hint copy for configuring later. - Onboarding: avoid “token expired” for Codex CLI when expiry is heuristic. +- Onboarding: QuickStart jumps straight into provider selection with Telegram preselected when unset. ## 2026.1.8 diff --git a/src/commands/onboard-providers.ts b/src/commands/onboard-providers.ts index b1d63901c..c7afe6ff4 100644 --- a/src/commands/onboard-providers.ts +++ b/src/commands/onboard-providers.ts @@ -736,6 +736,9 @@ type SetupProvidersOptions = { onWhatsAppAccountId?: (accountId: string) => void; forceAllowFromProviders?: ProviderChoice[]; skipDmPolicyPrompt?: boolean; + skipConfirm?: boolean; + quickstartDefaults?: boolean; + initialSelection?: ProviderChoice[]; }; export async function setupProviders( @@ -801,10 +804,12 @@ export async function setupProviders( "Provider status", ); - const shouldConfigure = await prompter.confirm({ - message: "Configure chat providers now?", - initialValue: true, - }); + const shouldConfigure = options?.skipConfirm + ? true + : await prompter.confirm({ + message: "Configure chat providers now?", + initialValue: true, + }); if (!shouldConfigure) return cfg; await noteProviderPrimer(prompter); @@ -857,9 +862,13 @@ export async function setupProviders( } }); + const initialSelection = + options?.initialSelection ?? + (options?.quickstartDefaults && !telegramConfigured ? ["telegram"] : []); const selection = (await prompter.multiselect({ message: "Select providers", options: selectionOptions, + initialValues: initialSelection.length ? initialSelection : undefined, })) as ProviderChoice[]; options?.onSelection?.(selection); diff --git a/src/wizard/onboarding.ts b/src/wizard/onboarding.ts index c353d9f89..83245bab9 100644 --- a/src/wizard/onboarding.ts +++ b/src/wizard/onboarding.ts @@ -114,7 +114,7 @@ export async function runOnboardingWizard( const quickstartHint = "Configure details later via clawdbot configure."; const advancedHint = - "Configure anything via the Clawdbot configuration wizard anytime."; + "Configure port, network, Tailscale, and auth options."; let flow = (await prompter.select({ message: "Onboarding mode", options: [ @@ -408,6 +408,8 @@ export async function runOnboardingWizard( forceAllowFromProviders: flow === "quickstart" ? ["telegram", "whatsapp"] : [], skipDmPolicyPrompt: flow === "quickstart", + skipConfirm: flow === "quickstart", + quickstartDefaults: flow === "quickstart", }); await writeConfigFile(nextConfig);