summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAiden Cline <[email protected]>2026-01-31 21:01:51 -0600
committerGitHub <[email protected]>2026-01-31 21:01:51 -0600
commitd4c90b2dfb89385461abf0d51430d1293e6de6a8 (patch)
tree5be38223d228342a1e65f815e553e9f016e68176
parent5b784871f0befb450f0f80848e397e3f9e36b060 (diff)
downloadopencode-d4c90b2dfb89385461abf0d51430d1293e6de6a8.tar.gz
opencode-d4c90b2dfb89385461abf0d51430d1293e6de6a8.zip
fix: issue where you couldn't @ folders/files that started with a "." (#11553)
-rw-r--r--packages/opencode/src/file/ripgrep.ts2
-rw-r--r--packages/opencode/test/file/ripgrep.test.ts39
2 files changed, 40 insertions, 1 deletions
diff --git a/packages/opencode/src/file/ripgrep.ts b/packages/opencode/src/file/ripgrep.ts
index dd94cc609..463a9fb36 100644
--- a/packages/opencode/src/file/ripgrep.ts
+++ b/packages/opencode/src/file/ripgrep.ts
@@ -215,7 +215,7 @@ export namespace Ripgrep {
const args = [await filepath(), "--files", "--glob=!.git/*"]
if (input.follow) args.push("--follow")
- if (input.hidden) args.push("--hidden")
+ if (input.hidden !== false) args.push("--hidden")
if (input.maxDepth !== undefined) args.push(`--max-depth=${input.maxDepth}`)
if (input.glob) {
for (const g of input.glob) {
diff --git a/packages/opencode/test/file/ripgrep.test.ts b/packages/opencode/test/file/ripgrep.test.ts
new file mode 100644
index 000000000..ac46f1131
--- /dev/null
+++ b/packages/opencode/test/file/ripgrep.test.ts
@@ -0,0 +1,39 @@
+import { describe, expect, test } from "bun:test"
+import fs from "fs/promises"
+import path from "path"
+import { tmpdir } from "../fixture/fixture"
+import { Ripgrep } from "../../src/file/ripgrep"
+
+describe("file.ripgrep", () => {
+ test("defaults to include hidden", async () => {
+ await using tmp = await tmpdir({
+ init: async (dir) => {
+ await Bun.write(path.join(dir, "visible.txt"), "hello")
+ await fs.mkdir(path.join(dir, ".opencode"), { recursive: true })
+ await Bun.write(path.join(dir, ".opencode", "thing.json"), "{}")
+ },
+ })
+
+ const files = await Array.fromAsync(Ripgrep.files({ cwd: tmp.path }))
+ const hasVisible = files.includes("visible.txt")
+ const hasHidden = files.includes(path.join(".opencode", "thing.json"))
+ expect(hasVisible).toBe(true)
+ expect(hasHidden).toBe(true)
+ })
+
+ test("hidden false excludes hidden", async () => {
+ await using tmp = await tmpdir({
+ init: async (dir) => {
+ await Bun.write(path.join(dir, "visible.txt"), "hello")
+ await fs.mkdir(path.join(dir, ".opencode"), { recursive: true })
+ await Bun.write(path.join(dir, ".opencode", "thing.json"), "{}")
+ },
+ })
+
+ const files = await Array.fromAsync(Ripgrep.files({ cwd: tmp.path, hidden: false }))
+ const hasVisible = files.includes("visible.txt")
+ const hasHidden = files.includes(path.join(".opencode", "thing.json"))
+ expect(hasVisible).toBe(true)
+ expect(hasHidden).toBe(false)
+ })
+})