From c55c510883355ba820b4bd67b40cde9b9d4b21f6 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Thu, 9 Apr 2026 13:36:12 +0900 Subject: [PATCH] =?UTF-8?q?fix(cli):=20exclude=20stub=20slash=20commands?= =?UTF-8?q?=20from=20REPL=20completions=20=E2=80=94=20ROADMAP=20#39?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commands registered in the spec list but not yet implemented in this build were appearing in REPL tab-completions, making the discovery surface over-promise what actually works. Users (mezz2301) reported 'many features are not supported' after discovering these through completions. Add STUB_COMMANDS exclusion list in slash_command_completion_candidates_with_sessions. Excluded: login logout vim upgrade stats share feedback files fast exit summary desktop brief advisor stickers insights thinkback release-notes security-review keybindings privacy-settings plan review tasks theme voice usage rename copy hooks context color effort branch rewind ide tag output-style add-dir These commands still parse and run (with the 'not yet implemented' message for users who type them directly), but they no longer surface as tab-completion candidates. --- rust/crates/rusty-claude-cli/src/main.rs | 52 +++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/rust/crates/rusty-claude-cli/src/main.rs b/rust/crates/rusty-claude-cli/src/main.rs index ea3e902..faf81dd 100644 --- a/rust/crates/rusty-claude-cli/src/main.rs +++ b/rust/crates/rusty-claude-cli/src/main.rs @@ -6907,10 +6907,60 @@ fn slash_command_completion_candidates_with_sessions( ) -> Vec { let mut completions = BTreeSet::new(); + // Commands that are registered in the spec list but not yet implemented + // in this build. Exclude them from completions so the discovery surface + // matches what actually works (ROADMAP #39). + const STUB_COMMANDS: &[&str] = &[ + "login", + "logout", + "vim", + "upgrade", + "stats", + "share", + "feedback", + "files", + "fast", + "exit", + "summary", + "desktop", + "brief", + "advisor", + "stickers", + "insights", + "thinkback", + "release-notes", + "security-review", + "keybindings", + "privacy-settings", + "plan", + "review", + "tasks", + "theme", + "voice", + "usage", + "rename", + "copy", + "hooks", + "context", + "color", + "effort", + "branch", + "rewind", + "ide", + "tag", + "output-style", + "add-dir", + ]; + for spec in slash_command_specs() { + if STUB_COMMANDS.contains(&spec.name) { + continue; + } completions.insert(format!("/{}", spec.name)); for alias in spec.aliases { - completions.insert(format!("/{alias}")); + if !STUB_COMMANDS.contains(alias) { + completions.insert(format!("/{alias}")); + } } }