~/manuelzzz
← changelog
infra

Projetos em destaque automáticos, cores de marca e correções no tema claro

Novo projeto

Adicionei o version_policy — motor de políticas de atualização de versão em Dart puro, sem Flutter/HTTP/UI, que uso como peça de domínio reaproveitável em conjunto com o VersionGate.

“docs” vs “live”

Os cards de projeto agora distinguem link de documentação (docs →) de link de produto ao vivo (live →). O VersionGate, por exemplo, só tem docs publicadas (Astro + Starlight) — não faz sentido chamar isso de “live”.

Projetos em destaque = projetos ativos

Removi o campo manual featured do schema dos projetos. Antes eu precisava lembrar de marcar featured: true toda vez que adicionava um projeto novo — e esqueci exatamente disso com o version_policy. Agora “em destaque” é derivado direto do status: ativo, sem flag pra manter sincronizada.

Cores de marca nas tecnologias

Cada tag de tecnologia (nas experiências e nos projetos) agora usa a cor oficial da marca — puxei os valores hex direto da base do simple-icons, o mesmo pacote que fornece os ícones. GitLab laranja #fc6d26, Flutter azul #02569b, e assim por diante, tanto no ícone quanto na borda da tag.

Isso quase deu errado: algumas marcas (Next.js, Java, UIKit, Markdown) são oficialmente pretas, e eu tinha fixado um cinza-claro no lugar do preto pra não sumir no fundo escuro — só que era um hex literal, então no tema claro o cinza-claro sumia nele também. Troquei pra var(--color-fg), que se adapta ao tema.

Um carrossel que ganhou e perdeu um recurso

Adicionei um carrossel pros projetos em destaque (2 por vez, com scroll-snap) e tentei acrescentar indicadores de página (dots). Não emplacou: o cálculo de posição rodava antes do layout estabilizar e os dots simplesmente não apareciam de forma confiável. Removi os dots por completo e deixei só as setas de navegação, que funcionavam bem desde o início — às vezes a versão mais simples é a que se sustenta.

Tema claro: a correção que eu errei duas vezes

O texto das páginas de conteúdo (/now, entradas de changelog) estava ilegível no tema claro. Minha primeira tentativa foi trocar prose-invert por variáveis CSS ligadas aos tokens de cor do site — parecia certo, mas continuou quebrado. Descobri o motivo: eu tinha colocado a sobrescrita dentro de @layer base, e as regras do próprio @tailwindcss/typography têm prioridade maior no cascade do Tailwind v4, então minha correção nunca vencia de verdade — o texto continuava usando a paleta cinza padrão do plugin, calibrada pra fundo branco.

A correção certa foi mover a sobrescrita pra fora de qualquer @layer — CSS “sem camada” tem prioridade sobre qualquer coisa dentro de @layer, independente da ordem no arquivo.

Outros ajustes pequenos