Skip to content

fix(chat): unify context rail hover states, dropdown surfaces, and radii - #37

Merged
kennylauren merged 1 commit into
mainfrom
context-rail-ui-polish
Aug 14, 2026
Merged

fix(chat): unify context rail hover states, dropdown surfaces, and radii#37
kennylauren merged 1 commit into
mainfrom
context-rail-ui-polish

Conversation

@kennylauren

@kennylauren kennylauren commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Category: fix
User Impact: Hovering cards and menus in the chat context rail is now visible in light mode, dropdowns match the rail's surface color and corner radius in dark mode, and non-clickable rows no longer light up on hover.

Problem: The rail's hover fills used sidebar-accent, which is near-invisible in light mode (gray-50 on white) while fine in dark; its dropdowns inherited the overflow-menu popover surface, which reads too dark against the rail's card family in dark mode; dropdown radii didn't relate to the rail container's; the Changes tab stacked three nested surfaces; and disabled branch rows still showed hover feedback.

Solution: Move all rail hover/selected fills to muted — identical pixels in dark (where muted ≡ the old sidebar-accent value) and visible in light — matching the design system's own RowButton menu convention. Rail dropdowns now use bg-card with the rail's rounded-md, and their rows use rounded-sm concentric inside the padding. The Changes tab drops its filled slab and hover-pill overlay in favor of flat rounded-sm rows with the standard fills, and hovers are scoped with enabled: so disabled rows stay inert while the active row keeps its aria-current highlight.

Note for design reviewers: sq agents review --local flags two deliberate deviations from docs/color-token-mapping.md: dropdown surfaces here use card (not popover) and menu highlights use muted (not accent). Both were chosen intentionally — the dark popover token is reserved-darker for overflow menus (BOT-1600) and doesn't suit rail-attached dropdowns, and light accent on white surfaces is the invisible-hover defect this PR fixes; RowButton already uses muted for these states. If we keep this, the mapping doc could use a follow-up alignment.

Before / After (Light, Default)
Before After
before-default-light.mov
after-default-light.mov
Before / After (Light, Multi-workspace)
Before After
before-multi-light.mov
after-multi-light.mov
Before / After (Dark, Default)
Before After
before-default-dark.mov
after-default-dark.mov
Before / After (Dark, Multi-workspace)
Before After
before-multi-dark.mov
after-multi-dark.mov
File changes

src/features/chat/ui/widgets/WorkingContextPicker.tsx
Legacy (single-workspace) worktree/branch pickers: hover fills to muted, dropdown surfaces to bg-card rounded-md p-1.5 with concentric rounded-sm rows, search field highlight made hover-only, and hover scoped to enabled rows so the current/checked-out-elsewhere branches stay inert.

src/features/chat/ui/widgets/WorkspaceContextPicker.tsx
Multi-workspace pickers: same treatment as the legacy pickers, plus the trigger cards' resting fill moves from background/45 (darker than the rail surface in dark mode) to muted/60 to match the legacy cards, and the active row gains the aria-current selected fill.

src/features/chat/ui/widgets/ChangesWidget.tsx
De-nests the Changes tab: removes the filled scroll slab and its colored bottom fade plus the per-row hover-pill overlay, replacing them with flat rounded-sm rows using the standard muted hover and a shared scrolling list that fades scrolled rows under a top mask like the picker dropdowns.

src/features/chat/ui/widgets/WorkspaceActionsMenu.tsx
Legacy rail actions menu: content surface to bg-card rounded-md, items to rounded-sm with muted hover/focus/highlight fills, dropping the no-op sidebar-foreground text swaps.

src/features/chat/ui/widgets/WorkspaceRowActionsMenu.tsx
Multi-workspace row actions menu: content surface to bg-card rounded-md (items keep rounded-xs, concentric inside the px-3 gutter), highlight fills to muted.

src/features/chat/ui/widgets/WorkspaceWidget.tsx
Multi-workspace widget rows (add-workspace, change-folder, section actions menu): hover fills to muted, section menu surface to bg-card rounded-md p-1.5.

🤖 Generated with Claude Code

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@kennylauren
kennylauren requested a review from a team August 14, 2026 18:52
@kennylauren
kennylauren merged commit 05fcc94 into main Aug 14, 2026
9 checks passed
@kennylauren
kennylauren deleted the context-rail-ui-polish branch August 14, 2026 21:29
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.

2 participants