From 6039f8a126156f9c6c901fe5d93c051f6ac3e6ce Mon Sep 17 00:00:00 2001 From: Thibault Sottiaux Date: Sun, 14 Sep 2025 23:05:41 -0700 Subject: [PATCH] feat: tighten preset filter, tame storage load logs, enable rollout prompt by default (#3628) Summary - common: use exact equality for Swiftfox exclusion to avoid hiding future slugs that merely contain the substring - core: treat missing internal_storage.json as expected (debug), warn only on real IO/parse errors - tui: drop DEBUG_HIGH gate; always consider showing rollout prompt, but suppress under ApiKey auth mode --- codex-rs/common/src/model_presets.rs | 2 +- codex-rs/core/src/internal_storage.rs | 10 +++++++++- codex-rs/tui/src/lib.rs | 19 ------------------- 3 files changed, 10 insertions(+), 21 deletions(-) diff --git a/codex-rs/common/src/model_presets.rs b/codex-rs/common/src/model_presets.rs index 09d92777..5353a5c3 100644 --- a/codex-rs/common/src/model_presets.rs +++ b/codex-rs/common/src/model_presets.rs @@ -74,7 +74,7 @@ pub fn builtin_model_presets(auth_mode: Option) -> Vec { Some(AuthMode::ApiKey) => PRESETS .iter() .copied() - .filter(|p| !p.model.contains(SWIFTFOX_MEDIUM_MODEL)) + .filter(|p| p.model != SWIFTFOX_MEDIUM_MODEL) .collect(), _ => PRESETS.to_vec(), } diff --git a/codex-rs/core/src/internal_storage.rs b/codex-rs/core/src/internal_storage.rs index d6f71ff6..81a60fbc 100644 --- a/codex-rs/core/src/internal_storage.rs +++ b/codex-rs/core/src/internal_storage.rs @@ -1,6 +1,7 @@ use anyhow::Context; use serde::Deserialize; use serde::Serialize; +use std::io::ErrorKind; use std::path::Path; use std::path::PathBuf; @@ -31,7 +32,14 @@ impl InternalStorage { } }, Err(error) => { - tracing::warn!("failed to read internal storage: {error:?}"); + if error.kind() == ErrorKind::NotFound { + tracing::debug!( + "internal storage not found at {}; initializing defaults", + storage_path.display() + ); + } else { + tracing::warn!("failed to read internal storage: {error:?}"); + } Self::empty(storage_path) } } diff --git a/codex-rs/tui/src/lib.rs b/codex-rs/tui/src/lib.rs index 0f51cb22..27faef18 100644 --- a/codex-rs/tui/src/lib.rs +++ b/codex-rs/tui/src/lib.rs @@ -527,13 +527,8 @@ fn should_show_model_rollout_prompt( swiftfox_model_prompt_seen: bool, ) -> bool { let login_status = get_login_status(config); - // TODO(jif) drop. - let debug_high_enabled = std::env::var("DEBUG_HIGH") - .map(|v| v.eq_ignore_ascii_case("1")) - .unwrap_or(false); active_profile.is_none() - && debug_high_enabled && cli.model.is_none() && !swiftfox_model_prompt_seen && config.model_provider.requires_openai_auth @@ -551,21 +546,7 @@ mod tests { use codex_core::auth::write_auth_json; use codex_core::token_data::IdTokenInfo; use codex_core::token_data::TokenData; - use std::sync::Once; - - fn enable_debug_high_env() { - static DEBUG_HIGH_ONCE: Once = Once::new(); - DEBUG_HIGH_ONCE.call_once(|| { - // SAFETY: Tests run in a controlled environment and require this env variable to - // opt into the GPT-5 High rollout prompt gating. We only set it once. - unsafe { - std::env::set_var("DEBUG_HIGH", "1"); - } - }); - } - fn make_config() -> Config { - enable_debug_high_env(); // Create a unique CODEX_HOME per test to isolate auth.json writes. let mut codex_home = std::env::temp_dir(); let unique_suffix = format!(