Skip to content

feat: add onboarding page with guided setup flow#13774

Merged
kangfenmao merged 20 commits intomainfrom
feat/landing-page
Mar 25, 2026
Merged

feat: add onboarding page with guided setup flow#13774
kangfenmao merged 20 commits intomainfrom
feat/landing-page

Conversation

@kangfenmao
Copy link
Copy Markdown
Collaborator

@kangfenmao kangfenmao commented Mar 25, 2026

What this PR does

Before this PR:

  • New users had no guided onboarding experience
  • Users had to manually navigate to settings to configure providers and models

After this PR:

  • Adds an onboarding page with guided setup flow for new users
  • Supports CherryIN OAuth login with automatic model fetching and configuration
  • Allows users to select other providers via a popup dialog
  • Provides a model selection step to configure default, quick, and translation models
  • Includes skip functionality for users who want to configure later

Why we need it and why it was done in this way

The following tradeoffs were made:

  • Reused existing ModelSettings component with new compact, showSettingsButton, showDescription props to avoid code duplication
  • Used OnboardingContext to manage onboarding state across components

The following alternatives were considered:

  • Creating separate model selection components for onboarding page (rejected to maintain consistency with settings page)

Breaking changes

None

Special notes for your reviewer

  • The onboarding flow: Welcome → (CherryIN Login or Select Provider) → Model Selection → Main App
  • CherryIN OAuth automatically fetches and adds available models after successful login
  • Renamed from landing to onboarding for clearer naming convention

Checklist

  • PR: The PR description is expressive enough and will help future contributors
  • Code: Write code that humans can understand and Keep it simple
  • Refactor: You have left the code cleaner than you found it (Boy Scout Rule)
  • Upgrade: Impact of this change on upgrade flows was considered and addressed if required
  • Documentation: A user-guide update was considered and is present (link) or not required
  • Self-review: I have reviewed my own code before requesting review from others

Release note

```release-note
feat: Add onboarding page with guided setup flow for new users, supporting CherryIN OAuth login with automatic model configuration
```

@kangfenmao kangfenmao changed the title feat: add landing page with guided onboarding flow feat: add onboarding page with guided setup flow Mar 25, 2026
@kangfenmao kangfenmao marked this pull request as ready for review March 25, 2026 04:07
@kangfenmao kangfenmao requested review from EurFelux and eeee0717 March 25, 2026 04:07
@kangfenmao
Copy link
Copy Markdown
Collaborator Author

If you need to test it, you need to delete the onboarding-completed key in localStorage.

…port

- Rearranged the component hierarchy in App.tsx for better context management.
- Updated GeneralPopup to use styled-components for custom modal styling.
- Added new translations for landing page elements in English, Chinese, German, Greek, Spanish, French, Japanese, Portuguese, Romanian, and Russian.
- Refactored ProviderPopup to utilize i18n for title localization.
- Simplified SelectModelPage by integrating ModelSettings and enhancing translation support.
- Updated SkipButton to use i18n for the skip text.
- Enhanced WelcomePage to include i18n for various text elements.
- Modified ModelSettings to accept props for conditional rendering of settings buttons and descriptions.
…omponents

- Removed LandingContext and its associated provider and hooks.
- Introduced OnboardingContext with similar functionality for onboarding steps.
- Created OnboardingPage and its components (WelcomePage, SelectModelPage, SkipButton, ProviderPopup) to handle onboarding flow.
- Updated i18n translations to reflect the change from landing to onboarding.
- Deleted LandingPage and added routing for OnboardingPage.
@EurFelux
Copy link
Copy Markdown
Collaborator

EurFelux commented Mar 25, 2026

Note

This issue/comment/review was translated by Claude.

image

In this interface, although the skip button is displayed, it is actually not clickable


Original Content

在这个界面,虽然有显示跳过按钮,但实际不可点击

Copy link
Copy Markdown
Collaborator

@EurFelux EurFelux left a comment

Choose a reason for hiding this comment

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

Note

This review was translated by Claude.

Overall a nice PR! The architecture is reasonable, reusing existing components. Found one hardcoded English string that needs to go through i18n.


Original Content

整体不错的 PR!架构合理,复用了现有组件。发现一个硬编码英文字符串需要走 i18n。

Comment thread src/renderer/src/pages/onboarding/components/WelcomePage.tsx Outdated
Copy link
Copy Markdown
Collaborator

@EurFelux EurFelux left a comment

Choose a reason for hiding this comment

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

Note

This review was translated by Claude.

Suggest simplifying onboarding state management: remove Context, move route guards to Router, put step state in OnboardingPage props.

Comment thread src/renderer/src/context/OnboardingContext.tsx Outdated
@kangfenmao kangfenmao requested a review from EurFelux March 25, 2026 07:42
Copy link
Copy Markdown
Collaborator

@EurFelux EurFelux left a comment

Choose a reason for hiding this comment

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

Note

This issue/comment/review was translated by Claude.

LGTM. All previously raised issues have been fixed: i18n hardcoding, SkipButton z-index, Context simplified to hook+props. The new useProvider.addModel refactoring is also very reasonable.


Original Content

LGTM. 之前提出的问题都已修复:i18n 硬编码、SkipButton z-index、Context 简化为 hook+props。新增的 useProvider.addModel 重构也很合理。

@kangfenmao kangfenmao merged commit 1bcb89e into main Mar 25, 2026
5 checks passed
@kangfenmao kangfenmao deleted the feat/landing-page branch March 25, 2026 10:11
MyPrototypeWhat pushed a commit that referenced this pull request Mar 30, 2026
### What this PR does

Before this PR:
- New users had no guided onboarding experience
- Users had to manually navigate to settings to configure providers and
models

After this PR:
- Adds an onboarding page with guided setup flow for new users
- Supports CherryIN OAuth login with automatic model fetching and
configuration
- Allows users to select other providers via a popup dialog
- Provides a model selection step to configure default, quick, and
translation models
- Includes skip functionality for users who want to configure later

### Why we need it and why it was done in this way

The following tradeoffs were made:
- Reused existing `ModelSettings` component with new `compact`,
`showSettingsButton`, `showDescription` props to avoid code duplication
- Used `OnboardingContext` to manage onboarding state across components

The following alternatives were considered:
- Creating separate model selection components for onboarding page
(rejected to maintain consistency with settings page)

### Breaking changes

None

### Special notes for your reviewer

- The onboarding flow: Welcome → (CherryIN Login or Select Provider) →
Model Selection → Main App
- CherryIN OAuth automatically fetches and adds available models after
successful login
- Renamed from `landing` to `onboarding` for clearer naming convention

### Checklist

- [x] PR: The PR description is expressive enough and will help future
contributors
- [x] Code: Write code that humans can understand and Keep it simple
- [x] Refactor: You have left the code cleaner than you found it (Boy
Scout Rule)
- [ ] Upgrade: Impact of this change on upgrade flows was considered and
addressed if required
- [x] Documentation: A user-guide update was considered and is present
(link) or not required
- [x] Self-review: I have reviewed my own code before requesting review
from others

### Release note

```release-note
feat: Add onboarding page with guided setup flow for new users,
supporting CherryIN OAuth login with automatic model configuration
```
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.

3 participants