From b0017e0ce7fff8ab2eb0276ac29c2d4a76478f4c Mon Sep 17 00:00:00 2001 From: manuvarghese456-collab Date: Sun, 11 Oct 2026 21:45:45 +0100 Subject: [PATCH] fix(uninstall): remove the OpenCode mode flag scripts/uninstall.js cleaned up every host's flag except OpenCode's ($XDG_CONFIG_HOME or ~/.config)/opencode/.ponytail-active. A flag left at "off" made a later reinstall start switched off. Co-Authored-By: Claude Opus 5.5 --- scripts/uninstall.js | 1 + tests/uninstall.test.js | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/scripts/uninstall.js b/scripts/uninstall.js index 92c7a74ee..c13c02450 100644 --- a/scripts/uninstall.js +++ b/scripts/uninstall.js @@ -34,6 +34,7 @@ for (const dir of [path.join(getClaudeDir(), 'ponytail-modes'), path.join(os.hom } } removeIfExists(path.join(process.env.CODEBUDDY_CONFIG_DIR || path.join(os.homedir(), '.codebuddy'), '.ponytail-active'), 'CodeBuddy mode flag'); +removeIfExists(path.join(process.env.XDG_CONFIG_HOME || path.join(os.homedir(), '.config'), 'opencode', '.ponytail-active'), 'OpenCode mode flag'); removeIfExists(getConfigPath(), 'config file'); // Statusline script copies the activate hook keeps in the config dir (#1032). for (const name of ['ponytail-statusline.sh', 'ponytail-statusline.ps1']) { diff --git a/tests/uninstall.test.js b/tests/uninstall.test.js index 20c0be54f..388bf48f6 100644 --- a/tests/uninstall.test.js +++ b/tests/uninstall.test.js @@ -33,6 +33,12 @@ const qoderFlagPath = path.join(home, '.qoder', '.ponytail-active'); fs.mkdirSync(path.dirname(qoderFlagPath), { recursive: true }); fs.writeFileSync(qoderFlagPath, 'ultra'); +// OpenCode keeps its flag beside its own config; a leftover "off" would start a +// reinstall switched off. +const opencodeFlagPath = path.join(temp, 'config-home', 'opencode', '.ponytail-active'); +fs.mkdirSync(path.dirname(opencodeFlagPath), { recursive: true }); +fs.writeFileSync(opencodeFlagPath, 'off'); + const nudgeFlagPath = path.join(claudeDir, '.ponytail-statusline-nudged'); fs.writeFileSync(nudgeFlagPath, ''); @@ -80,6 +86,7 @@ let result = runUninstall(env); assert.equal(result.status, 0, result.stderr); assert.equal(fs.existsSync(flagPath), false, 'mode flag must be removed'); assert.equal(fs.existsSync(qoderFlagPath), false, 'Qoder mode flag must be removed'); +assert.equal(fs.existsSync(opencodeFlagPath), false, 'OpenCode mode flag must be removed'); assert.equal(fs.existsSync(nudgeFlagPath), false, 'statusline nudge flag must be removed'); assert.equal(fs.existsSync(configPath), false, 'config file must be removed'); assert.equal(fs.existsSync(cursorFlagPath), false, 'Cursor mode flag must be removed');