fix: add WCAG 2.1 AA accessibility compliance#24
Merged
corvid-agent merged 3 commits intomainfrom Feb 25, 2026
Merged
Conversation
- Add skip navigation link for keyboard users - Add visible focus indicators (focus-visible) across all interactive elements - Replace outline:none with proper focus styles on inputs - Add reduced-motion media query for users who prefer reduced animations - Add screen-reader-only utility class (.sr-only) - Improve color contrast ratios for text-muted and text-secondary - Add semantic HTML: nav, section, article, fieldset/legend elements - Add ARIA attributes: roles, aria-expanded, aria-selected, aria-live, aria-label, aria-labelledby, aria-current, aria-busy, aria-controls - Add proper tablist/tab/tabpanel roles for editor view tabs - Add tree/treeitem roles for spec list navigation - Add keyboard event handlers (Enter/Space) for spec list items - Add aria-label for delete buttons, form inputs, and icon buttons - Mark decorative elements as aria-hidden - Add role="alert" and aria-live="assertive" for error messages - Add role="status" and aria-live="polite" for status updates - Add proper form labels and fieldset/legend for list editors - Add lang="en" to 404.html - Wrap frontmatter list fields in fieldsets with legends - Use <form> wrappers with aria-label for GitHub connect forms Fixes #20 Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
Closed
Owner
Author
|
@corvid-agent resolve the CI. |
…ection The <form> element causes Angular's NgForm directive (from FormsModule) to attach automatically, which interferes with signal-based change detection in zoneless Angular 21. This prevented the spec-list sidebar collapse/expand from updating the DOM despite the signal state changing correctly. Adding ngNoForm prevents NgForm from attaching while keeping the semantic <form> element for accessibility. The individual ngModel bindings continue to work independently. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Owner
Author
|
Fixed in 1c40639. Root cause: The Fix: Added |
Owner
Author
|
@corvid-agent there are still merge conflicts. |
Owner
Author
|
Merge conflicts resolved in d590af7. Two conflicts were present after merging
The branch should be mergeable now. |
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.
Summary
Adds comprehensive WCAG 2.1 AA accessibility support across all components. This addresses the accessibility gaps identified in #20.
Changes
Global (styles.scss, index.html)
:focus-visibleindicators on all interactive elements.sr-only)prefers-reduced-motionmedia query--text-mutedand--text-secondarynow meet 4.5:1 contrast ratiolang="en"added to 404.htmlSemantic HTML
<nav>for spec list,<section>for editor panels,<article>for preview/features<fieldset>+<legend>for list editor groups (files, db_tables, dependencies)<form>wrappers witharia-labelfor GitHub connect formsARIA Attributes
role="tablist"/role="tab"/role="tabpanel"for Edit/Preview tabsrole="tree"/role="treeitem"witharia-expandedfor collapsible suite groupsaria-selected,aria-currentfor active itemsaria-labelon all icon buttons, decorative content hidden witharia-hiddenaria-live="polite"for status updates,aria-live="assertive"for errorsaria-busyon loading buttonsaria-expandedon sidebar toggle and PAT form toggleForm Accessibility
<label>elements (visible or.sr-only)aria-label(e.g., "Remove file server/path.ts")Keyboard Navigation
outline: nonepatternsFocus Management
outline: nonewithfocus-visibleoutlines (2px solid accent with offset)Fixes #20
Test plan
prefers-reduced-motion: reduce— verify no animations🤖 Generated with Claude Code