diff --git a/packages/opencode/test/script/version.test.ts b/packages/opencode/test/script/version.test.ts new file mode 100644 index 000000000000..ef75c3162989 --- /dev/null +++ b/packages/opencode/test/script/version.test.ts @@ -0,0 +1,27 @@ +import { describe, expect, test } from "bun:test" +import { readFileSync } from "fs" +import { join } from "path" + +describe("build script version format", () => { + const scriptPath = join( + __dirname, + "../../../script/src/index.ts", + ) + + test("script must contain integration branch regex pattern", () => { + const content = readFileSync(scriptPath, "utf-8") + expect(content).toContain('/^integration\\/(\\d{4}-\\d{2}-\\d{2}-\\d{2}-\\d{2})$/') + }) + + test("script must check for integration match and return short version", () => { + const content = readFileSync(scriptPath, "utf-8") + expect(content).toContain('const integrationMatch = CHANNEL.match') + expect(content).toContain('if (integrationMatch)') + expect(content).toContain('return integrationMatch[1]') + }) + + test("script must fall back to old preview format for non-integration branches", () => { + const content = readFileSync(scriptPath, "utf-8") + expect(content).toContain('0.0.0-${CHANNEL}') + }) +}) diff --git a/packages/script/src/index.ts b/packages/script/src/index.ts index d148ce0d2b70..c798c91ac7e7 100644 --- a/packages/script/src/index.ts +++ b/packages/script/src/index.ts @@ -33,7 +33,15 @@ const IS_PREVIEW = CHANNEL !== "latest" const VERSION = await (async () => { if (env.OPENCODE_VERSION) return env.OPENCODE_VERSION - if (IS_PREVIEW) return `0.0.0-${CHANNEL}-${new Date().toISOString().slice(0, 16).replace(/[-:T]/g, "")}` + if (IS_PREVIEW) { + // Check if we're on an integration branch and extract the timestamp + const integrationMatch = CHANNEL.match(/^integration\/(\d{4}-\d{2}-\d{2}-\d{2}-\d{2})$/) + if (integrationMatch) { + return integrationMatch[1] // Return just the timestamp (e.g., "2026-03-08-21-02") + } + // Otherwise use the old preview format for other branches + return `0.0.0-${CHANNEL}-${new Date().toISOString().slice(0, 16).replace(/[-:T]/g, "")}` + } const version = await fetch("https://registry.npmjs.org/opencode-ai/latest") .then((res) => { if (!res.ok) throw new Error(res.statusText)