From ef7d1f7efa2e682cf0e3e322009fe84b577bbe02 Mon Sep 17 00:00:00 2001 From: Luke Parker <10430890+Hona@users.noreply.github.com> Date: Fri, 27 Mar 2026 08:14:20 +1000 Subject: [PATCH] fix: web ui bundle build on windows (#19337) --- packages/opencode/script/build.ts | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/packages/opencode/script/build.ts b/packages/opencode/script/build.ts index 653c67d8de..7341810768 100755 --- a/packages/opencode/script/build.ts +++ b/packages/opencode/script/build.ts @@ -68,17 +68,24 @@ const skipEmbedWebUi = process.argv.includes("--skip-embed-web-ui") const createEmbeddedWebUIBundle = async () => { console.log(`Building Web UI to embed in the binary`) const appDir = path.join(import.meta.dirname, "../../app") + const dist = path.join(appDir, "dist") await $`bun run --cwd ${appDir} build` - const allFiles = await Array.fromAsync(new Bun.Glob("**/*").scan({ cwd: path.join(appDir, "dist") })) - const fileMap = ` - // Import all files as file_$i with type: "file" - ${allFiles.map((filePath, i) => `import file_${i} from "${path.join(appDir, "dist", filePath)}" with { type: "file" };`).join("\n")} - // Export with original mappings - export default { - ${allFiles.map((filePath, i) => `"${filePath}": file_${i},`).join("\n")} - } - `.trim() - return fileMap + const files = (await Array.fromAsync(new Bun.Glob("**/*").scan({ cwd: dist }))) + .map((file) => file.replaceAll("\\", "/")) + .sort() + const imports = files.map((file, i) => { + const spec = path.relative(dir, path.join(dist, file)).replaceAll("\\", "/") + return `import file_${i} from ${JSON.stringify(spec.startsWith(".") ? spec : `./${spec}`)} with { type: "file" };` + }) + const entries = files.map((file, i) => ` ${JSON.stringify(file)}: file_${i},`) + return [ + `// Import all files as file_$i with type: "file"`, + ...imports, + `// Export with original mappings`, + `export default {`, + ...entries, + `}`, + ].join("\n") } const embeddedFileMap = skipEmbedWebUi ? null : await createEmbeddedWebUIBundle()