Repository navigation
feat(models): fold legacy models behind a row in the model picker - #2282
Merged
Merged
Conversation
Add an optional lifecycle flag (current or legacy, absent means current) to ProviderModelInfo. Claude flags models superseded by a newer release in the same family, in its static fallback and in discovery, including dated snapshots.
A provider tab lists current models, then a Legacy models row with its count and a chevron that shows or hides the legacy models in place. The fold opens when the selected model is legacy, and a search lists legacy matches unfolded.
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
Each Claude model now carries a
lifecycleflag, eithercurrentorlegacy. A missing flag means current. The flag comes from one static list in the contracts package and applies to the static fallback and to REST discovery. Dated discovery ids such asclaude-sonnet-5-20260514resolve to their alias, soclaude-opus-5-5is not folded underclaude-opus-5.The model picker shows current models first, then a "Legacy models" row with a count and a chevron. Picking the row, by click or Enter, opens or closes the legacy models in place.
The fold opens automatically when the selected model is legacy. During a search, matches show unfolded. Favourites behave as before. A provider with no legacy models shows no row. The flag is separate from
availableUntil.Closes #2228
Why
The Claude tab listed eleven models, with previous generations mixed in among the current ones. Folding the superseded models keeps the newest of each family at the top. Older models are still one pick away, and still appear in search.
UI Changes
Captured in the Electron live-testing harness on an empty database. Same window and workflow in each shot.
Review Notes
packages/contracts/src/providers/claude-static-fallback.ts.RETIRED_CODEX_MODEL_IDSis the obvious first candidate. Until then those tabs show no fold row.Picker(PickerRow.expanded). It skips numbered shortcuts, so Ctrl+N always picks a model.Need help on this PR? Tag
@codesmith-botwith what you need.