feat: dynamic model listing, single enablement step, provider-level reasoning control - #608
Open
emrberk wants to merge 10 commits into
Open
feat: dynamic model listing, single enablement step, provider-level reasoning control#608emrberk wants to merge 10 commits into
emrberk wants to merge 10 commits into
Conversation
…easoning control
Replace the fixed built-in model list with the providers' live /v1/models
listings. Availability now comes from the listing; pure heuristics derive
labels, filter OpenAI noise (blocklist-only, with a Show-all escape hatch),
resolve a utility model for chat titles (haiku->sonnet / luna->nano->mini,
newest first), and gate reasoning-capable OpenAI models by creation date.
- Manage Models becomes the single enablement step for every provider; the
settings modal body is a read-only summary and flags models the provider
removed ("No longer available", dropped on Save)
- API key validation is a listing fetch; the chat-ping validation chain and
the test-model flag are gone
- Reasoning simplifies to one provider-level Default/High dropdown for
OpenAI (applied to chat and compaction, never titles, with a stateless
400-strip-retry); Anthropic needs no control since modern Claude runs
adaptive thinking by default. Legacy @reasoning= variants collapse to
plain ids on load and a selected high variant folds into the new setting
- Context compaction runs on the selected model; titles use the utility model
- Drop temperature from Anthropic requests: every 4.7+/5.x model now rejects
it as deprecated (verified against all 11 listed models)
- Remove the slow-model/brain-icon story
Verified live against both provider APIs: request shapes pass on all 11
Anthropic and all 30 listed OpenAI chat models (Default and High).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The picker's default view now shares the gpt-5-launch date gate with the reasoning control: older generations (gpt-3.5/4/4o/o-series) move behind the "Show all models" escape hatch and stay manually addable. 16 rows against today's live listing instead of 30. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
gpt-5-pro and friends reason for minutes and stream no output or reasoning summaries even with summary auto (verified live) — in an interactive chat they read as unresponsive. They stay reachable via Show all models and manual add. 12 default rows against today's listing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Member
Author
|
Reviewing PR #608 at level 3. PR #608 ReviewReview target
This level-3 review covered the changed AI settings and provider contracts, their repository-wide callsites, local-storage migration behavior, async fallback paths, and browser interactions. Typecheck, build, lint, the full unit suite, the provider-setup browser suite, and targeted browser reproductions were executed against the reviewed revision. Issues
Summary
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Replaces the fixed built-in model list with the providers' live
/v1/modelslistings and removes the double-enablement step. One picker (Manage Models) now decides which models are enabled for every provider.Dynamic listing + heuristics (
modelCatalog.ts)listModels()returns{ id, label?, created? }(Anthropic mapsdisplay_name/created_at)gpt-5-mini→ "GPT-5 Mini"); Anthropic usesdisplay_name-promodels, which reason for minutes with no streamed output); older generations and blocklisted ids stay reachable via "Show all models" and manual add — a new generation (gpt-6) appears with zero code changehaiku→sonnet/luna→nano→mini, newest first) and persists asutilityModel; context compaction runs on the selected modelSingle enablement step
testConnection, and the test-model flag are goneReasoning: asymmetric two-state design
reasoning_effort: "high"to models gated by creation date (≥ gpt-5 launch), on chat and compaction only — never titles. A stateless 400-strip-retry covers any model that rejects itgpt-5.4@reasoning=…variants collapse to plain ids on load; a selectedhighvariant folds into the newreasoningEffortsetting; the whole@key=valuemodel-string machinery is deletedAnthropic
temperaturedropEvery 4.7+/5.x Claude model now rejects
temperaturewith 400 "deprecated for this model" (this also breaks currentmainon claude-opus-4-7). Verified against all 11 listed models that requests without it succeed; the param is removed.Back-compat
Plain stored ids keep working with no migration. The only rewrite is the reasoning-variant collapse in
reconcileSettings. Alias ids (claude-sonnet-4-5) match their dated listing ids and are not flagged as removed.Verification
yarn typecheckclean; 2012 unit tests pass (49 new formodelCatalog+settings)reasoning: {effort: "high"}on gpt-5.4 while the title request runs ongpt-5.6-lunawith no effort parame2e/commands.jsnow readsCypress.config("baseUrl")instead of hardcoding port 9999, soCYPRESS_BASE_URLworks locally; CI is unaffected🤖 Generated with Claude Code