diff --git a/codex-rs/tui/src/chatwidget.rs b/codex-rs/tui/src/chatwidget.rs index 05a4288b..3dfa1b36 100644 --- a/codex-rs/tui/src/chatwidget.rs +++ b/codex-rs/tui/src/chatwidget.rs @@ -657,7 +657,7 @@ impl ChatWidget { } fn on_shutdown_complete(&mut self) { - self.app_event_tx.send(AppEvent::ExitRequest); + self.request_exit(); } fn on_turn_diff(&mut self, unified_diff: String) { @@ -1229,8 +1229,8 @@ impl ChatWidget { SlashCommand::Approvals => { self.open_approvals_popup(); } - SlashCommand::Quit => { - self.app_event_tx.send(AppEvent::ExitRequest); + SlashCommand::Quit | SlashCommand::Exit => { + self.request_exit(); } SlashCommand::Logout => { if let Err(e) = codex_core::auth::logout( @@ -1239,7 +1239,7 @@ impl ChatWidget { ) { tracing::error!("failed to logout: {e}"); } - self.app_event_tx.send(AppEvent::ExitRequest); + self.request_exit(); } SlashCommand::Undo => { self.app_event_tx.send(AppEvent::CodexOp(Op::Undo)); @@ -1593,6 +1593,10 @@ impl ChatWidget { } } + fn request_exit(&self) { + self.app_event_tx.send(AppEvent::ExitRequest); + } + fn request_redraw(&mut self) { self.frame_requester.schedule_frame(); } diff --git a/codex-rs/tui/src/chatwidget/tests.rs b/codex-rs/tui/src/chatwidget/tests.rs index d1824678..6c9b78e3 100644 --- a/codex-rs/tui/src/chatwidget/tests.rs +++ b/codex-rs/tui/src/chatwidget/tests.rs @@ -851,6 +851,24 @@ fn slash_init_skips_when_project_doc_exists() { ); } +#[test] +fn slash_quit_requests_exit() { + let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(); + + chat.dispatch_command(SlashCommand::Quit); + + assert_matches!(rx.try_recv(), Ok(AppEvent::ExitRequest)); +} + +#[test] +fn slash_exit_requests_exit() { + let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(); + + chat.dispatch_command(SlashCommand::Exit); + + assert_matches!(rx.try_recv(), Ok(AppEvent::ExitRequest)); +} + #[test] fn slash_undo_sends_op() { let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(); diff --git a/codex-rs/tui/src/slash_command.rs b/codex-rs/tui/src/slash_command.rs index cfe7102c..969d279b 100644 --- a/codex-rs/tui/src/slash_command.rs +++ b/codex-rs/tui/src/slash_command.rs @@ -25,6 +25,7 @@ pub enum SlashCommand { Mcp, Logout, Quit, + Exit, Feedback, Rollout, TestApproval, @@ -40,7 +41,7 @@ impl SlashCommand { SlashCommand::Compact => "summarize conversation to prevent hitting the context limit", SlashCommand::Review => "review my current changes and find issues", SlashCommand::Undo => "ask Codex to undo a turn", - SlashCommand::Quit => "exit Codex", + SlashCommand::Quit | SlashCommand::Exit => "exit Codex", SlashCommand::Diff => "show git diff (including untracked files)", SlashCommand::Mention => "mention a file", SlashCommand::Status => "show current session configuration and token usage", @@ -75,7 +76,8 @@ impl SlashCommand { | SlashCommand::Status | SlashCommand::Mcp | SlashCommand::Feedback - | SlashCommand::Quit => true, + | SlashCommand::Quit + | SlashCommand::Exit => true, SlashCommand::Rollout => true, SlashCommand::TestApproval => true, }