Skip to content

feat: redesign onboarding into a guided, interactive tour#384

Merged
Xoshbin merged 1 commit into
mainfrom
feat/onboarding-guided-tour
Jun 2, 2026
Merged

feat: redesign onboarding into a guided, interactive tour#384
Xoshbin merged 1 commit into
mainfrom
feat/onboarding-guided-tour

Conversation

@Xoshbin
Copy link
Copy Markdown
Owner

@Xoshbin Xoshbin commented Jun 2, 2026

No description provided.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors and expands the onboarding flow into a roomier, two-column guided tour with 11 steps, introducing new steps like Clipboard, Portals, Hidden AI Commands, Emoji, and Snippets. It updates the Rust step machine, window configuration, and Svelte views, while adding several helper components and tests. Feedback on these changes highlights a bug in AiSetupStep.svelte where skipping AI setup fails to advance the step, a TypeScript mismatch in snippetsSetup.ts due to a missing pinned property, and a usability issue in HiddenCommands.svelte where updating a hotkey does not re-enable the creation button.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment on lines +16 to +25
async function handleAiSkip() {
try {
await onboardingService.skipAiSetup()
} catch (err) {
diagnosticsService.report({
source: 'frontend', kind: 'manual', severity: 'warning', retryable: false,
context: { message: 'Could not skip AI setup.' }, developerDetail: String(err),
})
}
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The handleAiSkip function calls onboardingService.skipAiSetup() but does not advance the onboarding step. This will leave the user stuck on the AI Setup page when they click "Skip for now". Calling onboardingService.advance() at the end of the function ensures the user is successfully routed to the next step.

  async function handleAiSkip() {
    try {
      await onboardingService.skipAiSetup()
    } catch (err) {
      diagnosticsService.report({
        source: 'frontend', kind: 'manual', severity: 'warning', retryable: false,
        context: { message: 'Could not skip AI setup.' }, developerDetail: String(err),
      })
    }
    await onboardingService.advance()
  }

Comment on lines +8 to +14
snippetStore.add({
id: crypto.randomUUID(),
keyword: SAMPLE_KEYWORD,
expansion: 'you@example.com',
name: 'My email',
createdAt: Date.now(),
})
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The StoredSnippet interface requires the pinned property to be a boolean. Omitting it when calling snippetStore.add violates the type definition and can lead to TypeScript compilation errors or unexpected runtime behavior. Explicitly setting pinned: false resolves this type mismatch.

  snippetStore.add({
    id: crypto.randomUUID(),
    keyword: SAMPLE_KEYWORD,
    expansion: 'you@example.com',
    name: 'My email',
    createdAt: Date.now(),
    pinned: false,
  })

Comment on lines +20 to +24
async function recordHotkey(detail: { modifier: string; key: string }): Promise<true> {
modifier = detail.modifier
key = detail.key
return true
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Once the Grammar Fix command is successfully configured, the "Create the command" button is permanently disabled. If the user subsequently changes the hotkey in the ShortcutRecorder, they cannot re-register or update the command because the button remains disabled. Resetting configured to false in recordHotkey allows the user to save their updated hotkey.

  async function recordHotkey(detail: { modifier: string; key: string }): Promise<true> {
    modifier = detail.modifier
    key = detail.key
    configured = false
    return true
  }

@Xoshbin Xoshbin merged commit 70d25f8 into main Jun 2, 2026
1 check passed
@Xoshbin Xoshbin deleted the feat/onboarding-guided-tour branch June 2, 2026 17:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant