Scribe

Journal des versions

Notes de version pour scribe-cms — chaque version est un document de contenu, affiché ici.

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

Couvre les versions 0.0.19 à 0.0.22.

Nouveautés

  • Jetons intégrés au corps du texte : insérez des liens localisés vers d'autres documents, des URL de ressources, des variables du frontmatter et des chaînes qui ne doivent jamais être traduites directement dans le contenu MDX. La modification d'un jeton met instantanément à jour toutes les langues, sans aucune retraduction.
  • Champs de ressources modélisés avec field.asset() : chemins web contraints, validation d'existence et résolution vers des URL publiques lors de la lecture.
  • Types de contenu sans corps : un type peut omettre entièrement le corps MDX, la traduisibilité étant déduite du schéma.
  • scribe delete : supprime une entrée ainsi que ses ressources, traductions et instantanés, avec suppression en cascade des références, --dry-run et --yes.
  • Explorateur de contenu du Studio : listes de documents par type, recherche globale, info-bulles de validation intégrées, aperçu du corps avec liens de relation cliquables et ressources affichées, et navigation au clavier avec les flèches.

Modifications

  • Rupture de compatibilité : les jetons de relation nécessitent désormais un suffixe de mode explicite :href ou :slug.
  • Le prompt de traduction intégré a été réécrit pour privilégier la transcréation : le modèle rédige comme un concepteur-rédacteur natif, recréant les expressions idiomatiques et les jeux de mots au lieu de les traduire littéralement, tout en respectant les conventions typographiques locales.

Corrections

  • scribe translate --dry-run indique désormais l'estimation réelle des jetons et du coût, en appliquant la remise de lot, au lieu d'afficher 0 $.

v0.0.18

Couvre les versions 0.0.13 à 0.0.18.

Nouveautés

  • scribe translate utilise désormais l'API Gemini Batch par défaut, réduisant les coûts liés aux jetons de 50 %. Les exécutions peuvent être reprises : si vous quittez pendant l'interrogation, relancez scribe translate pour reprendre les tâches en attente. Utilisez --batch ou --direct pour définir le mode explicitement.
  • Chaînes de repli automatiques pour les paramètres régionaux : un paramètre régional sans traduction se voit proposer sa langue de base avant l'anglais (fr-CA se replie sur fr). Cette fonction est activée par défaut, mais vous pouvez la désactiver avec localeFallbacks: false.
  • Les traductions échouées font l'objet d'une nouvelle tentative automatique à la fin de l'exécution. Les erreurs de validation sont renvoyées au modèle afin qu'il puisse les corriger.
  • scribe translate --type accepte les identifiants de type de contenu séparés par des virgules.

Modifications

  • Les invites de traduction partagent un préfixe anglais identique pour toutes les langues cibles, ce qui permet à la mise en cache du contexte de Gemini de réduire les jetons d'entrée répétés. Les jetons de réflexion sont désormais comptabilisés dans le coût affiché.

Corrections

  • Les erreurs temporaires de Gemini sont réessayées automatiquement avec un délai d'attente.
  • Les champs imbriqués générés par hallucination dans la sortie du modèle sont supprimés au lieu de faire échouer l'exécution.
  • La langue cible est toujours ajoutée à la fin des invites, même avec un translate.prompt personnalisé.
  • scribe translate --force retraduit désormais également le contenu récent.

v0.0.12

Corrections

  • La traduction de contenus intégrant des blocs de code Markdown ne provoque plus d'erreur lors de l'analyse JSON ; le code formaté est désormais préservé dans les textes traduits.

Modifications

  • scribe validate vérifie à présent la validité MDX des textes sources en anglais en plus des traductions sauvegardées. Les erreurs MDX sont ainsi détectées dès la source.

v0.0.11

Couvre les versions 0.0.8 à 0.0.11.

Nouveautés

  • Les fichiers _redirects.json par type de contenu remplacent aliases et redirect_to dans le frontmatter : redirections de même type, inter-types et externes, avec expansion automatique des slugs traduits
  • La configuration localeRouting et createUrlBuilder() pour la génération d'URL localisées basée sur la configuration
  • listRoutableTypes() et isRoutableType pour trouver les types de contenu disposant de routes publiques
  • Validation MDX au moment de la traduction et dans scribe validate, pour intercepter les contenus qui feraient échouer le prérendu

Correctifs

  • Les redirections inter-types avec le même slug anglais dans from et toSlug ne sont plus rejetées comme des auto-redirections

Suppressions

  • aliases et redirect_to dans le frontmatter (utilisez _redirects.json), ainsi que slugPreserveTerms (utilisez translate.context / translate.rules)

v0.0.7

Corrections

  • Les slugs localisés qui se terminaient accidentellement par un code de langue (comme -fr, -he, -ar) sont désormais nettoyés automatiquement lors de l'exécution de scribe translate, garantissant des URL propres.
  • La commande scribe validate ne fait plus échouer la compilation si un slug traduit existant se termine par un code de langue : elle affiche désormais un avertissement au lieu d'une erreur.

Améliorations

  • Les slugs localisés sont désormais véritablement traduits dans la langue cible au lieu de rester en anglais : le modèle reçoit le nom de la langue cible et base le slug sur le titre traduit, en translittérant les alphabets non latins vers l'alphabet latin.

Nouveautés

  • Le prompt de traduction indique explicitement au modèle de ne pas ajouter de code de langue aux slugs, le routage par langue étant déjà géré par le préfixe de l'URL.

v0.0.6

Modifié

  • Remplacement de la table revisions par locale par des en_snapshots dédupliqués liés via translations.snapshot_id
  • Les snapshots stockent la source EN au moment de la traduction ; plusieurs locales partagent un snapshot par en_hash
  • scribe history et Studio affichent les métadonnées du snapshot EN au lieu de la timeline de révisions

Supprimé

  • Table revisions (supprimée automatiquement lors de la migration vers le schéma v4)
Journal des versions · Scribe