From d929b8f091dce3b1716883bb66a3116a47e09778 Mon Sep 17 00:00:00 2001 From: Kieran Klaassen Date: Thu, 12 Feb 2026 13:32:06 -0800 Subject: [PATCH] Fix cursor install defaulting to cwd instead of opencode config dir Co-Authored-By: Claude Opus 4.6 --- src/commands/install.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/commands/install.ts b/src/commands/install.ts index 4511f6e..6e86404 100644 --- a/src/commands/install.ts +++ b/src/commands/install.ts @@ -88,7 +88,8 @@ export default defineCommand({ if (!bundle) { throw new Error(`Target ${targetName} did not return a bundle.`) } - const primaryOutputRoot = resolveTargetOutputRoot(targetName, outputRoot, codexHome) + const hasExplicitOutput = Boolean(args.output && String(args.output).trim()) + const primaryOutputRoot = resolveTargetOutputRoot(targetName, outputRoot, codexHome, hasExplicitOutput) await target.write(primaryOutputRoot, bundle) console.log(`Installed ${plugin.manifest.name} to ${primaryOutputRoot}`) @@ -109,7 +110,7 @@ export default defineCommand({ console.warn(`Skipping ${extra}: no output returned.`) continue } - const extraRoot = resolveTargetOutputRoot(extra, path.join(outputRoot, extra), codexHome) + const extraRoot = resolveTargetOutputRoot(extra, path.join(outputRoot, extra), codexHome, hasExplicitOutput) await handler.write(extraRoot, extraBundle) console.log(`Installed ${plugin.manifest.name} to ${extraRoot}`) } @@ -181,10 +182,13 @@ function resolveOutputRoot(value: unknown): string { return path.join(os.homedir(), ".config", "opencode") } -function resolveTargetOutputRoot(targetName: string, outputRoot: string, codexHome: string): string { +function resolveTargetOutputRoot(targetName: string, outputRoot: string, codexHome: string, hasExplicitOutput: boolean): string { if (targetName === "codex") return codexHome if (targetName === "droid") return path.join(os.homedir(), ".factory") - if (targetName === "cursor") return path.join(outputRoot, ".cursor") + if (targetName === "cursor") { + const base = hasExplicitOutput ? outputRoot : process.cwd() + return path.join(base, ".cursor") + } return outputRoot }