dorfteich/CLAUDE.md
Claude Fable 5 858909564e
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
docs: ADR 0017 — Barrierefreiheit als Standard-Anforderung
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
2026-07-21 17:17:26 +02:00

2.3 KiB

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).