From dfceca8de761315631d5d1ce677018eb3514d1ba Mon Sep 17 00:00:00 2001 From: David Hill <1879069+iamdavidhill@users.noreply.github.com> Date: Thu, 17 Sep 2026 04:36:45 -0600 Subject: [PATCH] fix(app): refine start-screen logo (#49475) --- .../component-tests/new-session-wordmark.spec.ts | 11 ++++++++--- packages/app/src/new-session/wordmark.css | 9 +++++++++ packages/app/src/new-session/wordmark.tsx | 8 ++++---- packages/desktop/src/renderer/startup/splash.tsx | 14 ++++++++------ 4 files changed, 29 insertions(+), 13 deletions(-) diff --git a/packages/app/component-tests/new-session-wordmark.spec.ts b/packages/app/component-tests/new-session-wordmark.spec.ts index 6776bfe7123..53d1c1ee674 100644 --- a/packages/app/component-tests/new-session-wordmark.spec.ts +++ b/packages/app/component-tests/new-session-wordmark.spec.ts @@ -9,12 +9,17 @@ for (const theme of ["light", "dark"]) { const reveal = logo.locator('[data-slot="wordmark-reveal"]') const shimmer = logo.locator(".wordmark-shimmer") const base = logo.locator("svg").first() - await expect(base).toHaveCSS("opacity", theme === "dark" ? "0.5" : "0.6") + await expect(base).toHaveCSS("opacity", "0.16") await expect(shimmer).toHaveCSS("animation-iteration-count", "1") await expect(logo.locator("g[mask]")).toHaveCount(0) await expect(shimmer).toHaveCSS("color", "rgb(255, 255, 255)") await expect(shimmer).toHaveCSS("mix-blend-mode", "screen") - await expect(base.locator("g[fill]")).toHaveAttribute("fill", "currentColor") + await expect(base.locator("path").nth(1)).toHaveAttribute("fill", "var(--icon-base)") + await expect(base.locator("path").nth(9)).toHaveCSS( + "fill", + await base.locator("path").nth(1).evaluate((element) => getComputedStyle(element).fill), + ) + await expect(base.locator('path[fill="var(--icon-weak-base)"]')).toHaveCount(8) await logo.evaluate((element) => { element.getAnimations({ subtree: true }).forEach((animation) => { @@ -77,7 +82,7 @@ for (const theme of ["light", "dark"]) { await page.setViewportSize({ width: 360, height: 640 }) const component = await mount("app-new-session-wordmark--reveal", { globals: { theme } }) const logo = component.locator('[data-component="new-session-wordmark"]') - await expect(logo.locator("svg").first()).toHaveCSS("opacity", theme === "dark" ? "0.5" : "0.6") + await expect(logo.locator("svg").first()).toHaveCSS("opacity", "0.16") await expect(logo.locator('[data-slot="wordmark-reveal"]')).toHaveCSS("opacity", "1") await expect(logo.locator(".wordmark-shimmer")).toHaveCSS("opacity", "0") expect(await logo.evaluate((element) => element.getAnimations({ subtree: true }).length)).toBe(0) diff --git a/packages/app/src/new-session/wordmark.css b/packages/app/src/new-session/wordmark.css index 996d5d0a99a..9abe435503b 100644 --- a/packages/app/src/new-session/wordmark.css +++ b/packages/app/src/new-session/wordmark.css @@ -1,7 +1,12 @@ [data-component="new-session-wordmark"] { + --icon-strong-base: var(--icon-base); --wordmark-shimmer-opacity: 0.45; .wordmark-shimmer { + --icon-base: white; + --icon-strong-base: white; + --icon-weak-base: transparent; + /* Blend above the base logo's opacity so the sweep only adds light in either theme. */ color: white; mix-blend-mode: screen; @@ -13,6 +18,10 @@ } } +[data-color-scheme="light"] [data-component="new-session-wordmark"] { + --icon-weak-base: color-mix(in srgb, var(--icon-base) 30%, transparent); +} + [data-color-scheme="dark"] [data-component="new-session-wordmark"] { /* Preserve the previous dark highlight strength: 0.16 × 0.7 × 0.6. */ --wordmark-shimmer-opacity: 0.0672; diff --git a/packages/app/src/new-session/wordmark.tsx b/packages/app/src/new-session/wordmark.tsx index 00bc6962aa4..f691cbe0c2b 100644 --- a/packages/app/src/new-session/wordmark.tsx +++ b/packages/app/src/new-session/wordmark.tsx @@ -1,4 +1,4 @@ -import { Wordmark } from "@opencode/ui/wordmark" +import { Logo } from "@opencode/ui/logo" import "./wordmark.css" export function NewSessionWordmark() { @@ -8,9 +8,9 @@ export function NewSessionWordmark() { aria-hidden="true" class="pointer-events-none mx-auto w-full max-w-[720px] text-v2-background-bg-inverse" > -
- - +
+ +
) diff --git a/packages/desktop/src/renderer/startup/splash.tsx b/packages/desktop/src/renderer/startup/splash.tsx index 5bfde5aa934..89f29fc10db 100644 --- a/packages/desktop/src/renderer/startup/splash.tsx +++ b/packages/desktop/src/renderer/startup/splash.tsx @@ -73,12 +73,14 @@ export function LoadingSplash(props: { >
- +
+ +