Skip to content

feat(local-ui): add chat and image model steps to onboarding, with server dialogs and a logo loader - #1906

Merged
AnishSarkar22 merged 19 commits into
MODSetter:devfrom
AnishSarkar22:feat/models-ui
Sep 24, 2026
Merged

AnishSarkar22 merged 19 commits into
MODSetter:devfrom
AnishSarkar22:feat/models-ui

Conversation

@AnishSarkar22

@AnishSarkar22 AnishSarkar22 commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

What

  • Onboarding opens on the welcome screen, which no longer shows step dots, followed by two steps: a required chat model step and an optional image model step with Skip. Onboarding is marked complete only from the last step, so neither the welcome nor the steps show again afterwards.
  • Each model step lists every local model at once, recommended first, using Settings' Download, Use and Delete (with confirmation). Download progress shows under its row and never moves the page, and Continue or Finish stays disabled until a model is chosen, local or from a server.
  • The chat step adds a collapsed "Not listed? Search Hugging Face" that reuses Settings' search and focuses the box on open. The image step has no search, since sd.cpp only runs the models the catalog ships.
  • "Use a server" sits under the local list and names servers connected earlier. The server page reuses Settings' server groups, and the footer names the chosen model as "Using {model} via {server}" or "on this computer".
  • Adding and editing a server now happen in a shared dialog with labelled fields and the standard dialog footer, in Settings and onboarding alike. Saving a new server opens its group on its models; saving an edit stays in place.
  • Server groups keep the model in use shown above the list when opened, so opening a group only grows it downward.
  • The welcome's dither fades out over 200ms instead of vanishing, with the shader frozen during the fade. The chat step has no Back, since the welcome isn't somewhere to return to.
  • The ASCII startup spinner is replaced by the SurfSense logo filling like a tide, animated with transforms and opacity only and shown full and still under reduced motion. The dashboard now loads alongside the startup data, so the loader shows once instead of restarting between stages.
  • Chat downloads started from the Add model page no longer select themselves. Delete is offered for downloaded models on the Add model page as well as in Settings, and the Add model section headings are larger.
  • Smaller fixes: Hugging Face search results fit their reserved height, so the page below doesn't shift. The middle composer's model button matches the source count's size. The hardware wording moved into its own file, shared by Settings and onboarding.
  • selection.md, catalog.md and connections.md are updated to describe the new onboarding flow and the server dialog.

Why

Fixes #

How to test

High-level PR Summary

This PR implements a complete onboarding flow with model selection UI. Users progress through a welcome screen followed by two steps: choosing a chat model and optionally adding an image model. The onboarding interface displays local models in a scrollable list with download/use/delete actions, supports Hugging Face search for chat models, and allows connecting to remote servers. The implementation includes a new animated logo loader, converts the server connection form into a dialog component, and unifies model management between onboarding and settings pages. The chat model step is required while the image model step can be skipped.

⏱️ Estimated Review Time: 30-90 minutes

💡 Review Order Suggestion
Order File Path
1 docs/architecture/local-models/selection.md
2 docs/architecture/local-models/catalog.md
3 docs/architecture/connections.md
4 surfsense_local/frontend/src/features/onboarding/model-step/slot.ts
5 surfsense_local/frontend/src/features/onboarding/model-step/local-choices.ts
6 surfsense_local/frontend/src/features/onboarding/model-step/use-slot-models.ts
7 surfsense_local/frontend/src/features/onboarding/model-step/use-onboarding-install.ts
8 surfsense_local/frontend/src/features/onboarding/model-step/use-slot-delete.ts
9 surfsense_local/frontend/src/features/models/local/chat/describe-hardware.ts
10 surfsense_local/frontend/src/features/models/local/chat/hardware-summary.tsx
11 surfsense_local/frontend/src/features/models/local/chat/use-chat-install.ts
12 surfsense_local/frontend/src/features/models/local/image/use-image-install.ts
13 surfsense_local/frontend/src/features/models/your-models/your-model-row.ts
14 surfsense_local/frontend/src/features/onboarding/model-step/model-ready.tsx
15 surfsense_local/frontend/src/features/onboarding/offline-state.tsx
16 surfsense_local/frontend/src/features/onboarding/use-finish-onboarding.ts
17 surfsense_local/frontend/src/app/logo-fill-loader.tsx
18 surfsense_local/frontend/src/index.css
19 surfsense_local/frontend/src/app/load-dashboard.ts
20 surfsense_local/frontend/src/app/app-bootstrap.tsx
21 surfsense_local/frontend/src/app/app-bootstrap.test.tsx
22 surfsense_local/frontend/src/features/models/remote/connections/connection-dialog.tsx
23 surfsense_local/frontend/src/features/models/remote/connections/connection-form.tsx
24 surfsense_local/frontend/src/features/models/remote/connections/connection-form.test.tsx
25 surfsense_local/frontend/src/features/models/add-model/server-card.tsx
26 surfsense_local/frontend/src/features/models/add-model/add-model-options.tsx
27 surfsense_local/frontend/src/features/settings/models/model-slot-settings.tsx
28 surfsense_local/frontend/src/features/settings/models/chat-models-settings.test.tsx
29 surfsense_local/frontend/src/features/settings/models/chat-models-settings.tsx
30 surfsense_local/frontend/src/features/models/remote/models/server-models.tsx
31 surfsense_local/frontend/src/features/models/remote/models/server-model-picker.tsx
32 surfsense_local/frontend/src/features/models/remote/models/server-model-picker.test.tsx
33 surfsense_local/frontend/src/features/models/local/chat/model-search.tsx
34 surfsense_local/frontend/src/features/onboarding/model-step/hugging-face-search.tsx
35 surfsense_local/frontend/src/features/models/local/chat/download-chat-models.tsx
36 surfsense_local/frontend/src/features/models/local/chat/download-chat-models.test.tsx
37 surfsense_local/frontend/src/features/models/local/image/download-image-models.tsx
38 surfsense_local/frontend/src/features/models/local/image/download-image-models.test.tsx
39 surfsense_local/frontend/src/features/onboarding/model-step/local-model-list.tsx
40 surfsense_local/frontend/src/features/onboarding/model-step/server-option.tsx
41 surfsense_local/frontend/src/features/onboarding/model-step/server-path.tsx
42 surfsense_local/frontend/src/features/onboarding/model-step/model-step.tsx
43 surfsense_local/frontend/src/features/onboarding/onboarding-dither.tsx
44 surfsense_local/frontend/src/features/onboarding/onboarding-page.tsx
45 surfsense_local/frontend/src/features/onboarding/onboarding-page.test.tsx
46 surfsense_local/frontend/src/features/chat/chat-composer.tsx
47 surfsense_local/frontend/src/features/chat/chats-dialog.tsx

Need help? Join our Discord

@vercel

vercel Bot commented Sep 24, 2026

Copy link
Copy Markdown

@AnishSarkar22 is attempting to deploy a commit to the Rohan Verma's projects Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai

coderabbitai Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 61519b1f-85c7-4efc-8d6e-163d5b3031d9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@AnishSarkar22 AnishSarkar22 changed the title Feat/models UI feat(local-ui): add chat and image model steps to onboarding, with server dialogs and a logo loader Sep 24, 2026
@AnishSarkar22
AnishSarkar22 merged commit b7d1bf0 into MODSetter:dev Sep 24, 2026
4 of 6 checks passed
CREDO23 added a commit that referenced this pull request Sep 24, 2026
Resolves the models UI rework (#1906) against local audio: Electron stages
both sd.cpp and audio.cpp, predev builds both, and the catalog doc says
which sections offer Delete.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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