fix(tui/model): surface gpt-5.3-codex-spark in /model

This commit is contained in:
James Peter
2026-02-13 06:46:58 +10:00
parent 02ecaffbb4
commit 7d6b591562
2 changed files with 51 additions and 11 deletions
+40 -4
View File
@@ -77,6 +77,36 @@ static PRESETS: Lazy<Vec<ModelPreset>> = Lazy::new(|| {
upgrade: None,
show_in_picker: true,
},
ModelPreset {
id: "gpt-5.3-codex-spark".to_string(),
model: "gpt-5.3-codex-spark".to_string(),
display_name: "gpt-5.3-codex-spark".to_string(),
description: "Fast codex variant tuned for responsive coding loops and smaller edits."
.to_string(),
default_reasoning_effort: ReasoningEffort::Medium,
supported_reasoning_efforts: vec![
ReasoningEffortPreset {
effort: ReasoningEffort::Low,
description: "Fast responses with lighter reasoning".to_string(),
},
ReasoningEffortPreset {
effort: ReasoningEffort::Medium,
description: "Balances speed and reasoning depth for everyday tasks".to_string(),
},
ReasoningEffortPreset {
effort: ReasoningEffort::High,
description: "Maximizes reasoning depth for complex problems".to_string(),
},
ReasoningEffortPreset {
effort: ReasoningEffort::XHigh,
description: "Extra high reasoning depth for complex problems".to_string(),
},
],
supported_text_verbosity: &[TextVerbosityConfig::Medium],
is_default: false,
upgrade: None,
show_in_picker: true,
},
ModelPreset {
id: "gpt-5.2-codex".to_string(),
model: "gpt-5.2-codex".to_string(),
@@ -434,7 +464,11 @@ pub fn builtin_model_presets(auth_mode: Option<AuthMode>) -> Vec<ModelPreset> {
PRESETS
.iter()
.filter(|preset| match auth_mode {
Some(AuthMode::ApiKey) => preset.id != "gpt-5.2-codex" && preset.id != "gpt-5.3-codex",
Some(AuthMode::ApiKey) => {
preset.id != "gpt-5.2-codex"
&& preset.id != "gpt-5.3-codex"
&& preset.id != "gpt-5.3-codex-spark"
}
_ => true,
})
.filter(|preset| preset.show_in_picker)
@@ -515,9 +549,11 @@ mod tests {
#[test]
fn gpt_5_codex_hidden_for_api_key_auth() {
let presets = builtin_model_presets(Some(AuthMode::ApiKey));
assert!(presets
.iter()
.all(|preset| preset.id != "gpt-5.2-codex" && preset.id != "gpt-5.3-codex"));
assert!(presets.iter().all(|preset| {
preset.id != "gpt-5.2-codex"
&& preset.id != "gpt-5.3-codex"
&& preset.id != "gpt-5.3-codex-spark"
}));
}
#[test]
@@ -487,26 +487,30 @@ impl ModelSelectionView {
fn model_rank(model: &str) -> u8 {
if model.eq_ignore_ascii_case("gpt-5.3-codex") {
0
} else if model.eq_ignore_ascii_case("gpt-5.2-codex") {
} else if model.eq_ignore_ascii_case("gpt-5.3-codex-spark") {
1
} else if model.eq_ignore_ascii_case("gpt-5.2") {
} else if model.eq_ignore_ascii_case("gpt-5.2-codex") {
2
} else if model.eq_ignore_ascii_case("gpt-5.1-codex-max") {
} else if model.eq_ignore_ascii_case("gpt-5.2") {
3
} else if model.eq_ignore_ascii_case("gpt-5.1-codex") {
} else if model.eq_ignore_ascii_case("gpt-5.1-codex-max") {
4
} else if model.eq_ignore_ascii_case("gpt-5.1-codex-mini") {
} else if model.eq_ignore_ascii_case("gpt-5.1-codex") {
5
} else if model.eq_ignore_ascii_case("gpt-5.1") {
} else if model.eq_ignore_ascii_case("gpt-5.1-codex-mini") {
6
} else {
} else if model.eq_ignore_ascii_case("gpt-5.1") {
7
} else {
8
}
}
fn model_description(model: &str) -> Option<&'static str> {
if model.eq_ignore_ascii_case("gpt-5.3-codex") {
Some("Latest frontier agentic coding model.")
} else if model.eq_ignore_ascii_case("gpt-5.3-codex-spark") {
Some("Fast codex variant tuned for responsive coding loops and smaller edits.")
} else if model.eq_ignore_ascii_case("gpt-5.2-codex") {
Some("Frontier agentic coding model.")
} else if model.eq_ignore_ascii_case("gpt-5.2") {