JTech Tools: الإضافة التي تقف وراء منتديات JTech (الهمسات، طلبات الرسائل الخاصة، Dumbcourse، جسر تيليجرام، وسيمتنا)

:information_source: ملخص يعمل كل شيء في JTech Forums فوق Discourse، ضمن إضافة واحدة: أدوات المشرفين، الرسائل الخفية لأشخاص محددين، REQ-PM، Dumbcourse، جسر تيليجرام، قوائم خيوط البيع، البحث الذكي، النوافذ المنبثقة، وثيمنا الكامل. لكل جزء مفتاح تشغيل/إيقاف خاص به.
:hammer_and_wrench: المستودع GitHub - TripleU613/JtechTools: The plugin behind JTech Forums: moderator tools and whispers, REQ-PM, Dumbcourse for flip phones, a Telegram bridge, sale-thread listings, smart search, pop-ups and the JTech theme. Every module has its own switch. · GitHub
:question: دليل التثبيت كيفية تثبيت الإضافات في Discourse

مرحباً بالجميع،

بعض هذه الأمور كانت قد طُرحت سابقاً على Meta بشكل متفرق. حصلت Dumbcourse على موضوعها الخاص في فبراير، ونشر @ars18 Mini-mod في أبريل، وفي أغسطس كتبت رداً طويلاً في خيط Dumbcourse أدرجت فيه كل ما أضفناه في إضافة واحدة. كان يستحق أفضل من أن يُدفن في الرد رقم 38، لذا هذه هي النسخة الرسمية. مع الكثير من الصور هذه المرة.

JTech هو منتدى تقني، يركز بشكل رئيسي على الهواتف، والهواتف القابلة للطي، والفلاتر، وصور النظام (ROMs)، وكثير من أعضائنا يستخدمون الهواتف ذات الأزرار (Keypad) عمداً. كل أداة هنا وُجدت لأن منتدانا الخاص احتاج إليها.

“لماذا هذه إضافة واحدة؟”

طرح merefield هذا السؤال في خيط Dumbcourse، وهو سؤال منطقي، لذا إليك الإجابة مقدماً.

  • كل وحدة لها مفتاح تشغيل/إيقاف خاص بها. بعضها مفعّل افتراضياً (Dumbcourse، REQ-PM، أدوات المشرفين)، بينما ينتظر البعض الآخر (Mini-mod، البحث الذكي، Disteleplus، Another SMTP)، وبعض الوحدات “المفعّلة” لا تفعل شيئاً حتى توجهها نحو فئة أو موضوع. تصفح التبويبات بعد التثبيت وأغلق ما لا تريده.
  • jtech_enabled يوقف كل شيء دفعة واحدة، بما في ذلك تغييرات الصلاحيات والمهام في الخلفية. @satonotdead، لقد سألت في موضوع Mini-mod لماذا استمر Mini-mod في العمل بعد إيقاف الحزمة. كنت محقاً، لقد استمر: الكود المُدمج في النواة والمهام المجدولة كانت تفحص مفتاحها الخاص فقط. تم إصلاح ذلك منذ 24 سبتمبر. الآن تفحص كل وحدة المفتاح الرئيسي أيضاً.
  • إيقاف الأشياء لا يسرب أي شيء أبداً. على سبيل المثال، إيقاف الرسائل الخفية لا يجعل رسالة خفية موجودة علنية.
  • تُحفظ كل وحدة منفصلة داخلياً: ملفها الخاص في sub_plugins/، تبويب إعداداتها الخاص، وصفحة مستنداتها الخاصة. إذا كنت تريد شيئاً واحداً فقط، قم بفصله (Fork) واستخراجها، لا تتردد. مستودع Mini-mod المستقل القديم مؤرشف، وهذا هو المكان الذي يُصان فيه الآن.

ما بداخله

كل جزء مطوي، لذا افتح ما يبدو مثيراً للاهتمام. كل صورة هي شاشة حقيقية من منتدانا ما لم يُذكر خلاف ذلك. المعلومات الخاصة (دردشة الموظفين، بيانات الاتصال، ملاحظات المشرفين) مُموّهة.

Dumbcourse: المنتدى بأكمله على هاتف قابل للطي

المنتدى بأكمله في /dumb، للهواتف القابلة للطي، ونظام KaiOS، ومتصفحات أندرويد القديمة التي لا تستطيع تشغيل الموقع العادي. يُدار بواسطة أزرار الاتجاهات (D-pad) ولوحة المفاتيح مثل تطبيقات الهاتف الخاصة، ويعمل أيضاً باللمس والفأرة.

  • القراءة: الأحدث، الجديد، غير المقروء، الأعلى، الساخن، الفئات والوسوم. ↑↓ للقراءة (المنشور الطويل يتم تمريره قبل انتقال التركيز)، ←→ لتبديل التبويبات، المواضيع غير المقروءة تفتح عند أول منشور غير مقروء لديك، وزر الرجوع يأخذك إلى المكان الذي كنت فيه بالضبط.
  • التفاعل: OK على منشور يفتح الإعجاب، التفاعل، الرد، الاقتباس، الإحراج (Bookmark)، التعديل، الإبلاغ، نسخ الرابط، كل الروابط في المنشور، الخفايا (Spoilers) وصوره. يوجد محرر ملء الشاشة مع الإشارات، الإيموجي، الرفع، المعاينة، والتدقيق الإملائي الاختياري (LanguageTool).
  • الأزرار: * قائمة، # بحث، 0 مساعدة، 3 رد، 5 إعجاب، 2/8 تصعيد وتصفير الصفحة. الهواتف التي تسمي أزرارها الناعمة بشكل غريب يمكن تعليمها في التفضيلات.
  • تسجيل الدخول دون كتابة كلمة مرور على لوحة أزرار: اعتمد الهاتف من جهاز مسجل الدخول فيه بالفعل، أو استخدم رابطاً أو رمزاً عبر البريد الإلكتروني. تعمل تسجيلات الدخول الاجتماعية واثبات الهوية الثنائي (2FA) أيضاً.
  • المتصفحات القديمة تجدها بنفسها. المتصفح الذي لا يستطيع تشغيل المنتدى الكامل يُرسل إلى صفحة Dumbcourse المقابلة، بما في ذلك من الروابط في رسائل البريد الإلكتروني. محركات البحث لا تُعاد توجيهها.

إنه ES5 بسيط، وتحقق CI (البناء المستمر) من أنه يستمر في العمل على Chrome 30 وFirefox 30 وأندرويد 4.4.

بما أن الاسم طُرح في المرة الأخيرة: المسار هو إعداد (dumbcourse_base_path)، لذا /simple أو /lite على بعد تغيير واحد.

لدينا أيضاً تطبيق أندرويد يغلّف Dumbcourse للهواتف ذات الأزرار، مع إشعارات فورية. تم إعداده لمنتدانا، لكن الكود موجود إذا أردت بناء واحد لمنتداك. كان أعضاؤنا يضغطون عليه بقوة في خيط التطبيق (أكثر من 450 رداً) وآخر تحديث كبير.

أدوات المشرفين: رسائل خفية لأشخاص محددين، ملاحظات خاصة، تنبيهات الموظفين


الرسالة الخفية والملاحظة في الصف الأوسط من مستنداتنا، مع مستخدمين وهميين. الباقي هو واجهة المستخدم الحقيقية.

رسائل خفية لأشخاص محددين. كان الناس يطلبون هذا على Meta لسنوات (السماح لكاتب المنشور برؤية الرد على منشورات الرسائل الخفية، رسائل خفية لمجموعات أخرى غير الموظفين). رد داخل موضوع لعدد قليل من المستخدمين، أو مجموعة، أو كل من يحمل شارة. يمكن للموظفين والكاتب وأولئك الأشخاص رؤيته فقط. لا يظهر في أي مكان آخر: لا في البحث، النشاط، رسائل البريد الإلكتروني، الإشعارات، معاينات الروابط، RSS، Dumbcourse أو جسر تيليجرام. تبقى الردود على رسالة خفية خاصة بنفس الأشخاص تلقائياً، ولا تجعل الرسالة الخفية الموضوع يرتفع لأي شخص آخر. يمكن للموظفين تحويل منشور موجود إلى رسالة خفية أو العكس، ويُسجل كل تغيير في سجل الموظفين.

ملاحظات خاصة. ملاحظة خاصة بالموظفين على موضوع، مع خيط ردود وصفة “شوهد بواسطة”. تظهر الملاحظات الجديدة في الجرس وفي تبويب درع في قائمة المستخدم، ولكن فقط للموظفين الذين يمكنهم فعلياً رؤية ذلك الموضوع.

تنبيهات الموظفين. احصل على إخطار عندما يحذف موظف آخر منشوراً، أو يوافق على منشور في قائمة الانتظار أو يرفضه، أو يضيف ملاحظة إلى مستخدم أو علم (Flag). لكل نوع مفتاح خاص به.

قوائم التحقق وأدوات المواضيع. قائمة تحقق يقوم بها الأعضاء الجدد قبل منشورهم الأول (مع سجل لمن قبل أي نسخة)، قوائم تحقق موجهة لمستخدمين محددين أو مرتبطة بموضوع واحد، رسالة تذييل تحت موضوع، منشور مثبت يُنسخ إلى الأسفل، موافقة على الرد لموضوع واحد، ملاحظة “قبل أن تنشر” لكل فئة، ومنتقي شارات لإضافة كل من يحمل شارة إلى رسالة خاصة.

القاعدة لكل هذا: المشرفون لا يرون كل شيء. لا تعرض الأداة أبداً للمشرف رسالة خاصة أو فئة مقيدة لا تعرضها النواة له، ولا تصل التنبيهات إلا للموظفين الذين يمكنهم فتح ما تشير إليه.

REQ-PM: بيانات الاتصال بدلاً من الرسائل الخاصة

لا يوجد رسائل خاصة في منتدانا، عمداً. فكيف يتواصل عضوان؟ يطلبان من بعضهما بيانات الاتصال. (خيط إطلاقنا، إذا أردت رؤية كيف تعامل الأعضاء مع ذلك.)

  • اضغط REQ-PM على بطاقة مستخدم شخص ما، وحدد ما تريده (هاتف، واتساب، بريد إلكتروني، تيليجرام، سيغنال…)، وأرسل. لا يوجد مربع نص، لذا لا يمكن أن يتحول إلى باب خلفي للرسائل.
  • يحددون بالضبط أي تفاصيل تحصل عليها. يمكن لأي جانب استرداد ما شاركه، في أي وقت، بصمت. الرفض صامت أيضاً: الشخص الذي طلب يرى فقط “بانتظار” ثم “منتهي الصلاحية”.
  • /reqpm يحتفظ بطلباتك، وجهات اتصالك (مع أزرار اتصال / نص / دردشة)، وبطاقتك الخاصة ومن شاركت معهم.
  • الخصوصية: القيم مشفرة عند التخزين (AES-256-GCM) ولا تُعاد إلا لمالكها والأشخاص الذين اختارهم المالك. لا يوجد شاشة إدارية لها، وترفض نقاط النهاية مفاتيح API والانتحال.
تنسيق القوائم: خيوط بيع تبقى منظمة


قائمة حقيقية من خيط بيع الهواتف والحاسوب لدينا.

لدينا خيط كبير واحد “لبيع الهواتف والحاسوب”، وكان فوضى من “هل ما زال متاحاً؟” و"راسلني عبر الخاص". الآن، في المواضيع التي تختارها، يجب أن يكون كل منشور قائمة بتنسيق الخيط، وإلا يُرفض (مع السبب) قبل حفظه.

  • يحصل الأعضاء على زر إنشاء قائمة بدلاً من الرد. يفتح نموذجاً مع مربع لكل قسم (العنصر، الكمية، الحالة، المواصفات، الاستلام أو الشحن)، خيارات للاختيار للحالة، والمحرر العادي للصور والملاحظات.
  • تظهر القوائم كبطاقات مثل تلك أعلاه. يمكن للبائع (أو الموظف) تحديد واحدة كمباعة، ثم تتلاشى وتُشطب.
  • لا روابط لمواقع أخرى. أرقام الهواتف والبريد الإلكتروني مقبولة، ويستخدم المشترون زر REQ-PM الخاص بالبائع بدلاً من الرد.
  • الموظفون معفون، وتُترك المنشورات القديمة كما هي.
Disteleplus: دردشة موظفين تُجسر في الاتجاهين مع تيليجرام

نمت هذه الأداة إلى شيء كبير. لم يكن لدى جميع موظفينا (أو لم يريدوا) واتساب، ولم يكن لدى الجميع تيليجرام أيضاً. لذا: غرفة دردشة واحدة داخل Discourse تُمرر في الاتجاهين مع مجموعة تيليجرام.

  • داخل Discourse: درج أو صفحة كاملة مع ردود، تعديلات، تفاعلات، ملاحظات صوتية، استطلاعات، ملفات، إشارات، بحث، معاينات روابط ومؤشرات كتابة. نص الرسائل مشفر في قاعدة البيانات. لا يحتاج إلى إضافة Chat الرسمية.
  • داخل تيليجرام: الأشخاص الذين ربطتهم ينشرون بحسابهم في المنتدى والبقية يظهر بأسمائهم في تيليجرام. اختياري، يمكنك إعلان منشورات المنتدى الجديدة في المجموعة، وتمرير قائمة المراجعة إلى موضوع تقارير مع أزرار موافقة / رفض تعمل للموظفين هناك في تيليجرام مباشرة.
  • الإعداد يستغرق حوالي خمس دقائق: أنشئ بوتاً مع @BotFather، أضيفه إلى المجموعة كمدير، الصق الرمز، اضغط تسجيل Webhook.

إذا كنت تريد جسر قنوات Discourse Chat إلى تيليجرام، فانظر إلى Discourse-Telegram chat bridge أو Discourse Chat Bridge (Telegram) بدلاً من ذلك. نظامنا هو غرفة موظفين واحدة، بدون Chat.

ثيم JTech (يُشحن مع الإضافة)

ثيم منتدانا الخاص يُشحن الآن مع الإضافة. إعادة البناء تثبته وتبقيه محدثاً، لكنه لا يُجعل الافتراضي أبداً. تفعّله بنفسك تحت تخصيص → ثيمات.

إنه أسود وأبيض، مع حدود رفيعة، زوايا دائرية وخط Geist. الفاتح والداكن متعاكسان تماماً، وهناك JTech Dim ألطف للأشخاص الذين يجدون أسود OLED قاسياً جداً.

  • بطاقات مواضيع بدلاً من صفوف الجدول، مع الصورة الأولى بجانب العنوان ونظرة سريعة لقراءة موضوع دون مغادرة القائمة.
  • قائمة أوامر على ⌘K / Ctrl+K تقفز إلى الصفحات، الفئات، المواضيع والأشخاص، مع اختصارات لوحة المفاتيح المذكورة بجانب كل أمر.
  • لافتة على الصفحة الرئيسية بكوكب من النقاط يدور، يتبع فأرة ويبقى ثابتاً لأي شخص يطلب من جهازه تقليل الحركة. بالإضافة إلى رأس مصمم، شريط جانبي، ملفات شخصية، بطاقات مستخدمين، صفحة تسجيل الدخول وصفحة حول.
  • يستبدل حوالي اثني عشر مكون ثيم كنا نستخدمها، كل منها أصبح إعداداً الآن: وضع القراءة، جدول محتويات للأدلة، زر طباعة/PDF، رمز QR في المشاركة، رسائل صوتية من المحرر، شارات المنشورات، زر نسخ كـ Markdown، فلتر ردود، بحث من النص المحدد، تحذير الرد على الموضوع المغلق، والمزيد. يعمل منتدانا الآن مع صفر مكونات ثيم.
  • قضينا وقتاً سخيفاً في إمكانية الوصول: تباين WCAG AA للنص الرمادي في جميع لوحات الألوان الثلاث، حلقات تركيز يمكن رؤيتها فعلياً على كل عنصر تحكم، أهداف لمس أكبر على الهواتف، وضع التباين العالي في ويندوز، اللغات من اليمين إلى اليسار، وهواتف بعرض 320 بكسل.
الأصغر: Mini-mod، Dislike، بحث ذكي، نوافذ منبثقة، Another SMTP، مترجم


نوافذ منبثقة لسطح المكتب (من مستنداتنا، مستخدمون وهميون).

  • Mini-mod. بعض الصلاحيات الإضافية للأشخاص الذين يشرفون على فئة واحدة عبر مجموعة: إنشاء الفئات وتحريرها، نقل المواضيع، الوسوم. لكل صلاحية مفتاح خاص، ولا يصل أي منها لما يمكن للشخص رؤيته بالفعل. يمكن أيضاً أن يأخذ الصلاحيات بعيداً، مثل إعادة فتح المواضيع المغلقة. الموضوع الأصلي لـ @ars18 يحتوي على المزيد، وهنا نوع الطلب الذي يجيب عليه.
  • Dislike. في الفئات التي تختارها، تتوقف الإعجابات عن الاحتساب: لا إشعار، لا سجل “إعجابات مستلمة”، ولا تُحتسب في لوحة الصدارة. يمكنك أيضاً إخفاء الزر هناك تماماً، أو السماح لبعض المجموعات فقط بالإعجاب.
  • بحث ذكي. عندما يجد البحث شيئاً قليلاً جداً، يحاول بصمت مرة أخرى مع مرادفات، لذا “k8s” يجد “kubernetes” و"js" يجد “javascript”. يستخدم WordNet بالإضافة إلى قائمة صغيرة لمصطلحات تقنية، يعمل داخل العملية بدون مفاتيح API، يحافظ على كل الفلاتر والصلاحيات، ويعود إلى البحث العادي إذا حدث خطأ.
  • نوافذ منبثقة لسطح المكتب. بطاقة صغيرة في الزاوية عند وصول إشعار. يختار كل عضو المشاركة، وهي هادئة أثناء عدم الإزعاج، وتعمل بلوحة المفاتيح وقارئ الشاشة.
  • Another SMTP. إرسال بريد المنتدى عبر خادم بريد مختلف عن ذلك الموجود في app.yml، يُضبط من الإدارة.
  • تعديلات المترجم. للمواقع التي لا تزال على إضافة discourse-translator القديمة مع Google: وجّه طلباتها إلى وكيلك الخاص.

التثبيت

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/TripleU613/JtechTools.git jtech-tools

حافظ على اسم المجلد jtech-tools بأحرف صغيرة. يبني Discourse رابط ورقة الأنماط (Stylesheet URL) منه.

ثم أعد البناء واذهب إلى الإدارة → الإضافات → Jtech Tools. يوجد تبويب واحد لكل وحدة، وتقول صفحة مستندات كل وحدة ما يجب ضبطه أولاً.

نتتبع main على Discourse 2026.8 وأحدث، و.discourse-compatibility يثبّت الإصدارات الأقدم. يقول سجل التغييرات ما تغيّر وأي شيء يستحق الفحص بعد التحديث.

الصدق بشأن ذلك

نحن فريق إدارة منتدى، وليس متجر Discourse. تم بناء جزء كبير من هذا بمساعدة الذكاء الاصطناعي. ما يجعلني مرتاحاً لمشاركته هو الحواجز: قواعد في المستودع يجب أن تتبعها كل تغيير (الصلاحيات أولاً، لا تتجاوز أبداً ما تسمح به النواة، لا تفعل شيئاً تفعله النواة بالفعل)، حوالي 1,700 اختبار عبر 119 ملف مواصفات (Spec) تُشغل في كل طلب سحب (PR)، ومعظمها يعمل على منتدانا الخاص يومياً. ستظل هناك أخطاء وحالات حافة غريبة. من فضلك أخبرنا عندما تجد واحداً.

المشكلات وطلبات السحب (PRs) مرحب بها جداً على GitHub. مشكلات الأمان تُرسل بشكل خاص عبر SECURITY.md.

شكراً لـ @ars18 و Shalom Karr، اللذين بنيا جزءاً كبيراً من هذا معي، ولكل شخص في JTech أبلغ عن أخطاء وجرب أشياء غير مكتملة، وللأشخاص في خيوط Dumbcourse و Mini-mod الذين جعلت أسئلتهم الأمر أفضل.

استمتعوا :lion:

7 إعجابات