Skip to content

[Bug]: The open thread's sidebar row is too faint to spot at a glance #19903

Closed as not planned

Description

@vladsavelyev

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/web

Steps to reproduce

  1. Open T3 Code with several threads in the sidebar (default theme, light or dark).
  2. Open one of them.
  3. Glance at the sidebar and try to find the thread you are in.

Expected behavior

The open thread's row stands out at a glance, in both light and dark mode, so you can find where you are in the sidebar without reading every title.

Actual behavior

The open row's background is only slightly different from the sidebar behind it. In practice it barely shows: you have to look closely, or read the titles, to find the current thread. Hovering over other rows or multi-selecting rows makes it worse, because those use nearly the same color or exactly the same one.

The row surface comes from rowSurfaceClassName in apps/web/src/components/Sidebar.tsx. The open row gets bg-sidebar-row-active, and the only other change is the title switching to text-foreground. The weight stays font-medium, the same as every other row that isn't faded. The tokens in apps/web/src/index.css ([data-app-sidebar]) are:

Light Dark
Sidebar zinc-50 (oklch 98.5%) #000
Active (open thread) white (oklch 100%) foreground at 11%
Hover zinc-25 (oklch 99.2%) foreground at 8%
Selected (multi-select) white, same as active foreground at 7%
  • Light: the open row is white on near-white. The step from the sidebar is 1.5 lightness points, which is hard to see on most displays.
  • Dark: the open row is an 11% grey tint on black. It's visible, but faint, and only 3 points away from a hovered row.
  • Hover and selection: a hovered row falls between the sidebar and the open row, and multi-selected rows use the same white as the open row in light mode. When either is on screen, the open row is even harder to pick out.

Impact

Cosmetic issue

Version or commit

main @ 42da166

Additional context

Possible directions (no strong preference):

  • A clearly stronger fill for the open row in both modes, for example a noticeably darker or lighter neutral, or a light tint of the accent color. It should be well apart from both the hover and selected colors.
  • A second cue besides the background, such as a left accent bar, an inset ring, or a heavier title weight, so the row still stands out on themes with low-contrast surfaces.
  • Custom app themes (--app-theme-sidebar-row-active) would need to follow the same rule.

Related, but not duplicates:

Activity

  1. changed the title [-][Bug]: The open thread's sidebar row is hard to tell apart from hovered and selected rows[/-] [+][Bug]: The open thread's sidebar row is too faint to spot at a glance[/+] on Oct 15, 2026
  2. juliusmarminge commented on Oct 15, 2026

    @juliusmarminge
    Member

    Note

    Grok responding on behalf of Julius.

    This is a design call rather than a bug, so I'm moving it to Ideas. Main matches what you describe. In Sidebar.tsx, rowSurfaceClassName gives the open row bg-sidebar-row-active and multi-selected rows bg-sidebar-row-selected. In index.css ([data-app-sidebar]), light mode sets both of those to white, and dark mode uses 11% foreground for active, 8% for hover and 7% for selected. These are the token values as designed, so changing them is a product decision and not a defect.

    Workaround for now: custom app themes can override --app-theme-sidebar-row-active (along with -hover and -selected), so you can give the open row a stronger color.

    If this matters to you, please open an Ideas discussion and include your contrast table.

  3. juliusmarminge commented on Oct 15, 2026

    @juliusmarminge
    Member

    Note

    Grok responding on behalf of Julius.

    Thanks for moving this over. Closing in favor of the Ideas discussion, #19904, so the conversation lives in one place.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementRequested improvement or new capability.via-triageFiled through npx t3 triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions