Uh oh!
There was an error while loading. Please reload this page.
fix(mobile): hide inapplicable model settings in the picker - #6426
fix(mobile): hide inapplicable model settings in the picker#6426SergeSerb2 wants to merge 1 commit into
Conversation
Greyed-out reasoning and context rows cluttered the sheet for models that don't support them. Show only the selected model's options, and put short catalogs on inline chips so the panel stays compact. Co-authored-by: Cursor <cursoragent@cursor.com>
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:1780a8adca
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| selectedId={typeof currentValue === "string" ? currentValue : undefined} | ||
| choices={selectableChoices(descriptor).map((choice) => ({ | ||
| id: choice.id, | ||
| label: choice.label, | ||
| }))} |
There was a problem hiding this comment.
Preserve the display of hidden active choices
When the current reasoning value was set elsewhere to ultracode, selectedId remains ultracode while selectableChoices() intentionally removes that choice. The new chip row therefore renders with no selected option, whereas the previous disclosure row still displayed “Ultracode”; preserve a read-only indication or fallback disclosure for an active filtered value so the picker accurately shows the current state.
AGENTS.md reference: AGENTS.md:L73-L73
Useful? React with 👍 / 👎.
ApprovabilityVerdict: Needs human review This PR changes runtime UI behavior (hiding inapplicable settings instead of showing them disabled, adding inline chip selection). An unresolved review comment identifies an edge case where filtered-out active values won't be displayed in the new chip UI. The scope of behavior changes and the identified issue warrant human review. You can customize Macroscope's approvability policy. Learn more. |
t3dotgg
commented
Aug 28, 2026
Note 🤖 GPT-5.6 Sol responding on behalf of Theo We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together. Filtering out inapplicable settings already landed in #6224. This branch's remaining changes are inline choice chips and a layout animation without screenshots or a recorded mobile test, so we are not keeping that separate visual change. If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed. |
What Changed
The mobile model picker sheet no longer keeps a union of every provider setting on screen. It now shows only the options the selected (or staged) model actually supports, and renders short catalogs — reasoning, context window, service tier, optimize-for, and runtime — as inline chips instead of extra disclosure rows.
Unsupported controls are omitted rather than greyed out. Switching models animates the settings cluster so rows appear and disappear without a jump. Catalogs longer than six choices still open the stacked submenu.
This is the same picker cleanup we shipped in T3 Pretty, re-implemented on current
pingdotgg/t3codemain. The iOS composer menu already skipped empty select catalogs; this brings the sheet (Android, new-task draft, and the fallback sheet) in line.Why
Greyed-out Reasoning, Context Window, Fast Mode, and Service Tier rows made the sheet feel cluttered, especially on models like Cursor Auto that only expose Optimize For. Hiding inapplicable settings and putting the remaining choices on chips keeps the panel compact without removing any capability.
UI Changes
Before: Every possible setting stayed visible. Unsupported rows were dimmed with a chevron or a dead toggle, so picking Auto still showed Reasoning / Context Window / Fast Mode / Service Tier as disabled chrome. Runtime opened a second panel.
After: Only advertised settings render. Reasoning and similar short selects are chip rows on the main sheet (no extra panel). Runtime uses the existing short labels (Approve / Edits / Auto / Full). A model with no extra options shows just Runtime and Done.
Screenshots were not captured in this pass.
Checklist
Test plan
vp test runonapps/mobile/src/features/threads/thread-settings-sheet-state.test.tsandthread-settings-menu.test.ts(16 tests)vp run --filter @t3tools/mobile typecheckModel: grok-4.6
Made with Cursor
Note
Hide inapplicable model settings and render short select options as inline chips in thread settings
visibleSheetOptionDescriptors, showing only descriptors the selected model advertises; empty select catalogs and unsupported options are hidden.ChoiceChipRowchips with immediate selection instead of navigating to a submenu; longer catalogs still useDisclosureRow.LayoutAnimation(180ms easeInEaseOut) so the settings area transitions smoothly.disabledvisual states are removed fromDisclosureRowandSwitchRow; unsupported rows are now suppressed upstream rather than shown as disabled.Macroscope summarized 1780a8a.