Skip to content

feat(app): say when a Console account has no Go subscription - #57913

Open
kitlangton wants to merge 2 commits into
devfrom
no-go-subscription
Open

kitlangton wants to merge 2 commits into
devfrom
no-go-subscription

Conversation

@kitlangton

@kitlangton kitlangton commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Signing in to OpenCode Console with an account that has no Go subscription gives you no Go models, and nothing says why: the Console's /api/v2/config only returns opencode-go when the account is entitled.

  • Desktop. After a Console sign-in, the "Connected to …" model list ends with one muted line, No Go subscription on this account, and a Subscribe button that opens https://opencode.ai/go. When you connect from the Go row and already had a provider, the "connected" toast says the same with a Subscribe action.
  • TUI. /models (including right after /connect) shows a row No Go subscription on this account · subscribe where the Go models would be. Enter opens opencode.ai/go. It only appears with a valid Console credential and no opencode-go provider, and favoriting ignores it.

Tests: a Desktop e2e that signs in from the Go row with an unentitled account and clicks Subscribe, and the TUI lifecycle test's "re-authenticated without Go" step now checks the row.


Added by the opencode bot (AI-generated).

Related: #50611

The Console only returns opencode-go for accounts with a Go subscription, so signing in without one left no Go models and nothing said why. Desktop's post-sign-in model list (and the Go row's connected toast) now says 'No Go subscription on this account' with a Subscribe button to opencode.ai/go; the TUI's /models shows the same line as a row where Go models would be, opening opencode.ai/go on Enter.

@opencode-agent opencode-agent Bot 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.

The approach looks sound, and the Desktop side holds up because prepareConsoleCatalog waits for the workspace providers before the model list appears. The TUI lifecycle test and the tui/app type checks pass. I could not drive the flow by hand: it needs a real Console sign-in, and there is no Console stub here. @kitlangton, could you add before/after screenshots of the TUI /models row and the Desktop "Connected to …" list?

Public API: unchanged (UI and i18n strings only).

One concern, inline: the TUI decides "no subscription" only because opencode-go is missing from the provider list, and it never waits for the Console catalog. A Go subscriber could see the row if the first sync after /connect comes back before the workspace providers load, or if the Console config fails to load. #50611 describes subscribers who already end up with no Go models, and for them the row would also be wrong.

Related: #50611


const showExtra = createMemo(() => connected() && !props.providerID)

const noGoSubscription = createMemo(() => {

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.

This decides "no Go subscription" only because opencode-go is missing from the provider list. Desktop polls in prepareConsoleCatalog because the first refresh after the grant can still show only the free catalog. The TUI's connected() in dialog-integration.tsx syncs once and then opens this dialog, so a Go subscriber can briefly (or, if the Console config fetch fails, permanently) be told they have no subscription. Could the row wait until the Console workspace providers have loaded (e.g. any provider with integrationID === "opencode" other than opencode itself, like Desktop's loaded()), or get a real entitlement signal from the server?

…alog's provider

The models.dev catalog lists OpenCode Go even when the Console doesn't grant it, so the provider check never fired. Check for opencode-go models instead (like the TUI upsell) and show the Desktop line above the model list.

This branch has not been deployed

No deployments
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