التطوير
دليل التطوير
حرّر الإنجليزية فقط؛ الترجمات تنتشر تلقائيًا
حدّث الوثائق فقط تحت website/docs (الإنجليزية). الترجمات تحت website/i18n/<locale>/… يتم توليدها ويجب عدم تحريرها يدويًا. استخدم مهام الترجمة (مثل make translate_web_docs_batch) لتحديث المحتوى المترجم.
المتطلبات الأساسية
- Node.js 22+ وnpm (تم الاختبار مع Node 22)
- Thunderbird 128 ESR أو أحدث (للاختبار اليدوي)
بنية المشروع (عالية المستوى)
- الجذر: سكربت التغليف
distribution_zip_packer.sh، الوثائق، لقطات الشاشة sources/: الشفرة الأساسية للإضافة (الخلفية، واجهة الخيارات/النافذة المنبثقة، الملفات الوصفية، الأيقونات)tests/: مجموعة Vitestwebsite/: وثائق Docusaurus (مع i18n تحتwebsite/i18n/de/...)
التثبيت والأدوات
- تثبيت تبعيات الجذر:
npm ci - الوثائق (اختياري):
cd website && npm ci - استكشاف الأهداف:
make help
التطوير الحي (web‑ext run)
- حلقة سريعة على Firefox Desktop (اختبارات واجهة سطحية فقط):
npx web-ext run --source-dir sources --target=firefox-desktop- التشغيل على Thunderbird (المفضل لـ MailExtensions):
npx web-ext run --source-dir sources --start-url about:addons --firefox-binary "$(command -v thunderbird || echo /path/to/thunderbird)"- نصائح:
- أبقِ نافذة سجل أخطاء Thunderbird مفتوحة (Tools → Developer Tools → Error Console).
- يتم تعليق صفحات أحداث MV3 عند الخمول؛ أعد تحميل الإضافة بعد تغييرات الشفرة، أو دع web‑ext يعيد التحميل تلقائيًا.
- بعض سلوكيات Firefox فقط تختلف؛ تحقّق دائمًا في Thunderbird للتأكد من تكافؤ واجهات البرمجة.
- مسارات ثنائيات Thunderbird (أمثلة):
- Linux:
thunderbird(مثلًا،/usr/bin/thunderbird) - macOS:
/Applications/Thunderbird.app/Contents/MacOS/thunderbird - Windows:
"C:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe" - عزل الملف الشخصي: استخدم ملف تعريف Thunderbird منفصلًا للتطوير لتجنّب التأثير على إعدادك اليومي.
أهداف Make (أبجديًا)
يوحد Makefile التدفقات الشائعة للتطوير. شغّل make help في أي وقت للحصول على ملخص من سطر واحد لكل هدف.
نصيحة: تشغيل make بدون هدف يفتح قائمة Whiptail بسيطة لاختيار هدف.
| الهدف | وصف من سطر واحد |
|---|---|
clean | إزالة ملفات الإنشاء/المعاينة المحلية (tmp/، web-local-preview/، website/build/). |
commit | تنسيق، تشغيل الاختبارات (بما في ذلك i18n)، تحديث سجل التغييرات، الالتزام والدفع. |
eslint | تشغيل ESLint عبر التهيئة المسطّحة (npm run -s lint:eslint). |
help | سرد جميع الأهداف مع توثيق من سطر واحد (مرتب). |
lint | web‑ext lint على sources/ (بيان مؤقت؛ يتجاهل ملفات ZIP؛ غير قاتل). |
menu | قائمة تفاعلية لاختيار هدف وخيارات اختيارية. |
pack | بناء ملفات ZIP لـ ATN وLOCAL (يشغّل المدقق؛ يستدعي سكربت الحزم). |
prettier | تنسيق المستودع في مكانه (يكتب التغييرات). |
prettier_check | Prettier بوضع الفحص (بدون كتابة)؛ يفشل إذا لزم إعادة التنسيق. |
prettier_write | اسم بديل لـ prettier. |
test | Prettier (كتابة)، ثم ESLint، ثم Vitest (تغطية إن تم إعدادها). |
test_i18n | اختبارات i18n فقط: نُسخ/تكافؤ الإضافة + تكافؤ الموقع. |
translate_app | اسم بديل لـ translation_app. |
translation_app | ترجمة نصوص واجهة تطبيق الإضافة من sources/_locales/en/messages.json. |
translate_web_docs_batch | ترجمة وثائق الموقع عبر OpenAI Batch API (مفضّل). |
translate_web_docs_sync | ترجمة وثائق الموقع تزامنيًا (قديمة، غير مجمّعة). |
translate_web_index | اسم بديل لـ translation_web_index. |
translation_web_index | ترجمة واجهة الصفحة الرئيسية/شريط التنقل/التذييل (website/i18n/en/code.json → .../<lang>/code.json). |
web_build | بناء الوثائق إلى website/build (يدعم --locales / BUILD_LOCALES). |
web_build_linkcheck | فحص روابط آمن دون اتصال (يتجاوز HTTP[S] البعيدة). |
web_build_local_preview | معاينة gh‑pages محليًا؛ خدمة تلقائية على 8090–8080؛ اختبارات/فحص روابط اختياري. |
web_push_github | دفع website/build إلى فرع gh-pages. |
صيغة الخيارات
- استخدم
make <command> OPTS="…"لتمرير الخيارات (يُفضّل استخدام علامات الاقتباس). كل هدف أدناه يعرض مثال استخدام.
--
نصائح بناء اللغات
- بناء مجموعة فرعية من اللغات: اضبط
BUILD_LOCALES="en de"أو مرّرOPTS="--locales en,de"إلى أهداف الويب. - معاينة لغة محددة:
http://localhost:<port>/Thunderbird-Reply-with-Attachments/de/.
البناء والتغليف
- بناء ملفات ZIP:
make pack - ينتج ملفات ZIP لكل من ATN وLOCAL في جذر المستودع (لا تعدّل المخرجات يدويًا)
- نصيحة: حدّث الإصدار في كلٍ من
sources/manifest_ATN.jsonوsources/manifest_LOCAL.jsonقبل التغليف - التثبيت اليدوي (تطوير): Thunderbird → Tools → Add‑ons and Themes → ترس → Install Add‑on From File… → اختر ملف ZIP المبني
الاختبار
- الحزمة الكاملة:
make test(Vitest) - التغطية (اختياري):
npm i -D @vitest/coverage-v8- شغّل
make test؛ افتحcoverage/index.htmlلتقرير HTML - i18n فقط:
make test_i18n(مفاتيح/نُسخ/عناوين واجهة المستخدم + تكافؤ الموقع لكل لغة ولكل مستند مع فحوص id/title/sidebar_label)