From a2e460bc4b68da55cb4674df7a0c7507812cb5c0 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Tue, 9 Dec 2025 15:51:41 -0500 Subject: [PATCH] discover logic --- packages/opencode/src/project/project.ts | 42 +++++++++++++----------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/packages/opencode/src/project/project.ts b/packages/opencode/src/project/project.ts index 7577f661f..a3b552b75 100644 --- a/packages/opencode/src/project/project.ts +++ b/packages/opencode/src/project/project.ts @@ -131,26 +131,28 @@ export namespace Project { if (input.vcs !== "git") return if (input.icon) return const glob = new Bun.Glob("**/{favicon}.{ico,png,svg,jpg,jpeg,webp}") - for await (const match of glob.scan({ - cwd: input.worktree, - absolute: true, - onlyFiles: true, - followSymlinks: false, - dot: false, - })) { - const file = Bun.file(match) - const buffer = await file.arrayBuffer() - const base64 = Buffer.from(buffer).toString("base64") - const mime = file.type || "image/png" - const url = `data:${mime};base64,${base64}` - await update({ - projectID: input.id, - icon: { - url, - }, - }) - return - } + const matches = await Array.fromAsync( + glob.scan({ + cwd: input.worktree, + absolute: true, + onlyFiles: true, + followSymlinks: false, + dot: false, + }), + ) + const shortest = matches.sort((a, b) => a.length - b.length)[0] + const file = Bun.file(shortest) + const buffer = await file.arrayBuffer() + const base64 = Buffer.from(buffer).toString("base64") + const mime = file.type || "image/png" + const url = `data:${mime};base64,${base64}` + await update({ + projectID: input.id, + icon: { + url, + }, + }) + return } async function migrateFromGlobal(newProjectID: string, worktree: string) {