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.

الإضافات

  • الرموز المضمنة في النص: يمكنك الآن تضمين روابط مترجمة لمستندات أخرى، مسارات الأصول، متغيرات البيانات الوصفية (frontmatter)، والنصوص التي يجب ألا تُترجم مباشرة ضمن نصوص MDX. يؤدي تعديل أي رمز إلى تحديثه فوراً في جميع اللغات دون الحاجة لإعادة الترجمة.
  • حقول قوالب للأصول باستخدام field.asset(): تتيح مسارات ويب مقيدة، والتحقق من وجود الملفات، وتحويلها إلى روابط عامة عند القراءة.
  • أنواع محتوى بدون نص رئيسي: يمكن لأي نوع محتوى الآن الاستغناء عن نص MDX بالكامل، ويتم تحديد قابليته للترجمة بناءً على المخطط (schema) الخاص به.
  • أمر scribe delete: يتيح حذف أي مُدخل مع جميع أصوله وترجماته ونسخه الاحتياطية، ويدعم تحديث المراجع التلقائي، بالإضافة إلى خياري --dry-run و --yes.
  • متصفح المحتوى في Studio: يتضمن قوائم مستندات مخصصة لكل نوع، بحثاً شاملاً، تلميحات تحقق مضمنة، ومعاينة للنصوص تحتوي على روابط علاقات قابلة للنقر وعرضاً للأصول، بالإضافة إلى إمكانية التنقل باستخدام مفاتيح الأسهم.

التعديلات

  • تغيير جذري: تتطلب رموز العلاقات الآن إضافة لاحقة واضحة لتحديد النمط، وهي إما :href أو :slug.
  • تمت إعادة صياغة موجِّه الترجمة المدمج للتركيز على الترجمة الإبداعية (transcreation): يقوم النموذج الآن بكتابة المحتوى بأسلوب يحاكي الكُتّاب المحليين، حيث يعيد صياغة التعابير والتلاعب اللفظي بأسلوب طبيعي بدلاً من ترجمتها حرفياً، مع الالتزام التام بقواعد الطباعة المحلية.

الإصلاحات

  • يقوم أمر scribe translate --dry-run الآن بعرض التكلفة وعدد الرموز التقديرية الحقيقية مع تطبيق خصم الدفعات، بدلاً من إظهار التكلفة كـ 0 دولار.

v0.0.18

يغطي الإصدارات من 0.0.13 إلى 0.0.18.

الإضافات

  • يعمل أمر scribe translate الآن عبر Gemini Batch API كخيار افتراضي، مما يقلل تكلفة الرموز (tokens) بنسبة 50%. يمكن استئناف العمليات: يمكنك الخروج أثناء استطلاع الحالة وتشغيل scribe translate مجدداً لاستكمال المهام المعلقة. استخدم --batch أو --direct لاختيار الوضع صراحةً.
  • سلاسل الاسترجاع التلقائي للغات (locale fallback): إذا لم يتوفر ملف ترجمة للغة إقليمية، يتم تقديم لغتها الأساسية قبل اللجوء للغة الإنجليزية (مثلاً fr-CA تعود إلى fr). هذه الميزة مفعلة افتراضياً، ويمكن تعطيلها عبر localeFallbacks: false.
  • تتم إعادة محاولة الترجمات الفاشلة مرة واحدة تلقائياً في نهاية العملية، مع إرسال أخطاء التحقق إلى النموذج ليتمكن من تصحيحها.
  • يقبل أمر scribe translate --type إدخال معرفات أنواع المحتوى مفصولة بفواصل.

التعديلات

  • تشترك أوامر الترجمة في بادئة إنجليزية متطابقة لجميع اللغات المستهدفة، مما يتيح الاستفادة من التخزين المؤقت للسياق في Gemini لتقليل تكلفة الرموز المدخلة المتكررة. تُحسب رموز التفكير (Thinking tokens) الآن ضمن التكلفة المعروضة.

الإصلاحات

  • إعادة المحاولة تلقائياً عند حدوث أخطاء Gemini العابرة مع زيادة وقت الانتظار التدريجي (backoff).
  • إزالة الحقول المتداخلة الوهمية في مخرجات النموذج بدلاً من التسبب في فشل العملية.
  • يتم دائماً إلحاق اللغة المستهدفة في نهاية أوامر الترجمة، حتى عند تخصيص 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 المخصصة لكل نوع محتوى محل aliases وredirect_to في الـ frontmatter، لتوفر إمكانية إعادة التوجيه لنفس النوع أو بين الأنواع المختلفة أو للروابط الخارجية، مع التوسيع التلقائي للروابط المترجمة.
  • تمت إضافة إعدادات localeRouting وcreateUrlBuilder() لإنشاء روابط اللغات بناءً على الإعدادات.
  • تمت إضافة listRoutableTypes() وisRoutableType للبحث عن أنواع المحتوى التي تحتوي على مسارات عامة.
  • تم تفعيل التحقق من صحة MDX في وقت الترجمة وفي أمر scribe validate لاكتشاف المحتوى الذي قد يفشل في مرحلة العرض المسبق (prerender).

إصلاحات

  • لم يعد يتم رفض عمليات إعادة التوجيه بين الأنواع المختلفة التي تشترك في نفس الرابط الإنجليزي في from وtoSlug باعتبارها إعادة توجيه ذاتية.

محذوفات

  • تمت إزالة aliases وredirect_to من الـ frontmatter (استخدم _redirects.json)، بالإضافة إلى إزالة slugPreserveTerms (استخدم translate.context / translate.rules).

v0.0.7

إصلاحات

  • الروابط (slugs) المترجمة التي كانت تنتهي عن طريق الخطأ برمز اللغة (مثل -fr أو -he أو -ar) يتم الآن إزالتها تلقائيًا أثناء تشغيل scribe translate، مما يحافظ على نظافة الروابط
  • لم يعد أمر scribe validate يتسبب في فشل عملية البناء عندما ينتهي الرابط المترجم برمز اللغة، بل أصبح يعرض تحذيرًا بدلاً من خطأ

تحسينات

  • أصبحت الروابط (slugs) تُترجم فعليًا إلى اللغة المستهدفة بدلاً من بقائها باللغة الإنجليزية: يتم الآن إبلاغ المترجم باسم اللغة المستهدفة ليقوم ببناء الرابط بناءً على العنوان المترجم، مع كتابة اللغات التي لا تستخدم الحروف اللاتينية بأحرف لاتينية

إضافات

  • تحتوي تعليمات المترجم الآن على توجيه للنموذج بعدم إلحاق رموز اللغات بالروابط، حيث يتم التعامل مع توجيه اللغات من خلال بادئة مسار الرابط

v0.0.6

التغييرات

  • استبدال جدول revisions الخاص بكل لغة بجدول en_snapshots الموحد (بدون تكرارات) والمرتبط عبر translations.snapshot_id
  • تحفظ اللقطات (Snapshots) المصدر الإنجليزي وقت الترجمة؛ حيث تتشارك عدة لغات في لقطة واحدة لكل en_hash
  • يعرض أمر scribe history ولوحة Studio البيانات الوصفية للقطة الإنجليزية بدلاً من المخطط الزمني للمراجعات

المحذوفات

  • جدول revisions (يُحذف تلقائيًا عند الترقية إلى schema v4)
سجل التغييرات · Scribe