Skip to content

Accessibility fr

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

Accessibilité

🌎 Langue : Françaisvoir les 33 langues

LockedIn CLI est une blague, mais son accessibilité n'en est pas une. Une interface de terminal aussi riche visuellement — logotype en dégradé, cartes à bordures, spinners braille, emojis — est réellement difficile à utiliser avec une technologie d'assistance à moins de la concevoir pour cela. Cette page explique ce que fait la CLI, comment l'activer et les bonnes pratiques générales qui la sous-tendent (utiles bien au-delà de ce projet).

Les quatre modes

Mode Option Variable d'environnement Ce qu'il fait
Lecteur d'écran --accessible (--a11y, --screen-reader) LOCKEDIN_ACCESSIBLE=1, ou TERM=dumb Texte brut linéaire et net : pas de bordures, pas d'ASCII art, pas de mouvement du spinner, pas de glyphes décoratifs ; couleur désactivée ; invite courte ; repères sémantiques (« Publication : » … « (fin de la publication) »).
Contraste élevé --high-contrast (--hc) LOCKEDIN_HIGH_CONTRAST=1 Une palette à fort contraste pour la basse vision : texte secondaire blanc pur, accents plus vifs, pas d'atténuation, accent uni au lieu du dégradé à faible contraste.
Faible distraction --low-distraction (--calm, --reduce-motion) LOCKEDIN_LOW_DISTRACTION=1, LOCKEDIN_REDUCE_MOTION=1 Mouvement réduit (pas d'animation du spinner), pas d'emoji décoratif, couleur unie et calme — conserve la mise en page visuelle. Pour réduire la charge cognitive/sensorielle.
Simple / monochrome --plain (--mono, --monochrome) LOCKEDIN_PLAIN=1, ou NO_COLOR=1 Désactive toute la couleur tout en conservant l'intégralité de la mise en page, les bordures et les emojis. Pour les terminaux à faible prise en charge des couleurs, la journalisation ou par préférence. Remplace FORCE_COLOR.

Ils se combinent : --high-contrast --low-distraction vous donne une interface lumineuse, calme et sans emoji ; un utilisateur de lecteur d'écran sur un terminal TERM=dumb obtient automatiquement le mode accessible. En cas de conflit entre modes, le plus restrictif l'emporte — le monochrome bat une palette de couleurs, et le mode lecteur d'écran supplante le mode simple.

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

Changer de mode au sein d'une session : /a11y

Vous n'avez pas à décider d'avance. Au sein de la session interactive, la slash command /a11y est un vrai panneau de contrôle fonctionnel (l'accessibilité n'est pas la satire) :

Saisissez Résultat
/a11y Affiche l'état actuel (activé/désactivé) des quatre modes
/a11y <mode> En bascule un : screen-reader, high-contrast, low-distraction, plain (des alias comme sr / hc / calm / mono marchent aussi)
/a11y reset Désactive tous les modes

L'état est toujours affiché sous forme d'un mot activé/désactivé explicite, jamais par la couleur seule — les personnes mêmes que cela sert peuvent ne pas percevoir la couleur. Le panneau est entièrement localisé.

Les bonnes pratiques qui la sous-tendent

Voici les principes que nous avons appliqués — les mêmes valent pour n'importe quel outil de terminal.

  1. La sémantique avant la décoration. Un lecteur d'écran lit des caractères. Les bordures deviennent « ligne horizontale, ligne horizontale… » ; un logotype en ASCII art n'est que du bruit. Le mode accessible remplace la structure visuelle par des mots : l'écran d'accueil annonce « LockedIn CLI » sous forme de texte, et les cartes reçoivent des repères (« Publication : », « (fin de la publication) ») pour que les utilisateurs sachent où un bloc commence et se termine.
  2. Ne jamais se fier à la seule couleur ou aux seules icônes. Un sens porté uniquement par la couleur ou un emoji est invisible pour certains utilisateurs. Gardez le texte porteur de sens une fois la couleur désactivée — p. ex. « Connecté avec Ava » se lit très bien une fois le ✔ disparu.
  3. Fournir des alternatives textuelles / retirer le bruit. Les emojis décoratifs sont lus à voix haute de façon verbeuse (« 📥 » → « bac de réception »). Le mode accessible retire les glyphes purement décoratifs et conserve les mots ; la faible distraction retire les emojis tapageurs mais conserve la mise en page pour les personnes voyantes qui veulent simplement du calme.
  4. Respecter le mouvement réduit. L'animation (le spinner braille) est une distraction et peut déclencher des troubles vestibulaires. Les modes accessible et faible distraction n'animent pas — ils affichent l'état une seule fois, de façon statique. Cela reflète le prefers-reduced-motion du web.
  5. Proposer un fort contraste. Le texte secondaire « gris atténué » à faible contraste échoue au contraste WCAG pour de nombreux utilisateurs. Le mode contraste élevé le remplace par du blanc pur et rehausse les accents.
  6. Réduire la charge cognitive. Au-delà de la vue, certains utilisateurs ont besoin de moins : moins de fioritures, pas de mouvement, pas d'emoji. Ici, c'est un mode de premier plan, pas une pensée après coup.
  7. Honorer les conventions de la plateforme. La CLI respecte déjà NO_COLOR ; elle traite aussi TERM=dumb (ce qu'exportent de nombreux lecteurs d'écran et shells Emacs) comme « passe en accessible », et lit LOCKEDIN_REDUCE_MOTION. Détecter les signaux que l'utilisateur possède déjà vaut mieux que de lui faire configurer une chose de plus.
  8. Rendre cela testable, et le garder testé. Une accessibilité qui n'est pas dans la barrière de tests se dégrade. La suite vérifie que la sortie accessible n'a aucun glyphe décoratif, que les repères sont présents, que le contraste élevé échange la palette, et que la faible distraction reste alignée sur les bordures — dans toutes les langues.

Le formatage directionnel est lui aussi en échec sûr. L'arabe, le persan, l'hébreu et l'ourdou n'émettent aucun contrôle bidi à moins que l'utilisateur ne définisse explicitement LOCKEDIN_BIDI=on pour un terminal connu pour prendre en charge les isolats ; le mode lecteur d'écran les retire même dans ce cas. Aucun sondage TTY ni liste d'autorisation de terminaux ne peut passer outre ce réglage sûr par défaut.

Comment c'est construit (pour les curieux)

  • a11yFilter(s) retire l'Unicode décoratif (traits de cadre, blocs, géométriques, techniques, dingbats, braille, emojis) et aligne le texte à gauche — appliqué à toute la sortie en mode accessible.
  • emojiFilter(s) est le filtre plus léger de la faible distraction : il ne supprime que les emojis/symboles tapageurs et conserve les traits de cadre, les puces, les flèches et la couleur ANSI, pour que la mise en page visuelle survive.
  • L'objet de couleur C est remplacé sur place par une palette à fort contraste ; les dégradés retombent sur un accent uni quand le contraste élevé ou la faible distraction est actif. Le mode simple force chaque entrée de C à vide (couleur totalement désactivée, même sous FORCE_COLOR) tout en laissant la mise en page intacte.
  • renderSplash, le spinner, renderPrompt et card ont des branches sémantiques pour le mode accessible (texte brut, pas de mouvement, repères).
  • La détection réside dans detectAccessible / detectHighContrast / detectLowDistraction / detectPlain ; le point d'entrée les applique avant le rendu. La commande /a11y de la session (handleA11y + renderA11yStatus) bascule le même état au niveau du module, en direct.

Garder cela fonctionnel quand vous ajoutez une fonctionnalité

La liste de revue du tutoriel inclut une étape d'accessibilité, et c'est une bonne habitude partout :

Exécutez lockedin --accessible <votre commande> et confirmez qu'elle se lit comme du texte brut et net — aucun nouveau glyphe décoratif ne passant à travers le filtre — et que tout nouveau bloc structuré possède un repère. Essayez ensuite --high-contrast, --low-distraction et --plain (qui ne doit émettre aucun code de couleur tout en conservant la mise en page). Tout nouveau texte visible par l'utilisateur a besoin d'une clé dans chaque paquet de langue, pour que le panneau /a11y et l'aide restent traduits.


Satire. Non affilié à 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