Skip to content

Accessibility pt BR

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

Acessibilidade

🌎 Idioma: Português (Brasil)veja todos os 33 idiomas

LockedIn CLI é uma piada, mas sua acessibilidade não é. Uma interface de terminal tão visualmente rica — wordmark em gradiente, cartões com desenho de caixas, spinners em braille, emojis — é genuinamente difícil de usar com tecnologia assistiva a menos que você projete pensando nisso. Esta página explica o que a CLI faz, como ativar e as boas práticas gerais por trás disso (úteis muito além deste projeto).

Os quatro modos

Modo Flag Env O que faz
Leitor de tela --accessible (--a11y, --screen-reader) LOCKEDIN_ACCESSIBLE=1, ou TERM=dumb Texto plano linear e limpo: sem bordas, sem arte ASCII, sem movimento do spinner, sem glifos decorativos; cor desligada; prompt curto; marcos semânticos ("Post:" … "(fim do post)").
Alto contraste --high-contrast (--hc) LOCKEDIN_HIGH_CONTRAST=1 Uma paleta de alto contraste para baixa visão: texto secundário branco puro, acentos mais brilhantes, sem esmaecimento, acento sólido em vez do gradiente de baixo contraste.
Baixa distração --low-distraction (--calm, --reduce-motion) LOCKEDIN_LOW_DISTRACTION=1, LOCKEDIN_REDUCE_MOTION=1 Movimento reduzido (sem animação do spinner), sem emojis decorativos, cor sólida e tranquila — mantém o layout visual. Para reduzir a carga cognitiva/sensorial.
Simples / monocromático --plain (--mono, --monochrome) LOCKEDIN_PLAIN=1, ou NO_COLOR=1 Desativa toda a cor mantendo o layout completo, as bordas e os emojis. Para terminais com pouco suporte a cor, logs ou preferência. Sobrepõe FORCE_COLOR.

Eles se combinam: --high-contrast --low-distraction te dá uma interface brilhante, tranquila e sem emojis; um usuário de leitor de tela em um terminal TERM=dumb recebe o modo acessível automaticamente. Quando os modos entram em conflito, o mais restritivo vence — monocromático vence uma paleta de cores, e o modo leitor de tela substitui o simples.

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

Trocando de modo dentro de uma sessão: /a11y

Você não precisa decidir com antecedência. Dentro da sessão interativa, o comando /a11y é um painel de controle real e funcional (a acessibilidade não é a sátira):

Digite Resultado
/a11y Mostra o estado atual (ligado/desligado) dos quatro modos
/a11y <modo> Alterna um: screen-reader, high-contrast, low-distraction, plain (aliases como sr / hc / calm / mono também funcionam)
/a11y reset Desliga todos os modos

O estado sempre é mostrado como uma palavra explícita ligado/desligado, nunca só pela cor — os próprios usuários a quem isso serve podem não perceber a cor. O painel é totalmente localizado.

As boas práticas por trás disso

Estes são os princípios que aplicamos — os mesmos valem para qualquer ferramenta de terminal.

  1. Semântica antes da decoração. Um leitor de tela lê caracteres. Bordas com desenho de caixas viram "linha horizontal, linha horizontal…"; um wordmark em arte ASCII é ruído. O modo acessível substitui a estrutura visual por palavras: o splash anuncia "LockedIn CLI" como texto, e os cartões ganham marcos ("Post:", "(fim do post)") para que o usuário saiba onde um bloco começa e termina.
  2. Nunca dependa só de cor ou ícones. Um significado que só é transmitido por cor ou por um emoji é invisível para alguns usuários. Mantenha o texto com sentido mesmo com a cor desligada — por exemplo, "Conectado com Ava" lê bem depois que o ✔ desaparece.
  3. Ofereça alternativas em texto / remova o ruído. Emojis decorativos são lidos em voz alta de forma prolixa ("📥" → "bandeja de entrada"). O modo acessível remove glifos puramente decorativos e mantém as palavras; o de baixa distração remove os emojis mais chamativos, mas mantém o layout para usuários videntes que só querem calma.
  4. Respeite o movimento reduzido. A animação (o spinner em braille) é uma distração e pode ser um gatilho vestibular. Os modos acessível e de baixa distração não animam — imprimem o estado uma vez, de forma estática. Isso espelha o prefers-reduced-motion da web.
  5. Ofereça alto contraste. Texto secundário "cinza apagado" de baixo contraste falha o contraste do WCAG para muitos usuários. O modo de alto contraste o troca por branco puro e realça os acentos.
  6. Reduza a carga cognitiva. Além da visão, alguns usuários precisam de menos: menos floreios, sem movimento, sem emojis. Isso é um modo de primeira classe aqui, não uma reflexão tardia.
  7. Honre as convenções da plataforma. A CLI já respeita NO_COLOR; também trata TERM=dumb (o que muitos leitores de tela e shells do Emacs exportam) como "vá para o modo acessível", e lê LOCKEDIN_REDUCE_MOTION. Detectar os sinais que o usuário já tem é melhor do que fazê-lo configurar mais uma coisa.
  8. Torne testável, e mantenha testado. A acessibilidade que não está na barreira de testes apodrece. A suíte verifica que a saída acessível não tem glifos decorativos, que os marcos estão presentes, que o alto contraste troca a paleta e que a baixa distração mantém o alinhamento das bordas — em todos os idiomas.

A formatação direcional também falha de forma segura. Árabe, persa, hebraico e urdu não emitem controles bidi por padrão, a menos que o usuário defina explicitamente LOCKEDIN_BIDI=on para um terminal conhecido por suportar isolamentos; o modo leitor de tela os remove mesmo assim. Nenhum sondeio de TTY nem lista de terminais pode sobrepor esse padrão seguro.

Como foi construído (para os curiosos)

  • a11yFilter(s) remove Unicode decorativo (desenho de caixas, blocos, geométricos, técnicos, dingbats, braille, emojis) e alinha o texto à esquerda — aplicado a toda a saída no modo acessível.
  • emojiFilter(s) é o filtro mais leve de baixa distração: remove apenas os emojis/símbolos chamativos e mantém desenho de caixas, marcadores, setas e cor ANSI, para que o layout visual sobreviva.
  • O objeto de cor C é trocado por uma paleta de alto contraste no lugar; os gradientes caem para um acento sólido quando o alto contraste ou a baixa distração estão ativos. O modo simples força cada entrada de C a ficar vazia (cor totalmente desligada, mesmo sob FORCE_COLOR) sem alterar o layout.
  • renderSplash, o spinner, renderPrompt e card têm ramos semânticos para o modo acessível (texto plano, sem movimento, marcos).
  • A detecção mora em detectAccessible / detectHighContrast / detectLowDistraction / detectPlain; o ponto de entrada os aplica antes de renderizar. O comando /a11y da sessão (handleA11y + renderA11yStatus) alterna o mesmo estado ao vivo.

Mantendo tudo funcionando ao adicionar uma funcionalidade

A lista de revisão do tutorial inclui um passo de acessibilidade, e é um bom hábito em qualquer lugar:

Execute lockedin --accessible <seu comando> e confirme que ele é lido como texto plano e limpo — sem novos glifos decorativos escapando do filtro — e que qualquer novo bloco estruturado tem um marco. Depois tente --high-contrast, --low-distraction e --plain (que deve emitir nenhuma cor, mas manter o layout). Todo texto novo visível ao usuário precisa de uma chave em cada bundle de idioma, para que o painel /a11y e a ajuda continuem traduzidos.


Sátira. Não afiliado ao 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