Skip to content

Accessibility de

James Morris edited this page Jul 29, 2026 · 1 revision

Barrierefreiheit

🌎 Sprache: Deutschalle 33 Sprachen ansehen

LockedIn CLI ist ein Witz, aber seine Barrierefreiheit ist es nicht. Eine Terminal-Oberfläche mit so viel visueller Dichte — Wortmarke mit Farbverlauf, Karten mit Rahmen, Braille-Spinner, Emojis — ist mit unterstützender Technologie wirklich schwer zu nutzen, wenn man sie nicht bewusst dafür entwirft. Diese Seite erklärt was die CLI tut, wie du es einschaltest und welche allgemeinen Best Practices dahinterstecken (auch weit über dieses Projekt hinaus nützlich).

Die vier Modi

Modus Option Umgebungsvariable Wirkung
Screenreader --accessible (--a11y, --screen-reader) LOCKEDIN_ACCESSIBLE=1, oder TERM=dumb Sauberer linearer Klartext: keine Rahmen, keine ASCII-Art, keine Spinner-Bewegung, keine dekorativen Glyphen; Farbe aus; kurzer Prompt; semantische Orientierungspunkte („Post:“ … „(Ende des Posts)“).
Hoher Kontrast --high-contrast (--hc) LOCKEDIN_HIGH_CONTRAST=1 Eine Palette mit Hohem Kontrast bei geringer Sehkraft: reinweißer Sekundärtext, hellere Akzente, kein Dimmen, ein solider Akzent statt des kontrastarmen Farbverlaufs.
Niedrige Ablenkung --low-distraction (--calm, --reduce-motion) LOCKEDIN_LOW_DISTRACTION=1, LOCKEDIN_REDUCE_MOTION=1 Reduzierte Bewegung (keine Spinner-Animation), keine dekorativen Emojis, ruhige Vollfarbe — behält das visuelle Layout bei. Für geringere kognitive/sensorische Belastung.
Klar (monochrom) --plain (--mono, --monochrome) LOCKEDIN_PLAIN=1, oder NO_COLOR=1 Deaktiviert jede Farbe und behält dabei das vollständige Layout, die Rahmen und die Emojis bei. Für Terminals mit schwacher Farbunterstützung, fürs Logging oder aus Vorliebe. Überschreibt FORCE_COLOR.

Sie lassen sich kombinieren: --high-contrast --low-distraction ergibt eine helle, ruhige Oberfläche ohne Emojis; ein Screenreader-Nutzer auf einem TERM=dumb-Terminal bekommt den Screenreader-Modus automatisch. Wenn Modi kollidieren, gewinnt der restriktivere — Monochrom schlägt eine Farbpalette, und der Screenreader-Modus übersteuert Klar (monochrom).

lockedin --accessible post
lockedin --high-contrast
lockedin --plain post
LOCKEDIN_LOW_DISTRACTION=1 lockedin aura

Modi innerhalb einer Session umschalten: /a11y

Du musst dich nicht vorab festlegen. Innerhalb der interaktiven Session ist der Slash-Command /a11y ein echtes, funktionierendes Kontrollpanel (Barrierefreiheit ist nicht Teil der Satire):

Eingabe Ergebnis
/a11y Zeigt den aktuellen Status (aktiviert/deaktiviert) aller vier Modi
/a11y <mode> Schaltet einen Modus um: screen-reader, high-contrast, low-distraction, plain (Aliasse wie sr / hc / calm / mono funktionieren ebenfalls)
/a11y reset Schaltet alle Modi aus

Der Status wird immer mit einem expliziten aktiviert/deaktiviert-Wort angezeigt, niemals nur über Farbe — genau die Menschen, denen das hilft, nehmen Farbe möglicherweise gar nicht wahr. Das Panel ist vollständig lokalisiert.

Die Best Practices dahinter

Das sind die Prinzipien, die wir angewendet haben — und dieselben gelten für jedes Terminal-Tool.

  1. Semantik vor Dekoration. Ein Screenreader liest Zeichen. Rahmen aus Box-Drawing werden zu „horizontale Linie, horizontale Linie …“; ein ASCII-Art-Schriftzug ist Lärm. Der Screenreader-Modus ersetzt die visuelle Struktur durch Wörter: Der Splash kündigt „LockedIn CLI“ als Text an, und Karten bekommen Orientierungspunkte („Post:“, „(Ende des Posts)“), damit Nutzer wissen, wo ein Block beginnt und endet.
  2. Verlass dich nie nur auf Farbe oder Icons. Bedeutung, die nur über Farbe oder ein Emoji transportiert wird, ist für manche Nutzer unsichtbar. Der Text muss auch ohne Farbe sinnvoll bleiben — z. B. liest sich „Mit Ava verbunden“ noch gut, wenn das ✔ verschwunden ist.
  3. Biete Textalternativen / entferne den Lärm. Dekorative Emojis werden laut und ausführlich vorgelesen. Der Screenreader-Modus entfernt rein dekorative Glyphen und behält die Wörter; Niedrige Ablenkung entfernt die lauten Emojis, behält aber das Layout für sehende Nutzer, die einfach mehr Ruhe wollen.
  4. Respektiere reduzierte Bewegung. Animation (der Braille-Spinner) lenkt ab und kann vestibuläre Reize auslösen. Screenreader und Niedrige Ablenkung animieren nicht — sie geben den Status einmal statisch aus. Das spiegelt das Web-prefers-reduced-motion wider.
  5. Biete Hohen Kontrast an. Kontrastarmer „gedämpfter Grauton“ bei Sekundärtext verfehlt für viele Nutzer die WCAG-Kontrastanforderungen. Hoher Kontrast ersetzt ihn durch reines Weiß und hellere Akzente.
  6. Reduziere kognitive Last. Über das Sehen hinaus brauchen manche Nutzer weniger: weniger Verzierungen, keine Bewegung, keine Emojis. Hier ist das ein Modus erster Klasse, kein nachträglicher Einfall.
  7. Respektiere Plattform-Konventionen. Die CLI respektiert bereits NO_COLOR; außerdem behandelt sie TERM=dumb (was viele Screenreader- und Emacs-Shells exportieren) als „geh in den Screenreader-Modus“ und liest LOCKEDIN_REDUCE_MOTION. Bereits vorhandene Signale des Nutzers zu erkennen ist besser, als noch eine weitere Konfiguration zu verlangen.
  8. Mach es testbar und halte die Tests grün. Barrierefreiheit, die nicht im Test-Gate steckt, verrottet. Die Suite prüft, dass Screenreader-Ausgabe keine dekorativen Glyphen enthält, dass Orientierungspunkte vorhanden sind, dass Hoher Kontrast die Palette tauscht und dass Niedrige Ablenkung die Rahmenausrichtung beibehält — in jeder Sprache.

Auch bei der Richtungsformatierung gilt: Im Zweifel fällt sie auf die sichere Seite zurück. Arabisch, Persisch, Hebräisch und Urdu geben keine bidi-Steuerzeichen aus, es sei denn, der Nutzer setzt ausdrücklich LOCKEDIN_BIDI=on für ein Terminal, von dem er weiß, dass es Isolate unterstützt; der Screenreader-Modus entfernt sie selbst dann. Kein TTY-Probe und keine Terminal-Positivliste kann diesen sicheren Standard übersteuern.

Wie es gebaut ist (für Neugierige)

  • a11yFilter(s) entfernt dekoratives Unicode (Box-Drawing, Block, Geometrie, technisch, Dingbats, Braille, Emoji) und richtet Text linksbündig aus — angewendet auf jede Ausgabe im Screenreader-Modus.
  • emojiFilter(s) ist der leichtere Filter für Niedrige Ablenkung: Er entfernt nur die lauten Emojis/Symbole und behält Box-Drawing, Aufzählungspunkte, Pfeile und ANSI-Farbe, damit das visuelle Layout erhalten bleibt.
  • Das Farbobjekt C wird direkt gegen eine Palette mit Hohem Kontrast getauscht; Farbverläufe fallen auf einen soliden Akzent zurück, wenn Hoher Kontrast oder Niedrige Ablenkung aktiv ist. Klar (monochrom) setzt jeden C-Eintrag auf leer (Farbe vollständig aus, selbst unter FORCE_COLOR), ohne das Layout anzutasten.
  • renderSplash, der Spinner, renderPrompt und card haben semantische Zweige für den Screenreader-Modus (Klartext, keine Bewegung, Orientierungspunkte).
  • Die Erkennung lebt in detectAccessible / detectHighContrast / detectLowDistraction / detectPlain; der Einstiegspunkt wendet sie vor dem Rendern an. Der In-Session-Command /a11y (handleA11y + renderA11yStatus) schaltet denselben Status auf Modulebene live um.

So hältst du es am Laufen, wenn du ein Feature hinzufügst

Die Review-Checkliste des Tutorials enthält einen Schritt zur Barrierefreiheit, und das ist überall eine gute Gewohnheit:

Führe lockedin --accessible <your command> aus und bestätige, dass es sich als sauberer Klartext liest — ohne neue dekorative Glyphen, die am Filter vorbeirutschen — und dass jeder neue strukturierte Block einen Orientierungspunkt hat. Probiere danach --high-contrast, --low-distraction und --plain aus (das keine Farbcodes ausgeben darf, das Layout aber beibehält). Jeder neue sichtbare Text braucht einen Key in jedem Sprach-Bundle, damit das /a11y-Panel und die Hilfe übersetzt bleiben.


Satire. Nicht verbunden mit, unterstützt, gesponsert oder vertreten durch LinkedIn. GPL-3.0-or-later.

📘 LockedIn CLI wiki

Tutorial

Reference


Satire · Sátira · 風刺. Not affiliated with LinkedIn. GPL-3.0-or-later.

Clone this wiki locally