Skip to content

Accessibility it

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

Accessibilità

🌎 Lingua: Italianovedi tutte le 33 lingue

LockedIn CLI è uno scherzo, ma la sua accessibilità non lo è. Un'interfaccia da terminale così ricca sul piano visivo — wordmark con gradiente, schede con bordi, spinner braille, emoji — è davvero difficile da usare con le tecnologie assistive a meno che tu non la progetti apposta. Questa pagina spiega cosa fa la CLI, come attivarlo e le buone pratiche generali che ci stanno dietro (utili ben oltre questo progetto).

Le quattro modalità

Modalità Opzione Variabile d'ambiente Cosa fa
Lettore di schermo --accessible (--a11y, --screen-reader) LOCKEDIN_ACCESSIBLE=1, oppure TERM=dumb Testo semplice lineare e pulito: niente bordi, niente ASCII art, nessun movimento dello spinner, nessun glifo decorativo; colore disattivato; prompt breve; punti di riferimento semantici ("Post:" … "(fine del post)").
Alto contrasto --high-contrast (--hc) LOCKEDIN_HIGH_CONTRAST=1 Una palette ad alto contrasto per l'ipovisione: testo secondario bianco puro, accenti più brillanti, nessuna attenuazione, accento pieno al posto del gradiente a basso contrasto.
Bassa distrazione --low-distraction (--calm, --reduce-motion) LOCKEDIN_LOW_DISTRACTION=1, LOCKEDIN_REDUCE_MOTION=1 Movimento ridotto (nessuna animazione dello spinner), niente emoji decorative, colore pieno e tranquillo — mantiene il layout visivo. Per ridurre il carico cognitivo/sensoriale.
Semplice / monocromatico --plain (--mono, --monochrome) LOCKEDIN_PLAIN=1, oppure NO_COLOR=1 Disattiva tutto il colore conservando l'intero layout, i bordi e le emoji. Per terminali con scarso supporto ai colori, per i log o per preferenza. Ha la precedenza su FORCE_COLOR.

Si combinano: --high-contrast --low-distraction ti dà un'interfaccia brillante, tranquilla e senza emoji; un utente di lettore di schermo su un terminale TERM=dumb ottiene la modalità accessibile automaticamente. Quando due modalità entrano in conflitto, vince la più restrittiva — il monocromatico batte una palette a colori, e la modalità lettore di schermo prevale su quella semplice.

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

Cambiare modalità dentro una sessione: /a11y

Non devi decidere in anticipo. Dentro la sessione interattiva, lo slash command /a11y è un vero e proprio pannello di controllo funzionante (l'accessibilità non è la satira):

Digita Risultato
/a11y Mostra lo stato attuale (attivo/disattivo) di tutte e quattro le modalità
/a11y <modalità> Ne attiva/disattiva una: screen-reader, high-contrast, low-distraction, plain (funzionano anche alias come sr / hc / calm / mono)
/a11y reset Disattiva ogni modalità

Lo stato viene sempre mostrato con un'esplicita parola attivo/disattivo, mai solo con il colore — proprio le persone che questo serve potrebbero non percepire il colore. Il pannello è completamente localizzato.

Le buone pratiche che ci stanno dietro

Questi sono i principi che abbiamo applicato — gli stessi valgono per qualsiasi strumento da terminale.

  1. Semantica prima della decorazione. Un lettore di schermo legge caratteri. I bordi di box-drawing diventano "linea orizzontale, linea orizzontale…"; un wordmark in ASCII art è rumore. La modalità accessibile sostituisce la struttura visiva con parole: lo splash annuncia "LockedIn CLI" come testo, e le schede ricevono punti di riferimento ("Post:", "(fine del post)") così sai dove un blocco inizia e finisce.
  2. Non affidarti mai al solo colore o alle sole icone. Un significato trasmesso solo dal colore o da un'emoji è invisibile per alcuni utenti. Mantieni il testo dotato di senso anche con il colore disattivato — ad es. "Connesso con Ava" si legge bene una volta sparito il ✔.
  3. Fornisci alternative testuali / togli il rumore. Le emoji decorative vengono lette ad alta voce in modo prolisso ("📥" → "vassoio della posta in arrivo"). La modalità accessibile toglie i glifi puramente decorativi e conserva le parole; la bassa distrazione toglie le emoji rumorose ma mantiene il layout per chi vede e vuole solo calma.
  4. Rispetta il movimento ridotto. L'animazione (lo spinner braille) è una distrazione e può essere un innesco vestibolare. Le modalità accessibile e a bassa distrazione non animano — stampano lo stato una volta sola, in modo statico. Questo rispecchia il prefers-reduced-motion del web.
  5. Offri l'alto contrasto. Il testo secondario "grigio attenuato" a basso contrasto non supera il contrasto delle WCAG per molte persone. La modalità ad alto contrasto lo sostituisce con bianco puro e ravviva gli accenti.
  6. Riduci il carico cognitivo. Oltre alla vista, alcune persone hanno bisogno di meno: meno fronzoli, niente movimento, niente emoji. Qui è una modalità di prima classe, non un ripensamento.
  7. Rispetta le convenzioni della piattaforma. La CLI rispetta già NO_COLOR; tratta anche TERM=dumb (ciò che esportano molte shell di lettori di schermo ed Emacs) come "vai in modalità accessibile", e legge LOCKEDIN_REDUCE_MOTION. Rilevare i segnali che l'utente ha già è meglio che costringerlo a configurare l'ennesima cosa.
  8. Rendila testabile e tienila testata. L'accessibilità che non è nella barriera dei test marcisce. La suite verifica che l'output accessibile non abbia glifi decorativi, che i punti di riferimento siano presenti, che l'alto contrasto cambi la palette e che la bassa distrazione resti allineata ai bordi — in ogni lingua.

Anche la formattazione direzionale fallisce in modo sicuro. Arabo, persiano, ebraico e urdu non emettono controlli bidi a meno che l'utente non imposti esplicitamente LOCKEDIN_BIDI=on per un terminale di cui si sa che supporta gli isolati; la modalità lettore di schermo li elimina comunque. Nessun sondaggio del TTY né lista di terminali può scavalcare quel valore predefinito sicuro.

Come è costruito (per i curiosi)

  • a11yFilter(s) toglie l'Unicode decorativo (box-drawing, blocchi, geometrici, tecnici, dingbats, braille, emoji) e allinea il testo a sinistra — applicato a tutto l'output in modalità accessibile.
  • emojiFilter(s) è il filtro più leggero della bassa distrazione: rimuove solo le emoji/i simboli rumorosi e conserva box-drawing, elenchi puntati, frecce e il colore ANSI, così il layout visivo sopravvive.
  • L'oggetto colore C viene sostituito sul posto con una palette ad alto contrasto; i gradienti ripiegano su un accento pieno quando l'alto contrasto o la bassa distrazione sono attivi. La modalità semplice lascia ogni voce di C vuota (colore del tutto disattivato, anche con FORCE_COLOR) senza toccare il layout.
  • renderSplash, lo spinner, renderPrompt e card hanno rami semantici per la modalità accessibile (testo semplice, nessun movimento, punti di riferimento).
  • Il rilevamento vive in detectAccessible / detectHighContrast / detectLowDistraction / detectPlain; il punto d'ingresso li applica prima di renderizzare. Lo slash command /a11y della sessione (handleA11y + renderA11yStatus) commuta lo stesso stato a livello di modulo, dal vivo.

Tenerlo funzionante quando aggiungi una funzionalità

La lista di revisione del tutorial include un passaggio di accessibilità, ed è una buona abitudine ovunque:

Esegui lockedin --accessible <il tuo comando> e conferma che si legga come testo semplice e pulito — nessun nuovo glifo decorativo che sguscia oltre il filtro — e che ogni nuovo blocco strutturato abbia un punto di riferimento. Poi prova --high-contrast, --low-distraction e --plain (che non deve emettere nessun codice di colore ma conservare il layout). Ogni nuovo testo visibile ha bisogno di una chiave in ogni bundle di lingua, così che il pannello /a11y e la guida restino tradotti.


Satira. Non affiliato con 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