diff options
| author | Simon Klee <[email protected]> | 2026-05-01 11:33:44 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-05-01 11:33:44 +0200 |
| commit | a6b6395c8acd8ab096b344176f86c9aa2b8983a6 (patch) | |
| tree | ef496c005f22a7303289784869be505fee94197c /packages | |
| parent | 21f8027ef74ee281cd9e94ddfd4fb96947fc1f6b (diff) | |
| download | opencode-a6b6395c8acd8ab096b344176f86c9aa2b8983a6.tar.gz opencode-a6b6395c8acd8ab096b344176f86c9aa2b8983a6.zip | |
fix(tui): gate logo subpixel rendering on truecolor support (#25265)
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/opencode/src/cli/cmd/tui/component/logo.tsx | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/component/logo.tsx b/packages/opencode/src/cli/cmd/tui/component/logo.tsx index bee104a35..e3e8074cd 100644 --- a/packages/opencode/src/cli/cmd/tui/component/logo.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/logo.tsx @@ -1,4 +1,5 @@ import { BoxRenderable, MouseButton, MouseEvent, RGBA, TextAttributes } from "@opentui/core" +import { useRenderer } from "@opentui/solid" import { For, createMemo, createSignal, onCleanup, onMount, type JSX } from "solid-js" import { useTheme, tint } from "@tui/context/theme" import * as Sound from "@tui/util/sound" @@ -554,6 +555,7 @@ function buildIdleState(t: number, ctx: LogoContext): IdleState { export function Logo(props: { shape?: LogoShape; ink?: RGBA; idle?: boolean } = {}) { const ctx = props.shape ? build(props.shape) : DEFAULT const { theme } = useTheme() + const renderer = useRenderer() const [rings, setRings] = createSignal<Ring[]>([]) const [hold, setHold] = createSignal<Hold>() const [release, setRelease] = createSignal<Release>() @@ -684,6 +686,7 @@ export function Logo(props: { shape?: LogoShape; ink?: RGBA; idle?: boolean } = }) const idleState = createMemo(() => (props.idle ? buildIdleState(frame().t, ctx) : undefined)) + const useSubpixelBlocks = () => renderer.capabilities?.rgb === true const renderLine = ( line: string, @@ -789,7 +792,7 @@ export function Logo(props: { shape?: LogoShape; ink?: RGBA; idle?: boolean } = } // Solid █: render as ▀ so the top pixel (fg) and bottom pixel (bg) can carry independent shimmer values - if (char === "█") { + if (char === "█" && useSubpixelBlocks()) { return ( <text fg={shade(inkTop, theme, n + p + e + b)} |
