You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit ff1edf4
Browse filesBrowse the repository at this point in the historyBrowse files
fix(a11y): the boxes hidden while they have nothing to say — the preview banner, the map's footnote, the delete dialog's open-file warning, the start screen's line, the plain-words popover, Disk City's line, the index badge, refused folders, drives mounted inside, the calendar's and the journal's notes — say their words in live regions of their own, and Disk City's hover card and the Clean Up refusal are no status (BQS, the class of review F2.1/F2.2)
Each of these carried role="status" or aria-live and `hidden` in the markup, and its writer filled it and
showed it in one task: it appeared already filled, which a screen reader seldom announces. Each box is plain
text now, and sayAloud (040) says its words in an sr-only live region of its own, beside it, a frame after
the box shows them, and empties it when the box goes:
- #tmPreviewBanner -> #tmPreviewSaid: the message as it is rendered (innerText), so the sentence the
stylesheet hides beside the open cart is not said, and the Exit preview button is no part of it.
- #tmAltNote -> #tmAltNoteSaid: the note a layout settles on, never "still laying out — N shapes so far",
a new count every frame.
- #confirmOpenHandles -> #confirmOpenHandlesSaid, inside the modal dialog: "Checking…", then the warning
that turns OK into "Move to Trash anyway", the "Still in use" dialog put back included.
- #startLast -> #startLastSaid: the launch lines and the rules' refusal; not a Stop's or a failure's line,
which #stopAnnounce (review F1.14) and the toast say already, so none is heard twice.
- #nlPending and #nlReason -> #nlSaid: "Translating…", then why; a translation, which takes focus to the
query, and a close leave nothing said.
- #cityLod -> #cityLodSaid: its news only — the city loading, a load that failed, the saved index's tree,
the server's cap — never the counts a zoom changes on every frame; the line is now the city canvas's
description (aria-describedby).
- #indexBadge -> #indexBadgeSaid; #accessRow -> #accessSaid, its count and its hint (every paint of the row
runs inside keepAccessFocus, which says it); #mountsNote -> #mountsNoteSaid; #calDegraded ->
#calDegradedSaid; #journalPortable -> #journalPortableSaid.
Not live: #cityCard is a hover card the pointer moves, role="tooltip" as the map's #tooltip is;
#cleanPromoteWhy's words are toasted in the same task, as every refusal of the Clean Up sheet is.
sayAloud says a box shown on lines of its own (innerText, a block a line) as sentences: the region is one
sr-only line, where a line break is only a space. Single-line words are said as before.
tests/workingSaidAloud.test.ts (RED before): no live region in the page ships hidden, and no script shows
or hides one, but #tmEmpty, named with why (its writer, tmSetEmpty, is in 050, another batch's).
tests/hiddenBoxesSaidAloud.test.ts (new, RED before): each box plain and its region after it and beside it;
every function that writes a box says it, or runs only inside the one that does; the two boxes that are no
status; and each box's writer lifted from the page and run, frame by frame. tests/coreScanFlow.test.ts: the
start screen's line said, and a Stop's and a failure's not, through the page's own boot, Stop and failure.
frontendContract, fxWiring, mountsNoteUi and firstRunViews pinned the old live roles; they pin the regions.
Mutants (W/bqs/mut/MUTANTS.txt, W1..R1, 62), each RED for its assertion, restored by SHA-256, page rebuilt
byte-identical.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
0 commit comments