Skip to content

Fix Writer accessible names and dialog keyboard focus - #41

Merged
callumalpass merged 2 commits into
mainfrom
fix/a11y-names
Oct 29, 2026
Merged

callumalpass merged 2 commits into
mainfrom
fix/a11y-names

Conversation

@callumalpass

@callumalpass callumalpass commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

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:

  • Added test:browser:a11y to CI: 27 loopback-only Chromium axe scans at 375 and 1280 px, including the opt-in label-content-name-mismatch rule. 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.
  • Escape/focus checks pass for new manuscript, settings, shortcuts, commands, export review, conflict comparison, and unsaved-changes dialogs at both widths.
  • Added focused preview-link unit tests. Local rpnpm check, rpnpm build, typecheck, and focused preview/comparison tests (4 tests) passed during implementation. Final-head CI passed on 84274b21830d5e1957379061f5ba66b9d8fe4059: full checks, production build, real-preview editing, baseline/reliability/i18n/axe browser suites, and intercepted feedback.
  • Follow-up remote build and expanded focused test commands were blocked by shared-builder ENOSPC / No space left on device during cache/dependency setup; those commands did not validate the final revision. The independent final-head CI run subsequently passed all checks.
  • git diff --check passes. 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.

@callumalpass
callumalpass merged commit b2eb511 into main Oct 29, 2026
1 check passed
@callumalpass
callumalpass deleted the fix/a11y-names branch October 29, 2026 20:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant