-
Notifications
You must be signed in to change notification settings - Fork 0
Accessibility it
🌎 Lingua: Italiano — vedi 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).
| 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 auraNon 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.
Questi sono i principi che abbiamo applicato — gli stessi valgono per qualsiasi strumento da terminale.
- 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.
- 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 ✔.
- 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.
-
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-motiondel web. - 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.
- 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.
-
Rispetta le convenzioni della piattaforma. La CLI rispetta già
NO_COLOR; tratta ancheTERM=dumb(ciò che esportano molte shell di lettori di schermo ed Emacs) come "vai in modalità accessibile", e leggeLOCKEDIN_REDUCE_MOTION. Rilevare i segnali che l'utente ha già è meglio che costringerlo a configurare l'ennesima cosa. - 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.
-
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
Cviene 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 diCvuota (colore del tutto disattivato, anche conFORCE_COLOR) senza toccare il layout. -
renderSplash, lo spinner,renderPromptecardhanno 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/a11ydella sessione (handleA11y+renderA11yStatus) commuta lo stesso stato a livello di modulo, dal vivo.
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-distractione--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/a11ye la guida restino tradotti.
Satira. Non affiliato con LinkedIn. GPL-3.0-or-later.
Tutorial
- 1 · Orientation
- 2 · How the Code Works
- 3 · Your First Agent Task
- 4 · Prompting & Reviewing
- 5 · Localization
Reference
Satire · Sátira · 風刺. Not affiliated with LinkedIn. GPL-3.0-or-later.