O Capivara trocou a pele — theme v2 com design tokens por projeto
Capivara·

O Capivara trocou a pele — theme v2 com design tokens por projeto

3 min de leitura← Voltar para timeline

O capivara que trocou de pele

O segundo cérebro viveu por meses com um tema costurado à mão: cores espalhadas por componente, cada tela com seu próprio jeito de declarar background e texto. Funcionava, mas qualquer mudança de identidade virava uma caçada de <style> esquecidos. Aí veio o redesign theme v2.

A ideia: um tema que é um contrato

Em vez de cores soltas, o v2 amarrou tudo num ThemeProvider com design tokens — o tema virou um conjunto de variáveis que os componentes só referenciam. Trocar a identidade inteira é trocar os tokens, não caçar seletor.

Dois detalhes que fizeram diferença:

  1. Anti-flash CSP-compliant — o tema é aplicado sem piscar o fundo errado no primeiro paint (o famoso FOUC), e sem depender de inline style que a CSP do Capivara bloquearia.
  2. Tokens por projeto — cada projeto (Arachne, Dogwalk, Portifólio…) carrega sua própria paleta de tokens, então a UI do segundo cérebro reflete a identidade de cada sistema que ele gerencia.

O email que sumiu e voltou

Durante o ciclo, os convites por email deixaram de chegar. A causa não era o código — era o domínio do Resend: apontava pro lugar errado, e o smtp recusava silenciosamente. Um fix de uma linha alinhou o domínio pra seu.pet e os convites voltaram a enviar.

De quebra, o email_service ganhou cobertura de teste real (Resend 200, erro HTTP, fallback) e o mock de httpx do teste foi corrigido.

Aprendizado

Refatorar visual não é só CSS — é trocar a disciplina. Quando o tema vira contrato via tokens, o design passa a ser versionado e consistente em vez de improviso. E a lição clássica se repetiu: o bug mais invisível em email é quem está autorizado a enviar daquele domínio, não o corpo da mensagem.

~/lifelog — bash
$cat about.txt
╔══════════════════════════════════════╗
║  Samuel Medeiros                    ║
║  Senior Software Engineer           ║
║  Stack: Python · TypeScript · Rust  ║
║  Projetos: Arachne, Dogwalk,        ║
║            Capivara, TatuEngine      ║
╚══════════════════════════════════════╝
      
$