mirror of
https://github.com/openai/codex.git
synced 2026-09-10 20:26:47 +00:00
Keep rejected review drafts editable
This commit is contained in:
@@ -46,6 +46,7 @@ impl ChatWidget {
|
||||
/// rule as normal text.
|
||||
pub(super) fn handle_slash_command_dispatch(&mut self, cmd: SlashCommand) {
|
||||
let clear_review_draft = cmd == SlashCommand::Review
|
||||
&& (!self.active_side_conversation || cmd.available_in_side_conversation())
|
||||
&& !self.slash_command_blocked_by_active_task(SlashCommand::Review);
|
||||
self.dispatch_command(cmd);
|
||||
if clear_review_draft {
|
||||
|
||||
@@ -322,6 +322,26 @@ async fn compact_task_blocks_review_when_mcp_startup_arrives() {
|
||||
assert_eq!(chat.bottom_pane.composer_text(), "/review");
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn side_conversation_rejection_preserves_review_draft_during_mcp_startup() {
|
||||
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(/*model_override*/ None).await;
|
||||
notify_mcp_status(&mut chat, "alpha", McpServerStartupState::Starting);
|
||||
chat.set_side_conversation_active(/*active*/ true);
|
||||
|
||||
chat.bottom_pane
|
||||
.set_composer_text("/review".to_string(), Vec::new(), Vec::new());
|
||||
chat.handle_key_event(KeyEvent::new(KeyCode::Esc, KeyModifiers::NONE));
|
||||
chat.handle_key_event(KeyEvent::new(KeyCode::Enter, KeyModifiers::NONE));
|
||||
chat.handle_key_event(KeyEvent::new(KeyCode::Enter, KeyModifiers::NONE));
|
||||
|
||||
let error = drain_insert_history(&mut rx)
|
||||
.into_iter()
|
||||
.map(|lines| lines_to_single_string(&lines))
|
||||
.collect::<String>();
|
||||
assert!(error.contains("'/review' is unavailable in side conversations."));
|
||||
assert_eq!(chat.bottom_pane.composer_text(), "/review");
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn mcp_startup_dedupes_same_round_duplicate_failure_warning() {
|
||||
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(/*model_override*/ None).await;
|
||||
|
||||
Reference in New Issue
Block a user