فشل فحص Minimum_discourse_version في الإصدارات الأحدث (مثل 2026.8.0-latest.1)

تتم تعطيل السمات والمكوّنات الموجودة على قناة latest الافتراضية تلقائيًا، ويتعيّن على مُنشئي السمات استخدام حلول بديلة غير بديهية.

واجهت هذه المشكلة هنا: Featured Topics - #76 by cogdog من غير البديهي على الإطلاق أن تحتاج جميع الإصدارات الدنيا إلى استخدام صيغة مثل xxx.x.999 أدنى من الإصدار الحالي الذي يجب أن يتطابق معه فعليًا.

المنصة

  • Discourse مُضيف ذاتيًا على فرع latest
  • إصدار Discourse: 2026.8.0-latest.1
  • يؤثر على: إنشاء السمات/مكوّنات السمة (بيانات about.json) وفحوصات توافق السمة

الوصف

النتيجة الفعلية:
تُعتبر السمة التي تحتوي على "minimum_discourse_version": "2026.8.0" في ملف about.json غير متوافقة وتُعطَّل تلقائيًا عندما يعمل الموقع على الإصدار -latest وهو 2026.8.0-latest.1. الطريقة الوحيدة للحفاظ على تفعيل السمة هي ضبط إصدار أدنى مثل "minimum_discourse_version": "2026.7.999".

تحدث مشكلة مشابهة عند استيراد سمة تُضبط فيها minimum_discourse_version على قيمة بنمط -latest (مثل 2025.12.0-latest)، حيث تُرفض كقيمة غير صالحة — راجع التقرير الموجود مسبقًا: 主题配置文件中minimum_discourse_version不支持日期化版本格式

النتيجة المتوقعة:
بما أن 2026.8.0-latest.1 هو إصدار -latest من خط إصدارات 2026.8.0، فيجب أن يستوفي الحد الأدنى المطلوب وهو 2026.8.0. الإصدارات الأخيرة أحدث من الإصدار المُطلق المقابل، وليس أقدم.

لكن إصدار -latest هو إصدار يسبق إصدار تلك النسخة. هذا هو ما استندت إليه إدخالات التوافق منذ سنوات.

الطريقة التي تعاملت بها مع <2026.7.999 تبدو غير بديهية، لكن لماذا لم تحدد <2026.8.0-latest؟

إذا كنت بحاجة إلى commit محدد أُضيف أثناء تطوير 2026.8، فأنا متأكد من أن كل من يستخدم إصدار 2026.8 لديه ذلك، لكنني لست متأكدًا من أن كل من يستخدم 2026.8-latest لديه ذلك. ربما كان آخر تحديث لهم قبل إضافة الـ commit المحدد. لذا، إذا كان 2026.8 يشمل 2026.8-latest افتراضيًا، فقد تتعطل بعض الأمور. أشعر أنه من الأفضل أن ينتظر المسؤول بضع أسابيع قبل أن يتمكن من استخدام/تحديث السمة، بدلاً من المخاطرة بتعطل الأمور بسبب غياب الـ commit المطلوب.

4 إعجابات

نعم، هذا صحيح - 2026.8.0-latest هو إصدار أدنى من 2026.8.0. يمكنك التحقق من ذلك باستخدام محلل Semver. على سبيل المثال، في ruby:

irb(main):001> Gem::Version.new("2026.8.0-latest") < Gem::Version.new("2026.8.0")
=> true

يجب علينا إصلاح ذلك. يجب أن يكون بإمكان مؤلفي السمات (Themes) القيام بما يلي:

minimumDiscourseVersion: "2026.8.0-latest"

على الرغم من أنه، كما أشار @moin، قد يكون ذلك محفوفًا بالمخاطر لأن -latest يشير إلى عدد كبير من الالتزامات (commits) المختلفة. لذا، في العالم المثالي، يجب أن ننتظر حتى الإصدار التالي قبل الاعتماد على ميزة جديدة في النواة (core) من سمة أو إضافة (plugin).

إعجابَين (2)

أشعر أنه من الصعب فهمه بعض الشيء، وأحتاج إلى استخدام نهج x.999 أيضًا في ملف التوافق. على سبيل المثال، هذا هو الشكل الحالي في مكوّني:

2026.7.999: 93b5b22
2026.4.999: 0321b6d

لأنه على ما يبدو تم تضمين ميزة في الإصدار 2026.5.0، وللتوافق معها أحتاج إلى استخدام 2026.4.999؟

إعجاب واحد (1)

لم أستخدم ذلك مؤخرًا، لكن الأمثلة من فريق Discourse عادةً ما كانت تستخدم الإصدار الحالي مع لاحقة -latest، وليس الإصدار السابق مع .999

إعجاب واحد (1)

في الماضي، نعم، لذا لا يزال هناك بعض القوالب/الإضافات القديمة تقوم بذلك (وأظن أن البشر/الروبوتات يستمرون في نسخ النمط القديم).

لكن في أيامنا هذه، يمكنك استخدام مؤشرات < أو > على الجانب الأيسر من ملف التوافق. لذا يمكنك القيام بما يلي:

<2026.7.0-latest: 93b5b22

ولكن أيضاً، نحاول تجنب استخدام ملف التوافق لأي شيء في أيامنا هذه. بدلاً من ذلك، نعتمد على فروع d-compat/* التلقائية للتعامل مع التوافق مع الإصدارات السابقة.

التوثيق لكل من الأنماط القديمة والجديدة موجود هنا:

إعجابَين (2)
4 إعجابات

تم إغلاق هذا الموضوع تلقائيًا بعد 44 ساعة. لم يعد من المسموح بإضافة ردود جديدة.