mirror of
https://github.com/openai/codex.git
synced 2026-11-05 16:29:31 +00:00
fix(tui): add reasoning effort fallback shortcuts (#25623)
This commit is contained in:
1 parent
4d4837c495
commit
8285cd278b
7 files changed
+174
-58
No files matched your search
@@ -2426,58 +2426,67 @@ async fn model_reasoning_selection_popup_extra_high_warning_snapshot() {
|
||||
assert_chatwidget_snapshot!("model_reasoning_selection_popup_extra_high_warning", popup);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn alt_period_raises_reasoning_effort() {
|
||||
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.4")).await;
|
||||
chat.thread_id = Some(ThreadId::new());
|
||||
chat.set_reasoning_effort(Some(ReasoningEffortConfig::Medium));
|
||||
async fn assert_reasoning_shortcuts_update_effort(
|
||||
key_events: [KeyEvent; 2],
|
||||
expected_effort: ReasoningEffortConfig,
|
||||
expect_model_update: bool,
|
||||
) {
|
||||
for key_event in key_events {
|
||||
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.4")).await;
|
||||
chat.thread_id = Some(ThreadId::new());
|
||||
chat.set_reasoning_effort(Some(ReasoningEffortConfig::Medium));
|
||||
|
||||
chat.handle_key_event(KeyEvent::new(KeyCode::Char('.'), KeyModifiers::ALT));
|
||||
chat.handle_key_event(key_event);
|
||||
|
||||
let events = std::iter::from_fn(|| rx.try_recv().ok()).collect::<Vec<_>>();
|
||||
assert!(
|
||||
events
|
||||
.iter()
|
||||
.any(|event| matches!(event, AppEvent::UpdateModel(model) if model == "gpt-5.4")),
|
||||
"expected model update event; events: {events:?}"
|
||||
);
|
||||
assert!(
|
||||
events.iter().any(|event| matches!(
|
||||
event,
|
||||
AppEvent::UpdateReasoningEffort(Some(ReasoningEffortConfig::High))
|
||||
)),
|
||||
"expected reasoning update event; events: {events:?}"
|
||||
);
|
||||
assert!(
|
||||
events
|
||||
.iter()
|
||||
.all(|event| !matches!(event, AppEvent::PersistModelSelection { .. })),
|
||||
"expected no model persistence event; events: {events:?}"
|
||||
);
|
||||
let events = std::iter::from_fn(|| rx.try_recv().ok()).collect::<Vec<_>>();
|
||||
if expect_model_update {
|
||||
assert!(
|
||||
events.iter().any(
|
||||
|event| matches!(event, AppEvent::UpdateModel(model) if model == "gpt-5.4")
|
||||
),
|
||||
"expected model update event for {key_event:?}; events: {events:?}"
|
||||
);
|
||||
}
|
||||
assert!(
|
||||
events.iter().any(|event| matches!(
|
||||
event,
|
||||
AppEvent::UpdateReasoningEffort(Some(effort)) if effort == &expected_effort
|
||||
)),
|
||||
"expected reasoning update event for {key_event:?}; events: {events:?}"
|
||||
);
|
||||
assert!(
|
||||
events
|
||||
.iter()
|
||||
.all(|event| !matches!(event, AppEvent::PersistModelSelection { .. })),
|
||||
"expected no model persistence event for {key_event:?}; events: {events:?}"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn alt_comma_lowers_reasoning_effort() {
|
||||
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.4")).await;
|
||||
chat.thread_id = Some(ThreadId::new());
|
||||
chat.set_reasoning_effort(Some(ReasoningEffortConfig::Medium));
|
||||
async fn reasoning_up_shortcuts_raise_reasoning_effort() {
|
||||
assert_reasoning_shortcuts_update_effort(
|
||||
[
|
||||
KeyEvent::new(KeyCode::Char('.'), KeyModifiers::ALT),
|
||||
KeyEvent::new(KeyCode::Up, KeyModifiers::SHIFT),
|
||||
],
|
||||
ReasoningEffortConfig::High,
|
||||
/*expect_model_update*/ true,
|
||||
)
|
||||
.await;
|
||||
}
|
||||
|
||||
chat.handle_key_event(KeyEvent::new(KeyCode::Char(','), KeyModifiers::ALT));
|
||||
|
||||
let events = std::iter::from_fn(|| rx.try_recv().ok()).collect::<Vec<_>>();
|
||||
assert!(
|
||||
events.iter().any(|event| matches!(
|
||||
event,
|
||||
AppEvent::UpdateReasoningEffort(Some(ReasoningEffortConfig::Low))
|
||||
)),
|
||||
"expected reasoning update event; events: {events:?}"
|
||||
);
|
||||
assert!(
|
||||
events
|
||||
.iter()
|
||||
.all(|event| !matches!(event, AppEvent::PersistModelSelection { .. })),
|
||||
"expected no model persistence event; events: {events:?}"
|
||||
);
|
||||
#[tokio::test]
|
||||
async fn reasoning_down_shortcuts_lower_reasoning_effort() {
|
||||
assert_reasoning_shortcuts_update_effort(
|
||||
[
|
||||
KeyEvent::new(KeyCode::Char(','), KeyModifiers::ALT),
|
||||
KeyEvent::new(KeyCode::Down, KeyModifiers::SHIFT),
|
||||
],
|
||||
ReasoningEffortConfig::Low,
|
||||
/*expect_model_update*/ false,
|
||||
)
|
||||
.await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
||||
Reference in new issue
Block a user