fix: address PR review — shebang, double-escaping, data loss, uninstall scope

- Add shebang banner to NPX CLI esbuild config so npx claude-mem works
- Remove manual backslash pre-escaping in WindsurfHooksInstaller (JSON.stringify handles it)
- Scope cache deletion to claude-mem only, not entire vendor namespace
- Use getWorkerPort() in OpenCodeInstaller instead of hard-coded 37777
- Throw on corrupt JSON in readJsonSafe/readGeminiSettings/Windsurf to prevent data loss
- Fix Cursor install stub to warn instead of silently succeeding
- Fix Gemini uninstall to remove individual hooks within groups, not whole groups
- Update tests for new corrupt-file-throws behavior

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Alex Newman
2026-04-04 13:49:14 -07:00
parent cdffdba97a
commit ae6915b88e
9 changed files with 53 additions and 61 deletions
+1 -2
View File
@@ -123,8 +123,7 @@ async function setupIDEs(selectedIDEs: string[]): Promise<void> {
break;
case 'cursor':
log.info('Cursor: hook configuration available after first launch.');
log.info(` Run: npx claude-mem cursor-setup (coming soon)`);
log.warn('Cursor: integration not yet implemented. Skipping.');
break;
case 'gemini-cli': {
+3 -3
View File
@@ -36,9 +36,9 @@ function removeMarketplaceDirectory(): boolean {
}
function removeCacheDirectory(): boolean {
const cacheBaseDirectory = join(pluginsDirectory(), 'cache', 'thedotmack');
if (existsSync(cacheBaseDirectory)) {
rmSync(cacheBaseDirectory, { recursive: true, force: true });
const cacheDirectory = join(pluginsDirectory(), 'cache', 'thedotmack', 'claude-mem');
if (existsSync(cacheDirectory)) {
rmSync(cacheDirectory, { recursive: true, force: true });
return true;
}
return false;