[Bug]: Favorited legacy models stay buried in the Legacy section instead of hoisting to the top (web)
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 90/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- react, typescript
- Domain
- frontend
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.
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
- Dominant language
- TypeScript
- Stars
- 23.3k
- Forks
- 6k
- Avg merge
- 10h 57m
- Merged PRs (30d)
- 365
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.
More from pingdotgg/t3code
-
bug via-triage
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
accepted bug via-triage
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
-
accepted bug via-triage
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
accepted bug via-triage
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
All issues in pingdotgg/t3code
Similar issues
-
S: triage
Difficulty 1/5 Under an hour Newbie friendliness 85/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
fix(errors): EHOSTUNREACH from a happy-eyeballs connect is reported as a resolver error (STAMP-80) Open
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
snapshot-labs/stamp#666 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
GauravKarakoti/SecureFlow#1070 · 1 comment ·
-
feature:Languages/Translations good first issue ready Web
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
digitalfabrik/integreat-app#4394 ·