Scribe

Changelog

Notas de versión de scribe-cms — cada versión es un documento de contenido en esta 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

Abarca las versiones de la 0.0.19 a la 0.0.22.

Novedades

  • Tokens integrados en el cuerpo: inserta enlaces localizados a otros documentos, URL de recursos, variables del frontmatter y cadenas que nunca deben traducirse directamente en el texto MDX. Al editar un token, se actualizan todos los idiomas al instante y sin necesidad de volver a traducir.
  • Campos de recursos con plantillas mediante field.asset(): rutas web restringidas, validación de existencia y resolución a URL públicas en tiempo de lectura.
  • Tipos de contenido sin cuerpo: un tipo puede omitir por completo el cuerpo MDX y la capacidad de traducción se deduce del esquema.
  • scribe delete: elimina una entrada junto con sus recursos, traducciones y copias de seguridad, con referencias en cascada, --dry-run y --yes.
  • Navegador de contenido de Studio: listas de documentos por tipo, búsqueda global, descripciones emergentes de validación integradas, una vista previa del cuerpo con enlaces de relación en los que se puede hacer clic, recursos renderizados y navegación con las teclas de flecha.

Cambios

  • Importante: ahora los tokens de relación requieren un sufijo de modo explícito :href o :slug.
  • El prompt de traducción integrado se ha reescrito para centrarse en la transcreación: el modelo redacta como un copywriter nativo, recreando expresiones idiomáticas y juegos de palabras en lugar de traducirlos literalmente, utilizando convenciones tipográficas nativas.

Correcciones

  • Ahora scribe translate --dry-run informa de los tokens y costes estimados reales, aplicando el descuento por lote en lugar de mostrar $0.

v0.0.18

Abarca las versiones de la 0.0.13 a la 0.0.18.

Añadido

  • Ahora scribe translate se ejecuta a través de la API por lotes de Gemini por defecto, lo que reduce los costes de tokens en un 50 %. Las ejecuciones se pueden reanudar: puedes salir durante el sondeo y volver a ejecutar scribe translate para retomar los trabajos pendientes. Usa --batch o --direct para elegir el modo explícitamente.
  • Cadenas automáticas de idioma alternativo: si un idioma regional no tiene traducción, se muestra su idioma base antes de recurrir al inglés (por ejemplo, fr-CA pasará a usar fr). Esta función está activada por defecto; puedes desactivarla con localeFallbacks: false.
  • Las traducciones fallidas se vuelven a intentar una vez de forma automática al final del proceso. Los errores de validación se envían al modelo para que pueda corregirlos.
  • scribe translate --type acepta identificadores de tipo de contenido separados por comas.

Cambios

  • Los prompts de traducción comparten un prefijo idéntico en inglés para todos los idiomas de destino, de modo que el almacenamiento en caché de contexto de Gemini descuenta los tokens de entrada repetidos. Los tokens de razonamiento ahora se incluyen en el cálculo de costes.

Correcciones

  • Los errores temporales de Gemini se reintentan automáticamente aplicando un retraso progresivo.
  • Los campos anidados inventados en la salida del modelo se eliminan en lugar de provocar un fallo en la ejecución.
  • El idioma de destino siempre se añade al final de los prompts, incluso cuando se usa un translate.prompt personalizado.
  • Ahora scribe translate --force también vuelve a traducir el contenido nuevo.

v0.0.12

Solucionado

  • La traducción de contenidos que incluyen bloques de código Markdown ya no interrumpe el análisis JSON; los bloques de código se mantienen intactos en las traducciones.

Cambios

  • Ahora, scribe validate valida el formato MDX de los textos originales en inglés además de las traducciones almacenadas. De este modo, cualquier error de MDX se detecta directamente en el origen.

v0.0.11

Abarca desde la versión 0.0.8 hasta la 0.0.11.

Añadido

  • Los archivos _redirects.json por tipo de contenido reemplazan a aliases y redirect_to del frontmatter: permiten redirecciones del mismo tipo, entre tipos y externas, con expansión automática de slugs traducidos.
  • Configuración localeRouting y createUrlBuilder() para generar URL localizadas en base a la configuración.
  • listRoutableTypes() y isRoutableType para encontrar tipos de contenido con rutas públicas.
  • Validación de MDX en tiempo de traducción y en scribe validate, para detectar cuerpos de texto que provocarían fallos en la pre-renderización.

Corregido

  • Las redirecciones entre distintos tipos que tienen el mismo slug en inglés en from y toSlug ya no se rechazan por considerarse bucles de redirección a la misma página.

Eliminado

  • Propiedades aliases y redirect_to del frontmatter (ahora se usa _redirects.json), así como slugPreserveTerms (ahora se usa translate.context / translate.rules).

v0.0.7

Correcciones

  • Los slugs localizados que terminaban por accidente con un código de idioma (como -fr, -he, -ar) ahora se limpian automáticamente durante scribe translate para mantener las URL impecables.
  • scribe validate ya no interrumpe la compilación cuando el slug de una traducción existente termina en un código de idioma. Ahora, en lugar de un error, simplemente emite una advertencia.

Mejoras

  • Los slugs localizados ahora se traducen realmente al idioma de destino en lugar de mantenerse en inglés. El traductor recibe el nombre del idioma de destino y genera el slug a partir del título traducido, transliterando los alfabetos no latinos al latín.

Novedades

  • Las instrucciones para el traductor ahora indican al modelo que no añada códigos de idioma a los slugs, ya que el prefijo de la URL se encarga del enrutamiento por idioma.

v0.0.6

Modificado

  • Se reemplaza la tabla revisions de cada idioma por en_snapshots deduplicados, vinculados a través de translations.snapshot_id
  • Los snapshots almacenan el contenido de origen en EN al momento de la traducción; ahora varios idiomas comparten un único snapshot por cada en_hash
  • scribe history y Studio muestran los metadatos del snapshot en EN en lugar del historial de revisiones

Eliminado

  • Tabla revisions (eliminada automáticamente al migrar al esquema v4)
Changelog · Scribe