All checks were successful
CD / Build and push images (push) Successful in 1m12s
CD / Deploy to Test (push) Successful in 11s
CD / Smoke tests against Test (push) Successful in 1m13s
CD / Promote to Int (push) Successful in 11s
CI / Lint, typecheck, test (push) Successful in 4m45s
CI / Build container images (push) Has been skipped
CI / Auth e2e pack (push) Successful in 7m15s
CI / Import/export fidelity gate (push) Successful in 56s
Release / Build release images and notes (push) Successful in 1m11s
Release / Release-candidate operations QA (push) Successful in 44s
Prod deploy / Deploy the released images to Prod (push) Successful in 16s
Jede künftige UI-Änderung entwickelt Barrierefreiheit direkt mit (Stefans Vorgabe nach Abschluss des WCAG-2.1-AA-Audits): verbindliche Checkliste als ADR, Kurzfassung in CLAUDE.md für jede Dev-Session, Eintrag im ADR-Index. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AGM8jo3hwoV9wsCVGfy8iq
40 lines
2.3 KiB
Markdown
40 lines
2.3 KiB
Markdown
## Barrierefreiheit (verbindlich, ADR 0017)
|
|
|
|
Jede UI-Änderung wird von Anfang an barrierefrei entwickelt (WCAG 2.1
|
|
AA) — nicht nachträglich. Kurzfassung; Details und Begründung in
|
|
`docs/architecture/adr/0017-accessibility-by-default.md`:
|
|
|
|
- **Bausteine wiederverwenden:** `IconButton` (erzwungener Name),
|
|
`Field` (Label + Fehler-Verdrahtung), `useModalFocus` für Dialoge
|
|
(Trap/Initialfokus/Rückgabe + `aria-labelledby`). Keine Parallelbauten.
|
|
- **Tastatur zuerst:** alles erreichbar/bedienbar, Fokus sichtbar,
|
|
Escape schließt, kein Fokusverlust; Einzeltasten-Shortcuts respektieren
|
|
`lib/single-key-shortcuts.ts`.
|
|
- **Name/Rolle/Wert:** korrekte Rollen, lokalisierte (de+en) Labels,
|
|
Zustände via aria-*; dekorative Icons `aria-hidden`.
|
|
- **BEIDE Renderpfade:** Editor-/NodeView-Pfad UND docToHtml/Server-Pfad
|
|
gleichwertig behandeln (Cache rollt lazy aus).
|
|
- **Kontrast/Farbe:** Tokens nutzen (Text ≥ 4,5:1, UI ≥ 3:1;
|
|
`--color-border-input` für Feldränder; `--color-favorite` nur Icons);
|
|
Farbe nie als einziges Merkmal.
|
|
- **Reflow:** kein seitenweites Horizontal-Scrollen bei 320 px
|
|
(`min-width: 0` an Flex-/Grid-Kindern nicht vergessen).
|
|
- **Bewegung/Zeit:** `prefers-reduced-motion` respektieren, keine zu
|
|
kurzen Auto-Dismiss-Zeiten.
|
|
- **CI-Pack pflegen:** neue Kern-Screens in `apps/web/e2e/a11y.spec.ts`
|
|
aufnehmen; die Allowlist bleibt leer bzw. nur mit Begründung.
|
|
- Neue aria-Labels können bestehende `getByLabel`-e2e-Locator mehrdeutig
|
|
machen — betroffene Specs mit anpassen (scopen), nicht das Label opfern.
|
|
|
|
Verstöße gelten in Review und Abnahme als Funktionsfehler.
|
|
|
|
## graphify
|
|
|
|
This project has a knowledge graph at graphify-out/ with god nodes, community structure, and cross-file relationships.
|
|
|
|
Rules:
|
|
- For codebase questions, first run `graphify query "<question>"` when graphify-out/graph.json exists. Use `graphify path "<A>" "<B>"` for relationships and `graphify explain "<concept>"` for focused concepts. These return a scoped subgraph, usually much smaller than GRAPH_REPORT.md or raw grep output.
|
|
- If graphify-out/wiki/index.md exists, use it for broad navigation instead of raw source browsing.
|
|
- Read graphify-out/GRAPH_REPORT.md only for broad architecture review or when query/path/explain do not surface enough context.
|
|
- After modifying code, run `graphify update .` to keep the graph current (AST-only, no API cost).
|