Skip to content

[FEATURE]:Surface the existing model-picker visibility filter (show all / hint count) #28484

Closed as not planned

Description

@ericallenpaul

Feature hasn't been suggested before.

  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

The picker's default view filters out most user-configured models in favor of a curated "latest per family within 6 months" subset (packages/app/src/context/models.tsx, visible()). The filter is sensible for opencode's bundled provider catalog but invisible to users — there's no on-screen hint that hidden models exist or how to reveal them. A short label or toggle would close the gap with very little surface change.

Note: this is the inverse of #22593. That issue asks for more filtering controls in the picker; this one asks for visibility of the filter that already runs silently. Both can land independently.

What I observed

Configured opencode.json with 17 models across 5 providers (Ollama + four *-via-gateway providers pointed at Cloudflare AI Gateway):

ollama: granite4:7b-a1b-h, qwen3-coder:30b, qwen2.5-coder:7b-instruct-q4_K_M
anthropic-via-gateway: claude-sonnet-4-6, claude-sonnet-4-5, claude-opus-4-6, claude-opus-4-5, claude-haiku-4-5
openai-via-gateway: gpt-5, gpt-5-mini, gpt-4.1-mini, gpt-4o-mini
google-via-gateway: gemini-2.5-pro, gemini-2.5-flash
workers-ai-via-gateway: @cf/qwen/qwen2.5-coder-32b-instruct, @cf/meta/llama-3.3-70b-instruct-fp8-fast, @cf/deepseek-ai/deepseek-r1-distill-qwen-32b
  • opencode models lists all 17 ✓
  • Picker default view shows 6 models from 2 providers
  • Typing any substring of a "hidden" model in the picker's search box reveals it
  • Selecting a found-via-search model permanently promotes it into the default view (because model.set(item, { recent: true }) flips visibility: "show")

Across launches the visible subset changes — likely because the underlying models.dev release_date / family metadata moves as new releases ship, shifting which models qualify as "latest in family."

How the filter works (for context)

packages/app/src/context/models.tsx:

const visible = (model: ModelKey) => {
  const key = modelKey(model)
  const state = visibility().get(key)
  if (state === "hide") return false
  if (state === "show") return true             // set when user selects this model
  if (latestSet().has(key)) return true         // "latest in family within 6 months"
  const date = release().get(key)
  if (!date?.isValid) return true               // fallback for models without release_date
  return false
}

And latest() returns "for each provider, for each family within that provider, only the newest model released within the last 6 months." Sensible curation for opencode's bundled providers; aggressive for user-curated multi-provider configs.

Why this matters

For users building a custom multi-provider config — exactly the scenario opencode is well-suited for — the picker silently removes most of their work. The mental model "I configured these models, the picker should let me pick them" is broken without any UI affordance explaining the curation.

The workaround (type into search, select to permanently un-hide) is real but invisible. New users have no reason to know it exists, and "models keep disappearing" is the impression they leave with.

Proposed enhancements (ranked by effort)

  1. Cheapest, biggest immediate win — add an affordance hint. When models.list().length > visibleSubset.length, render a small line at the bottom of the picker:

    + 11 more · type to search

    Even without changing the filter logic, this restores user agency and explains the workaround.

  2. Better — add a "show all" toggle. Currently the picker shows Connect provider (ctrl+a) and Favorite (ctrl+f) in its footer. Add Show all (ctrl+l) (or similar) that flips between the curated default view and the full configured set. Default stays curated; expert users get full access without typing into search.

  3. Most aligned with user intent — don't filter user-configured models. Apply the visible() curation only to opencode-bundled built-in providers (the four "Free" entries at the top of the picker). Models the user explicitly listed in opencode.json would default to visible without needing to be selected once first. Curation for bundled catalogs is genuinely useful UX; for hand-rolled configs it's hostile. The two cases have opposite needs.

I'm not asking to remove the filter — option 3 is the largest change and I'd understand if it's a non-starter. Option 1 alone would resolve the discoverability problem.

Workarounds (for users who hit this)

Documenting these here for anyone who finds this issue:

# Type any substring of the hidden model into the picker's search box.
# Selecting promotes it permanently into the default view.

# Or address by full key on the CLI:
opencode run --model <provider>/<model> "..."
opencode --model <provider>/<model>           # boot TUI pre-selected

# Or via slash command inside the TUI:
/model <provider>/<model>

Environment

  • OpenCode version: 1.15.5 (latest at time of report)
  • OS: Windows 11, PowerShell 7. The filter is platform-independent — same behavior would appear on macOS/Linux.
  • Config: 17 models across 5 providers, each using a different @ai-sdk/* adapter

Activity

  1. github-actions commented on May 20, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of or closely related to existing issues. Please check:

    You already referenced #22593 in your report, which is also related.

  2. github-actions commented on Jul 20, 2026

    @github-actions
    Contributor

    To stay organized issues are automatically closed after 60 days of no activity. If the issue is still relevant please open a new one.

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions