Ir para o conteúdo
CarlosDiário de obra

Por que eu parei de confiar em "latest"

O painel do blog parou de salvar posts do nada. A causa não estava em nada que eu tinha escrito — estava numa dependência de terceiro que eu nunca tranquei numa versão fixa.

Fui criar um post pelo painel (/admin) e travou: “Ocorreu um erro ao salvar a entrada. Tente novamente mais tarde.” — e embaixo, em letra miúda, (intermediate value).toBase64 is not a function. Eu não tinha mexido em nada. O painel simplesmente parou de funcionar sozinho.

A causa

O /admin carrega o Sveltia CMS direto do unpkg, sem travar versão:

<script src="https://unpkg.com/@sveltia/cms/dist/sveltia-cms.js" type="module"></script>

Sem número de versão na URL, o unpkg sempre serve a última publicada. E a última, a 0.204.0, tinha saído havia poucas horas — no mesmo dia do erro.

Confirmando a suspeita

Chequei o registro do pacote no npm: 0.204.0 publicada de manhã cedo daquele dia, e a versão anterior (0.203.2) só com “bug fixes and improvements”, nada de arriscado. No changelog do GitHub, a novidade da 0.204.0 era suporte a Azure Blob Storage como provedor de mídia — o tipo de feature que mexe em codificação binária, bem perto de onde o erro apontava.

Não precisei ler o código-fonte da lib linha por linha pra agir. Versão nova, mesma hora do erro, área de código plausível — a correlação já era forte o suficiente.

O que eu tirei disso

Travei numa versão fixa (@sveltia/cms@0.203.2) em vez de continuar puxando a “mais recente” pra sempre. Parece óbvio escrito assim, mas é justamente nas dependências que a gente configura uma vez e nunca mais olha que esse tipo de coisa passa despercebida — o painel funcionou meses sem eu tocar nele, e eu nem lembrava que aquele script tinha ficado apontando pra “sempre a última”.

“Latest” não é uma versão. É uma aposta de que ninguém vai publicar algo quebrado hoje. De vez em quando, alguém publica.