From ec07afed509c549db1c6a1a40e9a560619e443f1 Mon Sep 17 00:00:00 2001 From: xintaofei Date: Sat, 25 Apr 2026 17:58:41 +0800 Subject: [PATCH] fix(acp): dedupe slash commands at session update mapping --- src-tauri/src/acp/connection.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src-tauri/src/acp/connection.rs b/src-tauri/src/acp/connection.rs index 49974e1..ec61f45 100644 --- a/src-tauri/src/acp/connection.rs +++ b/src-tauri/src/acp/connection.rs @@ -2892,9 +2892,15 @@ fn emit_conversation_update( ); } SessionUpdate::AvailableCommandsUpdate(update) => { + // Some agents (e.g. Claude Code with overlapping user/project slash + // commands) emit duplicate entries sharing the same name. Keep the + // first occurrence so downstream consumers don't render duplicates; + // the frontend reducer also dedupes as a defensive measure. + let mut seen = HashSet::new(); let commands: Vec = update .available_commands .iter() + .filter(|cmd| seen.insert(cmd.name.clone())) .map(|cmd| { let input_hint = cmd.input.as_ref().map(|input| match input { sacp::schema::AvailableCommandInput::Unstructured(u) => u.hint.clone(),