/** * ModelPicker — inference-model dropdown that sits in the TopBar right * next to the Run pill. * * Lives in the TopBar (not the StatusBar, not the composer) because: * - Model is a session-level control, not a chat-message-level one — putting * it near Run groups it with the other "what's running right now" * affordances (run / stop / reload / open-in-browser). * - The composer area is already busy (pacing pill, hints, pinned chips). * - The StatusBar runs the full width including under the preview pane; * the model has nothing to do with what's rendering in the preview. * * Saved to the user's profile via PATCH /api/auth/me/preferred-model so the * choice persists across sessions, reloads, and chat turns. * * Visual: h-7 pill matching the rest of the TopBar action cluster. Accent * caps "MODEL" label, monospace model name, ▾ caret. Native onChange(e.target.value)} aria-label="Inference model" style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', opacity: 0, cursor: disabled ? 'not-allowed' : 'pointer', appearance: 'none', border: 'none', padding: 0, font: 'inherit', }} > {list.map((m) => ( ))} ) }