Skip to content

Make composer access and thinking menus opaque - #106

Merged
sambitcreate merged 1 commit into
mainfrom
feature/opaque-composer-selectors
Sep 11, 2026
Merged

Make composer access and thinking menus opaque#106
sambitcreate merged 1 commit into
mainfrom
feature/opaque-composer-selectors

Conversation

@sambitcreate

Copy link
Copy Markdown
Owner

Opening the composer's access or thinking selector lets underlying chat text show through its translucent control fill. Use the existing opaque popover surface for the access menu and expanded thinking menu, preserving collapsed thinking styling, selection shadows, and keyboard behavior.

Validation: 15 focused unit tests, build, focused lint, Electron test type-check, existing access keyboard Electron test, and a new rendered Electron regression covering light/dark themes and hover/focus states. Independent subagent review found no outstanding issues.

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes

  • Opaque access-menu surface — the Workspace access popover (composer.tsx:1848) swaps its translucent bg-control/80 fill for the opaque bg-popover token, keeping geometry, open/close animation, and item selection styling intact. It was the only bg-control/80 remaining in the file at base, so the whole-file absence assertion added to composer.test.tsx is precise.
  • Opaque thinking/effort traythinking-control.tsx switches the hover and focus-within tray fills from bg-control/80 to bg-popover (container and selected pill), preserving the bg-transparent resting state, shadows, expansion behavior, and roving-tabindex keyboard handling.
  • Unit test updatescomposer.test.tsx and thinking-control.test.tsx pin the new surfaces and forbid bg-control/80; all 15 focused tests pass locally.
  • Rendered Electron regression — a new e2e at the end of chat-shell-interactions.spec.ts SSR-renders the real ThinkingControl markup in a tsx subprocess (Playwright's JSX transform can't) and asserts, for both aiden light and dark schemes, that the hover- and focus-opened menus resolve to the exact --surface-popover color at opacity 1, keep the keyboard focus ring, and collapse back to transparent. The rgb() probe precondition fails if a translucent popover token ever returns.
  • Papercuts log entries for the worktree/dependency friction encountered.

I verified the load-bearing claims independently: --surface-popover is opaque in both schemes (preset raised plus the CSS fallbacks), the global unlayered :focus-visible outline rule outranks Tailwind v4's layered outline-none utilities so focus rings are preserved, and no other translucent selector-popover fills remain in the renderer. The fill swap is the right direction — the tray genuinely overlays the composer/chat region when expanded, so the opaque surface is what keeps text from bleeding through.

Pullfrog  | View workflow run | Using DeepSeek Flash𝕏

@sambitcreate
sambitcreate merged commit e327c0e into main Sep 11, 2026
11 of 13 checks passed
@sambitcreate
sambitcreate deleted the feature/opaque-composer-selectors branch September 11, 2026 16:50
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.

1 participant