From df176d42064d06988bd16b86d33afa42fd6d3e58 Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Tue, 3 Feb 2026 21:36:21 -0600 Subject: [PATCH] installer remove double tool questioning --- tools/cli/lib/ui.js | 95 +++++++-------------------------------------- 1 file changed, 14 insertions(+), 81 deletions(-) diff --git a/tools/cli/lib/ui.js b/tools/cli/lib/ui.js index 89dc11c5..cc135fea 100644 --- a/tools/cli/lib/ui.js +++ b/tools/cli/lib/ui.js @@ -435,95 +435,29 @@ class UI { } // ───────────────────────────────────────────────────────────────────────────── - // NEW INSTALL: Show recommended tools first with "Browse All" option + // NEW INSTALL: Show all tools with search // ───────────────────────────────────────────────────────────────────────────── - const recommendedOptions = preferredIdes.map((ide) => { - const isConfigured = configuredPreferred.includes(ide.value); + const allTools = [...preferredIdes, ...otherIdes]; + + const allToolOptions = allTools.map((ide) => { + const isPreferred = preferredIdes.some((p) => p.value === ide.value); + let label = ide.name; + if (isPreferred) label += ' ⭐'; return { - label: isConfigured ? `${ide.name} ⭐ ✅` : `${ide.name} ⭐`, + label, value: ide.value, }; }); - // Add "browse all" option at the end if there are additional tools - if (otherIdes.length > 0) { - const totalTools = preferredIdes.length + otherIdes.length; - recommendedOptions.push({ - label: `→ Browse all supported tools (${totalTools} total)...`, - value: '__BROWSE_ALL__', - }); - } - - // Pre-select previously configured preferred tools - const recommendedInitialValues = configuredPreferred.length > 0 ? configuredPreferred : undefined; - - const recommendedSelected = await prompts.multiselect({ - message: `Integrate with ${chalk.dim('(↑/↓ to navigate • SPACE: select • ENTER: confirm)')}:`, - options: recommendedOptions, - initialValues: recommendedInitialValues, + const selectedIdes = await prompts.autocompleteMultiselect({ + message: 'Select tools:', + options: allToolOptions, + initialValues: configuredIdes.length > 0 ? configuredIdes : undefined, required: false, + maxItems: 8, }); - const selectedRecommended = recommendedSelected || []; - - // ───────────────────────────────────────────────────────────────────────────── - // STEP 2: Handle "Browse All" selection - show additional tools if requested - // ───────────────────────────────────────────────────────────────────────────── - const wantsBrowseAll = selectedRecommended.includes('__BROWSE_ALL__'); - const filteredRecommended = selectedRecommended.filter((v) => v !== '__BROWSE_ALL__'); - - // Show additional tools if: - // 1. User explicitly chose "Browse All", OR - // 2. User has previously configured "other" tools, OR - // 3. User selected no recommended tools (allow them to pick from other tools) - const showAdditionalTools = wantsBrowseAll || configuredOther.length > 0 || filteredRecommended.length === 0; - - let selectedAdditionalOrAll = []; - - if (showAdditionalTools) { - // Show ALL tools if: - // - User explicitly chose "Browse All", OR - // - User selected nothing from recommended (so they can pick from everything) - // Otherwise, show only "other" tools as additional options - const showAllTools = wantsBrowseAll || filteredRecommended.length === 0; - const toolsToShow = showAllTools ? [...preferredIdes, ...otherIdes] : otherIdes; - - if (toolsToShow.length > 0) { - const allToolOptions = toolsToShow.map((ide) => { - const isConfigured = configuredIdes.includes(ide.value); - const isPreferred = preferredIdes.some((p) => p.value === ide.value); - let label = ide.name; - if (isPreferred) label += ' ⭐'; - if (isConfigured) label += ' ✅'; - return { - label, - value: ide.value, - }; - }); - - // Pre-select: previously configured tools + any recommended tools already selected - const initialValues = [...configuredIdes, ...filteredRecommended].filter((v, i, arr) => arr.indexOf(v) === i); // dedupe - - // Use "additional" only if user already selected some recommended tools - const isAdditional = !wantsBrowseAll && filteredRecommended.length > 0; - - console.log(''); - const selected = await prompts.autocompleteMultiselect({ - message: isAdditional ? 'Select additional tools:' : 'Select tools:', - options: allToolOptions, - initialValues: initialValues.length > 0 ? initialValues : undefined, - required: false, - maxItems: 8, - }); - - selectedAdditionalOrAll = selected || []; - } - } - - // Combine selections: - // - If "Browse All" was used, the second prompt contains ALL selections - // - Otherwise, combine recommended + additional - const allSelectedIdes = wantsBrowseAll ? selectedAdditionalOrAll : [...filteredRecommended, ...selectedAdditionalOrAll]; + const allSelectedIdes = selectedIdes || []; // ───────────────────────────────────────────────────────────────────────────── // STEP 3: Confirm if no tools selected @@ -547,7 +481,6 @@ class UI { } // Display selected tools - const allTools = [...preferredIdes, ...otherIdes]; this.displaySelectedTools(allSelectedIdes, preferredIdes, allTools); return {