Repository navigation
fix(web): restore letter navigation in the effort picker - #29418
nimobeeren wants to merge 1 commit into
Conversation
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Typeahead and arrow navigation apps/web/src/components/chat/ComposerModelEffort.tsx, apps/web/src/components/chat/ComposerModelEffort.browser.test.tsx |
moveBetweenRows supports case-insensitive printable-character searches across reasoning rows while retaining arrow navigation. The browser test adds a Max option and checks letter-key navigation, invalid input, case matching, and navigation to Speed. |
Estimated code review effort: 2 (Simple) | ~10 minutes
Change: Bug fix
Suggested labels: bugfix
Suggested reviewers: t3dotgg, macroscopeapp
Merge Risk: 
Minimal · up to c5c4d
-
No actionable merge-blocking risk was identified.
Pre-merge checks: 
4
-
Full details: Title check
-
Explanation
The title "fix(web): restore letter navigation in the effort picker" matches the main change. The diff adds printable-character typeahead to moveBetweenRows in ComposerModelEffort.tsx, and the test file covers letter navigation across reasoning levels. The title follows conventional commit form and is specific, so it passes.
Full details: Description check
-
Explanation
The description follows the template's main sections: Problem, Change, Scope and approval, and Verification. It explains the regression and the fix, and it cites the CONTRIBUTING prior-approval exception for a very small, focused fix. It gives concrete verification: test runs, before/after behavior, and before/after evidence. It also states what was not checked: full suites and builds were not run locally, and the integrated browser check was unavailable. The template's required before/after screenshots are present. Minor gaps remain: the before build is not pinned, and the test run covers only the two browser test files. These gaps do not make the description incomplete.
-
Finishing Touches
-
Generate unit tests (beta)
-
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
|
Note Written by Verified in a real dev environmentVerified unchanged head
Before: main after After: PR after Recording: Medium → Not verifiedNative desktop, iOS/Android, macOS/Windows shortcuts, other providers, remote/relay connections, and real IME input were not exercised on this Linux VM. Portaled option-menu isolation was covered by the existing browser test, not a real provider option menu. GitHub does not render this externally hosted MP4 inline; playback and seeking were verified in T3's player. Full suites and a fresh check:changed run were not run; no code was changed. |


Note
🤖 GPT-6.1 Sol is responding on behalf of Nimo.
Problem
After the model and effort pickers were combined in #28057, opening the composer effort picker and pressing a letter such as
hno longer focused the effort level such as "High". The effort column handles arrows but lost the old menu's letter navigation.Change
Match typed letters against enabled row labels, starting after the focused row and wrapping around. Matching is case-insensitive, and repeated letters cycle through matching rows. Enter still applies the focused choice through its existing button handler.
Ignore modified keys and IME composition, and leave portaled option menus to their own keyboard handlers. No new shortcuts, settings, dependencies, or provider-specific mappings.
Scope and approval
Submitted under the very small, focused fix for an obvious bug exception: this restores letter navigation in the replacement for the existing effort menu. One handler and its existing browser test change.
The composer click and effort-shortcut entry points share this column in web and desktop. Settings retains its existing menu navigation. Native mobile, server, contracts, provider adapters, and connection handling are unchanged; matching uses each provider's displayed labels.
Verification
hleft focus on Medium instead of High. With the fix,hfocuses High, Enter selects it, andlcan select Low again. The same test covers repeated-letter cycling, uppercase matching, unmatched and modified keys, arrow navigation, and letter navigation inside a nested option menu.vp test run apps/web/src/components/chat/ComposerModelEffort.browser.test.tsx apps/web/src/components/chat/ProviderModelPicker.browser.test.tsx: 3 tests passed, including the model-to-effort focus handoff.vp run check:changed: format, lint, both knip passes, affected-package typechecks, adjacent tests, and changed-file React Compiler coverage passed. Full suites and builds were not run locally.c5c4dc2df253be974cb8d0f8aceb8bcb42bf3ac0, using copied Work state and a separate OpenCode database. No paid turn is needed. The agent's integrated browser check was unavailable because the browser tool was disconnected.Stills extracted from the supplied recordings show
hleaving focus on Medium before, and focusing High after while Medium remains selected.Recordings: Before · After. Evidence is hosted on GitHub, not committed to the repository.
To check manually, select Medium, open the effort picker with
Cmd+Shift+E, pressh, and then Enter. High should gain focus and become selected. Arrow keys should continue to work; typing in the model search should not navigate effort rows.Implemented with GPT-6.1 Sol through the OpenCode harness in T3 Code.