Avoid resending the model for reasoning shortcuts (#34047)

## What changed

Update normal-mode reasoning shortcuts to emit only an
`UpdateReasoningEffort` event instead of reapplying the current model alongside
the new effort.

Extend the shortcut tests to verify that both increasing and decreasing
reasoning effort leave the model unchanged.

GitOrigin-RevId: cf5206a3a8e0a0bf66ecc2d0bfcc1ba44c98fead
This commit is contained in:
Charlie Marsh
2026-07-18 18:05:04 +00:00
committed by copyberry
parent 537e69ab66
commit 028edf8c1e
2 changed files with 8 additions and 12 deletions
@@ -154,7 +154,8 @@ impl ChatWidget {
)));
}
} else {
self.apply_model_and_effort_without_persist(current_model, Some(next_effort));
self.app_event_tx
.send(AppEvent::UpdateReasoningEffort(Some(next_effort)));
}
true
@@ -3387,7 +3387,6 @@ async fn model_reasoning_selection_popup_extra_high_warning_snapshot() {
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;
@@ -3397,14 +3396,12 @@ async fn assert_reasoning_shortcuts_update_effort(
chat.handle_key_event(key_event);
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()
.all(|event| !matches!(event, AppEvent::UpdateModel(_))),
"did not expect model update event for {key_event:?}; events: {events:?}"
);
assert!(
events.iter().any(|event| matches!(
event,
@@ -3429,7 +3426,6 @@ async fn reasoning_up_shortcuts_raise_reasoning_effort() {
KeyEvent::new(KeyCode::Up, KeyModifiers::SHIFT),
],
ReasoningEffortConfig::High,
/*expect_model_update*/ true,
)
.await;
}
@@ -3442,7 +3438,6 @@ async fn reasoning_down_shortcuts_lower_reasoning_effort() {
KeyEvent::new(KeyCode::Down, KeyModifiers::SHIFT),
],
ReasoningEffortConfig::Low,
/*expect_model_update*/ false,
)
.await;
}