Scribe

Changelog

Versionshinweise für scribe-cms — jede Version ist ein Inhaltsdokument auf dieser Seite.

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

Umfasst die Versionen 0.0.19 bis 0.0.22.

Neu

  • Inline-Body-Tokens: Betten Sie lokalisierte Links zu anderen Dokumenten, Asset-URLs, Frontmatter-Variablen und Zeichenfolgen ein, die niemals direkt im MDX-Text übersetzt werden dürfen. Wird ein Token bearbeitet, aktualisiert es sich sofort in jeder Sprache, ohne dass eine Neuübersetzung nötig ist.
  • Vorlagenbasierte Asset-Felder mit field.asset(): Eingeschränkte Webpfade, Validierung der Existenz und Auflösung zu öffentlichen URLs zum Lesezeitpunkt.
  • Inhaltsarten ohne Body: Ein Typ kann den MDX-Body komplett weglassen. Die Übersetzbarkeit wird in diesem Fall aus dem Schema abgeleitet.
  • scribe delete: Löscht einen Eintrag mitsamt der zugehörigen Assets, Übersetzungen und Snapshots. Beinhaltet eine Referenz-Kaskade, --dry-run und --yes.
  • Studio-Content-Browser: Dokumentenlisten pro Typ, globale Suche, Inline-Tooltips zur Validierung, eine Body-Vorschau mit klickbaren Relations-Links und gerenderten Assets sowie die Navigation per Pfeiltaste.

Geändert

  • Breaking: Relations-Tokens erfordern nun explizit ein Suffix für den Modus, entweder :href oder :slug.
  • Der integrierte Übersetzungs-Prompt wurde komplett auf Transkreation umgestellt. Das Modell textet nun wie ein muttersprachlicher Copywriter. Redewendungen und Wortspiele werden sinngemäß neu erschaffen statt wörtlich übersetzt, und länderspezifische typografische Konventionen werden konsequent angewendet.

Behoben

  • scribe translate --dry-run meldet nun reale geschätzte Tokens und Kosten (inklusive Batch-Rabatt), anstatt einfach 0 $ anzuzeigen.

v0.0.18

Behandelt die Versionen 0.0.13 bis 0.0.18.

Neu

  • scribe translate nutzt jetzt standardmäßig die Gemini Batch API, was die Token-Kosten um 50 % senkt. Vorgänge lassen sich fortsetzen: Brechen Sie die Abfrage einfach ab und starten Sie scribe translate erneut, um ausstehende Jobs wieder aufzunehmen. Mit --batch oder --direct können Sie den Modus explizit festlegen.
  • Automatische Fallback-Ketten für Sprachversionen: Einer regionalen Sprachversion ohne Übersetzung wird nun die zugehörige Basissprache anstelle von Englisch ausgeliefert (fr-CA greift auf fr zurück). Standardmäßig aktiviert. Die Deaktivierung erfolgt über localeFallbacks: false.
  • Fehlgeschlagene Übersetzungen werden am Ende des Durchlaufs einmal automatisch wiederholt. Dabei werden die Validierungsfehler an das Modell zurückgemeldet, damit dieses sie korrigieren kann.
  • scribe translate --type akzeptiert nun kommagetrennte IDs für Inhaltstypen.

Geändert

  • Übersetzungs-Prompts nutzen für alle Zielsprachen ein identisches englisches Präfix, sodass das Context Caching von Gemini Rabatte für wiederholte Input-Tokens gewähren kann. „Thinking Tokens“ werden nun in den ausgewiesenen Kosten berücksichtigt.

Behoben

  • Vorübergehende Gemini-Fehler werden automatisch mit exponentiellem Backoff wiederholt.
  • Halluzinierte verschachtelte Felder in der Modellausgabe werden entfernt, anstatt den Vorgang abbrechen zu lassen.
  • Die Zielsprache wird immer an Prompts angehängt, auch wenn ein benutzerdefinierter translate.prompt verwendet wird.
  • scribe translate --force übersetzt nun auch neue Inhalte neu.

v0.0.12

Behoben

  • Das Übersetzen von Inhalten mit Markdown-Codeblöcken führt nicht mehr zu JSON-Parsing-Fehlern. Codeblöcke in übersetzten Texten bleiben nun korrekt erhalten.

Geändert

  • scribe validate prüft nun neben den gespeicherten Übersetzungen auch die englischen Quelltexte auf MDX-Gültigkeit, sodass ungültiges MDX direkt an der Quelle erkannt wird.

v0.0.11

Umfasst die Releases 0.0.8 bis 0.0.11.

Neu hinzugefügt

  • _redirects.json-Dateien pro Content-Type ersetzen aliases und redirect_to im Frontmatter: Umleitungen desselben Typs, typübergreifend und extern, inklusive automatischer Erweiterung übersetzter Slugs
  • localeRouting-Konfiguration und createUrlBuilder() für die konfigurationsgesteuerte Generierung lokalisierter URLs
  • listRoutableTypes() und isRoutableType, um Content-Types mit öffentlichen Routen zu ermitteln
  • MDX-Validierung zur Übersetzungszeit und in scribe validate, wodurch fehlerhafte Inhalte frühzeitig erkannt werden, die sonst beim Prerendering scheitern würden

Behoben

  • Typübergreifende Weiterleitungen mit demselben englischen Slug in from und toSlug werden nicht mehr fälschlicherweise als Selbst-Weiterleitungen abgelehnt

Entfernt

  • Frontmatter aliases und redirect_to (stattdessen _redirects.json nutzen) sowie slugPreserveTerms (stattdessen translate.context / translate.rules verwenden)

v0.0.7

Behoben

  • Lokalisierte Slugs, die versehentlich auf einen Ländercode (wie -fr, -he, -ar) endeten, werden nun bei scribe translate automatisch bereinigt, damit die URLs sauber bleiben.
  • scribe validate bricht den Build nicht mehr ab, wenn ein bestehender Übersetzungs-Slug auf einen Ländercode endet. Statt eines Fehlers wird nun eine Warnung ausgegeben.

Verbessert

  • Lokalisierte Slugs werden nun tatsächlich in die Zielsprache übersetzt und bleiben nicht mehr auf Englisch. Das Übersetzungstool erhält den Namen der Zielsprache und generiert den Slug basierend auf dem übersetzten Titel. Dabei werden nicht-lateinische Schriften in lateinische Zeichen transkribiert.

Hinzugefügt

  • Der Prompt für die Übersetzung weist das Modell nun an, keine Ländercodes mehr an Slugs anzuhängen, da das sprachspezifische Routing über das URL-Präfix abgewickelt wird.

v0.0.6

Geändert

  • Die pro Locale erstellte revisions-Tabelle wurde durch deduplizierte en_snapshots ersetzt, die über translations.snapshot_id verknüpft sind.
  • Snapshots speichern den EN-Quelltext zum Zeitpunkt der Übersetzung; mehrere Locales teilen sich nun einen gemeinsamen Snapshot pro en_hash.
  • scribe history und das Studio zeigen ab sofort EN-Snapshot-Metadaten anstelle des bisherigen Revisionsverlaufs.

Entfernt

  • revisions-Tabelle (wird bei der Migration auf Schema v4 automatisch gelöscht)
Changelog · Scribe