From a35ae7447502a700ee58c9dd88313a25b25651e2 Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Wed, 15 Apr 2026 00:36:07 -0700 Subject: [PATCH] fix: settings-hook remove exits 1 when nothing to remove gstack-settings-hook remove was exiting 0 when settings.json didn't exist, causing gstack-uninstall to report "SessionStart hook" as removed on clean systems where nothing was installed. Co-Authored-By: Claude Opus 4.6 (1M context) --- bin/gstack-settings-hook | 2 +- test/team-mode.test.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/gstack-settings-hook b/bin/gstack-settings-hook index 21445a14..8879a7d2 100755 --- a/bin/gstack-settings-hook +++ b/bin/gstack-settings-hook @@ -54,7 +54,7 @@ case "$ACTION" in " 2>/dev/null ;; remove) - [ -f "$SETTINGS_FILE" ] || exit 0 + [ -f "$SETTINGS_FILE" ] || exit 1 GSTACK_SETTINGS_PATH="$SETTINGS_FILE" bun -e " const fs = require('fs'); const settingsPath = process.env.GSTACK_SETTINGS_PATH; diff --git a/test/team-mode.test.ts b/test/team-mode.test.ts index 660f6687..0a856950 100644 --- a/test/team-mode.test.ts +++ b/test/team-mode.test.ts @@ -85,11 +85,11 @@ describe('gstack-settings-hook', () => { expect(settings.hooks).toBeUndefined(); }); - test('remove is safe when settings.json does not exist', () => { + test('remove exits 1 when settings.json does not exist', () => { const result = run(`${SETTINGS_HOOK} remove /path/to/gstack-session-update`, { env: { GSTACK_SETTINGS_FILE: settingsFile }, }); - expect(result.exitCode).toBe(0); + expect(result.exitCode).toBe(1); }); test('remove preserves other hooks', () => {