🎨 Palette: Add keyboard focus-visible styling to dashboard components - #1045
🎨 Palette: Add keyboard focus-visible styling to dashboard components#1045google-labs-jules[bot] wants to merge 9 commits into
Conversation
Added explicit focus indicators to interactive elements in DashboardCanvasView, panels, and EventList for improved a11y keyboard navigation.
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
🔍 PR Validation |
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Snapshot WarningsEnsure that dependencies are being submitted on PR branches and consider enabling retry-on-snapshot-warnings. See the documentation for more information and troubleshooting advice. Scanned FilesNone |
Agent Completion Truth Gate: BLOCKEDReasons: Machine-readable verdict{
"details": {
"collection_errors": [
"incomplete_linked_issue_contract",
"missing_linked_issue",
"missing_closing_issue_reference",
"missing_agent_run_id",
"missing_agent_login"
],
"invalid_fields": [
"issue.number",
"policy.agent_login",
"policy.run_id"
]
},
"reasons": [
"invalid_payload"
],
"verdict": "blocked"
} |
groupthinking
left a comment
There was a problem hiding this comment.
Review (automated, review-requested trigger): a11y focus-visible styling — code LGTM, merge deferred to owner
Reviewed all 4 changed files. This is a clean, correctly-scoped accessibility improvement:
- Adds
focus:outline-none focus-visible:ring-2 focus-visible:ring-*to interactive elements (buttons, the search<input>, and result rows) inEventList.tsx,DashboardCanvasView.tsx, andpanels.tsx, plus a learnings note in.jules/palette.md. - Purely additive Tailwind utility classes — no logic, state, or data-flow changes; no
dangerouslySetInnerHTML; no security surface. - Correctly uses
focus-visible:(notfocus:) so rings appear for keyboard navigation only, not mouse clicks. Ring colors track each component's accent, andfocus-visible:z-10on the dock/rail buttons keeps the ring from being clipped. Satisfies WCAG 2.4.7 (Focus Visible).
CI: every code check is green — build, lint-frontend, lint-python, validate, CodeQL, and all security scans (bandit / trivy / gitleaks / npm-audit / python-safety / dependency-review).
Not merging from this routine — intentionally. The only red checks are governance gates, not code: agent-completion/truth-gate (invalid_payload — needs the originating Jules bot's canonical issue + agent_login/run_id), PR Governance, and Canonical issue and evidence. main is protected and review was requested from @groupthinking, so merge sign-off is owner-owned and I will not auto-merge without a live human decision.
Terminal state: HALTED(awaiting_merge_approval). Suggested next step: have Jules re-emit the completion payload so the truth-gate passes (or override it), then merge — the code itself is ready.
Generated by Claude Code
Added explicit focus indicators to interactive elements in DashboardCanvasView, panels, and EventList for improved a11y keyboard navigation.
|
Quarantined as a duplicate of focused #919 / canonical #918. Exact head The PR is now draft and labeled |
Understood. Acknowledging that this PR has been quarantined as a duplicate of #919 / #918 and marked as draft/duplicate. I am stopping work on this task. |
|
@copilot resolve the merge conflicts on this branch. |
Done. The only conflict was in |
There was a problem hiding this comment.
Pull request overview
Adds keyboard focus styling across dashboard controls, but duplicates canonical PR #918 and exceeds issue #919’s scope.
Changes:
- Adds
focus-visiblerings to buttons and search controls. - Documents the accessibility pattern.
- Omits the required search
aria-busystate.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
.jules/palette.md |
Documents focus-state guidance. |
EventList.tsx |
Styles the extraction button focus state. |
dashboard/panels.tsx |
Styles panel controls and search elements. |
dashboard/DashboardCanvasView.tsx |
Styles navigation, tabs, and rail controls. |
Added explicit focus indicators to interactive elements in DashboardCanvasView, panels, and EventList for improved a11y keyboard navigation.
Added explicit focus indicators to interactive elements in DashboardCanvasView, panels, and EventList for improved a11y keyboard navigation.
Added explicit focus indicators to interactive elements in DashboardCanvasView, panels, and EventList for improved a11y keyboard navigation.
Added explicit focus indicators to interactive elements in DashboardCanvasView, panels, and EventList for improved a11y keyboard navigation.
The red
|
| #1049 | #1045 | |
|---|---|---|
| Scope | 2 files, +43/−2 | 4 files, +11/−7 |
| Does | Raises contrast on 2 existing rings in AgentsPanel |
Adds rings to 7 controls that had none |
| Test | dashboard-search-accessibility.test.ts (+41), real SC 2.4.11 regression test |
— |
The most important line here is panels.tsx L297: the SearchPanel <input> carries focus:outline-none with no replacement indicator — a genuine WCAG 2.4.7 failure that #1049 does not touch.
They merge cleanly: the edits sit ~60 lines apart (L297 <input> vs L223/232 <button>), and #1049's buttonTagFor matcher only scans <button> elements, so it won't trip on the input.
Suggested order: land #1049 first (it carries the regression test), then rebase and land this.
Understood. Rebased the branch onto the latest |
Added explicit focus indicators to interactive elements in DashboardCanvasView, panels, and EventList for improved a11y keyboard navigation.
Added explicit focus indicators to interactive elements in DashboardCanvasView, panels, and EventList for improved a11y keyboard navigation.
Closing — focus-visible styling is present on
|
Understood. Acknowledging that this work is now obsolete as the focus-visible styling is present on |
Controller disposition
Draft duplicate evidence only. This PR is not an active #898 execution unit.
Canonical unit
palette/dashboard-panels-a11y-57436684489202872627d0b28d0fa44f48c25d9ec4f3fd5a43bb44c9115#918 already owns the dashboard keyboard-focus work. This branch overlaps
apps/web/src/components/dashboard/panels.tsxand adds three extra files without a focused child issue or issue-bound receipt.Exact proposal
google-labs-jules[bot]/13522420836634214970palette/dashboard-a11y-focus-13522420836634214970/ 🎨 Palette: Add keyboard focus-visible styling to dashboard components #104552cf8d41668c471f6158a8cda3b067837c8118b1.jules/palette.md,EventList.tsx,DashboardCanvasView.tsx, anddashboard/panels.tsx2026-07-27T18:24:09Z2026-07-27T18:40:40ZExact-head evidence
Next action
Keep draft and duplicate. Reconcile any genuinely unique accessibility requirement through existing focused issue #919 and canonical PR #918; do not merge, approve workflows, or create another implementation from this branch.
No merge, branch deletion, credential/ruleset change, or production mutation is authorized.