Merge remote-tracking branch 'origin/dev' into chore/remove-bun-shell-opencode

# Conflicts:
#	packages/opencode/src/file/index.ts
#	packages/opencode/src/worktree/index.ts
This commit is contained in:
Dax Raad
2026-03-06 01:15:26 -05:00
8 changed files with 184 additions and 18 deletions
+19 -9
View File
@@ -419,7 +419,7 @@ export namespace File {
if (project.vcs !== "git") return []
const diffOutput = (
await git(["-c", "core.quotepath=false", "diff", "--numstat", "HEAD"], {
await git(["-c", "core.fsmonitor=false", "-c", "core.quotepath=false", "diff", "--numstat", "HEAD"], {
cwd: Instance.directory,
})
).text()
@@ -440,9 +440,12 @@ export namespace File {
}
const untrackedOutput = (
await git(["-c", "core.quotepath=false", "ls-files", "--others", "--exclude-standard"], {
cwd: Instance.directory,
})
await git(
["-c", "core.fsmonitor=false", "-c", "core.quotepath=false", "ls-files", "--others", "--exclude-standard"],
{
cwd: Instance.directory,
},
)
).text()
if (untrackedOutput.trim()) {
@@ -465,9 +468,12 @@ export namespace File {
// Get deleted files
const deletedOutput = (
await git(["-c", "core.quotepath=false", "diff", "--name-only", "--diff-filter=D", "HEAD"], {
cwd: Instance.directory,
})
await git(
["-c", "core.fsmonitor=false", "-c", "core.quotepath=false", "diff", "--name-only", "--diff-filter=D", "HEAD"],
{
cwd: Instance.directory,
},
)
).text()
if (deletedOutput.trim()) {
@@ -539,8 +545,12 @@ export namespace File {
const content = (await Filesystem.readText(full).catch(() => "")).trim()
if (project.vcs === "git") {
let diff = (await git(["diff", "--", file], { cwd: Instance.directory })).text()
if (!diff.trim()) diff = (await git(["diff", "--staged", "--", file], { cwd: Instance.directory })).text()
let diff = (await git(["-c", "core.fsmonitor=false", "diff", "--", file], { cwd: Instance.directory })).text()
if (!diff.trim()) {
diff = (
await git(["-c", "core.fsmonitor=false", "diff", "--staged", "--", file], { cwd: Instance.directory })
).text()
}
if (diff.trim()) {
const original = (await git(["show", `HEAD:${file}`], { cwd: Instance.directory })).text()
const patch = structuredPatch(file, file, original, content, "old", "new", {
+8 -1
View File
@@ -476,6 +476,11 @@ export namespace Worktree {
throw new RemoveFailedError({ message: message || "Failed to remove git worktree directory" })
})
const stop = async (target: string) => {
if (!(await exists(target))) return
await git(["fsmonitor--daemon", "stop"], { cwd: target })
}
const list = await git(["worktree", "list", "--porcelain"], { cwd: Instance.worktree })
if (list.exitCode !== 0) {
throw new RemoveFailedError({ message: errorText(list) || "Failed to read git worktrees" })
@@ -486,11 +491,13 @@ export namespace Worktree {
if (!entry?.path) {
const directoryExists = await exists(directory)
if (directoryExists) {
await stop(directory)
await clean(directory)
}
return true
}
await stop(entry.path)
const removed = await git(["worktree", "remove", "--force", entry.path], {
cwd: Instance.worktree,
})
@@ -646,7 +653,7 @@ export namespace Worktree {
throw new ResetFailedError({ message: errorText(subClean) || "Failed to clean submodules" })
}
const status = await git(["status", "--porcelain=v1"], { cwd: worktreePath })
const status = await git(["-c", "core.fsmonitor=false", "status", "--porcelain=v1"], { cwd: worktreePath })
if (status.exitCode !== 0) {
throw new ResetFailedError({ message: errorText(status) || "Failed to read git status" })
}