Skip to content

feat(desktop): add toggle to hide unconfigured providers in model picker - #59744

Closed
brian717 wants to merge 1 commit into
NousResearch:mainfrom
brian717:feat/model-picker-hide-unconfigured-59483
Closed

feat(desktop): add toggle to hide unconfigured providers in model picker#59744
brian717 wants to merge 1 commit into
NousResearch:mainfrom
brian717:feat/model-picker-hide-unconfigured-59483

Conversation

@brian717

@brian717 brian717 commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

What

Adds an opt-in "Hide Unconfigured Providers" toggle to the Desktop model-picker footer (next to Edit Models). When enabled, the picker hides providers the user has no usable credentials for, so someone who only configured a couple of providers isn't scrolling past the entire catalog.

Resolves #59483.

Why

The picker lists every provider from the catalog, including canonical rows surfaced with a setup affordance that the user hasn't set up. The issue reporter (uses only DeepSeek) has to scroll past Anthropic, OpenAI, Google, OpenRouter, etc. every time.

The data needed already exists on the frontend; ModelOptionProvider.authenticated is "True when the provider has usable credentials", so no backend change is required.

Changes

  • store/model-visibility.ts: new persisted $hideUnconfiguredProviders atom + setter (reuses the existing storedBoolean/persistBoolean storage pattern), and a pure filterConfiguredProviders(providers, hide, currentProviderSlug) helper.
  • app/shell/model-menu-panel.tsx: reads the store, filters pickerProviders, and renders the toggle with a check mark when active.
  • i18n: hideUnconfigured string added to en.ts, zh.ts, and types.ts.
  • store/model-visibility.test.ts: 4 new unit tests for the filter helper.

Design notes

  • Opt-in, default off — chosen over the issue's alternative "make it the default", which would change behavior for all users.
  • Only an explicit authenticated === false is filtered; a missing flag is treated as configured (safe default for user/custom providers).
  • The active provider is always kept visible, so the currently-selected model can never disappear from the picker.
  • Setting persists across restarts via localStorage, matching the sibling model-visibility feature.

Testing

  • vitest run on the affected suites: 26 passed (incl. 4 new).
  • tsc --noEmit: clean.
  • eslint on all changed files: clean.
  • Manual: open the model picker → toggle Hide Unconfigured Providers → providers without credentials disappear (check appears); toggle again to restore; persists across restart.

Renderer typecheck/tests only; full desktop build (tsc -b + vite) not run.

The model picker lists every provider from the catalog, including canonical
rows the user has no credentials for. Add an opt-in "Hide Unconfigured
Providers" toggle to the picker footer that filters out providers whose
`authenticated` flag is explicitly false, so users who only configured a few
providers aren't scrolling past the rest.

The setting persists per the existing model-visibility storage pattern and
defaults off, leaving current behavior unchanged. The active provider is
always kept visible so the current model can never disappear.

Closes NousResearch#59483
@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/desktop Electron desktop app (apps/desktop/*) labels Jul 6, 2026
@teknium1

Copy link
Copy Markdown
Contributor

Thanks for the focused Desktop implementation. This is an automated hermes-sweeper review.

Closing as implemented on main; the current default behavior is stronger than the proposed opt-in toggle.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/desktop Electron desktop app (apps/desktop/*) P3 Low — cosmetic, nice to have sweeper:implemented-on-main Sweeper: behavior already present on current main type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Filter model selector dropdown to only show providers with configured API keys

3 participants