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 e3b3287131c..10e641655b3 100644 --- a/codex-rs/tui/src/bottom_pane/list_selection_view.rs +++ b/codex-rs/tui/src/bottom_pane/list_selection_view.rs @@ -371,11 +371,14 @@ impl ListSelectionView { "" }; let name_with_marker = format!("{name}{marker}"); + let is_disabled = item.is_disabled || item.disabled_reason.is_some(); 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 // numbers be used for the search query). format!("{prefix} ") + } else if is_disabled { + format!("{prefix} {}", " ".repeat(n.to_string().len() + 2)) } else { format!("{prefix} {n}. ") }; @@ -388,7 +391,6 @@ impl ListSelectionView { .flatten() .or_else(|| item.description.clone()); let wrap_indent = description.is_none().then_some(wrap_prefix_width); - let is_disabled = item.is_disabled || item.disabled_reason.is_some(); GenericDisplayRow { name: name_with_marker, name_prefix_spans, diff --git a/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__apps_popup_loading_state.snap b/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__apps_popup_loading_state.snap index e75302e5c2f..94d7aab6da7 100644 --- a/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__apps_popup_loading_state.snap +++ b/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__apps_popup_loading_state.snap @@ -5,4 +5,4 @@ expression: before Apps Loading installed and available apps... -› 1. Loading apps... This updates when the full list is ready. +› Loading apps... This updates when the full list is ready. diff --git a/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__plugin_detail_popup_installable.snap b/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__plugin_detail_popup_installable.snap index d2461ec72f3..671cf4a3c53 100644 --- a/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__plugin_detail_popup_installable.snap +++ b/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__plugin_detail_popup_installable.snap @@ -9,8 +9,8 @@ expression: popup › 1. Back to plugins Return to the plugin list. 2. Install plugin Install this plugin now. - 3. Skills design-review, extract-copy - 4. Apps Figma, Slack - 5. MCP Servers figma-mcp, docs-mcp + Skills design-review, extract-copy + Apps Figma, Slack + MCP Servers figma-mcp, docs-mcp Press esc to close. diff --git a/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__plugins_popup_loading_state.snap b/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__plugins_popup_loading_state.snap index eddb869168f..2b0f6837eb6 100644 --- a/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__plugins_popup_loading_state.snap +++ b/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__plugins_popup_loading_state.snap @@ -6,4 +6,4 @@ expression: popup Loading available plugins... This first pass shows the ChatGPT marketplace only. -› 1. Loading plugins... This updates when the marketplace list is ready. +› Loading plugins... This updates when the marketplace list is ready. diff --git a/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__realtime_microphone_picker_popup.snap b/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__realtime_microphone_picker_popup.snap index 3095e6da976..00392bc9d1f 100644 --- a/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__realtime_microphone_picker_popup.snap +++ b/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__realtime_microphone_picker_popup.snap @@ -7,7 +7,7 @@ expression: popup 1. System default Use your operating system default device. -› 2. Unavailable: Studio Mic (current) (disabled) Configured device is not +› Unavailable: Studio Mic (current) (disabled) Configured device is not currently available. (disabled: Reconnect the device or choose another diff --git a/codex-rs/tui_app_server/src/bottom_pane/list_selection_view.rs b/codex-rs/tui_app_server/src/bottom_pane/list_selection_view.rs index e3b3287131c..10e641655b3 100644 --- a/codex-rs/tui_app_server/src/bottom_pane/list_selection_view.rs +++ b/codex-rs/tui_app_server/src/bottom_pane/list_selection_view.rs @@ -371,11 +371,14 @@ impl ListSelectionView { "" }; let name_with_marker = format!("{name}{marker}"); + let is_disabled = item.is_disabled || item.disabled_reason.is_some(); 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 // numbers be used for the search query). format!("{prefix} ") + } else if is_disabled { + format!("{prefix} {}", " ".repeat(n.to_string().len() + 2)) } else { format!("{prefix} {n}. ") }; @@ -388,7 +391,6 @@ impl ListSelectionView { .flatten() .or_else(|| item.description.clone()); let wrap_indent = description.is_none().then_some(wrap_prefix_width); - let is_disabled = item.is_disabled || item.disabled_reason.is_some(); GenericDisplayRow { name: name_with_marker, name_prefix_spans, diff --git a/codex-rs/tui_app_server/src/chatwidget/snapshots/codex_tui_app_server__chatwidget__tests__apps_popup_loading_state.snap b/codex-rs/tui_app_server/src/chatwidget/snapshots/codex_tui_app_server__chatwidget__tests__apps_popup_loading_state.snap index 9bc30a7220c..b7a3be88842 100644 --- a/codex-rs/tui_app_server/src/chatwidget/snapshots/codex_tui_app_server__chatwidget__tests__apps_popup_loading_state.snap +++ b/codex-rs/tui_app_server/src/chatwidget/snapshots/codex_tui_app_server__chatwidget__tests__apps_popup_loading_state.snap @@ -5,4 +5,4 @@ expression: before Apps Loading installed and available apps... -› 1. Loading apps... This updates when the full list is ready. +› Loading apps... This updates when the full list is ready. diff --git a/codex-rs/tui_app_server/src/chatwidget/snapshots/codex_tui_app_server__chatwidget__tests__plugin_detail_popup_installable.snap b/codex-rs/tui_app_server/src/chatwidget/snapshots/codex_tui_app_server__chatwidget__tests__plugin_detail_popup_installable.snap index fe88135b86a..0d534d85cc0 100644 --- a/codex-rs/tui_app_server/src/chatwidget/snapshots/codex_tui_app_server__chatwidget__tests__plugin_detail_popup_installable.snap +++ b/codex-rs/tui_app_server/src/chatwidget/snapshots/codex_tui_app_server__chatwidget__tests__plugin_detail_popup_installable.snap @@ -9,8 +9,8 @@ expression: popup › 1. Back to plugins Return to the plugin list. 2. Install plugin Install this plugin now. - 3. Skills design-review, extract-copy - 4. Apps Figma, Slack - 5. MCP Servers figma-mcp, docs-mcp + Skills design-review, extract-copy + Apps Figma, Slack + MCP Servers figma-mcp, docs-mcp Press esc to close. diff --git a/codex-rs/tui_app_server/src/chatwidget/snapshots/codex_tui_app_server__chatwidget__tests__plugins_popup_loading_state.snap b/codex-rs/tui_app_server/src/chatwidget/snapshots/codex_tui_app_server__chatwidget__tests__plugins_popup_loading_state.snap index 741c813fb16..f1f18c1eafd 100644 --- a/codex-rs/tui_app_server/src/chatwidget/snapshots/codex_tui_app_server__chatwidget__tests__plugins_popup_loading_state.snap +++ b/codex-rs/tui_app_server/src/chatwidget/snapshots/codex_tui_app_server__chatwidget__tests__plugins_popup_loading_state.snap @@ -6,4 +6,4 @@ expression: popup Loading available plugins... This first pass shows the ChatGPT marketplace only. -› 1. Loading plugins... This updates when the marketplace list is ready. +› Loading plugins... This updates when the marketplace list is ready. diff --git a/codex-rs/tui_app_server/src/chatwidget/snapshots/codex_tui_app_server__chatwidget__tests__realtime_microphone_picker_popup.snap b/codex-rs/tui_app_server/src/chatwidget/snapshots/codex_tui_app_server__chatwidget__tests__realtime_microphone_picker_popup.snap index 8eadefc63a1..93f64ad3167 100644 --- a/codex-rs/tui_app_server/src/chatwidget/snapshots/codex_tui_app_server__chatwidget__tests__realtime_microphone_picker_popup.snap +++ b/codex-rs/tui_app_server/src/chatwidget/snapshots/codex_tui_app_server__chatwidget__tests__realtime_microphone_picker_popup.snap @@ -7,7 +7,7 @@ expression: popup 1. System default Use your operating system default device. -› 2. Unavailable: Studio Mic (current) (disabled) Configured device is not +› Unavailable: Studio Mic (current) (disabled) Configured device is not currently available. (disabled: Reconnect the device or choose another