سجل التغييرات

التغييرات المهمة في الكتاب وأدواته. أحدث الإدخالات في الأعلى. تستخدم التواريخ صيغة ISO 8601 (YYYY-MM-DD).

[Unreleased]

Changed

  • الهولندية (nl-nl): ترجمة العناوين الإنجليزية المتبقية وأسماء ملفات المواضيع 9.0 و9.3 و9.4 (bijlagen وcontrolelijsten وsjablonen).
  • الويلزية (cy-001 وcy-gb): مواءمة المصطلحات مع TermCymru: risg (المخاطرة، بدلًا من perygl، مع توافق الجنس النحوي)، وcyfnewidiad (المفاضلة)، وdangosydd rhagfynegi و dangosydd ôl-fynegi (المؤشر الاستباقي والمتأخر، بدلًا من hwyrfrydig)، وcynhwysedd (السعة)، وdosraniad (التوزيع)، وcydberthynas (الارتباط)، وallbwn للناتج في الموضوع 1.3، وcyfradd gadael staff (معدل ترك الموظفين). وأُعيدت تسمية أربعة من أسماء ملفات المواضيع لتطابقها.
  • الموقع: ترقية @lilydesignsystem/svelte-picker-bar إلى 0.2.0، التي تضيف أداة اختيار بحث إلى شريط الرأس؛ وهي ترسل إلى بحث الموقع القائم /?<query>.
  • إضافة scripts/generate-sitemap.mjs، يُشغَّل في نهاية pnpm build، ويكتب sitemap.xml من الصفحات المُعدّة مسبقًا (روابط اللغات المعتمدة فقط، بلا نسخ مكررة للأسماء المستعارة من حرفين) ليعمل سطر Sitemap: في robots.txt.
  • صار AGENTS.md فهرسًا قصيرًا؛ وانتقلت التفاصيل إلى AGENTS/layout.md وstyle.md و locales.md وworkflow.md.
  • مراجعة شاملة للتوثيق: تحديث AGENTS.md وindex.md ونص اللغات المولَّد في README وspec/index.md وspec/locales.md وAGENTS.md وREADME الخاصين بالموقع لتعكس 27 لغة وأسماء أدلة الأقسام لكل لغة والأدوات الجديدة؛ وإضافة CLAUDE.md (مؤشر إلى AGENTS.md)؛ وتصحيح مسارات docs/ القديمة في المهارتين الوكيلتين وجعل skills/ النسخة المعتمدة من .claude/skills/ (تفحصها الاختبارات).
  • إضافة llms.txt وllms.json (فهرس لوكلاء الذكاء الاصطناعي لكل لغة ومواضيعها المخدومة) إلى static/ في الموقع، يولّدهما tools/gen_llms.py (just llms) وتفحصهما الاختبارات.
  • الصفحة الرئيسية للموقع: صارت قائمة “الأجزاء التسعة” ذات المربعات قائمة “المحتويات” متداخلة لكل الأجزاء والمواضيع، وأُزيل قسم “قانون غودهارت، في كل مكان”.
  • أُعيدت صياغة “chapter” إلى “topic” في نثر الكتاب كله في كل لغة (مثل “الموضوع 2.1” و”مواضيع هذا الجزء”)، باستخدام كلمة كل لغة الخاصة بالموضوع (tema وsujet وThema وтема و主題، وهكذا)، وفي المواصفات والنص المولَّد من الأدوات وسلاسل واجهة الموقع. أسماء الملفات وعناوين URL ومفاتيح الأقسام لم تتغير.
  • ترجمة اسم كل دليل قسم تحت locales/: صار chapters/ الآن topics/ (وترجمته في كل لغة أخرى، مثل temas/ و sujets/ وthemen/)، وصار examples/ في es-001 هو ejemplos/. الأسماء تقيم في spec/section-names.json؛ وتقرؤها الأدوات والاختبارات ومزامنة محتوى الموقع من هناك، وعناوين URL في الموقع لم تتغير.

Changed

  • مراجعة اللغتين الويلزيتين (cy-001 وcy-gb، محفوظتان متطابقتين) مقابل قائمة مصطلحات TermCymru لحكومة ويلز: llesiant للرفاه، وcynhyrchiant للإنتاجية، وgwendid/gwendidau للثغرة، وllywodraethiant للحوكمة، وcydberthynas للارتباط، وôl-groniad لـ backlog (التي كانت تُترك بالإنجليزية سابقًا)، وcost a budd للتكلفة والمنفعة، وdeallusrwydd artiffisial (AI) عند أول ذكر للذكاء الاصطناعي في كل موضوع.

Added

  • ترجمة أقسام المقدمة والأمثلة والمساهمة والمشروع (14 ملفاً، إضافة إلى سجل التغييرات والصفحة الرئيسية وجدول المحتويات) إلى هذه اللغة، بأسماء مجلدات مترجمة.
  • إضافة الألمانية (de-001) بوصفها اللغة المترجمة الكاملة رقم 26: كل المواضيع الـ 63 مع ملفات .locale-peer-id المطابقة، متطابقة المحتوى مع de-de. موصولة بالموقع ومخدومة على /de-001/ (الاسم المستعار /de/).
  • إضافة البرتغالية (pt-001) بوصفها اللغة المترجمة الكاملة رقم 25: كل المواضيع الـ 63 مع ملفات .locale-peer-id المطابقة، متطابقة المحتوى مع pt-pt. موصولة بالموقع ومخدومة على /pt-001/ (الاسم المستعار /pt/).
  • إكمال ترجمة يدوية كاملة من الصفر لكل المواضيع الـ 63 إلى الأردية (ur-001، من اليمين إلى اليسار)، اللغة المترجمة الكاملة رقم 24، مع ملفات .locale-peer-id المطابقة. ترجم كل موضوع مباشرة من المصدر الإنجليزي، ويعيد الفهرس (الموضوع 9.7) ربط كل رابط داخلي باسم الملف الأردي، ودليل القسم هو موضوعات. موصولة بالموقع ومخدومة على /ur-001/ (الاسم المستعار /ur/).
  • إكمال ترجمة يدوية كاملة من الصفر لكل المواضيع الـ 63 إلى الإندونيسية (id-001)، مع ملفات .locale-peer-id المطابقة. لم توجد لغة إندونيسية سابقة لبناء الترجمة عليها، فتُرجم كل موضوع مباشرة من المصدر الإنجليزي، ويعيد الفهرس (الموضوع 9.7) ربط كل رابط داخلي باسم الملف الإندونيسي. موصولة بالموقع ومخدومة على /id-001/ (الاسم المستعار /id/).
  • إضافة الروسية (ru-001) والصينية (zh-001) بوصفهما اللغتين المترجمتين الكاملتين رقم 21 و22: كل المواضيع الـ 63 لكل منهما، مع ملفات .locale-peer-id المطابقة، متطابقتا المحتوى مع ru-ru وzh-cn. موصولتان بالموقع ومخدومتان على /ru-001/ و/zh-001/ (الاسمان المستعاران /ru/ و/zh/).
  • إضافة الفرنسية (fr-001) بوصفها اللغة المترجمة الكاملة رقم 20: كل المواضيع الـ 63 مع ملفات .locale-peer-id المطابقة، متطابقة المحتوى مع fr-fr. موصولة بالموقع ومخدومة على /fr-001/ (الاسم المستعار /fr/).
  • إضافة البنغالية (bn-001) بوصفها اللغة المترجمة الكاملة رقم 19: كل المواضيع الـ 63 مع ملفات .locale-peer-id المطابقة، متطابقة المحتوى مع bn-bd. موصولة بالموقع ومخدومة على /bn-001/ (الاسم المستعار /bn/).
  • إضافة العربية (ar-001) بوصفها اللغة المترجمة الكاملة رقم 18: كل المواضيع الـ 63 مع ملفات .locale-peer-id المطابقة، متطابقة المحتوى مع ar-eg. موصولة بالموقع ومخدومة على /ar-001/ (الاسم المستعار /ar/).
  • إضافة الويلزية، بريطانيا العظمى (cy-gb) بوصفها اللغة المترجمة الكاملة رقم 17: كل المواضيع الـ 63 مع ملفات .locale-peer-id المطابقة، متطابقة المحتوى مع cy-001 (العلاقة نفسها بين hi-id وhi-001). موصولة بـ SERVED_LOCALE_CODES في الموقع ومخدومة على /cy-gb/.
  • إكمال ترجمة يدوية كاملة من الصفر لكل المواضيع الـ 63 إلى الهولندية، هولندا (nl-nl)، مع ملفات .locale-peer-id المطابقة ونجاح just test. لم توجد لغة هولندية سابقة لبناء الترجمة عليها، فتُرجم كل موضوع مباشرة من المصدر الإنجليزي. ويعيد الفهرس (الموضوع 9.7) ربط كل رابط موضوع داخلي باسم الملف الهولندي، على نهج ar-eg وbn-bd وko-kr و es-es وpt-pt وja-jp وru-ru وfr-fr وsv-se. غير موصولة بالموقع بعد.
  • إكمال ترجمة يدوية كاملة من الصفر لكل المواضيع الـ 63 إلى السويدية، السويد (sv-se)، مع ملفات .locale-peer-id المطابقة ونجاح just test. لم توجد لغة سويدية سابقة لبناء الترجمة عليها، فتُرجم كل موضوع مباشرة من المصدر الإنجليزي. ويعيد الفهرس (الموضوع 9.7) ربط كل رابط موضوع داخلي باسم الملف السويدي، على نهج ar-eg وbn-bd وko-kr و es-es وpt-pt وja-jp وru-ru وfr-fr. غير موصولة بالموقع بعد.
  • إكمال ترجمة يدوية كاملة من الصفر لكل المواضيع الـ 63 إلى الفرنسية، فرنسا (fr-fr)، مع ملفات .locale-peer-id المطابقة ونجاح just test. لم توجد لغة فرنسية سابقة لبناء الترجمة عليها، فتُرجم كل موضوع مباشرة من المصدر الإنجليزي. ويعيد الفهرس (الموضوع 9.7) ربط كل رابط موضوع داخلي باسم الملف الفرنسي، على نهج ar-eg وbn-bd وko-kr و es-es وpt-pt وja-jp وru-ru. غير موصولة بالموقع بعد.
  • إكمال ترجمة يدوية كاملة من الصفر لكل المواضيع الـ 63 إلى الروسية، روسيا (ru-ru)، مع ملفات .locale-peer-id المطابقة ونجاح just test. لم توجد لغة روسية سابقة لبناء الترجمة عليها، فتُرجم كل موضوع مباشرة من المصدر الإنجليزي. ويعيد الفهرس (الموضوع 9.7) ربط كل رابط موضوع داخلي باسم الملف الروسي، على نهج ar-eg وbn-bd وko-kr و es-es وpt-pt وja-jp. غير موصولة بالموقع بعد.
  • إكمال ترجمة يدوية كاملة من الصفر لكل المواضيع الـ 63 إلى اليابانية، اليابان (ja-jp)، مع ملفات .locale-peer-id المطابقة ونجاح just test. لم توجد لغة يابانية سابقة لبناء الترجمة عليها، فتُرجم كل موضوع مباشرة من المصدر الإنجليزي. ويعيد الفهرس (الموضوع 9.7) ربط كل رابط موضوع داخلي باسم الملف الياباني، على نهج ar-eg وbn-bd وko-kr و es-es وpt-pt. غير موصولة بالموقع بعد.
  • إكمال ترجمة يدوية كاملة من الصفر لكل المواضيع الـ 63 إلى البرتغالية، البرتغال (pt-pt)، مع ملفات .locale-peer-id المطابقة ونجاح just test. لم توجد لغة برتغالية سابقة لبناء الترجمة عليها، فتُرجم كل موضوع مباشرة من المصدر الإنجليزي. ويعيد الفهرس (الموضوع 9.7) ربط كل رابط موضوع داخلي باسم الملف البرتغالي، على نهج ar-eg وbn-bd و ko-kr وes-es. غير موصولة بالموقع بعد.
  • إضافة الإسبانية، إسبانيا (es-es) بوصفها لغة مترجمة كاملة، كل المواضيع الـ 63، بالبدء من نسخة الترجمة الإسبانية القائمة (es-001) (التي تبيّن عند الفحص أنها محايدة نحويًا أصلًا، ومفرداتها تميل في معظمها إلى إسبانيا) ثم تطبيق مراجعة مصطلحية مستهدفة على الاستخدامات الأقلية المتبقية، وأبرزها “incidente” إلى “incidencia” في مجال مقاييس الحوادث لهذا الكتاب، مع إصلاحات توافق الجنس المقابلة في كل مكان. غير موصولة بالموقع بعد.
  • إكمال ترجمة يدوية كاملة لكل المواضيع الـ 63 إلى الكورية، كوريا (ko-kr)، مع ملفات .locale-peer-id المطابقة ونجاح just test. ويعيد الفهرس (الموضوع 9.7) ربط كل رابط موضوع داخلي باسم الملف الكوري، على نهج ar-eg و bn-bd. غير موصولة بالموقع بعد.
  • إضافة الهندية، الهند (hi-id) بوصفها لغة مترجمة كاملة، كل المواضيع الـ 63، بنسخ الترجمة الهندية القائمة (hi-001) حرفيًا تحت رمز اللغة الموسوم بالبلد، إذ ليس للهندية المعيارية صيغة خاصة بالهند لترجمتها يدويًا على حدة. غير موصولة بالموقع بعد.
  • إكمال ترجمة يدوية كاملة لكل المواضيع الـ 63 إلى البنغالية، بنغلاديش (bn-bd)، مع ملفات .locale-peer-id المطابقة ونجاح just test. غير موصولة بالموقع بعد.
  • إكمال ترجمة يدوية كاملة لكل المواضيع الـ 63 إلى العربية، مصر (ar-eg)، مع ملفات .locale-peer-id المطابقة ونجاح just test. غير موصولة بالموقع بعد.
  • إكمال ترجمة يدوية كاملة لكل المواضيع الـ 63 إلى الألمانية، ألمانيا (de-de)، مع ملفات .locale-peer-id المطابقة ونجاح just test. غير موصولة بالموقع بعد.
  • إكمال ترجمات يدوية كاملة لكل المواضيع الـ 63 إلى ثلاث لغات: الويلزية (cy-001) والصينية (zh-cn) والهندية (hi-001)، لكل منها ملفات .locale-peer-id المطابقة ونجاح just test.
  • إضافة لغتين مترجمتين مخططتين أخريين، الويلزية - بريطانيا العظمى (cy-gb) والصينية (zh-001)، إلى spec/locales-for-global-sharing-with-svelte/locales.tsv و spec/locales.md (ثلاث عشرة لغة مخططة الآن، بعد أن كانت إحدى عشرة)، وحسم اسم zh-cn الذاتي الذي كان غير محسوم بـ 中文. واكتسبت LOCALE_LABELS في الموقع إدخالات مطابقة (cy-gb: “Cymraeg (Prydain Fawr)”، وzh-001: “中文”، وzh-cn: “中文 (中国)”). لا تزال بنية تحتية فقط: لا لغة منها لها دليل locales/<code>/ ولا أي محتوى مترجم بعد.
  • نشر الكتاب بأربع لغات تحت locales/: en-gb-oxendict (الإنجليزية البريطانية، الإملاء الأكسفوردي؛ المصدر المكتوب يدويًا)، وen-001 (الإنجليزية الدولية)، وen-gb (الإنجليزية البريطانية السائدة)، وen-us (الإنجليزية الأمريكية). وتُشتق en-001 وen-gb وen-us آليًا من en-gb-oxendict بواسطة tools/localize.py الجديدة؛ انظر spec/locales.md. لم يعد docs/ موجودًا؛ وكل إحالة إليه في spec/ وAGENTS.md وtests/validate.py وtools/gen_nav.py و tools/stats.py تشير الآن إلى locales/<locale>/.
  • إضافة مهارتين لـ Claude Code، software-engineering-metrics-skill (للقراء الذين يطبقون إرشادات الكتاب على فريقهم) و software-engineering-metrics-maintainer-skill (للمساهمين الذين يضيفون المواضيع أو يحررونها)، تحت skills/ ومنسوختان في .claude/skills/.
  • نقل مصدر الموقع المنشور إلى هذا المستودع باسم software-engineering-metrics.github.io/، وكان مستودعًا منفصلًا سابقًا. وهو يقرأ الآن locales/ مباشرة من جذر المستودع بدلًا من نسخة شقيقة. ويتحقق .github/workflows/deploy.yml في الجذر من أن الموقع لا يزال يُبنى عند كل دفع إلى main، ثم يرسل repository_dispatch إلى مستودع software-engineering-metrics.github.io (الذي أُبقي قشرة نشر رفيعة، لأن GitHub Pages لا يخدم ذلك النطاق العاري إلا من مستودع يحمل ذلك الاسم تمامًا)، فيسحب هذا المستودع الأحادي، ويبني الموقع، وينشره.
  • إضافة بنية تحتية للغات المترجمة (لا المشتقة بالإملاء فحسب)، وفق المواصفة الفرعية الجديدة spec/locales-for-global-sharing-with-svelte/: يسند tools/gen_locale_peer_ids.py لكل ملف محتوى ملف .locale-peer-id جانبيًا، متطابقًا عبر اللغات، تستطيع لغة مترجمة مستقبلية (بأسماء ملفاتها الأصلية بحروفها) استخدامه لحل “هذه الصفحة، في اللغة X” بدلًا من المطابقة على اسم الملف؛ ويفحص tests/validate.py أن كل ملف جانبي موجود ومطابق. وتوثق spec/locales.md عشر لغات مترجمة مخططة (العربية والبنغالية والويلزية والإسبانية والفرنسية والهندية والإندونيسية والبرتغالية والروسية والأردية والصينية - الصين)؛ ولا يوجد دليل locales/<code>/ لأي منها بعد، إذ لم تُترجم بعد. وفي الموقع، اكتسب scripts/locales.mjs الدالتين LOCALE_LABELS/localeLabel() (اسم عرض لكل لغة مخططة، جاهز قبل التوجيه) و sortedLocaleEntries() (ترتيب الفرز الذي ينبغي أن تستخدمه قائمة لغات مستقبلية)، واستخرج src/lib/i18n.js سلاسل واجهة الموقع (التنقل والشريط الجانبي والترقيم والمنتقي والتذييل ورابط التخطي) التي كان كل مكوّن .svelte يثبتها سابقًا بالإنجليزية، ومرّرها عبر ui(locale)، مع الرجوع إلى الإنجليزية لأي لغة بلا ترجمات خاصة بها.
  • استُبدل عنصر التحكم في الرأس المبني يدويًا للغة فقط في الموقع بـ @lilydesignsystem/svelte-picker-bar من Lily Design System: منتقي سمة حقيقي (فاتح/داكن، عبر static/assets/themes/{light,dark}.css الجديدين)، ومنتقي لغة حقيقي (موصول بتوجيه الموقع القائم على URL بدلًا من سلوكه الافتراضي الذي يقتصر على lang/dir)، ومنتقي حجم النص (سلم Lily ذو الخطوات السبع)، ومنتقي مشاركة (البريد الإلكتروني وMastodon ونسخ الرابط). وثُبّت @lilydesignsystem/svelte-{theme,locale,text-size,share}-picker على ^0.1.2 و@lilydesignsystem/svelte-headless على ^0.2.0 عبر تجاوزات pnpm-workspace.yaml، لتجاوز خلل منشور حقيقي في نطاقات اعتمادات svelte-picker-bar 0.1.0 نفسها (انظر CHANGELOG.md لكل منتقٍ، “0.1.2”، وAGENTS.md الخاص بهذا الموقع).
  • أُزيل صف الإحصاءات من الصفحة الرئيسية (الأجزاء/المواضيع/“Free Always”) وقسم “How to read it” فيها، واستُبدلت شبكة بطاقات “Browse the nine parts” بقائمة نقطية بسيطة.

Changed

  • إضافة scripts/generate-sitemap.mjs، يُشغَّل في نهاية pnpm build، ويكتب sitemap.xml من الصفحات المُعدّة مسبقًا (روابط اللغات المعتمدة فقط، بلا نسخ مكررة للأسماء المستعارة من حرفين) ليعمل سطر Sitemap: في robots.txt.
  • إضافة الموضوع 2.8، مقاييس سلسلة القيمة في Lean (زمن التقدّم، وزمن المعالجة، وزمن الدورة، ونسبة المكتمل والدقيق، وزمن takt من خرائط سلسلة القيمة الكلاسيكية في Lean، إضافة إلى حساب العائد الإجمالي للإنتاجية)، بعد نظرية الطوابير. وانتقلت مقاييس طلبات الدمج ومراجعة الكود من 2.8 إلى 2.9، وانتقل موضوع مقاييس DORA من 2.9 إلى 2.10. وحُدّثت كل إحالة متأثرة في أنحاء الكتاب.
  • أُعيدت تسمية الجزء 2 من “Delivery and Flow Metrics” إلى “Flow Metrics” وأُعيد تنظيمه حول إطار التدفق لـ Mik Kersten. وأُضيفت أربعة مواضيع جديدة: 2.1 إطار التدفق، و2.2 عناصر التدفق (الميزات والعيوب والمخاطر والدين)، و2.3 سرعة التدفق وتوزيع التدفق، و2.4 زمن التدفق وحمل التدفق. ودُمجت مواضيع مقاييس DORA الأربعة المنفردة (تكرار النشر، وزمن التقدّم، ومعدل فشل التغيير، وزمن التعافي) في موضوع مرجعي واحد، 2.9 إطار مقاييس DORA، نُقل إلى نهاية الجزء. وأُعيد ترقيم كفاءة التدفق والعمل قيد التنفيذ إلى 2.5، وأُعيدت تسمية وترقيم موضوع نظرية الطوابير (كان 2.9) إلى 2.7 نظرية الطوابير. ويحتفظ زمن الدورة (2.6) ومقاييس طلبات الدمج ومراجعة الكود (2.8) بأرقامها. وحُدّثت كل إحالة في أنحاء الكتاب، والمسرد، ومرجع الصيغ، والتقييم الذاتي للنضج، والمقدمات لتطابق ذلك.

Added

  • الإصدار الأول: 45 موضوعًا جوهريًا في 8 أجزاء، إضافة إلى المقدمات وملحق من 7 مواضيع (الجزء 9)، تغطي إطاري DORA وSPACE، ومقاييس الكود والجودة، ومقاييس المنتج والأعمال، ومقاييس الموثوقية والأمن، وأثر الذكاء الاصطناعي التوليدي على مقاييس الهندسة.
  • بنية المستودع التحتية المنسوخة من المشروع الشقيق software-engineering-guide: spec/ قائم على المواصفات (الفهرس والبنية والاصطلاحات والإملاء الأكسفوردي وخارطة الطريق)، وحزمة تحقق في tests/validate.py، ومولّد تنقل في tools/gen_nav.py، وjustfile، وAGENTS.md مع أدلة المساهمين تحت docs/contributing/، وCONTRIBUTING.md، وهذا السجل.
  • spec/structure.md، بيان المواضيع المعتمد الذي تفحص الاختبارات الملفات مقابله.
  • مثالان عمليان في docs/examples/: ميثاق مقاييس مكتمل ومواصفات لوحة معلومات.

التاريخ

بُني الكتاب من المواصفات إلى الخارج: أُعلنت البنية ذات الأجزاء التسعة في spec/structure.md أولًا، ثم أُلّف كل موضوع وفق القالب المشترك في docs/contributing/chapter-template.md، مع فرض tests/validate.py للبنية والأسلوب طوال الوقت.

اصطلاحات هذا الملف

  • جمّع التغييرات تحت Added أو Changed أو Fixed أو Removed أو Deprecated.
  • اجعل الإدخالات قصيرة ومحددة. سطر واحد لكل منها حيثما أمكن.
  • لا تستخدم الشرطات الطويلة هنا أيضًا؛ فالاختبارات تفحص هذا الملف كذلك.