Change IDE selection to multiselect checkbox

- Changed from single-select list to checkbox (multiselect)
- Added full IDE list from BMad: Windsurf, Cursor, Claude Code, GitHub Copilot, Cline, VS Code, Other
- Windsurf and Cursor marked as preferred (pre-checked)
- Validation requires at least one IDE selected
- Updated config.yaml to store ides array instead of single ide
- Updated success message to display multiple IDEs (e.g., "Windsurf or Cursor")
- Ensures WDS commands work cross-platform for all selected IDEs

User request: "Look at the BMad installer, there is a multiselect box for IDEs use the full list from the BMad installer"

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Mårten Angner 2026-02-24 12:09:08 +01:00
parent 1ef7db0eec
commit 1fadda6eb5
3 changed files with 36 additions and 14 deletions

View File

@ -22,7 +22,7 @@ module.exports = {
const result = await installer.install(config);
if (result && result.success) {
ui.displaySuccess(config.wdsFolder, config.ide);
ui.displaySuccess(config.wdsFolder, config.ides);
process.exit(0);
}
} catch (error) {

View File

@ -180,7 +180,7 @@ class Installer {
document_output_language: 'en',
output_folder: config.root_folder || 'design-process',
wds_folder: config.wdsFolder,
ide: config.ide || 'windsurf',
ides: config.ides || ['windsurf'],
};
const yamlStr = yaml.dump(configData, { lineWidth: -1 });

View File

@ -59,16 +59,24 @@ class UI {
default: 'brief',
},
{
type: 'list',
name: 'ide',
message: 'Which IDE are you using?',
type: 'checkbox',
name: 'ides',
message: 'Which tools/IDEs are you using? (use spacebar to select)',
choices: [
{ name: 'Windsurf', value: 'windsurf' },
{ name: 'VS Code', value: 'vscode' },
{ name: 'Cursor', value: 'cursor' },
{ name: 'Other', value: 'other' },
{ name: 'Windsurf ⭐', value: 'windsurf', checked: true },
{ name: 'Cursor ⭐', value: 'cursor', checked: true },
{ name: 'Claude Code', value: 'claude-code', checked: false },
{ name: 'GitHub Copilot', value: 'github-copilot', checked: false },
{ name: 'Cline', value: 'cline', checked: false },
{ name: 'VS Code', value: 'vscode', checked: false },
{ name: 'Other', value: 'other', checked: false },
],
default: 'windsurf',
validate: (answers) => {
if (!answers || answers.length === 0) {
return 'At least one IDE must be selected';
}
return true;
},
},
{
type: 'confirm',
@ -89,20 +97,34 @@ class UI {
/**
* Display success message with next steps
*/
displaySuccess(wdsFolder, ide = 'windsurf') {
const ideName = {
displaySuccess(wdsFolder, ides = ['windsurf']) {
const ideNames = {
windsurf: 'Windsurf',
vscode: 'VS Code',
cursor: 'Cursor',
'claude-code': 'Claude Code',
'github-copilot': 'GitHub Copilot',
cline: 'Cline',
other: 'your IDE',
}[ide] || 'your IDE';
};
// Format IDE list for display
let ideDisplay;
if (!ides || ides.length === 0) {
ideDisplay = 'your IDE';
} else if (ides.length === 1) {
ideDisplay = ideNames[ides[0]] || 'your IDE';
} else {
const names = ides.map((ide) => ideNames[ide] || ide);
ideDisplay = names.join(' or ');
}
console.log('');
console.log(chalk.green.bold(' ✨ Installation complete!'));
console.log('');
console.log(chalk.white.bold(' Get Started with Your Product Brief'));
console.log('');
console.log(chalk.white(` 1. Open this folder in ${ideName}`));
console.log(chalk.white(` 1. Open this folder in ${ideDisplay}`));
console.log('');
console.log(chalk.white(' 2. Locate the chat window in your IDE and type:'));
console.log('');