From 1e8f6e3b905bec7481d97183223852235e86b4b6 Mon Sep 17 00:00:00 2001 From: gordonlu Date: Mon, 8 Jun 2026 17:45:32 +0800 Subject: [PATCH] =?UTF-8?q?fixup:=20make=20tool=5Fdisplay=5Flabel=5Ffor=5F?= =?UTF-8?q?name=20private=20+=20deduplicate=20family=E2=86=92MessageId=20m?= =?UTF-8?q?apping?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/tui/src/tui/widgets/tool_card.rs | 57 +++++++++---------------- 1 file changed, 20 insertions(+), 37 deletions(-) diff --git a/crates/tui/src/tui/widgets/tool_card.rs b/crates/tui/src/tui/widgets/tool_card.rs index 8aeb055e..5e4c2e6a 100644 --- a/crates/tui/src/tui/widgets/tool_card.rs +++ b/crates/tui/src/tui/widgets/tool_card.rs @@ -99,9 +99,9 @@ pub fn tool_family_for_name(name: &str) -> ToolFamily { /// User-facing label for an arbitrary tool name. Known tools collapse to the /// semantic verb; unknown tools keep their exact name for debugging. -#[allow(dead_code)] +#[cfg(test)] #[must_use] -pub fn tool_display_label_for_name(name: &str) -> String { +fn tool_display_label_for_name(name: &str) -> String { let family = tool_family_for_name(name); if matches!(family, ToolFamily::Generic) { name.to_string() @@ -110,48 +110,31 @@ pub fn tool_display_label_for_name(name: &str) -> String { } } +fn family_message_id(family: ToolFamily) -> crate::localization::MessageId { + match family { + ToolFamily::Read => crate::localization::MessageId::ToolFamilyRead, + ToolFamily::Patch => crate::localization::MessageId::ToolFamilyPatch, + ToolFamily::Run => crate::localization::MessageId::ToolFamilyRun, + ToolFamily::Find => crate::localization::MessageId::ToolFamilyFind, + ToolFamily::Delegate => crate::localization::MessageId::ToolFamilyDelegate, + ToolFamily::Fanout => crate::localization::MessageId::ToolFamilyFanout, + ToolFamily::Rlm => crate::localization::MessageId::ToolFamilyRlm, + ToolFamily::Verify => crate::localization::MessageId::ToolFamilyVerify, + ToolFamily::Think => crate::localization::MessageId::ToolFamilyThink, + ToolFamily::Generic => crate::localization::MessageId::ToolFamilyGeneric, + } +} + /// Compact activity/status label for arbitrary tool names. Known built-ins use /// the semantic verb; unknown tools keep the `tool NAME` form. #[must_use] pub fn tool_activity_label_for_name(name: &str, locale: Locale) -> String { let family = tool_family_for_name(name); + let mid = family_message_id(family); if matches!(family, ToolFamily::Generic) { - format!( - "{} {name}", - crate::localization::tr(locale, crate::localization::MessageId::ToolFamilyGeneric) - ) + format!("{} {name}", crate::localization::tr(locale, mid)) } else { - let label = match family { - ToolFamily::Read => { - crate::localization::tr(locale, crate::localization::MessageId::ToolFamilyRead) - } - ToolFamily::Patch => { - crate::localization::tr(locale, crate::localization::MessageId::ToolFamilyPatch) - } - ToolFamily::Run => { - crate::localization::tr(locale, crate::localization::MessageId::ToolFamilyRun) - } - ToolFamily::Find => { - crate::localization::tr(locale, crate::localization::MessageId::ToolFamilyFind) - } - ToolFamily::Delegate => { - crate::localization::tr(locale, crate::localization::MessageId::ToolFamilyDelegate) - } - ToolFamily::Fanout => { - crate::localization::tr(locale, crate::localization::MessageId::ToolFamilyFanout) - } - ToolFamily::Rlm => { - crate::localization::tr(locale, crate::localization::MessageId::ToolFamilyRlm) - } - ToolFamily::Verify => { - crate::localization::tr(locale, crate::localization::MessageId::ToolFamilyVerify) - } - ToolFamily::Think => { - crate::localization::tr(locale, crate::localization::MessageId::ToolFamilyThink) - } - ToolFamily::Generic => unreachable!(), - }; - label.to_string() + crate::localization::tr(locale, mid).to_string() } }