From 02f6733dea86c0c33f8df5e024583367c589b3f7 Mon Sep 17 00:00:00 2001 From: Charles Cunningham Date: Fri, 13 Mar 2026 11:47:09 -0700 Subject: [PATCH] tui: clear empty-arg slash drafts on dispatch Co-authored-by: Codex --- codex-rs/tui/src/chatwidget.rs | 2 ++ codex-rs/tui/src/chatwidget/tests.rs | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/codex-rs/tui/src/chatwidget.rs b/codex-rs/tui/src/chatwidget.rs index 0d83037b33..a4b8797d18 100644 --- a/codex-rs/tui/src/chatwidget.rs +++ b/codex-rs/tui/src/chatwidget.rs @@ -4719,6 +4719,8 @@ impl ChatWidget { if should_queue && !cmd.requires_interaction() { self.queue_current_inline_bare_slash_command(cmd); } else { + self.set_composer_text(String::new(), Vec::new(), Vec::new()); + self.set_remote_image_urls(Vec::new()); self.dispatch_command(cmd); } return; diff --git a/codex-rs/tui/src/chatwidget/tests.rs b/codex-rs/tui/src/chatwidget/tests.rs index f80231384b..15a1b97f86 100644 --- a/codex-rs/tui/src/chatwidget/tests.rs +++ b/codex-rs/tui/src/chatwidget/tests.rs @@ -6055,6 +6055,19 @@ async fn slash_help_opens_reference_popup() { assert!(scrolled.contains("/review ")); } +#[tokio::test] +async fn slash_help_with_whitespace_only_args_clears_composer() { + let (mut chat, _rx, _op_rx) = make_chatwidget_manual(None).await; + + chat.bottom_pane + .set_composer_text("/help ".to_string(), Vec::new(), Vec::new()); + chat.handle_key_event(KeyEvent::new(KeyCode::Enter, KeyModifiers::NONE)); + + assert!(chat.bottom_pane.has_active_view()); + assert_eq!(chat.bottom_pane.composer_text(), ""); + assert!(chat.remote_image_urls().is_empty()); +} + #[tokio::test] async fn slash_help_search_jumps_to_lower_match() { let (mut chat, _rx, _op_rx) = make_chatwidget_manual(None).await;