summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/context/layout.tsx
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-01-22 19:54:53 -0600
committerAdam <[email protected]>2026-01-22 20:17:50 -0600
commit2b9b98e9c2bee444f5110073203be55c6b49e73d (patch)
tree35861bdcf9ad16fcb975d4e2c0e3497c0bb588d7 /packages/app/src/context/layout.tsx
parent07015aae074bccf31af42b2cae1701e9d4c32451 (diff)
downloadopencode-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.tsx22
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 } })