diff --git a/scripts/uninstall.js b/scripts/uninstall.js index d67e92fdc..8bb93d698 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 f4620ad66..81ee330cc 100644 --- a/tests/uninstall.test.js +++ b/tests/uninstall.test.js @@ -37,6 +37,12 @@ const qoderCustomFlagPath = path.join(qoderCustomDir, '.ponytail-active'); fs.mkdirSync(qoderCustomDir, { recursive: true }); fs.writeFileSync(qoderCustomFlagPath, 'lite'); +// 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, ''); @@ -84,6 +90,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(qoderCustomFlagPath), true, 'default Qoder uninstall must not touch a separate custom config'); assert.equal(fs.existsSync(nudgeFlagPath), false, 'statusline nudge flag must be removed'); assert.equal(fs.existsSync(configPath), false, 'config file must be removed');