Skip to content

fix(app): show free models alongside their paid twins by default - #55712

Merged
Brendonovich merged 3 commits into
devfrom
free-model-visibility
Oct 17, 2026
Merged

Brendonovich merged 3 commits into
devfrom
free-model-visibility

Conversation

@opencode-agent

Copy link
Copy Markdown
Contributor

The model picker shows only the newest model per provider and family by default. Free OpenCode models share a family and release date with their paid twin (for example deepseek-v4.1-flash and deepseek-v4.1-flash-free are both deepseek-flash, released 2026-09-10), so the tie went to the paid model and the free one stayed hidden until enabled in Models settings.

This groups by family plus free/paid, using the same free check as the picker's Free badge (opencode provider with zero input cost). That check now lives in one exported isFreeModel helper used by the visibility rule, the model select dialog, and the unpaid dialog.

Against the current models.dev opencode catalog, the default-visible set gains deepseek-v4.1-flash-free and cat-jam-free and loses nothing. Explicit show/hide choices are unchanged.

Verified with bun run typecheck in packages/app.

Requested by: @Brendonovich (Brendan via Slack)

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

The fix works and the change looks sound. I ran the real visibility logic from models.tsx against the live models.dev opencode catalog in both checkouts. On the base, deepseek-v4.1-flash-free and cat-jam-free are hidden by default. With this PR both are visible, and nothing drops out of the default set (37 → 39 visible). Older free models in the same family, such as deepseek-v4-flash-free, stay hidden. bun run typecheck and the existing tests in src/providers/models pass. There's no TUI view of this and no browser was available here, so I couldn't take screenshots.

The public API is unchanged: this only touches the app's model picker, and isFreeModel is internal to packages/app.

I found nothing that should block a merge.

@Brendonovich
Brendonovich enabled auto-merge (squash) October 15, 2026 13:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant