fix: track hook files in manifest for local patch detection (#769)

Hook files (gsd-statusline.js, gsd-check-update.js, gsd-context-monitor.js)
are installed during updates but were never included in gsd-file-manifest.json.
This means saveLocalPatches() could not detect user modifications to hooks,
causing them to be silently overwritten on update with no backup.

Add hooks/gsd-*.js to writeManifest() so the existing local patch detection
system automatically backs up modified hooks to gsd-local-patches/ before
overwriting, matching the behavior already in place for workflows, commands,
and agents.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Elliot Drel
2026-03-16 23:49:34 -04:00
parent 4915d28f98
commit 63af9af0f4

View File

@@ -2314,6 +2314,18 @@ function writeManifest(configDir, runtime = 'claude') {
}
}
}
// Track hook files so saveLocalPatches() can detect user modifications
// Hooks are only installed for runtimes that use settings.json (not Codex/Copilot)
if (!isCodex && !isCopilot) {
const hooksDir = path.join(configDir, 'hooks');
if (fs.existsSync(hooksDir)) {
for (const file of fs.readdirSync(hooksDir)) {
if (file.startsWith('gsd-') && file.endsWith('.js')) {
manifest.files['hooks/' + file] = fileHash(path.join(hooksDir, file));
}
}
}
}
fs.writeFileSync(path.join(configDir, MANIFEST_NAME), JSON.stringify(manifest, null, 2));
return manifest;