Parent
Épico: revisão visual dark-mode / Apple-like do OpenCode Desktop (issues subsequentes desta leva dependem desta).
What to build
packages/ui/src/v2/styles/theme.css define os tokens --v2-* para light/dark via [data-color-scheme="light"] / [data-color-scheme="dark"]. Vários valores dark atuais ficam abaixo do contraste aceitável contra --v2-background-bg-base (--v2-grey-1100) / --v2-background-bg-deep (--v2-grey-1200):
--v2-text-text-faint: var(--v2-grey-600) e --v2-text-text-muted: var(--v2-grey-500) no bloco [data-color-scheme="dark"] (linhas ~398-399) — medir contraste real contra --v2-grey-1100/--v2-grey-1200 e subir o degrau de cinza até bater 4.5:1 (texto de corpo) / 3:1 (texto grande, ícones).
--v2-border-border-muted: var(--v2-alpha-light-8) e --v2-border-border-base: var(--v2-alpha-light-10) (linhas ~413-414) — alpha muito baixo sobre fundo escuro, torna divisores quase invisíveis. Subir para um alpha que garanta 3:1 mínimo.
--v2-overlay-simple-overlay-hover: var(--v2-alpha-light-6) / -pressed: var(--v2-alpha-light-10) (linhas ~419-420) — feedback de hover/pressed pouco perceptível no tema escuro.
Ajustar apenas os valores dentro do bloco [data-color-scheme="dark"]; não alterar a estrutura dos tokens nem criar tokens novos fora do sistema --v2-* existente. O bloco :root (light, linhas 14-145) e [data-color-scheme="light"] não devem ser tocados a menos que a mesma medição de contraste aponte um problema real neles também.
Esta issue é pré-requisito para as issues de página desta leva: elas vão validar visualmente cada tela usando os tokens já corrigidos aqui.
Acceptance criteria
Blocked by
(nenhuma)
Verification
- Screenshot antes/depois do app em
[data-color-scheme="dark"] mostrando texto muted/faint, bordas e hover states em pelo menos 3 telas diferentes (ex: Settings > Geral, MCP dialog, Session composer)
- Conferir contraste com uma ferramenta (ex: WebAIM contrast checker) para os pares alterados, colar os valores calculados no PR
Parent
Épico: revisão visual dark-mode / Apple-like do OpenCode Desktop (issues subsequentes desta leva dependem desta).
What to build
packages/ui/src/v2/styles/theme.cssdefine os tokens--v2-*para light/dark via[data-color-scheme="light"]/[data-color-scheme="dark"]. Vários valores dark atuais ficam abaixo do contraste aceitável contra--v2-background-bg-base(--v2-grey-1100) /--v2-background-bg-deep(--v2-grey-1200):--v2-text-text-faint: var(--v2-grey-600)e--v2-text-text-muted: var(--v2-grey-500)no bloco[data-color-scheme="dark"](linhas ~398-399) — medir contraste real contra--v2-grey-1100/--v2-grey-1200e subir o degrau de cinza até bater 4.5:1 (texto de corpo) / 3:1 (texto grande, ícones).--v2-border-border-muted: var(--v2-alpha-light-8)e--v2-border-border-base: var(--v2-alpha-light-10)(linhas ~413-414) — alpha muito baixo sobre fundo escuro, torna divisores quase invisíveis. Subir para um alpha que garanta 3:1 mínimo.--v2-overlay-simple-overlay-hover: var(--v2-alpha-light-6)/-pressed: var(--v2-alpha-light-10)(linhas ~419-420) — feedback de hover/pressed pouco perceptível no tema escuro.Ajustar apenas os valores dentro do bloco
[data-color-scheme="dark"]; não alterar a estrutura dos tokens nem criar tokens novos fora do sistema--v2-*existente. O bloco:root(light, linhas 14-145) e[data-color-scheme="light"]não devem ser tocados a menos que a mesma medição de contraste aponte um problema real neles também.Esta issue é pré-requisito para as issues de página desta leva: elas vão validar visualmente cada tela usando os tokens já corrigidos aqui.
Acceptance criteria
--v2-text-text-base,-muted,-faintsobre--v2-background-bg-base/-deep/-layer-01..04no tema dark atingem WCAG AA (4.5:1 texto normal, 3:1 texto grande ≥18px/14px bold)--v2-border-border-mutede--v2-border-border-baseno tema dark são visivelmente distinguíveis do fundo (≥3:1) sem virar um contorno pesado--v2-overlay-simple-overlay-hover/-pressedno tema dark produzem feedback de hover/pressed claramente perceptívelBlocked by
(nenhuma)
Verification
[data-color-scheme="dark"]mostrando texto muted/faint, bordas e hover states em pelo menos 3 telas diferentes (ex: Settings > Geral, MCP dialog, Session composer)