Repository navigation
Fix Writer accessible names and dialog keyboard focus - #41
Merged
Merged
Conversation
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.
Writer’s desktop app switcher failed axe’s visible-label/name check in the production sweep. Its wordmark separates “mdbase” and “writer” with a CSS gap but omits the text-space present in its accessible name.
Add that word boundary in a small Writer adapter used by both entry points. The pinned UI archive and installed package stay unchanged for native publishing’s original-byte checks. The local sweep also fixes invalid tablist children, focusable buttons in CodeMirror’s hidden gutter, unnamed Typst preview links, keyboard scrolling of comparison panes, and low-contrast counts/actions. Preserve the opener’s focus through menu dismissal and asynchronous export/save checks so Escape returns to it.
Validation:
test:browser:a11yto CI: 27 loopback-only Chromium axe scans at 375 and 1280 px, including the opt-inlabel-content-name-mismatchrule. All pass with zero serious/critical violations. Native sign-in uses a static SDK snapshot; populated screens use the existing in-memory demo. Requests outside the local app are blocked.rpnpm check,rpnpm build, typecheck, and focused preview/comparison tests (4 tests) passed during implementation. Final-head CI passed on84274b21830d5e1957379061f5ba66b9d8fe4059: full checks, production build, real-preview editing, baseline/reliability/i18n/axe browser suites, and intercepted feedback.ENOSPC/No space left on deviceduring cache/dependency setup; those commands did not validate the final revision. The independent final-head CI run subsequently passed all checks.git diff --checkpasses. Installed UI wordmark bytes match the vendor archive.Independent review: Opus 5.5 reviewed the change. Addressed disabled/busy styling, failed-retry focus retention, the comparison region role, and lower-tab spacing; added a retry-focus browser assertion. The main naming fix was confirmed.
Follow-ups: move the word-boundary fix into shared UI when its pinned release is next updated, then remove the adapter. This is a focused light-theme Chromium sweep, not a full accessibility qualification. No deployment or merge.