diff options
| author | Adam <[email protected]> | 2026-01-22 19:54:53 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-01-22 20:17:50 -0600 |
| commit | 2b9b98e9c2bee444f5110073203be55c6b49e73d (patch) | |
| tree | 35861bdcf9ad16fcb975d4e2c0e3497c0bb588d7 /packages/app/src/context/layout.tsx | |
| parent | 07015aae074bccf31af42b2cae1701e9d4c32451 (diff) | |
| download | opencode-2b9b98e9c2bee444f5110073203be55c6b49e73d.tar.gz opencode-2b9b98e9c2bee444f5110073203be55c6b49e73d.zip | |
fix(app): project icon color flash on load
Diffstat (limited to 'packages/app/src/context/layout.tsx')
| -rw-r--r-- | packages/app/src/context/layout.tsx | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/packages/app/src/context/layout.tsx b/packages/app/src/context/layout.tsx index 3c544b069..9db03b25f 100644 --- a/packages/app/src/context/layout.tsx +++ b/packages/app/src/context/layout.tsx @@ -223,6 +223,13 @@ export const { use: useLayout, provider: LayoutProvider } = createSimpleContext( ? globalSync.data.project.find((x) => x.id === projectID) : globalSync.data.project.find((x) => x.worktree === project.worktree) + const local = childStore.projectMeta + const localOverride = + local?.name !== undefined || + local?.commands?.start !== undefined || + local?.icon?.override !== undefined || + local?.icon?.color !== undefined + const base = { ...(metadata ?? {}), ...project, @@ -233,11 +240,12 @@ export const { use: useLayout, provider: LayoutProvider } = createSimpleContext( }, } - if (projectID !== "global") return base + const isGlobal = projectID === "global" || (metadata?.id === undefined && localOverride) + if (!isGlobal) return base - const local = childStore.projectMeta return { ...base, + id: base.id ?? "global", name: local?.name, commands: local?.commands, icon: { @@ -306,10 +314,12 @@ export const { use: useLayout, provider: LayoutProvider } = createSimpleContext( for (const project of projects) { if (project.icon?.color) continue - if (colors[project.worktree]) continue - const color = pickAvailableColor(used) - used.add(color) - setColors(project.worktree, color) + const existing = colors[project.worktree] + const color = existing ?? pickAvailableColor(used) + if (!existing) { + used.add(color) + setColors(project.worktree, color) + } if (!project.id) continue if (project.id === "global") { globalSync.project.meta(project.worktree, { icon: { color } }) |
