Skip to content

fix(app): always list OpenCode free models in the model picker - #60047

Merged
Hona merged 1 commit into
devfrom
free-models-default
Oct 28, 2026
Merged

Hona merged 1 commit into
devfrom
free-models-default

Conversation

@Hona

@Hona Hona commented Oct 28, 2026 •

Copy link
Copy Markdown
Member

The desktop model picker hid OpenCode's free models when they were more than 6 months old or had a newer free model in the same family. Big Pickle (released 2025-10-17) was missing from the picker and was switched off in Settings > Models.

  • visible() in packages/app/src/providers/models/models.tsx now shows every free OpenCode model by default. A model that the user hides stays hidden.
  • No change for signed-out users. Their free-model dialog already lists every free model, and Big Pickle is still the default model (PREFERRED_FREE in packages/core/src/model.ts).
  • The e2e mock server now accepts a model's time.released, so a test can include old models.
flowchart LR
  M[model] --> U{user set show/hide?}
  U -- yes --> R[use it]
  U -- no --> L{newest in family and less than 6 months old?}
  L -- yes --> S[show]
  L -- no --> F{free OpenCode model?}
  F -- yes --> S
  F -- no --> H[hide]
  style F stroke:#009fff
Loading
Before After
Full picker (any paid model connected) Big Pickle hidden Big Pickle listed
Free models with a newer sibling (Nemotron 3 Ultra Free) Hidden Listed
Settings > Models Big Pickle off by default On by default
Default for a new user with nothing set up Big Pickle Big Pickle

Visual

<svg xmlns="http://www.w3.org/2000/svg" width="240" height="72" viewBox="0 0 240 72" fill="none" font-family="system-ui, sans-serif" font-size="9">
  <style>
    .row{fill:currentColor;opacity:.08}
    .txt{fill:currentColor;opacity:.75}
    .tag{fill:currentColor;opacity:.18}
    .new{animation:in 3s ease-in-out infinite}
    @keyframes in{0%,15%{opacity:0;transform:translateY(-4px)}35%,85%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-4px)}}
    @media (prefers-reduced-motion:reduce){.new{animation:none}}
  </style>
  <rect x="20" y="4" width="200" height="64" rx="4" stroke="currentColor" stroke-opacity=".3"/>
  <rect class="row" x="26" y="10" width="188" height="16" rx="2"/>
  <text class="txt" x="32" y="21">Claude Opus 5.5</text>
  <g class="new">
    <rect class="row" x="26" y="29" width="188" height="16" rx="2" style="fill:#009fff;opacity:.16"/>
    <text class="txt" x="32" y="40">Big Pickle</text>
    <rect class="tag" x="182" y="32" width="26" height="10" rx="2"/>
    <text class="txt" x="186" y="40" font-size="7">Free</text>
  </g>
  <rect class="row" x="26" y="48" width="188" height="16" rx="2"/>
  <text class="txt" x="32" y="59">GPT 6.1 Sol</text>
</svg>

Added by the opencode bot (AI-generated).

Related: #49605

@Hona
Hona requested a review from Brendonovich as a code owner October 28, 2026 22:43
Copilot AI balanced review requested due to automatic review settings October 28, 2026 22:43

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@Hona
Hona enabled auto-merge (squash) October 28, 2026 22:43

@opencodejr opencodejr Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Looks good. I ran the new e2e test on the PR's head, where it passes. With models.tsx reverted to the base version, it fails because Big Pickle is missing from the picker, so the fix is confirmed. Before and after screenshots of the picker are attached below.

Public API: unchanged. The change only affects the app's default model visibility and the e2e mock server.

No concerns: models the user hid stay hidden, paid models still use the six-month and newest-in-family check, and the test is small with a fixed clock.

Related: #49605

Before

After

@Hona
Hona merged commit 77a0fd6 into dev Oct 28, 2026
23 checks passed
@Hona
Hona deleted the free-models-default branch October 28, 2026 22:54
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.

2 participants