| new file mode 100644 |
| index 0000000..0ccf31e |
| --- /dev/null |
| +++ b/docs/accessibility.md |
| @@ -0,0 +1,73 @@ |
| +# 🤖 Accessibility |
| + |
| +Eleven Messenger is for groups of real people — families, friends, small teams — |
| +and that only works if everyone in the group can actually use it. This page is |
| +our accessibility statement: the standard we hold ourselves to, what that means |
| +in practice, and where we honestly are today. |
| + |
| +## The commitment |
| + |
| +**All web surfaces target [WCAG 2.2](https://www.w3.org/TR/WCAG22/) Level AA.** |
| +That covers the chat client itself, the mini-apps, the join/invite/onboarding |
| +pages, the admin console, and the home server pages. |
| + |
| +**The native iOS and Mac apps target the same bar**, interpreted through |
| +[WCAG2ICT](https://www.w3.org/TR/wcag2ict-22/) and Apple's platform |
| +accessibility features: full VoiceOver support, Dynamic Type, Reduce Motion, |
| +and Increase Contrast. |
| + |
| +Why WCAG 2.2 AA: |
| + |
| +- **2.2 is the current W3C Recommendation** — committing to an older version |
| + (2.0/2.1) would be committing to yesterday's bar, and 2.2 AA is backwards |
| + compatible with 2.1 AA (it adds criteria; the only removal, 4.1.1 Parsing, |
| + is obsolete). |
| +- **AA is the level the world converges on.** Legal and procurement baselines — |
| + the EU's EN 301 549 (European Accessibility Act), US Section 508, ADA case |
| + law — all reference Level AA. Meeting 2.2 AA satisfies all of them. |
| +- **AAA is not a blanket target by design** — the W3C itself says AAA cannot be |
| + satisfied for all content. We adopt individual AAA criteria where they're |
| + cheap and kind (e.g. generous contrast, no timing pressure), but AA is the |
| + commitment. |
| + |
| +## What this means for anyone changing the UI |
| + |
| +The bar for new and changed UI, web and native alike: |
| + |
| +- **Keyboard first.** Every action reachable and operable by keyboard, with a |
| + visible focus indicator. Panels, menus, sheets, and the lightbox manage focus |
| + on open/close and never trap it. The sticky composer and headers must not |
| + obscure the focused element (2.4.11). |
| +- **Everything has a name.** Icon-only buttons get labels; menus and dialogs |
| + get proper roles; form fields get real labels. We already build DOM nodes |
| + instead of `innerHTML` — give those nodes their ARIA at the same time. |
| +- **Gestures have alternatives** (2.5.7): anything done by dragging or swiping |
| + (to-do reorder, swipe-to-reply) also works with simple taps/clicks, and touch |
| + targets are at least 24×24 CSS px (2.5.8). |
| +- **Contrast holds in both themes.** AA ratios (4.5:1 text, 3:1 large text and |
| + UI components) in light *and* dark — including secondary text, placeholders, |
| + and focus rings. |
| +- **Motion is optional.** Ambient scenes (the smoke-and-motes boot and |
| + space-switch), grace-period animations, and transitions respect |
| + `prefers-reduced-motion` / Reduce Motion. |
| +- **Never color alone.** State (unread, online, done, error) is always carried |
| + by text or shape as well as color. |
| +- **Native parity.** iOS/Mac views carry accessibility labels and traits, |
| + survive the largest Dynamic Type sizes, and expose row actions to VoiceOver. |
| + |
| +## Where we are today |
| + |
| +Honestly: **partial conformance**. Accessibility affordances exist throughout |
| +(ARIA attributes across the web client, VoiceOver labels in the native apps), |
| +but we have not yet completed a systematic audit against 2.2 AA. That audit — |
| +surface by surface, with fixes landing as small PRs — is tracked in |
| +[issue #569](https://github.com/elevenmessenger/messenger/issues/569). This |
| +page's status will be updated when the sweep completes. |
| + |
| +## Feedback |
| + |
| +If something in Eleven Messenger doesn't work with your assistive technology, |
| +or works badly, we want to know: |
| +[open an issue](https://github.com/elevenmessenger/messenger/issues) describing |
| +what you were doing, the platform/AT you use, and what went wrong. Accessibility |
| +reports are treated as bugs, not feature requests. |