Skip to content

Console: fix dialog/select overflow; audit opens every overlay - #51

Merged
ysinghc merged 2 commits into
mainfrom
claude/production-frontend-dashboards-aedb5f
Nov 9, 2026
Merged

ysinghc merged 2 commits into
mainfrom
claude/production-frontend-dashboards-aedb5f

Conversation

@ysinghc

@ysinghc ysinghc commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

The Invite dialog's role select grew past the dialog when Admin or Operator was chosen. The earlier audit missed it: it only checked page-level overflow and never opened dialogs or changed a select's value. This PR fixes that class of bug at the component level and makes the audit catch it.

Fixes

  • Select: items take a description shown only in the open list (not mirrored into the trigger); triggers never exceed their container and truncate with an ellipsis (a flex value had disabled line-clamp). The Invite dialog shows the chosen role's description under the field.
  • Dialog: children can shrink (*:min-w-0), height capped to the viewport with scrolling.
  • Create API key: clipped placeholders, header scrolling away on phones, Chrome's datalist arrow.
  • Sparklines: end dot drawn in HTML; inside the stretched SVG it became an oval poking out of the card.
  • A11y: command palette list had a role=separator child (invalid in a listbox); Activity popover had no accessible name; dark-mode destructive buttons were 4.06:1 (now about 5:1).
  • Stat-card labels and hints wrap instead of truncating on phones.

Audit (npm run audit:ui)

Now opens every dialog, select (choosing each option in turn), menu, popover and the command palette, in light, dark and mobile; checks containment, clipped text and placeholders; waits for animations before axe; --only <regex> filters routes. Run against the pre-fix code it reproduces the bug (content 57 px wider than the dialog with Admin, 83 px on mobile).

Checklist

  • npm run audit:ui: gateway 54 and cloud 45 page views, no problems
  • vitest 45 passed; tsc, oxlint, build clean; ruff clean
  • Docs: docs/CONSOLE.md (UI quality bar), CHANGELOG.md

Generated by Claude Code

The Invite dialog's role select grew past the dialog when Admin or Operator
was chosen: option descriptions were part of the selected value. Select
items take a description shown only in the open list; triggers never exceed
their container and truncate with an ellipsis; dialog children can shrink.

Also fixed: clipped placeholders and a scrolling header in Create API key,
stretched sparkline end dots, invalid ARIA in the command palette list, an
unnamed Activity popover, truncated stat-card text on phones.

audit:ui now opens every dialog, select (trying each option), menu,
popover and the command palette, checks containment and clipped text and
placeholders, waits for animations before axe, and takes --only <regex>.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0177yERMgobFkKXuZUcZmpwZ
#e66767 on its 20% tint measured 4.06:1; #f08a85 is about 5.0:1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0177yERMgobFkKXuZUcZmpwZ
Copilot AI balanced review requested due to automatic review settings November 9, 2026 18:47

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@ysinghc
ysinghc merged commit 08fd57f into main Nov 9, 2026
10 checks passed
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.

3 participants