diff --git a/crates/tui/src/tui/app.rs b/crates/tui/src/tui/app.rs index 67b46d0b..ad8ab0a9 100644 --- a/crates/tui/src/tui/app.rs +++ b/crates/tui/src/tui/app.rs @@ -3736,14 +3736,13 @@ impl App { } let Some(prompt) = self .last_submitted_prompt - .as_ref() + .as_deref() .filter(|prompt| !prompt.is_empty()) - .cloned() else { return false; }; - self.input = prompt; + self.input = prompt.to_string(); self.cursor_position = char_count(&self.input); self.history_index = None; self.history_navigation_draft = None; diff --git a/crates/tui/src/tui/ui/tests.rs b/crates/tui/src/tui/ui/tests.rs index 864e1b06..21ddbf71 100644 --- a/crates/tui/src/tui/ui/tests.rs +++ b/crates/tui/src/tui/ui/tests.rs @@ -3044,6 +3044,29 @@ async fn dispatch_user_message_records_prompt_for_cancel_restore() { } } +#[tokio::test] +async fn steer_user_message_records_prompt_for_cancel_restore() { + let mut app = create_test_app(); + let mut engine = crate::core::engine::mock_engine_handle(); + let queued = crate::tui::app::QueuedMessage::new( + "adjust the active turn\nthen continue".to_string(), + None, + ); + + steer_user_message(&mut app, &engine.handle, queued) + .await + .expect("steer user message"); + + assert_eq!( + app.last_submitted_prompt.as_deref(), + Some("adjust the active turn\nthen continue") + ); + assert_eq!( + engine.rx_steer.recv().await.as_deref(), + Some("adjust the active turn\nthen continue") + ); +} + #[tokio::test] async fn numeric_plan_choice_still_queues_follow_up_when_busy() { let mut app = create_test_app();