From 203d530cc611c642cb0aa687585d6c3575caa925 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 11 Jul 2026 02:55:06 +0000 Subject: [PATCH] Stop falling back to older model availability announcements (#32316) ## What changed Select the first model availability announcement in catalog order before checking its display count. Once that announcement reaches its display limit, show no announcement instead of falling back to a lower-priority model. ## Testing - Update the model catalog test to verify that an exhausted higher-priority announcement does not expose an older announcement. GitOrigin-RevId: 65f23b34e1ecb38934effd5305704d7ab2353492 --- codex-rs/tui/src/app/startup_prompts.rs | 23 +++++++++++---------- codex-rs/tui/src/app/tests/model_catalog.rs | 10 ++------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/codex-rs/tui/src/app/startup_prompts.rs b/codex-rs/tui/src/app/startup_prompts.rs index 55a377ec1104..9bddc5e9076c 100644 --- a/codex-rs/tui/src/app/startup_prompts.rs +++ b/codex-rs/tui/src/app/startup_prompts.rs @@ -215,17 +215,18 @@ pub(super) fn select_model_availability_nux( available_models: &[ModelPreset], nux_config: &ModelAvailabilityNuxConfig, ) -> Option { - available_models.iter().find_map(|preset| { - let ModelAvailabilityNux { message } = preset.availability_nux.as_ref()?; - let shown_count = nux_config - .shown_count - .get(&preset.model) - .copied() - .unwrap_or_default(); - (shown_count < MODEL_AVAILABILITY_NUX_MAX_SHOW_COUNT).then(|| StartupTooltipOverride { - model_slug: preset.model.clone(), - message: message.clone(), - }) + let preset = available_models + .iter() + .find(|preset| preset.availability_nux.is_some())?; + let ModelAvailabilityNux { message } = preset.availability_nux.as_ref()?; + let shown_count = nux_config + .shown_count + .get(&preset.model) + .copied() + .unwrap_or_default(); + (shown_count < MODEL_AVAILABILITY_NUX_MAX_SHOW_COUNT).then(|| StartupTooltipOverride { + model_slug: preset.model.clone(), + message: message.clone(), }) } diff --git a/codex-rs/tui/src/app/tests/model_catalog.rs b/codex-rs/tui/src/app/tests/model_catalog.rs index 78f5b6cd911f..bd431a5c3b37 100644 --- a/codex-rs/tui/src/app/tests/model_catalog.rs +++ b/codex-rs/tui/src/app/tests/model_catalog.rs @@ -96,7 +96,7 @@ fn select_model_availability_nux_picks_only_eligible_model() { } #[test] -fn select_model_availability_nux_skips_missing_and_exhausted_models() { +fn select_model_availability_nux_does_not_fall_back_to_older_announcement() { let mut presets = all_model_presets(); presets.iter_mut().for_each(|preset| { preset.availability_nux = None; @@ -121,13 +121,7 @@ fn select_model_availability_nux_skips_missing_and_exhausted_models() { &model_availability_nux_config(&[("gpt-5.4", MODEL_AVAILABILITY_NUX_MAX_SHOW_COUNT)]), ); - assert_eq!( - selected, - Some(StartupTooltipOverride { - model_slug: "gpt-5.4-mini".to_string(), - message: "gpt-5.4-mini is available".to_string(), - }) - ); + assert_eq!(selected, None); } #[test]