pingdotgg / pingdotgg/t3code

[Bug]: Favorited legacy models stay buried in the Legacy section instead of hoisting to the top (web)

Open Beginner friendly
#11,925 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

accepted bug via-triage
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
  1. Have a provider (e.g. Claude) with at least one model classified as legacy (e.g. Claude Opus 4.8).
  2. Favorite that legacy model (star it) in the model picker.
  3. 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.