[DRAFT EVIDENCE] duplicate dashboard accessibility proposal - #961
[DRAFT EVIDENCE] duplicate dashboard accessibility proposal#961google-labs-jules[bot] wants to merge 4 commits into
Conversation
… panels Adds role="status" and aria-live="polite" to EmptyState components so screen readers announce empty states. Also adds focus-visible rings to interactive buttons (Dispatch, Refresh, Go, Search Results) and aria-busy/aria-label attributes for better screen reader support.
|
👋 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 ReviewThe following issues were 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. Vulnerabilitiesdocs/knowledge_prototypes/mcp-servers/fetch-mcp/package-lock.jsonpackage-lock.jsonscripts/archive/software-on-demand/package-lock.json
scripts/archive/supabase_cleanup/package-lock.jsonOnly included vulnerabilities with severity moderate or higher. License Issuesapps/web/package.json
OpenSSF ScorecardScorecard details
Scanned Files
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Agent Completion Truth Gate: BLOCKEDReasons: Machine-readable verdict{
"details": {
"invalid_fields": [
"issue.number",
"policy.agent_login",
"policy.run_id"
]
},
"reasons": [
"invalid_payload"
],
"verdict": "blocked"
} |
|
Remediation runbook — terminal state: The diff itself is clean: the a11y changes to Blocked by a required governance check, not by the code:
These gates require a trusted, append-only Agent Lock publication that a bot-authored PR cannot produce on its own. This is by design and must not be worked around from within the PR. Merge to protected Staged next step (owner/admin decision): either provide the trusted Agent-Lock publication so the truth-gate passes, or, if the a11y change is accepted as-is, admin-merge with an explicit branch-protection override: Minor, non-blocking: the PR title isn't conventional-commits (e.g. Generated by Claude Code |
There was a problem hiding this comment.
Pull request overview
Draft evidence for a non-canonical dashboard accessibility implementation duplicating PR #918.
Changes:
- Adds focus-visible and loading semantics to dashboard controls.
- Adds empty-state live-region semantics and search-result labels.
- Rewrites unrelated accessibility history.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
apps/web/src/components/dashboard/panels.tsx |
Updates dashboard accessibility behavior. |
.Jules/palette.md |
Replaces prior accessibility guidance. |
| type="button" | ||
| onClick={() => onSeek?.(res.start)} | ||
| className="w-full text-left p-4 rounded-xl border transition-colors" | ||
| aria-label={`Jump to ${new Date(res.start * 1000).toISOString().substr(11, 8)}`} |
| ## 2025-10-24 - Accessibility improvements on Dashboard Panels | ||
| **Learning:** React `EmptyState` components (often simple icon + text) need ARIA `role="status"` and `aria-live="polite"` to be properly announced by screen readers when data loads or search results turn up empty. Custom buttons without an explicit `focus-visible` class might be skipped entirely by users navigating via keyboard. | ||
| **Action:** Always verify keyboard focus states and screen reader announcements for empty states and search result items. |
|
@copilot resolve the merge conflicts on this branch. |
Done. Both conflicts are resolved:
Both files now match |
… panels Adds role="status" and aria-live="polite" to EmptyState components so screen readers announce empty states. Also adds focus-visible rings to interactive buttons (Dispatch, Refresh, Go, Search Results) and aria-busy/aria-label attributes for better screen reader support.
Recommendation: close and re-open a ~4-line PRReviewed against This branch is an agent working directory, not an accessibility changeDeletes infrastructure unrelated to a11y:
That last one is the problem in miniature: an accessibility PR deleting the accessibility test. Adds 17 scratch files force-added past The actual payload is 11 lines, and half of it regresses a11y
But it also homogenizes focus rings to Suggested pathClose this, then open a fresh single-file PR carrying only the |
Close — self-declared draft evidence, and it re-opens the hole it fell intoThis PR's own body says: "Keep draft. Do not merge, approve workflows, open another execution issue, or count this PR as active progress." Superseded by canonical PR #918 / issue #919. Acting on that instruction. The audit findings below are worth recording because they are systemic to stale agent branches, not unique to this PR.
|
Controller disposition
Draft evidence only. This PR is a competing, unbound implementation of the focused accessibility unit already owned by #919 and canonical #918.
Exact proposal
palette/dashboard-accessibility-8216739090300641563fe107baea0d83328c5dead479cce30bb8804c9a1main@5da61c595aa9dc848786e9e1fe99e40ad2a4fce0apps/web/src/components/dashboard/panels.tsxplus an unrelated rewrite of.Jules/palette.mdaria-busy, and timestamp-button labeling.Canonical #918 already owns and implements the dashboard focus and busy-state work at
7d0b28d0fa44f48c25d9ec4f3fd5a43bb44c9115. The remaining unique changes are not safe to transfer without focused accessibility review: the explicitaria-labelmay replace the useful visible accessible name, and the history-file deletion is unrelated.Exact-head evidence
CI, Coverage, CodeQL, Security Scan, Secret Scan, and Dependency Review pass. E2E is skipped. Preview deployment
dpl_CNXN4MhxK8rLZpFLQYCeFxXawm8gwas canceled, so no deployment-path proof exists. No review artifact or unresolved thread exists on this head.Execution receipt
groupthinkingeventrelay-blocker-watch-20260723T1817Zpalette/dashboard-panels-a11y-5743668448920287262/ fix(a11y): add keyboard focus states to dashboard panels #9182026-07-23T18:17:45Z2026-07-23T18:22:00Zfe107baea0d83328c5dead479cce30bb8804c9a1Keep draft. Do not merge, approve workflows, open another execution issue, or count this PR as active progress.