Skip to content

feat: fold legacy models into separate menus - #5190

Merged
t3dotgg merged 4 commits into
mainfrom
t3code/group-legacy-models
Aug 2, 2026
Merged

feat: fold legacy models into separate menus#5190
t3dotgg merged 4 commits into
mainfrom
t3code/group-legacy-models

Conversation

@t3dotgg

@t3dotgg t3dotgg commented Aug 1, 2026

Copy link
Copy Markdown
Member

Older provider models crowd the model picker and make the current families harder to scan.

This marks legacy models in provider snapshots so every client receives the same classification. Web and desktop now place them in an inline collapsed section, while mobile places a provider-scoped legacy submenu immediately after each provider. Search, favorites, existing selections, and custom models remain directly usable.

Screenshots

Before

Flat model menu

After, collapsed

Collapsed legacy models section

After, expanded

Expanded legacy models section

Verification

  • vp test run packages/contracts/src/server.test.ts apps/server/src/provider/Layers/CodexProvider.test.ts apps/server/src/provider/Layers/ClaudeCapabilitiesProbe.test.ts apps/web/src/modelSelection.test.ts apps/mobile/src/lib/modelOptions.test.ts
  • Scoped typechecks for contracts, server, web, and mobile
  • Touched-file lint
  • Real web client pass for collapse, expand, search, selection, and legacy-selection reopen behavior

Created by gpt-5.6-sol using the Codex harness in T3 Code.


Note

Medium Risk
Touches shared contracts and model-picker combobox key format; behavior is user-visible across web and mobile but scoped to picker UX with tests for classification and key round-trips.

Overview
Adds an optional isLegacy flag on provider model snapshots (contracts schema, Claude/Codex classification) so clients can tuck older models out of the main list while keeping search, favorites, and existing selections working.

Mobile centralizes model menu building in buildModelMenuActions, splitting current vs legacy models into per-provider submenus (including a dedicated “legacy models” group when only legacy models exist).

Web adds a collapsible Legacy models row per provider instance in ModelPickerContent, auto-expands when the active model is legacy, and switches combobox keys to modelPickerKeys so model rows and legacy section toggles cannot collide (replacing naive instanceId:slug parsing).

Reviewed by Cursor Bugbot for commit a6ccc74. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Fold legacy models into collapsible sections in the model picker UI

  • Adds an isLegacy flag to ServerProviderModel in server.ts, propagated from Claude and Codex providers through to AppModelOption and ModelOption on web and mobile.
  • On web, ModelPickerContent.tsx groups legacy models under a collapsible "Legacy models" section per provider instance, with collision-safe item keys via the new modelPickerKeys.ts module.
  • On mobile, a new buildModelMenuActions utility in modelOptions.ts separates legacy models into a provider-scoped submenu; providers whose only models are legacy may be omitted.
  • Behavioral Change: model picker keyboard navigation and onValueChange handlers now parse the new prefixed key format; existing stored keys would not match the new scheme.

Macroscope summarized a6ccc74.

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 3cb62b61-9068-4f53-a13a-536d26fde456

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
Comment thread apps/web/src/components/chat/ModelPickerContent.tsx Outdated

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a512274. Configure here.

Comment thread apps/mobile/src/lib/modelOptions.ts
@macroscopeapp

macroscopeapp Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new feature that changes how models are presented to users across web and mobile platforms, adding collapsible legacy model sections with new state management. New user-facing features warrant human review even when well-tested.

You can customize Macroscope's approvability policy. Learn more.

Comment thread apps/web/src/components/chat/modelPickerKeys.ts
@t3dotgg
t3dotgg merged commit e60821f into main Aug 2, 2026
17 checks passed
@t3dotgg
t3dotgg deleted the t3code/group-legacy-models branch August 2, 2026 07:45
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Aug 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant