summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-10-02 00:08:38 -0400
committerDax Raad <[email protected]>2025-10-02 00:09:02 -0400
commitb2440e92e7db391eddac17ed49e4db0cb7307e09 (patch)
tree4f89d628c65185f8463abd232ec11d91cfd9b08b
parent125624489bc4a1e6191e66b345eee6d98ca94e22 (diff)
downloadopencode-b2440e92e7db391eddac17ed49e4db0cb7307e09.tar.gz
opencode-b2440e92e7db391eddac17ed49e4db0cb7307e09.zip
core: improve file search reliability and performance
-rw-r--r--packages/opencode/src/file/index.ts10
1 files changed, 9 insertions, 1 deletions
diff --git a/packages/opencode/src/file/index.ts b/packages/opencode/src/file/index.ts
index 20e1f604c..80cff6303 100644
--- a/packages/opencode/src/file/index.ts
+++ b/packages/opencode/src/file/index.ts
@@ -88,6 +88,7 @@ export namespace File {
let current = file
while (true) {
const dir = path.dirname(current)
+ if (dir === ".") break
if (dir === current) break
current = dir
if (set.has(dir)) continue
@@ -113,6 +114,10 @@ export namespace File {
}
})
+ export function init() {
+ state()
+ }
+
export async function status() {
const project = Instance.project
if (project.vcs !== "git") return []
@@ -242,10 +247,13 @@ export namespace File {
}
export async function search(input: { query: string; limit?: number }) {
+ log.info("search", { query: input.query })
const limit = input.limit ?? 100
const result = await state().then((x) => x.files())
- const items = input.query ? [...result.files, ...result.dirs] : [...result.dirs]
+ if (!input.query) return result.dirs.toSorted()
+ const items = [...result.files, ...result.dirs]
const sorted = fuzzysort.go(input.query, items, { limit: limit }).map((r) => r.target)
+ log.info("search", { query: input.query, results: sorted.length })
return sorted
}
}