Throughlinepost ← Back to the site

Accessibility statement

Applies to: Throughline 3.0.0 for macOS · Last updated: 2026-09-22
Standard targeted: EN 301 549 v3.2.1 / WCAG 2.1 Level AA
Conformance status: PARTIALLY CONFORMANT — with the significant, specific exceptions listed in §2.

Published under the European Accessibility Act (Directive 2019/882). A statement that overclaims is worse than one that admits gaps, so this one is measured rather than aspirational: the figures in §2 come from counting the code, not from an impression.


1 · What works today

2 · Known non-conformances

Measured on 2026-08-16 against the current source. A6 was re-measured and resolved on 2026-09-12; every other row below still stands as written.

# issue criterion impact
A1 Only 8% of interactive widgets carry an accessible name — counted on the built main window 2026-08-16: 18 named, 212 unnamed. The primary action of every workflow step is named; the long tail is not. VoiceOver announces the timeline, lane panel, waveform and signal widgets generically or not at all. 4.1.2 Name, Role, Value Severe for screen-reader users
A2 Focus order and focus policy are set in only 4 places. Tab traversal follows widget construction order, which is not necessarily reading order. 2.4.3 Focus Order High for keyboard users
A3 Only 2 keyboard shortcuts exist. Core actions — sync, export, navigating between clips — have no keyboard equivalent. 2.1.1 Keyboard High
A4 The timeline is a pointer-first surface. Dragging a clip to adjust an offset has no keyboard or numeric alternative. 2.1.1, 2.5.1 High
A5 Colour is used alone to convey sync status in parts of the interface (placed / to check / not placed). 1.4.1 Use of Colour Medium
A6 RESOLVED 2026-09-12. Re-measured with scripts/check_contrast.py: 0 failing pairs in both themes. Previously (2026-08-16) 3 of the 11 declared foreground/background pairs failed in each theme — all white glyphs on a saturated accent fill: cyan #40C8E0 at 1.99:1, green #30D158 at 2.02:1 and orange #FF9F0A at 2.06:1, against the 3:1 required for a non-text component. Fixed by darkening the glyph to #0B1A22, not by changing any brand colour — the five bright badges now measure 5.20–8.91:1. The glyph is deliberately NOT uniform: on the two deep-purple badges white measures 5.06:1 and 4.57:1 and a dark glyph would have lowered them to 3.50 and 3.88, so those keep white. Worst case across both themes is now 4.57:1, up from 1.99:1, and tests/test_contrast_does_not_regress.py holds the baseline at 0. ⚠️ Colours computed in Python rather than declared in QSS are still not covered by this measurement. 1.4.3, 1.4.11 Resolved for the declared stylesheet pairs
A7 No assistive-technology testing has been performed. No VoiceOver pass, no Full Keyboard Access pass, no Switch Control pass. — Unknown
A8 Waveforms and the placement timeline are inherently visual and have no textual equivalent, although each clip’s plain-language explanation partly compensates. 1.1.1 Non-text Content Medium

3 · What we are doing about it

Committed, in this order, because it is the order of impact per unit of work:

  1. A1 — accessible names and roles on every interactive widget. The single largest improvement available, and mechanical to apply.
  2. A3 / A4 — keyboard equivalents for every pointer-only action, including a numeric offset entry so the timeline is not the only route to adjusting a placement.
  3. A5 — a shape or text label beside every status colour. The explanation text already exists; it needs to reach the places that currently show only a colour.
  4. A2 — an explicit tab order per screen.
  5. A6 — darken the three failing accent fills, or use a dark glyph on them. The audit is done and automated; what remains is a design decision about which of the two to do. scripts/check_contrast.py --strict will hold it once fixed.
  6. A7 — a full VoiceOver and Full Keyboard Access pass, published as an updated version of this statement.

No independent audit has been commissioned. Everything in §2 is self-assessed — measured against the code and the running application by the publisher, not reviewed by a third party. We say so rather than implying an external verification that has not happened. An independent audit is intended once the product has revenue to fund one, and this statement will be reissued under its findings.

4 · Alternatives available now

The application is fully drivable without the graphical interface:

These are supported, first-class surfaces held to the graphical one by automated parity tests, not fallbacks. For a user blocked by §2, the CLI is today the recommended route, and we would rather say so than pretend the GUI is ready.

5 · Feedback

Accessibility contact: [email protected] · PO Box 123, Flagstaff, AZ 86002, USA

If something here blocks you, tell us. Reports about a real workflow move up the list in §3. We aim to reply within 5 working days.