Repository navigation
feat(app): say when a Console account has no Go subscription - #57913
kitlangton wants to merge 2 commits into
Conversation
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.
There was a problem hiding this comment.
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(() => { |
There was a problem hiding this comment.
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?
a57ec2c to
283f6a4
Compare
…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.
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/configonly returnsopencode-gowhen the account is entitled./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 noopencode-goprovider, 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