From 321625072a384f124aceecb876f73f0e0f1e6a7c Mon Sep 17 00:00:00 2001 From: Ahmed Ibrahim Date: Wed, 10 Dec 2025 14:01:18 -0800 Subject: [PATCH] Show the default model in model picker (#7838) See the snapshot --- codex-rs/tui/src/bottom_pane/list_selection_view.rs | 10 +++++++--- codex-rs/tui/src/chatwidget.rs | 6 ++++-- ...i__chatwidget__tests__model_selection_popup.snap | 13 +++++++------ 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/codex-rs/tui/src/bottom_pane/list_selection_view.rs b/codex-rs/tui/src/bottom_pane/list_selection_view.rs index d23fd8ed3..46d6daac6 100644 --- a/codex-rs/tui/src/bottom_pane/list_selection_view.rs +++ b/codex-rs/tui/src/bottom_pane/list_selection_view.rs @@ -40,6 +40,7 @@ pub(crate) struct SelectionItem { pub description: Option, pub selected_description: Option, pub is_current: bool, + pub is_default: bool, pub actions: Vec, pub dismiss_on_select: bool, pub search_value: Option, @@ -187,11 +188,14 @@ impl ListSelectionView { let is_selected = self.state.selected_idx == Some(visible_idx); let prefix = if is_selected { '›' } else { ' ' }; let name = item.name.as_str(); - let name_with_marker = if item.is_current { - format!("{name} (current)") + let marker = if item.is_current { + " (current)" + } else if item.is_default { + " (default)" } else { - item.name.clone() + "" }; + let name_with_marker = format!("{name}{marker}"); let n = visible_idx + 1; let wrap_prefix = if self.is_searchable { // The number keys don't work when search is enabled (since we let the diff --git a/codex-rs/tui/src/chatwidget.rs b/codex-rs/tui/src/chatwidget.rs index 6196e0462..82f00f9ca 100644 --- a/codex-rs/tui/src/chatwidget.rs +++ b/codex-rs/tui/src/chatwidget.rs @@ -2240,9 +2240,10 @@ impl ChatWidget { Some(preset.default_reasoning_effort), ); SelectionItem { - name: preset.display_name, + name: preset.display_name.clone(), description, is_current: model == current_model, + is_default: preset.is_default, actions, dismiss_on_select: true, ..Default::default() @@ -2319,9 +2320,10 @@ impl ChatWidget { }); })]; items.push(SelectionItem { - name: preset.display_name.to_string(), + name: preset.display_name.clone(), description, is_current, + is_default: preset.is_default, actions, dismiss_on_select: single_supported_effort, ..Default::default() diff --git a/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__model_selection_popup.snap b/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__model_selection_popup.snap index 56a209ef7..a7a1c5651 100644 --- a/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__model_selection_popup.snap +++ b/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__model_selection_popup.snap @@ -5,11 +5,12 @@ expression: popup Select Model and Effort Access legacy models by running codex -m or in your config.toml -› 1. gpt-5.1-codex-max Latest Codex-optimized flagship for deep and fast - reasoning. - 2. gpt-5.1-codex Optimized for codex. - 3. gpt-5.1-codex-mini Optimized for codex. Cheaper, faster, but less - capable. - 4. gpt-5.1 Broad world knowledge with strong general reasoning. +› 1. gpt-5.1-codex-max (default) Latest Codex-optimized flagship for deep and + fast reasoning. + 2. gpt-5.1-codex Optimized for codex. + 3. gpt-5.1-codex-mini Optimized for codex. Cheaper, faster, but + less capable. + 4. gpt-5.1 Broad world knowledge with strong general + reasoning. Press enter to select reasoning effort, or esc to dismiss.