Accessibility

Accessibility at Chirp

Chirp's web client has a skip link, labeled landmarks, a channel drawer that closes on Escape, polite live announcements for typing, and reduced-motion rules for its Instruments animations, and its tests run axe-core on three surfaces. An axe-core run over every captured view found violations the first time, mostly color contrast; we fixed them in the web client, and the latest run reports none on the desktop views and one on a phone-width view, which we list below instead of hiding it. We do not claim a WCAG level.

Illustration: a quiet public reading room in soft light, with a wide level entrance, a low service counter, and clear open aisles between the shelves.
The product

What Chirp supports today

Each line says what the product does, how we know, and where to look. “Not yet tested” means exactly that: we have not checked, and we do not claim it.

  • Partly supported

    Keyboard operation

    The web client has a skip link to the main content, and on small screens the channel rail is a drawer that closes on Escape. A keyboard-only walkthrough of every flow has not been recorded, and keyboard use of Instruments is a written contract that has not been tested.

    Evidence

    • frontend/src/App.tsx in the Chirp repo: the Skip to main content link and the main landmark
    • frontend/src/components/Sidebar.tsx and frontend/src/__tests__/mobile-nav.test.tsx: the drawer closes on Escape, and does not react to Escape when it is already closed
    • docs/instruments.md states keyboard, dynamic type, and 44-point targets as an acceptance contract for Instruments; it is not a test result
  • Partly supported

    Screen reader landmarks and labels

    The client has a labeled Channels region, accessible names on unread badges, polite live announcements for typing, and alert roles on errors, and two axe tests pass on three surfaces. The wider axe run over every captured view reports no violations, and nothing has been tested with a screen reader.

    Evidence

    • frontend/src/__tests__/a11y.test.tsx runs vitest-axe in jsdom on the zero-workspace screen, and on the workspace switcher menu with the create-workspace dialog open; both expect no violations
    • frontend/src/components/TypingIndicator.tsx sets aria-live polite, and frontend/src/components/ThreadPane.tsx and Attachments.tsx use role alert for errors
    • frontend/src/__tests__/sidebar.test.tsx: a channel with unread mentions gets a distinct accessible label
    • The harness axe-core 4.11.4 run (screenshots/output/chirp/a11y.json) reports no violations in the 32 view runs and 26 incomplete checks that need a manual look; the known gaps explain
  • Partly supported

    Contrast in light and dark

    Chirp's own axe run reports no color-contrast violation in any of its 32 desktop view runs. It first found 59 elements in all 32 runs; brand-accent text, text on an accent fill, amber text, and the sidebar status prompt were raised to at least 4.5 to 1 in both themes. axe left 26 checks undecided, so contrast is not fully verified, and one element pair on the phone-width Tasks page in light mode still fails.

    Evidence

    • screenshots/output/chirp/a11y.json: axe-core 4.11.4 at 1920 by 1200, 16 views in light and dark; no violations in the 32 runs, and 26 incomplete checks
    • frontend/src/global.css sets --brand-accent separately for light and dark
  • Partly supported

    Reduced motion

    A prefers-reduced-motion rule stops the pulse on a running Instrument and the row transitions on the Instruments board. Other motion in the client is not covered by a rule or a test.

    Evidence

    • frontend/src/global.css: the prefers-reduced-motion rule for the Instrument node animation and the Instrument row transition
    • No test exercises reduced motion.
  • Not yet tested

    Text resize and zoom

    Resizing text to 200 percent has not been tested.

  • Partly supported

    Mobile and touch

    Nine views fit a 375 by 667 phone screen with no sideways scrolling in both themes, and the channel rail becomes a drawer. The same run found one color-contrast violation, on the Tasks page in light mode, and tap-target size was not measured. A scrollable block that was not keyboard-focusable was fixed.

    Evidence

    • screenshots/output/chirp/mobile.json: 9 views in light and dark at 375 by 667, 18 runs, no horizontal overflow in any; one color-contrast violation (2 elements, Tasks, light)
    • frontend/src/__tests__/mobile-nav.test.tsx: the drawer never exceeds the viewport width and is neutralized at the md breakpoint and up

No WCAG conformance level is claimed for Chirp. Its repository states a WCAG 2.1 AA target, which is a goal and not a test result. No one has audited it against WCAG or tested it with a screen reader, and an automated axe-core run cannot find every problem; it also left 26 checks undecided for a person to review.

Known gaps

What does not work yet

  • axe-core 4.11.4 on all 16 captured views in light and dark (32 runs at 1920 by 1200) reports no violations, with 26 incomplete checks that axe could not decide and nobody has reviewed. The first run found 59 contrast elements in all 32 runs plus three landmark rules, a missing page heading, and a non-focusable scrollable block, and a later run found heading-order on the four Instrument views; all were fixed in Chirp's web client the same day, with regression tests.
  • At 375 by 667 (9 views, 18 runs) there is no horizontal overflow, but axe flags color-contrast (serious) on 2 elements in 1 run, the Tasks page in light mode. It is open. scrollable-region-focusable and page-has-heading-one, which the first run found, were fixed.
  • Chirp has not been tested with a screen reader. Its VoiceOver, dynamic type, and 44-point target goals for Instruments are a written contract, not test results.
  • The jsdom axe tests cover only three surfaces, and they cannot evaluate color. Reduced motion covers only the Instruments animations, and 200 percent text resize is untested.
This website

How this site is built and checked

This site targets WCAG 2.2 level AA. That is a target we build and test toward, not a certification, and no one has audited it for conformance.

  • Structure

    A skip link, labeled landmarks (header, navigation, main, footer), one h1 per page, and headings that do not skip levels.

  • Keyboard and focus

    Links and buttons are native elements, so they work from the keyboard. Focus is drawn as a visible ring, and the menu closes with Escape.

  • Contrast

    Text meets 4.5 to 1 in both the light and dark themes, checked against the stylesheet by the test suite.

  • Motion

    Transitions and animation switch off when your system asks for reduced motion.

  • Small screens and zoom

    Layouts hold at 375 pixels wide with no sideways scrolling, text resizes with the browser, and touch targets are at least 44 pixels.

  • Automated scan

    Every page is scanned with axe-core at 375 and 1440 pixels in light and dark, and the checks fail on any serious or critical violation. Automated tools find only part of the problems, so this is a floor, not proof.

  • Images

    Every product screenshot has a text description and comes in a light and a dark version that follows your theme.

  • Your theme choice

    The theme follows your system setting until you pick one with the button in the header.

Feedback

Tell us what is in your way

If something here or in Chirp does not work for you, write to Renkara Media Group. Say what you were doing, what you used, and what happened, and a person will answer.

Statement last reviewed 10/29/2026.