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.

Добавлено

  • Встроенные токены для текста: вставляйте локализованные ссылки на другие документы, URL ассетов, переменные frontmatter и непереводимые строки прямо в MDX. Изменение токена моментально обновляет все локали без необходимости повторного перевода.
  • Шаблонные поля ассетов через field.asset(): строгие веб-пути, проверка существования файлов и преобразование в публичные URL при чтении.
  • Типы контента без основного текста: тип может полностью исключать тело MDX, а правила перевода определяются на основе схемы.
  • scribe delete: удаляет запись вместе с ее ассетами, переводами и снапшотами. Поддерживает каскадное удаление связей, а также флаги --dry-run и --yes.
  • Браузер контента в Studio: списки документов по типам, глобальный поиск, всплывающие подсказки валидации, предпросмотр текста с кликабельными ссылками на связанные записи и отрендеренными ассетами, а также навигация стрелками на клавиатуре.

Изменено

  • Обратно несовместимое изменение: токены связей теперь требуют явного указания суффикса режима :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-CA откатывается к fr). Включено по умолчанию. Для отключения используйте настройку localeFallbacks: false
  • Неудачные переводы автоматически повторяются один раз в конце запуска. Ошибки валидации передаются обратно в модель для их исправления
  • Команда scribe translate --type принимает идентификаторы типов контента через запятую

Изменено

  • Промпты для перевода используют одинаковый английский префикс для всех целевых локалей. Благодаря этому кэширование контекста в Gemini дает скидку на повторяющиеся входные токены. Токены обдумывания (thinking tokens) теперь учитываются в итоговой стоимости

Исправлено

  • Временные ошибки Gemini автоматически повторяются с экспоненциальной задержкой
  • Ошибочные вложенные поля (галлюцинации модели) в выводе теперь отсекаются и больше не вызывают сбой всего запуска
  • Целевая локаль теперь всегда добавляется к промптам (даже при использовании кастомного translate.prompt)
  • Команда scribe translate --force теперь переводит заново и свежий контент

v0.0.12

Исправлено

  • Перевод контента с блоками кода Markdown больше не приводит к ошибке парсинга JSON. Теперь блоки кода в переведенных текстах сохраняются корректно.

Изменено

  • Команда scribe validate теперь проверяет MDX не только в сохраненных переводах, но и в исходных текстах (EN). Это позволяет отлавливать невалидный MDX прямо в оригинале.

v0.0.11

Охватывает версии с 0.0.8 по 0.0.11.

Добавлено

  • Файлы _redirects.json для каждого типа контента заменяют параметры aliases и redirect_to во frontmatter. Теперь доступны перенаправления внутри одного типа, между разными типами и на внешние ресурсы, а локализованные URL подставляются автоматически.
  • Настройка localeRouting и функция createUrlBuilder() для генерации локализованных URL на основе конфигурации.
  • Функции listRoutableTypes() и isRoutableType для поиска типов контента с публичными маршрутами.
  • Валидация MDX во время перевода и при выполнении scribe validate для перехвата ошибок в контенте, которые могли бы сломать пререндер.

Исправлено

  • Перенаправления между разными типами контента с одинаковыми английскими URL в параметрах from и toSlug больше не отклоняются как зацикленные.

Удалено

  • Параметры frontmatter aliases и redirect_to (теперь используйте _redirects.json), а также параметр slugPreserveTerms (используйте translate.context и translate.rules).

v0.0.7

Исправлено

  • Локализованные слаги (URL), которые случайно заканчивались на код языка (например, -fr, -he, -ar), теперь автоматически очищаются во время выполнения scribe translate, благодаря чему URL-адреса остаются аккуратными.
  • Команда scribe validate больше не прерывает сборку, если существующий локализованный слаг заканчивается на код языка; теперь вместо ошибки выводится предупреждение.

Улучшено

  • Локализованные слаги теперь действительно переводятся на целевой язык, а не остаются на английском: переводчику передается название целевого языка и дается указание формировать слаг на основе переведенного заголовка, при этом тексты на нелатинских алфавитах транслитерируются латиницей.

Добавлено

  • Промпт для переводчика теперь содержит указание не добавлять коды языков в слаги, поскольку маршрутизация по языку обрабатывается префиксом URL-адреса.

v0.0.6

Изменено

  • Таблица revisions, ранее создаваемая для каждой локали, заменена на дедуплицированную таблицу en_snapshots, связанную через translations.snapshot_id
  • Снапшоты теперь сохраняют исходный EN-контент на момент перевода; множество локалей могут использовать один общий снапшот для каждого en_hash
  • Команда scribe history и Studio теперь отображают метаданные EN-снапшотов вместо таймлайна ревизий

Удалено

  • Таблица revisions (удаляется автоматически при миграции на схему v4)
История изменений · Scribe