Repository navigation
[Bug]: The open thread's sidebar row is too faint to spot at a glance #19903
Description
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
- Open T3 Code with several threads in the sidebar (default theme, light or dark).
- Open one of them.
- 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:
- fix(web): keep the parent thread highlighted while viewing its subagent #15163: the parent thread loses its highlight while you view a subagent (the highlight is missing, not too faint).
- [Bug]: Sidebar does not follow active thread after Cmd+[ / Cmd+] (back/forward) navigation #16534: the sidebar doesn't follow the active thread after back/forward navigation.
- [Bug]: Selected and hovered dropdown rows look identical when adjacent #19208: selected and hovered rows look identical when next to each other, but in dropdowns.
Activity
[-][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[/+]juliusmarminge commentedon Oct 15, 2026
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,rowSurfaceClassNamegives the open rowbg-sidebar-row-activeand multi-selected rowsbg-sidebar-row-selected. Inindex.css([data-app-sidebar]), light mode sets both of those towhite, 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-hoverand-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.
juliusmarminge commentedon Oct 15, 2026
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.