[Bug]: Favorited legacy models stay buried in the Legacy section instead of hoisting to the top (web)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 23k
- Forks
- 5.9k
- Avg merge
- 11h 14m
- Merged PRs (30d)
- 357
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/web
Steps to reproduce
- Have a provider (e.g. Claude) with at least one model classified as legacy (e.g. Claude Opus 4.8).
- Favorite that legacy model (star it) in the model picker.
- Open the model picker on that provider's tab.
Expected behavior
Favorited models are hoisted to the top of the list. A favorited legacy model should behave the same way — it should appear at the top with the other favorites, not inside the "Legacy models" group. Unfavoriting it should return it to the Legacy group.
This is already the behavior on the native iOS client — it was fixed there in cee01c05f5 ("fix(swift-ios): show legacy models in favorites"), which promotes favorited legacy models out of the legacy group and returns them when unfavorited.
Actual behavior
The favorited legacy model stays buried inside the "Legacy models" section instead of being hoisted to the top with the other favorites. The star renders on the row, but the row is under Legacy.
Root cause is in apps/web/src/components/chat/ModelPickerContent.tsx. filteredModels is correctly sorted favorites-first (groupFavorites: true), but legacySection then splits the list purely on isLegacy, ignoring favorite status:
const currentModels = filteredModels.filter((model) => !model.isLegacy);
const legacyModels = filteredModels.filter((model) => model.isLegacy);
So every legacy model — favorited or not — is pulled into the collapsed Legacy group, which defeats the favorite hoist for any legacy favorite. Legacy grouping (#5190) and favorite hoisting shipped independently and were never reconciled on web.
Note: the React Native mobile client does not expose model favorites at all, so this interaction only affects apps/web (and desktop, which wraps it). The native iOS client is already fixed.
Impact
Minor bug or occasional failure
Version or commit
main @ 8fc60a9849 (reproduced on v0.0.41-nightly.20260915.1766, identical to main for this file)
Environment
apps/web / desktop, any provider with a favorited legacy model
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in apps/web/src/components/chat/ModelPickerContent.tsx, focusing on filteredModels and the legacySection split. Reproduce the issue with a favorited legacy model, then verify that favorites appear with the other favorites and that unfavoriting returns the model to the Legacy models group.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- react, typescript
- Domain
- frontend
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 90/100