feat: model picker (#8209)

# External (non-OpenAI) Pull Request Requirements

Before opening this Pull Request, please read the dedicated
"Contributing" markdown file or your PR may be closed:
https://github.com/openai/codex/blob/main/docs/contributing.md

If your PR conforms to our contribution guidelines, replace this text
with a detailed and high quality description of your changes.

Include a link to a bug report or enhancement request.
This commit is contained in:
Ahmed Ibrahim
2025-12-17 16:12:35 -08:00
committed by GitHub
Unverified
parent 25ecd0c2e4
commit 774bd9e432
14 changed files with 222 additions and 110 deletions
+2 -2
View File
@@ -2100,7 +2100,7 @@ impl ChatWidget {
}
fn lower_cost_preset(&self) -> Option<ModelPreset> {
let models = self.models_manager.try_list_models().ok()?;
let models = self.models_manager.try_list_models(&self.config).ok()?;
models
.iter()
.find(|preset| preset.model == NUDGE_MODEL_SLUG)
@@ -2209,7 +2209,7 @@ impl ChatWidget {
let current_model = self.model_family.get_model_slug().to_string();
let presets: Vec<ModelPreset> =
// todo(aibrahim): make this async function
match self.models_manager.try_list_models() {
match self.models_manager.try_list_models(&self.config) {
Ok(models) => models,
Err(_) => {
self.add_info_message(
+2 -1
View File
@@ -925,7 +925,7 @@ fn active_blob(chat: &ChatWidget) -> String {
fn get_available_model(chat: &ChatWidget, model: &str) -> ModelPreset {
let models = chat
.models_manager
.try_list_models()
.try_list_models(&chat.config)
.expect("models lock available");
models
.iter()
@@ -1906,6 +1906,7 @@ fn single_reasoning_option_skips_selection() {
is_default: false,
upgrade: None,
show_in_picker: true,
supported_in_api: true,
};
chat.open_reasoning_popup(preset);