Scribe

変更履歴

scribe-cms のリリースノート — 各バージョンはコンテンツドキュメントとしてこのページに表示されます。

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

リリース 0.0.19 から 0.0.22 までの変更点。

追加機能

  • インライン本文トークン: MDXの文章中に、他のドキュメントへのローカライズされたリンク、アセットのURL、フロントマターの変数、および翻訳してはいけない文字列を直接埋め込めるようになりました。トークンを編集するとすべてのロケールに即座に反映され、再翻訳の手間がかかりません。
  • field.asset() を使用したテンプレート化アセットフィールド: Webパスの制限、存在検証、および読み取り時の公開URLへの解決機能を追加しました。
  • 本文なしのコンテンツタイプ: MDXの本文を完全に省略したタイプを作成できるようになりました。翻訳要否はスキーマから自動で判定されます。
  • scribe delete: エントリをアセット、翻訳、スナップショットと共に一括削除します。参照カスケード、--dry-run、および --yes オプションをサポートしています。
  • Studio コンテンツブラウザ: タイプ別のドキュメント一覧、グローバル検索、インラインのバリデーションツールチップ、関係リンクやレンダリングされたアセットを操作できる本文プレビュー、そして矢印キーによるナビゲーションを追加しました。

変更点

  • 破壊的変更: 関係(relation)トークンに、:href または :slug のモード接尾辞を明示的に指定することが必須になりました。
  • 組み込みの翻訳プロンプトをトランスクリエーションに特化した内容に刷新しました。モデルがネイティブなコピーライターとして機能し、直訳を避けて言葉遊びや慣用句を的確に再現し、現地のタイポグラフィの習慣に合わせた自然な文章を生成します。

修正点

  • scribe translate --dry-run 実行時、$0 ではなく、バッチ割引を適用した実際の見積もりトークン数とコストを正確に報告するようになりました。

v0.0.18

本記事では、バージョン 0.0.13 から 0.0.18 までのアップデート内容をまとめています。

新機能

  • デフォルトで scribe translate が Gemini Batch API 経由で実行されるようになり、トークンコストが50%削減されました。また、実行の中断と再開も可能です。ポーリング中に終了しても、再度 scribe translate を実行すれば保留中のジョブを再開できます。モードを明示的に指定する場合は --batch または --direct を使用してください。
  • ロケールの自動フォールバックチェーンに対応しました。翻訳が存在しない地域ロケールの場合、英語の前にそのベース言語が提供されます(例: fr-CAfr にフォールバックします)。この機能はデフォルトで有効ですが、localeFallbacks: false で無効化できます。
  • 翻訳に失敗した場合、処理の最後に自動で1回再試行されます。その際、検証エラーの内容がモデルにフィードバックされ、精度の向上と自己修正を促します。
  • scribe translate --type で、カンマ区切りによる複数のコンテンツタイプIDの指定が可能になりました。

変更点

  • すべてのターゲットロケールにおいて、翻訳プロンプトの先頭に共通の英語プレフィックスが付与されるようになりました。これにより、Geminiのコンテキストキャッシュが効き、重複する入力トークンのコストが削減されます。また、思考(Thinking)トークンもレポートされるコストに計上されるようになりました。

修正点

  • Geminiの一時的なエラーに対し、バックオフを伴う自動リトライが行われるようになりました。
  • モデル出力にハルシネーションによるネストされたフィールドが含まれている場合、処理を失敗させるのではなく、そのフィールドを削除(プルーン)するよう修正しました。
  • カスタムの translate.prompt を使用している場合でも、ターゲットロケールが常にプロンプトの末尾に付加されるように修正しました。
  • scribe translate --force 実行時、新規コンテンツも再翻訳の対象となるよう修正しました。

v0.0.12

バグ修正

  • 本文にMarkdownのコードブロックが含まれるコンテンツを翻訳する際、JSONの解析エラーが発生しなくなりました。翻訳後の本文でもコードブロックが正しく保持されます。

仕様変更

  • 保存された翻訳データに加え、英語のソース本文に対しても scribe validate でMDXの検証を実行するようになりました。これにより、MDXの構文エラーをソースの段階で検知できます。

v0.0.11

リリース 0.0.8 から 0.0.11 までを含みます。

追加機能

  • コンテンツタイプ別の _redirects.json ファイルが、フロントマターの aliasesredirect_to に取って代わりました。同一タイプ間、異なるタイプ間、および外部へのリダイレクトに対応し、翻訳されたスラッグも自動的に展開されます。
  • 設定ベースでロケール URL を生成するための localeRouting 設定と createUrlBuilder() を追加しました。
  • 公開ルートを持つコンテンツタイプを特定するための listRoutableTypes()isRoutableType を追加しました。
  • 翻訳時および scribe validate 実行時に MDX バリデーションを行うようにしました。事前レンダリングの失敗につながる問題のある本文を事前に検知します。

修正された問題

  • fromtoSlug に同じ EN スラッグを持つ異なるタイプ間のリダイレクトが、自己リダイレクトとして誤って拒否される問題を修正しました。

削除された機能

  • フロントマターの aliasesredirect_to(今後は _redirects.json を使用してください)、および slugPreserveTerms(今後は translate.context / translate.rules を使用してください)を削除しました。

v0.0.7

修正

  • scribe translate の実行時に、誤ってロケールコード(例: -fr, -he, -ar)で終わっているローカライズ版スラッグから、該当部分を自動的に削除するようにしました。これにより、クリーンなURLが維持されます。
  • 既存の翻訳スラッグがロケールコードで終わっている場合でも、scribe validate でビルドが失敗しないようになりました。エラーではなく警告として報告されます。

改善

  • ローカライズ版スラッグが英語のまま残るのではなく、ターゲット言語へ適切に翻訳されるようになりました。翻訳処理においてターゲット言語を名前で明示し、翻訳後のタイトルに基づいてスラッグを作成するよう指示しています(非ラテン文字はラテン文字に翻字されます)。

追加

  • ロケールによるルーティングはURLプレフィックスで制御されるため、スラッグの末尾にロケールコードを追加しないよう、翻訳モデルのプロンプトに指示を追加しました。

v0.0.6

変更点

  • ロケール別のrevisionsテーブルを廃止し、translations.snapshot_idで紐づけられる重複を排除したen_snapshotsに置き換えました
  • スナップショットには翻訳実行時の英語(EN)ソースが保存され、複数のロケールでen_hashごとの単一スナップショットを共有するようになります
  • scribe historyコマンドおよびStudioにおいて、リビジョンのタイムラインではなく英語(EN)スナップショットのメタデータが表示されるようになりました

削除

  • revisionsテーブル(スキーマv4へのマイグレーション時に自動的に削除されます)
変更履歴 · Scribe