Skip to content

desktop: user message bubbles regress in 2.0 — always blue, white-on-accent, unlike 1.18 #52028

Closed as not planned

Description

@vokasug

Description

The user-message bubble in the Desktop chat regressed visually in 2.0. In 1.18 it was a neutral surface; in 2.0 it is always tinted blue, and in workspace sessions it becomes a saturated accent blue with fixed near-white text.

Every session is now classified as local or workspace and the bubble is styled per type:

  • local, light: --v2-blue-100 background / --v2-blue-700 text
  • local, dark: --v2-blue-1200 background / --v2-blue-300 text
  • workspace: --v2-background-bg-accent background / --v2-text-text-contrast text

CSS: packages/session-ui/src/components/message-part.css (workspace rule ~1472-1477, local rules ~1479-1497). The attributes come from packages/app/src/session/timeline/virtualizer.tsx:643-644 (data-workspace-session / data-local-session). Because one of the two is always set, the generic neutral rule (--v2-background-bg-layer-01) is effectively unreachable.

In 1.18 (v1.18.33) the bubble was neutral: --v2-background-bg-layer-01/02 background with --v2-text-text-base text (packages/session-ui/src/components/message-part.css:1336-1383 in that tag). So the 1.18 -> 2.0 upgrade changes the chat from a calm neutral surface to a blue one, and the dialogue visually degrades.

This is most obvious with the default theme "OpenCode" (file oc-2.json, mapped to the label "OpenCode" in packages/ui/src/theme/context.tsx). It pins v2-blue-600 to #3b5cf6 and v2-text-text-contrast to near-white, so a workspace bubble is #3b5cf6 with #ffffff text (5.19:1):

Session type (theme OpenCode) Bubble background Text Contrast
workspace #3b5cf6 #ffffff 5.19:1
local, light #f5f8ff #0b34f4 7.03:1
local, dark #021945 #c3d4fd 11.53:1

White text on that indigo reads harshly, and all user messages in a workspace now form a bright blue wall. The underlying cause is structural: blue-600 is a mid-lightness step generated the same way for light and dark (generateV2HueScale() in packages/ui/src/theme/v2/resolve.ts), and the foreground is a fixed token rather than a contrast-aware one. The icon half of the same role is contrast-picked (packages/ui/src/theme/v2/foreground.ts:57), the text half is not. With other themes the same hardcoded pairing is unreadable (One Dark Pro: 1.11:1 - already reported separately in #50986).

Request: please restore the visual quality of the conversation area at least to the 1.18 level - either restore the neutral bubble, or make the accent-surface foreground contrast-aware (dark foreground on bright accent) and expose the token properly, so a theme cannot ship a bubble whose text cannot be read.

Expected Behavior

  • User-message bubbles in Desktop 2.0 are at least as legible and visually calm as in 1.18.
  • The accent surface is paired with a contrast-aware foreground, or the neutral layer-01 bubble is used by default and the strong accent is opt-in.

Actual Behavior

Steps to reproduce

  1. Open OpenCode Desktop 2.0, go to Settings -> Appearance and select the theme "OpenCode".
  2. Open or create a session whose directory is a workspace / worktree (in the project, not the main worktree).
  3. Send a message and look at the user-message bubble: it is #3b5cf6 with white text.
  4. For comparison, open a session in the project root (local session: dark navy #021945 with pale-blue text) and compare with the same message in 1.18 (neutral grey bubble).

Additional Context

Plugins

None.

OpenCode version

2.0.19 (Desktop).

Screenshot and/or share link

Attachments welcome from anyone on the current 2.0 build: a workspace-session bubble with the "OpenCode" theme (dark and light), next to the same bubble in 1.18.

Operating System

macOS 26 (Darwin 25.6.0, arm64); also reported on Windows 11 in #50986.

Terminal

OpenCode desktop app.

Activity

  1. github-actions commented on Sep 29, 2026

    @github-actions
    Contributor

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

    • #50986: Reports low contrast in workspace-session user message bubbles caused by theme-specific foreground/background colors.
  2. opencodejr commented on Oct 28, 2026

    @opencodejr
    Contributor

    Thanks for the detailed write-up, @vokasug.

    The user-message bubble has been redone since 2.0.19. In the v2.2.0 source, every user bubble, workspace or local, is a neutral surface: --v2-background-bg-layer-02 with --v2-text-text-base text. The blue blue-100/blue-1200 treatment and the bg-accent + text-contrast workspace treatment are gone, and so are the data-workspace-session/data-local-session attributes. The changes were #56961, #57001 and #57463.

    Could you update Desktop to v2.2.0 or later and check whether the bubbles now look right to you, with the "OpenCode" theme in both light and dark, and in both a workspace and a local session? If anything still looks wrong, a screenshot and the exact version from Settings would help.

    You can reply here, or edit the issue. If you edit it, please also leave a comment saying you've updated it so we know when you're done.

    Related issues, ordered by how likely they are to cover the same problem:

  3. opencodejr commented on Oct 31, 2026

    @opencodejr
    Contributor

    We asked you to check v2.2.0 and haven't heard back, so we're closing this issue for now.

    In v2.2.0 (#56961, #57001, #57463), user-message bubbles use a neutral surface (--v2-background-bg-layer-02 with --v2-text-text-base) in both workspace and local sessions. The blue and bg-accent/white treatments are gone, which should restore the 1.18-style look you asked for.

    If the bubbles still look wrong on v2.2.0 or later, please comment here with the exact version, theme, light/dark mode and a screenshot, and we can reopen. Thanks again for the thorough report.

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions