Scribe

Changelog

Notas de versão do scribe-cms — cada versão é um documento de conteúdo, tudo nesta página.

v0.0.23

Added

  • Create and edit entries from the studio: forms are generated from each content type's schema, with widgets for every field kind, inline validation errors, and slug auto-derivation. Every save is a plain file write, so a studio session reads like a hand edit in git
  • Image uploads in entry forms: files land exactly where the config says (templated {slug} destinations or the field's directory), with format and size limits enforced. Nothing is ever converted behind your back
  • Multiple asset fields: field.asset({ multiple: true }) attaches an ordered gallery of images to one entry, validated per element and covered by deletion planning and orphan detection
  • Field help text: Zod's .describe("...") on any field shows up as help text in the studio inspector and entry forms
  • Searchable relation pickers: long relation lists get a filter box with a live match count

Changed

  • The studio is now content-first: the home page shows your content types with entry counts, validation badges, and New buttons; translation dashboards live under a single Translations section, and per-entry translation status moved to a tab on the entry inspector. Old URLs redirect
  • New entries are always created as .mdx; existing .md files stay fully readable and editable

Fixed

  • .describe() on asset and relation fields no longer strips their field metadata
  • The studio's YAML editor uses js-yaml's safe schema, so YAML type tags cannot execute code

v0.0.22

Cobre as versões 0.0.19 a 0.0.22.

Adicionado

  • Tokens inline no corpo: incorpore links localizados para outros documentos, URLs de assets, variáveis de frontmatter e strings que nunca devem ser traduzidas diretamente no texto em MDX. Editar um token atualiza todos os idiomas instantaneamente sem necessidade de retradução
  • Campos de assets baseados em templates com field.asset(): caminhos web restritos, validação de existência e resolução para URLs públicas no momento da leitura
  • Tipos de conteúdo sem corpo: um tipo pode omitir o corpo MDX por completo, e a capacidade de tradução é derivada do schema
  • scribe delete: remove uma entrada junto com seus assets, traduções e snapshots, com exclusão em cascata de referências, --dry-run e --yes
  • Navegador de conteúdo do Studio: listas de documentos por tipo, busca global, tooltips de validação inline, pré-visualização do corpo com links de relação clicáveis e assets renderizados, além de navegação pelas setas do teclado

Alterado

  • Breaking: os tokens de relação agora exigem um sufixo explícito de modo :href ou :slug
  • O prompt de tradução integrado foi reescrito com foco em transcriação: o modelo escreve como um copywriter nativo, recriando expressões idiomáticas e jogos de palavras em vez de traduzi-los ao pé da letra, usando convenções tipográficas nativas

Corrigido

  • scribe translate --dry-run agora informa a estimativa real de tokens e custos, com o desconto por lote aplicado, em vez de $0

v0.0.18

Cobre as versões 0.0.13 a 0.0.18.

Adições

  • O scribe translate agora é executado pela Batch API do Gemini por padrão, reduzindo os custos de tokens em 50%. As execuções podem ser retomadas: se você sair durante a verificação (polling), basta rodar o scribe translate novamente para continuar de onde parou. Use --batch ou --direct para escolher o modo explicitamente
  • Cadeias automáticas de fallback de localidade: uma localidade regional sem tradução recebe o idioma base antes de recorrer ao inglês (por exemplo, fr-CA usa fr como fallback). Ativado por padrão. Para desativar, use localeFallbacks: false
  • Traduções com falha são repetidas uma vez automaticamente ao final da execução. Os erros de validação são reenviados ao modelo para que ele mesmo faça as correções
  • O comando scribe translate --type agora aceita IDs de tipo de conteúdo separados por vírgulas

Alterações

  • Os prompts de tradução compartilham um prefixo idêntico em inglês para todas as localidades de destino. Com isso, o cache de contexto do Gemini desconta os tokens de entrada repetidos. Os tokens de raciocínio (thinking tokens) agora são contabilizados no custo relatado

Correções

  • Erros transitórios do Gemini são tentados novamente de forma automática usando a estratégia de backoff
  • Campos aninhados alucinados na saída do modelo agora são descartados, evitando falhas na execução
  • A localidade de destino é sempre adicionada aos prompts, mesmo quando houver um translate.prompt personalizado
  • O comando scribe translate --force agora também retraduz conteúdos recentes

v0.0.12

Corrigido

  • A tradução de conteúdo que possui blocos de código Markdown não resulta mais em falha de análise do JSON; o código nesses blocos é preservado nos textos traduzidos.

Alterações

  • O scribe validate agora faz a validação MDX dos textos originais em EN, além das traduções armazenadas. Assim, qualquer MDX inválido é capturado direto na fonte.

v0.0.11

Cobre as versões 0.0.8 a 0.0.11.

Adicionado

  • Arquivos _redirects.json por tipo de conteúdo substituem o uso de aliases e redirect_to no frontmatter: suporta redirecionamentos do mesmo tipo, de tipos diferentes e externos, com expansão automática de slugs traduzidos
  • Configuração localeRouting e createUrlBuilder() para gerar URLs localizadas através da configuração
  • listRoutableTypes() e isRoutableType para localizar tipos de conteúdo com rotas públicas
  • Validação de MDX durante a tradução e no comando scribe validate, identificando conteúdos que causariam falha na pré-renderização

Corrigido

  • Redirecionamentos entre tipos diferentes que possuem o mesmo slug em inglês em from e toSlug deixaram de ser rejeitados como redirecionamentos para si mesmos

Removido

  • Propriedades aliases e redirect_to do frontmatter (utilize _redirects.json) e slugPreserveTerms (utilize translate.context ou translate.rules)

v0.0.7

Correções

  • Slugs localizados que acabavam terminando com um código de idioma (como -fr, -he, -ar) agora são limpos automaticamente durante o scribe translate, mantendo as URLs amigáveis
  • O scribe validate não interrompe mais a build quando o slug de uma tradução existente termina com um código de idioma; agora, ele apenas exibe um aviso em vez de um erro

Melhorias

  • Os slugs localizados agora são de fato traduzidos para o idioma de destino em vez de continuarem em inglês: o tradutor recebe o nome do idioma e a instrução de basear o slug no título traduzido, transliterando alfabetos não latinos para o latino

Novidades

  • O prompt do tradutor agora instrui o modelo a não adicionar códigos de idioma aos slugs, já que o roteamento de idiomas é feito pelo prefixo da URL

v0.0.6

Alterado

  • A tabela revisions por idioma foi substituída pela en_snapshots desduplicada, vinculada via translations.snapshot_id
  • Os snapshots armazenam o conteúdo de origem em inglês (EN) no momento da tradução; vários idiomas compartilham um único snapshot por en_hash
  • O scribe history e o Studio exibem metadados do snapshot em inglês em vez da linha do tempo de revisões

Removido

  • Tabela revisions (excluída automaticamente na migração para o schema v4)
Changelog · Scribe