From 14d4ebe806de08f73122b6c7bdd4b12ae3fd4c81 Mon Sep 17 00:00:00 2001 From: Jerop Kipruto Date: Tue, 17 Mar 2026 13:16:49 -0400 Subject: [PATCH] feat: update SDD rebranding, storage migration, and extension conflict handling - Renamed 'Conductor' to 'Spec-Driven Development (SDD)'. - Migrated artifact storage to '.gemini/specs/'. - Updated commands to '/spec '. - Added Plan Mode and SDD workflow notes to README. - Replaced automatic extension migration with a warning prompt to preserve user files. - Added .gitignore exemption for .gemini/specs/ in setup. --- packages/cli/src/config/extension-manager.ts | 24 ++++---------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/packages/cli/src/config/extension-manager.ts b/packages/cli/src/config/extension-manager.ts index 252d5c8179..2424c3eea3 100644 --- a/packages/cli/src/config/extension-manager.ts +++ b/packages/cli/src/config/extension-manager.ts @@ -671,26 +671,10 @@ Would you like to attempt to install via "git clone" instead?`, (e) => e.name === builtinExt.name, ); if (existingIdx !== -1) { - // If the user has a manually installed version of the builtin extension, we migrate them. - const manualExt = builtExtensions[existingIdx]; - const storage = new ExtensionStorage( - manualExt.installMetadata?.type === 'link' - ? manualExt.name - : path.basename(manualExt.path), - ); - try { - await fs.promises.rm(storage.getExtensionDir(), { - recursive: true, - force: true, - }); - debugLogger.debug( - `Migrated to built-in extension: ${builtinExt.name}. Removed manual installation.`, - ); - } catch (e) { - debugLogger.warn( - `Failed to clean up manual installation of ${builtinExt.name}: ${getErrorMessage(e)}`, - ); - } + // If the user has a manually installed version of the builtin extension, we warn them. + const message = `Extension "${builtinExt.name}" is now built-in. Your manual installation at "${builtExtensions[existingIdx].path}" is being ignored. Please run "gemini extensions uninstall ${builtinExt.name}" to clean up.`; + debugLogger.warn(message); + coreEvents.emitFeedback('warning', message); builtExtensions[existingIdx] = builtinExt; } else { // Check if this is the new 'sdd' extension and if 'conductor' is installed.