fix(opencode): sanitize preview database filenames (#16430)

This commit is contained in:
Luke Parker
2026-03-07 14:34:29 +10:00
committed by GitHub
parent c108f304c6
commit 4c7fe60493
2 changed files with 19 additions and 5 deletions

View File

@@ -27,12 +27,14 @@ export const NotFoundError = NamedError.create(
const log = Log.create({ service: "db" })
export namespace Database {
export function file(channel: string) {
if (channel === "latest" || Flag.OPENCODE_DISABLE_CHANNEL_DB) return "opencode.db"
const safe = channel.replace(/[^a-zA-Z0-9._-]/g, "-")
return `opencode-${safe}.db`
}
export const Path = (() => {
const name =
Installation.CHANNEL !== "latest" && !Flag.OPENCODE_DISABLE_CHANNEL_DB
? `opencode-${Installation.CHANNEL}.db`
: "opencode.db"
return path.join(Global.Path.data, name)
return path.join(Global.Path.data, file(Installation.CHANNEL))
})()
type Schema = typeof schema

View File

@@ -0,0 +1,12 @@
import { describe, expect, test } from "bun:test"
import { Database } from "../../src/storage/db"
describe("Database.file", () => {
test("uses the shared database for latest", () => {
expect(Database.file("latest")).toBe("opencode.db")
})
test("sanitizes preview channels for filenames", () => {
expect(Database.file("fix/windows-modified-files-tracking")).toBe("opencode-fix-windows-modified-files-tracking.db")
})
})