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 <action>'.
- 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.
This commit is contained in:
Jerop Kipruto
2026-03-17 13:16:49 -04:00
parent 73826579a2
commit 14d4ebe806

View File

@@ -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.