fix(a11y): restore toast status messages without reverting develop - #534
Merged
seonghobae merged 41 commits intoAug 16, 2026
Merged
Conversation
Add role="status" and aria-atomic="true" to the toast element to ensure screen readers announce the entire dynamic message when it appears.
Add role="status" and aria-atomic="true" to the toast element to ensure screen readers announce the entire dynamic message when it appears.
The previous empty CI re-kick deleted the fail-closed orchestrator client, the #467 MS Project XML scanner, and their tests. Restore the protected-develop tree so the toast accessibility slice can land without those reversions. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Restore the #491 toast contract onto current develop: explicit status/polite/atomic semantics, shipped .toast.visible CSS, and unit plus browser regressions. Serve toast-state.css on the SaaS allowlist, both Docker images, and GitHub Pages so cloud share-error toasts stay visible after deploy. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Contributor
Author
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
seonghobae
approved these changes
Aug 16, 2026
seonghobae
left a comment
Contributor
There was a problem hiding this comment.
Reviewed the unchanged current head against protected develop. The toast/sync status semantics, cloud .visible rendering, SaaS/static serve-path inclusion, focused unit/browser regressions, and repository-native CI/security results are coherent with the bounded accessibility repair. Approval is for this exact head only; pending organization-required evidence must still complete successfully before integration.
seonghobae
deleted the
cursor/bc-32654aa2-7152-454a-8c11-40118568da92-ed97
branch
August 16, 2026 21:04
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Buyer impact
After a failed share link or a cloud save error, the toast is now both announced to assistive technology and visible on screen. Synchronization feedback uses the same explicit advisory
statussemantics. GitHub Pages, both Docker images, and the SaaS allowlist shiptoast-state.csswith the documents that load it, so the message does not stay transparent after deploy.If a share link fails, request a fresh URL from the project owner. The toast tells you the link was expired or withdrawn without moving keyboard focus.
Why this PR exists
PR #491 head
794ecbd(ci: re-kick required checks to bypass flake 5) deleted the toast contract and reverted already-landed fail-closed orchestrator and #467 MS Project XML hardening. This branch restores the protecteddeveloptree, then replays only the toast/sync-status slice.Do not merge #491 at
794ecbd. Close it as superseded after this lands.Contract
#toastand#sync-statusexposerole="status",aria-live="polite", andaria-atomic="true"and are not synthetic keyboard stops..visibleare painted by shippedtoast-state.css(opacity: 1).tests/unit/toast-accessibility.test.mjslocks markup, CSS, and every production serve path.tests/e2e/toast-accessibility.spec.jsdrives the real share-error path and requires visible opacity >= 0.99 without focus capture.WAI-ARIA 1.2 and WCAG 2.2 SC 4.1.3 references are in
docs/doctoring/toast-status-accessibility.md.Out of scope
No orchestrator, XML import, authentication, workflow, or dependency changes versus
develop.