From ae3dc2ce01279169fa8877404a1eef6c29ef3104 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davor=20Raci=C4=87?= Date: Wed, 14 Jan 2026 08:27:33 +0100 Subject: [PATCH] fix(cli): add multiselect usage hints for inexperienced users MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add inline navigation hints to all multiselect prompts showing (↑/↓ navigate, SPACE select, ENTER confirm) to help users unfamiliar with terminal multiselect controls. Also restore detailed warning when no tools are selected, explaining that SPACE must be pressed to select items. Co-Authored-By: Claude Opus 4.5 --- tools/cli/installers/lib/ide/antigravity.js | 2 +- tools/cli/installers/lib/ide/claude-code.js | 2 +- tools/cli/lib/ui.js | 12 +++++++----- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/tools/cli/installers/lib/ide/antigravity.js b/tools/cli/installers/lib/ide/antigravity.js index 195b320a..57071cdc 100644 --- a/tools/cli/installers/lib/ide/antigravity.js +++ b/tools/cli/installers/lib/ide/antigravity.js @@ -345,7 +345,7 @@ class AntigravitySetup extends BaseIdeSetup { }; const selected = await prompts.multiselect({ - message: 'Select subagents to install:', + message: `Select subagents to install ${chalk.dim('(↑/↓ navigate, SPACE select, ENTER confirm)')}:`, choices: subagentConfig.files.map((file) => ({ name: `${file.replace('.md', '')} - ${subagentInfo[file] || 'Specialized assistant'}`, value: file, diff --git a/tools/cli/installers/lib/ide/claude-code.js b/tools/cli/installers/lib/ide/claude-code.js index e053e8cb..02c65b40 100644 --- a/tools/cli/installers/lib/ide/claude-code.js +++ b/tools/cli/installers/lib/ide/claude-code.js @@ -353,7 +353,7 @@ class ClaudeCodeSetup extends BaseIdeSetup { }; const selected = await prompts.multiselect({ - message: 'Select subagents to install:', + message: `Select subagents to install ${chalk.dim('(↑/↓ navigate, SPACE select, ENTER confirm)')}:`, options: subagentConfig.files.map((file) => ({ label: `${file.replace('.md', '')} - ${subagentInfo[file] || 'Specialized assistant'}`, value: file, diff --git a/tools/cli/lib/ui.js b/tools/cli/lib/ui.js index e144b6e9..02b42ab1 100644 --- a/tools/cli/lib/ui.js +++ b/tools/cli/lib/ui.js @@ -507,7 +507,7 @@ class UI { // Loop until user selects at least one tool OR explicitly confirms no tools while (!userConfirmedNoTools) { selectedIdes = await prompts.multiselect({ - message: 'Select tools to configure:', + message: `Select tools to configure ${chalk.dim('(↑/↓ navigate, SPACE select, ENTER confirm)')}:`, choices: ideChoices, required: false, }); @@ -517,9 +517,11 @@ class UI { break; } - // Warn that no tools were selected + // Warn that no tools were selected - users often miss the spacebar requirement console.log(); console.log(chalk.red.bold('⚠️ WARNING: No tools were selected!')); + console.log(chalk.red(' You must press SPACE to select items, then ENTER to confirm.')); + console.log(chalk.red(' Simply highlighting an item does NOT select it.')); console.log(); const goBack = await prompts.confirm({ @@ -573,7 +575,7 @@ class UI { })); const selectedModules = await prompts.multiselect({ - message: 'Select modules to add:', + message: `Select modules to add ${chalk.dim('(↑/↓ navigate, SPACE select, ENTER confirm)')}:`, choices, required: true, }); @@ -775,7 +777,7 @@ class UI { })); const selected = await prompts.multiselect({ - message: 'Select modules to install:', + message: `Select modules to install ${chalk.dim('(↑/↓ navigate, SPACE select, ENTER confirm)')}:`, choices: choicesWithDefaults, required: false, }); @@ -1461,7 +1463,7 @@ class UI { })); const keepModules = await prompts.multiselect({ - message: 'Select custom modules to keep:', + message: `Select custom modules to keep ${chalk.dim('(↑/↓ navigate, SPACE select, ENTER confirm)')}:`, choices: selectChoices, required: false, });