From 24313facca77f3ed1895a69673de83300ddc49a2 Mon Sep 17 00:00:00 2001 From: Hikari Date: Tue, 24 Feb 2026 10:44:22 -0800 Subject: [PATCH] feat: collapsible tool lines in terminal Long tool messages (e.g. Bash commands) are now stored in full and displayed collapsed by default, with a toggle button to expand/collapse. Removes backend truncation of Bash commands at 50 chars. --- src-tauri/src/wsl_bridge.rs | 11 ++---- src/lib/components/Terminal.svelte | 57 ++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 9 deletions(-) diff --git a/src-tauri/src/wsl_bridge.rs b/src-tauri/src/wsl_bridge.rs index b06cd33..8a125b5 100644 --- a/src-tauri/src/wsl_bridge.rs +++ b/src-tauri/src/wsl_bridge.rs @@ -1689,12 +1689,7 @@ fn format_tool_description(name: &str, input: &serde_json::Value) -> String { } "Bash" => { if let Some(cmd) = input.get("command").and_then(|v| v.as_str()) { - let truncated = if cmd.len() > 50 { - format!("{}...", &cmd[..50]) - } else { - cmd.to_string() - }; - format!("Running: {}", truncated) + format!("Running: {}", cmd) } else { "Running command...".to_string() } @@ -1855,9 +1850,7 @@ mod tests { let long_cmd = "a".repeat(100); let input = serde_json::json!({"command": long_cmd}); let desc = format_tool_description("Bash", &input); - assert!(desc.starts_with("Running: ")); - assert!(desc.ends_with("...")); - assert!(desc.len() < 70); + assert_eq!(desc, format!("Running: {}", long_cmd)); } #[test] diff --git a/src/lib/components/Terminal.svelte b/src/lib/components/Terminal.svelte index 616231c..242d4ce 100644 --- a/src/lib/components/Terminal.svelte +++ b/src/lib/components/Terminal.svelte @@ -1,6 +1,7 @@
{copiedMessageId === line.id ? "Copied!" : "Copy"}
+ {:else if line.type === "tool" && isToolContentLong(maskPaths(line.content, hidePaths))} + + + + {:else}