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.