fix(web): cap Execution-mode model picker width so it reads as a dropdown (#4443)#4547
fix(web): cap Execution-mode model picker width so it reads as a dropdown (#4443)#4547maxmilian wants to merge 1 commit into
Conversation
|
Hey @maxmilian! 👋 Thanks for picking this up — mirroring the BYOK width cap for the Execution-mode picker looks like the right direction for #4443. Since this PR is still in draft, we'll stay out of your way until you mark it ready for review. |
…down (nexu-io#4443) The model picker inside an Execution-mode CLI card reuses the full-width `.settings-model-select` / `.inline-switcher__select` styling, so on a wide Settings dialog it stretched edge-to-edge with the chevron stranded at the far right edge — reading like an unfinished text input rather than a deliberate dropdown. Cap `.agent-card-config .agent-model-select-wrap` at `max-width: 420px`, mirroring the BYOK picker's `min(420px, 100%)`, so the selected model name and chevron stay grouped. Applies to both the loaded button and the loading row, which share the wrapper. Verified with a CSS-rule assertion in settings-polish.test.ts (red without the cap: "Missing CSS block"; green with it) and a headless before/after render of the card. Fixes nexu-io#4443 Signed-off-by: Max Hsu <maxmilian@gmail.com>
56711f7 to
399b71d
Compare
PerishCode
left a comment
There was a problem hiding this comment.
@maxmilian I reviewed the scoped CSS and style-test changes for the Execution-mode model picker. The wrapper-level cap applies to the searchable picker and loading row while staying scoped away from BYOK selectors, and the live PR checks include passing Web workspace tests and settings-workspace visual coverage. Nice focused fix for #4443.
🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.|
Hey @maxmilian — this looks close. Quick merge-process note: because this changes a user-visible Settings control, I’ve marked it for QA validation before merge, so please hold off self-merging for now. Also, could you add the last few PR-body details before this lands: a short What users will see note, the relevant Surface area checkbox, and an explicit Bug fix verification note? The screenshots and existing verification are already helpful — this just makes the final handoff clearer. |
|
Thanks @lefarcen — done. I've filled in the missing PR-body sections:
Understood on the process — I'll hold off self-merging and leave this for QA validation. Happy to make any tweaks if QA turns something up. |
|
Thanks for turning that around so quickly — the PR body is clear now, and the bug-fix verification section is exactly what we needed. From my side there’s nothing else to tweak in the description. The remaining process gate is the existing design → QA handoff before merge. |
Problem
In Settings → Execution mode → (a CLI card), the model selector renders edge-to-edge across the card with the chevron stranded at the far-right edge and a large empty gap in between — so it reads like an unfinished text input rather than a deliberate dropdown control (#4443).
What users will see
In Settings → Execution mode, each CLI card's model selector now renders as a compact dropdown capped at a sensible width, with the selected model name and its chevron grouped together — instead of stretching the full width of the card and looking like an unfinished text input. Nothing else changes: no new setting, no default change, no behavioral difference — this is a visual-only polish of the existing control, matching how the BYOK picker already looks.
Root cause
The picker (
SearchableModelSelect) is styled withinline-switcher__select+settings-model-select, bothwidth: 100%, and the Execution-mode card (.agent-card-config) never constrains it. The BYOK picker already caps itself via.settings-model-select--byok { min-width: min(420px, 100%) }; the Execution-mode card had no equivalent.Fix
Cap
.agent-card-config .agent-model-select-wrapatmax-width: 420px, mirroring the BYOK precedent, so the selected model name and chevron stay grouped. The cap is on the shared wrapper, so it applies to both the loaded button and the sign-in loading row.CSS-only, scoped to
.agent-card-config— no TSX changes, BYOK and other selects untouched.Surface area
apps/webSettings (no new control; existing control restyled to read as a dropdown)odsubcommand or flag, newtools-dev/tools-pack/tools-prflag, or newOD_*env var/api/*endpoint, new SSE event, or changed shape inpackages/contractsskills/,design-systems/,design-templates/, orcraft/, or change to the skills protocolpackage.jsonScreenshots
Before: full-width, looks like an empty input · After: capped 420px, reads as a dropdown.
Bug fix verification
apps/web/tests/styles/settings-polish.test.tsmainand green on this branch? yes — without the.agent-card-config .agent-model-select-wrapcap the assertion fails (Missing CSS block for .agent-card-config .agent-model-select-wrap); with the rule it passes.Validation
pnpm vitest run tests/components/SettingsDialog.execution.test.tsx tests/styles/→ 149 passedtsc -b --noEmit→ exit 0Fixes #4443