From 1a66da4eb3919dafa5200e271b7d9f20322130c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E4=BA=91=E9=BE=99?= <76432572+nankingjing@users.noreply.github.com> Date: Sat, 11 Jul 2026 17:45:50 +0800 Subject: [PATCH 1/2] fix(cli): stop reprinting streamed assistant text after 'Done' --- rust/crates/rusty-claude-cli/src/main.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/rust/crates/rusty-claude-cli/src/main.rs b/rust/crates/rusty-claude-cli/src/main.rs index 665ce632cf..9fa6f89f50 100644 --- a/rust/crates/rusty-claude-cli/src/main.rs +++ b/rust/crates/rusty-claude-cli/src/main.rs @@ -7763,15 +7763,20 @@ impl LiveCli { match result { Ok(summary) => { self.replace_runtime(runtime)?; + // The assistant response was already streamed to the terminal live + // during the turn (emit_output = true), so reprinting the full text + // here would duplicate the entire message. When text was streamed, + // emit a newline first so `spinner.finish`'s line-clear lands on a + // fresh line instead of erasing the last streamed line. + let final_text = final_assistant_text(&summary); + if !final_text.is_empty() { + println!(); + } spinner.finish( "✨ Done", TerminalRenderer::new().color_theme(), &mut stdout, )?; - let final_text = final_assistant_text(&summary); - if !final_text.is_empty() { - println!("{final_text}"); - } println!(); if let Some(event) = summary.auto_compaction { println!( From 94e08593e1b98145b9983a7f654e33de7311ff01 Mon Sep 17 00:00:00 2001 From: nankingjing <1079826437@qq.com> Date: Tue, 14 Jul 2026 09:18:47 +0800 Subject: [PATCH 2/2] fix(cli): preserve retried streamed response tail Co-Authored-By: Claude --- rust/crates/rusty-claude-cli/src/main.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rust/crates/rusty-claude-cli/src/main.rs b/rust/crates/rusty-claude-cli/src/main.rs index 9fa6f89f50..d8f851b19d 100644 --- a/rust/crates/rusty-claude-cli/src/main.rs +++ b/rust/crates/rusty-claude-cli/src/main.rs @@ -7908,6 +7908,9 @@ impl LiveCli { match new_runtime.run_turn(input, Some(&mut rp)) { Ok(summary) => { self.replace_runtime(new_runtime)?; + if !final_assistant_text(&summary).is_empty() { + println!(); + } spinner.finish( if round == 0 { "✨ Done (after auto-compact)"