From 1937552da364e57bc94f373632a637848fb9e700 Mon Sep 17 00:00:00 2001 From: Davor Racic Date: Sun, 15 Feb 2026 22:39:53 +0100 Subject: [PATCH] fix: improve module config UX messaging and spacing (#1656) - Move "Module configuration complete" to appear after all customization prompts finish, not just after defaults are applied - Change spinner stop message to "Module defaults applied" for clarity when customization follows; keep "Module configuration complete" for express mode where no customization prompts follow - Remove extra blank line before post-install notes - Wrap spinner loop in try/finally for error safety Co-authored-by: Claude Opus 4.6 --- .../installers/lib/core/config-collector.js | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/tools/cli/installers/lib/core/config-collector.js b/tools/cli/installers/lib/core/config-collector.js index b01098318..e8569cd0f 100644 --- a/tools/cli/installers/lib/core/config-collector.js +++ b/tools/cli/installers/lib/core/config-collector.js @@ -302,23 +302,30 @@ class ConfigCollector { const configSpinner = await prompts.spinner(); configSpinner.start('Configuring modules...'); - for (const moduleName of defaultModules) { - const displayName = displayNameMap.get(moduleName) || moduleName.toUpperCase(); - configSpinner.message(`Configuring ${displayName}...`); - try { - this._silentConfig = true; - await this.collectModuleConfig(moduleName, projectDir); - } finally { - this._silentConfig = false; + try { + for (const moduleName of defaultModules) { + const displayName = displayNameMap.get(moduleName) || moduleName.toUpperCase(); + configSpinner.message(`Configuring ${displayName}...`); + try { + this._silentConfig = true; + await this.collectModuleConfig(moduleName, projectDir); + } finally { + this._silentConfig = false; + } } + } finally { + configSpinner.stop(customizeModules.length > 0 ? 'Module defaults applied' : 'Module configuration complete'); } - configSpinner.stop('Module configuration complete'); } // Run customized modules individually (may show interactive prompts) for (const moduleName of customizeModules) { await this.collectModuleConfig(moduleName, projectDir); } + + if (customizeModules.length > 0) { + await prompts.log.step('Module configuration complete'); + } } // Add metadata @@ -1239,7 +1246,6 @@ class ConfigCollector { hasOutput = true; const message = valueMessages[selectedValue]; - await prompts.log.message(''); for (const line of message.trim().split('\n')) { const trimmedLine = line.trim(); if (trimmedLine.endsWith(':') && !trimmedLine.startsWith(' ')) {