> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# إرشادات التطوير

> إرشادات المساهمة في overleaf-pro، وتشمل قيود مزامنة المستودع، واصطلاحات الفروع، وأسئلة وأجوبة شائعة حول المصدر الأصلي (upstream) وإدارة الإصدارات.

### مقدمة

قبل أن تتعمق في التطوير، نأمل أن تستوعب الأمور التالية:

* يُطوَّر Overleaf رسميًا في [مستودع داخلي](http://github.com/overleaf/internal)، وتُنشر النسخة المجتمعية (Community Edition) في [overleaf/overleaf](https://github.com/overleaf/overleaf). ويتولى روبوت نسخ (copybot) مزامنة الشيفرة بين المستودعين الداخلي والعام.
* يُعد [Ayaka-notes/overleaf-pro](https://github.com/ayaka-notes/overleaf-pro) نسخة متفرعة (fork) من Overleaf المجتمعي، ونأمل أن يستمر هذا المشروع على المدى الطويل، لذا يُرجى اتباع القواعد قبل تقديم أي مساهمات.

### قواعد الإيداع (Commit)

* يُرجى عدم إجراء تعديلات واسعة على شيفرة Overleaf الحالية. ركّز أكبر قدر ممكن من الوظائف في المجلد `services/web/modules`. سيقلل هذا من عبء العمل علينا عند دمج الشيفرة وتحديثها لاحقًا.
* البرمجة التلقائية بمساعدة الذكاء الاصطناعي (Vibe coding) طريقة سهلة فعلًا، لكنها قد تُحدث فوضى في مشروعنا بسهولة وتجعله غير قابل للصيانة لاحقًا، لذا يُرجى استخدامها بحذر.
* يُرجى عدم إضافة أي محتوى متعلق بالترجمة أثناء التطوير؛ واستخدم الترجمات الموجودة كلما أمكن ذلك.
* تجنّب إضافة متغيرات بيئة جديدة ما لم يكن ذلك ضروريًا للغاية. وإن لزم الأمر، فاحرص على أن تكون متسقة قدر الإمكان مع تلك الموجودة في Overleaf toolkit أو في [docs.overleaf.com](https://docs.overleaf.com/).

### قواعد الفروع

نستخدم الفروع التالية لتطوير overleaf-pro:

* `main`: يُستخدم هذا الفرع فقط لمزامنة الشيفرة من المصدر الأصلي، لذا يُرجى **عدم** إيداع أي تغييرات خارجية فيه. في هذا الفرع، نضع بعض الوسوم مثل `ce-v[X.x.x]`، والتي تشير إلى أن هذا يقابل `v[X.x.x]` في النسخة المجتمعية الرسمية من Overleaf. ملاحظة: هذا الوسم غير قابل للتغيير!
* `server-pro`: هذا الفرع هو الفرع الافتراضي للتطوير اليومي.
* `feature-X`: يُستخدم هذا الفرع لتطوير ميزة محددة.
* `release-vX.0.0`: الفرع المخصص للإصدار، وسنجري فيه بعض الإصلاحات العاجلة (hot-fix) قبل الإصدار.

<Frame caption="قواعد الفروع في Overleaf Pro">
  <img src="https://mintcdn.com/ayakaleaf-pro/x9kfDjtWlyyhG_mR/images/dev/release-model.png?fit=max&auto=format&n=x9kfDjtWlyyhG_mR&q=85&s=8a10a259ff5a6437cb05f03560a5dc2c" alt="" width="5652" height="2544" data-path="images/dev/release-model.png" />
</Frame>

### GitHub Action

تتولى [GitHub Action](https://github.com/ayaka-notes/overleaf-pro/actions) عمليات التكامل والنشر المستمرين (CI/CD) تلقائيًا، وتشمل:

* التحديث الليلي للفرع main
* بناء صورة Docker للتطوير
* إصدار صورة Docker

### أسئلة وأجوبة

<Accordion title="كيف أعثر على معرّف الإيداع (commit hash) للنسخة المجتمعية من Overleaf `X.0.0`؟">
  أولًا، عليك سحب صورة Docker وتشغيل الأمر التالي لفحص التسميات (labels) في صورة Docker هذه:

  ```shellscript title="bash" wrap theme={null}
  docker inspect --format='{{json .Config.Labels}}' sharelatex/sharelatex:6.0.0
  {"com.overleaf.ce.revision":"b0d05c0cf0750714e1f467d20ed6c5f5e9467e8f","org.opencontainers.image.ref.name":"ubuntu","org.opencontainers.image.version":"24.04"}
  ```

  بعد ذلك يمكنك التحقق مما إذا كان [الإيداع (b0d05c0)](https://github.com/overleaf/overleaf/commit/b0d05c0cf0750714e1f467d20ed6c5f5e9467e8f) موجودًا في الفرع master في المصدر الأصلي.
</Accordion>

<Accordion title="لماذا يتطابق معرّف الإيداع في صورة النسخة المجتمعية بين `6.0.0` و`6.0.1`؟">
  هذا سلوك متوقع. فالإصدار 6.0.1 إصدار تصحيحي بسيط مبني فوق صورة 6.0.0. إذ تُطبَّق التغييرات عبر ترقيع (patching) صورة 6.0.0 الحالية، بدلًا من إعادة بناء الصورة من إيداع جديد. لذلك يكون معرّف الإيداع داخل الصورة متطابقًا بين 6.0.0 و6.0.1.

  للاطلاع على معلومات مفصلة، راجع [hotfix](https://github.com/overleaf/overleaf/tree/main/server-ce/hotfix).
</Accordion>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.