Skip to content

feat(tui): match the banner to the landing page wordmark - #140

Merged
quickbeard merged 2 commits into
mainfrom
banner-brand-colors
Jul 30, 2026
Merged

quickbeard merged 2 commits into
mainfrom
banner-brand-colors

Conversation

@quickbeard

Copy link
Copy Markdown
Owner

What

The home/session banner drew the codev wordmark in the active theme's secondary (teal in dark, purple in light) with a tint-derived drop shadow, so the TUI and the marketing site showed the same glyph art in different colors. This recolors it to the landing page's brand palette. The glyph art itself is unchanged.

before after
banner, dark teal #0891b2 + shadow co theme foreground, dev brand red #ee0033
banner, light purple #7b5bb6 + shadow co brand navy #19224c, dev brand red
CLI banner (--help, upgrade, web, uninstall) bold teal + shadow bold, no shadow, co default fg, dev brand red
--mini C badge teal / purple brand red, both modes

Reference: codev-landing-page app/components/PixelWordmark.tsx (text-brand-navy dark:text-foreground + text-brand-red) and app/globals.css (--color-brand-navy, --color-brand-red).

Notes

  • wordmarkHalves keeps each row split into its "co" / "dev" halves so each takes its own color; wordmark (plain lines) is composed from it. The component now paints one bold <text> per half instead of per-char shadow cells.
  • The --mini badge color was not a guess: codev-landing-page app/icon.svg renders the same compact "C" glyph in #ee0033 in both modes. Because it is mode-independent, splashTheme drops the forked pick param and returns to upstream's (theme, indexed) signature — so this PR is a net reduction in divergence for that file.
  • Deliberately fixed brand colors rather than a theme token: this is a brand wordmark, and the landing page has no shadow behind it.

Verification

  • bun typecheck clean in packages/tui and packages/opencode.
  • packages/tui: 244 pass / 0 fail. packages/opencode/test/cli/run: 196 pass / 0 fail (theme.test.ts mark assertion updated to [238, 0, 51]).
  • Driven in tmux at the real home screen; captured escape codes:
    • dark — co = 238;238;238 (theme foreground), dev = 238;0;51
    • light — co = 25;34;76 (#19224c), dev = 238;0;51
    • --mini entry badge — 238;0;51
  • The --mini exit badge draws from the same mark_fg = input.theme.mark binding in the other branch of build, so it follows by construction; it is confirmed by code path, not visually, because showExit requires a session with history and the scratch run had none.

DIVERGENCES.md rows for logo.ts, component/logo.tsx, cli/ui.ts, run/splash.ts, and run/theme.ts are updated, plus a CHANGELOG.md Unreleased entry.

🤖 Generated with Claude Code

quickbeard and others added 2 commits July 30, 2026 18:08
The home/session banner drew the codev wordmark in the active theme's
`secondary` (teal in dark, purple in light) with a tint-derived drop
shadow, so the TUI and the marketing site showed the same glyph art in
different colors.

Draw it in the landing page's brand palette instead
(codev-landing-page app/components/PixelWordmark.tsx): "co" in brand navy
on light and the theme foreground on dark, "dev" in brand red, no drop
shadow. The glyph art is unchanged. `wordmarkHalves` keeps each row split
so the two halves can take their own color, and `wordmark` is composed
from it.

The CLI banner follows via `ansiWordmark` — bold, no shadow, "dev" in
brand red truecolor, "co" in the terminal's default foreground since the
banner cannot detect light vs dark.

The `codev --mini` entry/exit badge follows too: the landing page draws
the same compact "C" glyph in brand red in both modes
(codev-landing-page app/icon.svg), so `RunSplashTheme.mark` becomes
`rgba(brand.red)`. Being mode-independent, `splashTheme` drops the forked
`pick` param and returns to upstream's `(theme, indexed)` signature.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@quickbeard
quickbeard merged commit 43411fd into main Jul 30, 2026
0 of 5 checks passed
@quickbeard
quickbeard deleted the banner-brand-colors branch July 30, 2026 11:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant