Skip to content

Accessibility nl

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

Toegankelijkheid

🌎 Taal: Nederlandsbekijk alle 33 talen

LockedIn CLI is een grap, maar de toegankelijkheid niet. Een terminal-UI die visueel zo rijk is — woordmerk met kleurverloop, kaarten met lijnranden, braillespinners, emoji — is oprecht lastig te gebruiken met hulptechnologie als je daar niet bewust voor ontwerpt. Deze pagina legt uit wat de CLI doet, hoe je het inschakelt en welke algemene best practices erachter zitten (nuttig ver buiten dit project).

De vier modi

Modus Optie Omgevingsvariabele Wat het doet
Screenreader --accessible (--a11y, --screen-reader) LOCKEDIN_ACCESSIBLE=1, of TERM=dumb Schone lineaire platte tekst: geen randen, geen ASCII-art, geen spinnerbeweging, geen decoratieve gliefen; kleur uit; korte prompt; semantische herkenningspunten ("Post:" … "(einde van de post)").
Hoog contrast --high-contrast (--hc) LOCKEDIN_HIGH_CONTRAST=1 Een palet met hoog contrast voor slechtziendheid: puur witte secundaire tekst, fellere accenten, geen dim, een effen accent in plaats van het kleurverloop met laag contrast.
Lage afleiding --low-distraction (--calm, --reduce-motion) LOCKEDIN_LOW_DISTRACTION=1, LOCKEDIN_REDUCE_MOTION=1 Minder beweging (geen spinneranimatie), geen decoratieve emoji, rustige effen kleur — behoudt de visuele lay-out. Voor minder cognitieve/sensorische belasting.
Plat (monochroom) --plain (--mono, --monochrome) LOCKEDIN_PLAIN=1, of NO_COLOR=1 Schakelt alle kleur uit en behoudt toch de volledige lay-out, randen en emoji. Voor terminals met zwakke kleurondersteuning, logging of voorkeur. Overschrijft FORCE_COLOR.

Ze zijn combineerbaar: --high-contrast --low-distraction geeft je een heldere, rustige UI zonder emoji; een screenreadergebruiker op een TERM=dumb -terminal krijgt automatisch toegankelijke modus. Wanneer modi botsen, wint de meest beperkende — monochroom gaat boven een kleurenpalet, en screenreadermodus gaat boven plat.

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

Modi wisselen binnen een sessie: /a11y

Je hoeft niet vooraf te kiezen. Binnen de interactieve sessie is het /a11y-slash command een echt werkend bedieningspaneel (toegankelijkheid is niet de satire):

Typ Resultaat
/a11y Toon de huidige status (aan/uit) van alle vier de modi
/a11y <modus> Schakel er één: screen-reader, high-contrast, low-distraction, plain (aliassen als sr / hc / calm / mono werken ook)
/a11y reset Zet alle modi uit

De status wordt altijd getoond als expliciet aan of uit, nooit alleen met kleur — juist de mensen voor wie dit bedoeld is, kunnen die kleur missen. Het paneel is volledig gelokaliseerd.

De best practices erachter

Dit zijn de principes die we hebben toegepast — dezelfde gelden voor elk terminalhulpmiddel.

  1. Semantiek boven versiering. Een screenreader leest tekens. Randen worden "horizontale lijn, horizontale lijn…"; een ASCII-art-woordmerk is ruis. Toegankelijke modus vervangt visuele structuur door woorden: de splash kondigt "LockedIn CLI" als tekst aan, en kaarten krijgen semantische herkenningspunten ("Post:", "(einde van de post)") zodat gebruikers weten waar een blok begint en eindigt.
  2. Vertrouw nooit alleen op kleur of iconen. Betekenis die alleen in kleur of een emoji zit, is voor sommige gebruikers onzichtbaar. Laat de tekst ook zonder kleur betekenis houden — bijvoorbeeld: "Verbonden met Ava" leest nog steeds prima zodra de ✔ weg is.
  3. Bied tekstalternatieven / haal de ruis weg. Decoratieve emoji worden vaak uitvoerig voorgelezen ("📥" → "postvak IN"). Toegankelijke modus verwijdert puur decoratieve gliefen en behoudt de woorden; Lage afleiding haalt de luide emoji weg maar laat de lay-out staan voor ziende gebruikers die gewoon rust willen.
  4. Respecteer verminderde beweging. Animatie (de braillespinner) leidt af en kan een vestibulaire trigger zijn. Toegankelijke modus en Lage afleiding animeren niet — ze printen de status één keer, statisch. Dat weerspiegelt de prefers-reduced-motion van het web.
  5. Bied hoog contrast. Secundaire tekst in gedimd grijs met laag contrast faalt voor veel gebruikers op WCAG. Hoog contrast vervangt dat door zuiver wit en maakt accenten feller.
  6. Verlaag cognitieve belasting. Sommige gebruikers hebben, los van zicht, gewoon minder nodig: minder franje, geen beweging, geen emoji. Hier is dat een volwaardige modus, geen bijzaak achteraf.
  7. Volg platformconventies. De CLI respecteert al NO_COLOR; daarnaast behandelt hij TERM=dumb (wat veel screenreaders en Emacs-shells exporteren) als "ga toegankelijk", en leest hij LOCKEDIN_REDUCE_MOTION. Signalen gebruiken die de gebruiker al heeft ingesteld is beter dan ze nóg iets laten configureren.
  8. Maak het testbaar en houd het getest. Toegankelijkheid die niet in de testbarrière zit, rot weg. De suite controleert dat toegankelijke uitvoer geen decoratieve gliefen heeft, dat herkenningspunten aanwezig zijn, dat Hoog contrast het palet wisselt en dat Lage afleiding de randuitlijning behoudt — in elke taal.

Directionele opmaak faalt hier ook veilig. Arabisch, Perzisch, Hebreeuws en Urdu geven standaard geen bidi-controls uit tenzij de gebruiker expliciet LOCKEDIN_BIDI=on instelt voor een terminal waarvan bekend is dat die isolates ondersteunt; screenreadermodus verwijdert ze zelfs dan nog. Geen TTY-probe of terminalallowlist kan die veilige standaard overrulen.

Hoe het gebouwd is (voor nieuwsgierigen)

  • a11yFilter(s) verwijdert decoratieve Unicode (lijnranden, blokken, geometrische symbolen, technische symbolen, dingbats, braille, emoji) en zet tekst links uitgelijnd — toegepast op alle uitvoer in toegankelijke modus.
  • emojiFilter(s) is het lichtere filter voor Lage afleiding: het verwijdert alleen de luide emoji/symbolen en behoudt lijnranden, bullets, pijlen en ANSI-kleur, zodat de visuele lay-out intact blijft.
  • Het kleurobject C wordt ter plekke omgewisseld voor een palet met hoog contrast; kleurverlopen vallen terug op een effen accent zodra Hoog contrast of Lage afleiding aan staat. De modus Plat (monochroom) maakt elke vermelding in C leeg (kleur volledig uit, zelfs onder FORCE_COLOR) zonder de lay-out aan te raken.
  • renderSplash, de spinner, renderPrompt en card hebben semantische vertakkingen voor toegankelijke modus (platte tekst, geen beweging, herkenningspunten).
  • Detectie leeft in detectAccessible / detectHighContrast / detectLowDistraction / detectPlain; het entrypoint past ze toe vóór het renderen. Het /a11y-commando in de sessie (handleA11y + renderA11yStatus) schakelt live dezelfde module-status.

Het werkend houden wanneer je een feature toevoegt

De reviewchecklist van de tutorial bevat ook een toegankelijkheidsstap, en dat is overal een goede gewoonte:

Draai lockedin --accessible <je commando> en controleer dat het leest als schone platte tekst — zonder nieuwe decoratieve gliefen die langs a11yFilter glippen — en dat elk nieuw gestructureerd blok een herkenningspunt heeft. Probeer daarna --high-contrast, --low-distraction en --plain (die geen kleurcodes mag uitsturen maar de lay-out wel moet behouden). Nieuwe zichtbare tekst heeft een key nodig in elke talenbundle, zodat het /a11y-paneel en de help vertaald blijven.


Satire. Niet gelieerd aan, gesteund, gesponsord of vertegenwoordigd door 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