Skip to content

desktop: fix theme palette bugs, light-mode contrast failures, and token typos in packages/ui #50500

Closed

Description

@gotenksIN

Description

Scope Note: This issue covers the Desktop app themes in packages/ui.
Companion TUI themes in packages/tui are tracked in #50523.

While testing light themes in OpenCode Desktop, we identified several broken light-mode palettes, token typos, and a contrast calculation issue in packages/ui:

1. Light Mode Palette Breakages

  • catppuccin.json (Latte): light.palette.neutral uses Mocha Rosewater (#f5e0dc) instead of official Latte Base (#eff1f5). Because neutral seeds the entire neutral scale, the app displays with a heavy pink tint in light mode.
  • catppuccin-frappe.json & catppuccin-macchiato.json: Both duplicate dark-flavor tokens into light mode, producing washed-out, unreadable body text (< 2.1:1 contrast).
  • kanagawa.json: Light overrides copy dark Wave tokens onto the Lotus background (#f4ede3), making strings and constants unreadable (< 2:1 contrast).
  • matrix.json: syntax-type uses neon yellow (#e6ff57) on light background (#f0f5ed), rendering type text virtually invisible (~1:1 contrast).

2. Concrete Token and Formula Typos

  • oc-2.json: Line 28 defines "icon-weak-base": "C7C7C7" without the # prefix. The resulting invalid CSS variable breaks icon shadows and logo fills.
  • catppuccin-frappe.json: Uses #8da4e2 instead of Frappé Blue (#8caaee) and #949cb8 instead of Overlay 2 (#949cbb).
  • color.ts: contrastRatio() uses 0.587 instead of the standard ITU-R BT.709 coefficient 0.7152 for green luminance, calculating black-on-white as 18.4:1 instead of 21:1.

3. Question for Maintainers: Dark-Only Upstream Themes

11 bundled themes (amoled, aura, cobalt2, dracula, matrix, monokai, onedarkpro, shadesofpurple, synthwave84, vesper, zenburn) have no official upstream light palette.
Current synthetic light modes produce mixed results (for example, invisible syntax in Matrix).

Would maintainers prefer:

  1. Locking these themes to dark mode only (falling back to OpenCode light if the user selects light mode)?
  2. Keeping calibrated companion light palettes for them?

Steps to Reproduce

  1. Open OpenCode Desktop Settings -> Appearance and set Color Scheme to Light.
  2. Select Catppuccin to observe the pink background wash.
  3. Select Catppuccin Frappe, Kanagawa, or Matrix to observe unreadable text contrast.

Screenshots

Before (Catppuccin Light pink wash):
Before - Catppuccin Latte rendering with pink background in OpenCode Desktop

After (Fixed Catppuccin Latte Base #eff1f5):
After - Catppuccin Latte rendering with correct neutral background in OpenCode Desktop

Operating System

Windows 11 / Linux

Activity

  1. github-actions commented on Sep 22, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of existing issues. Please check:

    • Catppuccin macchiato is unreadable in desktop light mode #29629: Catppuccin macchiato is unreadable in desktop light mode — same root cause (wrong neutral color in Catppuccin light palette causing poor rendering in desktop light mode); that issue even notes the catppuccin theme's light palette uses rosewater as neutral instead of the Latte base color, which is exactly the bug described here.
  2. changed the title [-]Catppuccin theme renders with pink background in desktop light mode[/-] [+]Comprehensive audit: background seed defects, contrast failures, and token typos across desktop themes[/+] on Sep 22, 2026
  3. changed the title [-]Comprehensive audit: background seed defects, contrast failures, and token typos across desktop themes[/-] [+]desktop: fix theme palette bugs, light-mode contrast failures, and token typos in packages/ui[/+] on Sep 22, 2026
  4. gotenksIN commented on Sep 24, 2026

    @gotenksIN
    ContributorAuthor

    Fixed in #50517

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions