Signed-off-by: Mohamed-Abdelhalim2 <codepen.io.dropper985@passinbox.com>
12 KiB
دليل إدارة المستودع وبروتوكولات العمل على GitHub (Git / GitHub Operations Guide)
يوفر هذا الملف إطار العمل الشامل والقياسي (Standard Operating Procedures) لإدارة مستودع ستيجانو بكسل (SteganoPixel) على منصة GitHub. يهدف هذا الدليل إلى توحيد جهود المطورين، تنظيم المساهمات البرمجية، وضمان أعلى مستويات الجودة والأمان خلال دورة حياة التطوير.
1. إعدادات المستودع الموصى بها على GitHub (Repository Configuration)
لضمان أمان الشفرة المصدرية وسلاسة العمل الجماعي، يُوصى بتطبيق الإعدادات التالية في لوحة تحكم المستودع (Settings):
أ. البيانات الوصفية والهوية (Metadata & Topics)
- اسم المستودع:
steganopixel - الوصف (Description):
SteganoPixel 🎨 - Advanced Client-Side LSB Steganography Web Application in Arabic for Embedding, Extracting, and Sanitizing Hidden Texts in Digital Images.
- الوسوم (Topics / Tags):
steganography,lsb-steganography,react,tailwind-css,typescript,vite,image-processing,security,privacy,arabic-web-app - الموقع الرسمي (Website): رابط الاستضافة المباشر (مثل
https://steganopixel.vercel.appأوhttps://your-username.github.io/steganopixel).
ب. قواعد حماية الفروع (Branch Protection Rules)
يجب تفعيل حماية صارمة على الفرعين المحوريين main و develop:
- Require a pull request before merging: منع الدفع المباشر (
Direct Push) إلى هذه الفروع. - Require approvals: اشتراط موافقة مطور واحد على الأقل (
1 Approver) قبل دمج أي Pull Request. - Require status checks to pass before merging: اشتراط اجتياز خط أنابيب التجميع والاختبار (
SteganoPixel CI/CD Pipeline) بنجاح. - Require conversation resolution: اشتراط حل جميع الملاحظات والتعليقات البرمجية قبل الدمج.
- Do not allow bypassing the above settings: تطبيق هذه القواعد على جميع المطورين، بما في ذلك مديري المستودع (Admins).
2. استراتيجية إدارة الفروع (Branching Strategy / GitFlow)
يعتمد المشروع على نموذج GitFlow المنظم. يتم تصنيف الفروع حسب الغرض منها لضمان عدم تداخل التعديلات:
main ──*─────────────────────────────────────*── (Production Releases)
\ /
develop *──────*─────────────*────────────*──── (Staging / Integration)
\ / /
feature/* *─────────* / (New Features / Sub-tasks)
/
hotfix/* *──────── (Urgent Production Bug Fixes)
| نوع الفرع | التسمية القياسية | مشتق من | يُدمج إلى | الغرض |
|---|---|---|---|---|
| الإنتاج (Production) | main |
— | — | يحتوي دائماً على الشفرة المستقرة والجاهزة للمستخدمين النهائيين. كل دمج هنا يقابله إصدار (Release). |
| التطوير (Integration) | develop |
main |
main |
الفرع المحوري المجمع للميزات الجديدة. يُستخدم للاختبار الشامل قبل النقل للإنتاج. |
| الميزات (Features) | feature/<name> |
develop |
develop |
لتطوير ميزة أو صفحة جديدة (مثلاً: feature/confetti-animation أو feature/pdf-support). |
| الإصلاحات (Bug Fixes) | bugfix/<ticket> |
develop |
develop |
لإصلاح أخطاء غير حرجة تم اكتشافها أثناء التطوير (مثلاً: bugfix/download-button-mobile). |
| الطوارئ (Hotfixes) | hotfix/<ticket> |
main |
main و develop |
لإصلاح أخطاء حرجة جداً في الإنتاج بشكل فوري (مثلاً: hotfix/lsb-overflow-crash). |
3. اصطلاحات كتابة رسائل الالتزام (Conventional Commits)
يعتمد المشروع اصطلاحات الالتزام القياسية العالمية (Conventional Commits) لضمان قراءة تاريخ التعديلات بوضوح وتوليد سجل التغييرات (CHANGELOG.md) تلقائياً.
الهيكل القياسي:
<type>(<scope>): <subject>
<body>
أنواع الالتزامات المعتمدة (Types):
| النوع | المعنى | مثال قياسي بالإنجليزية |
|---|---|---|
feat |
إضافة ميزة برمجية أو وظيفية جديدة | feat(steganography): add web worker for asynchronous embedding |
fix |
إصلاح خطأ برمجي أو بصري | fix(ui): resolve blob download link issue on mobile browsers |
docs |
تعديل أو إضافة ملفات التوثيق | docs(customization): update font replacement instructions |
style |
تعديلات شكلية لا تؤثر على المنطق (مسافات، فواصل) | style(components): reformat UploadCard component syntax |
refactor |
إعادة هيكلة الكود دون إضافة ميزة أو إصلاح خطأ | refactor(engine): separate bit reading logic into utility fn |
perf |
تحسينات ترفع من أداء وسرعة التطبيق | perf(canvas): use requestAnimationFrame to prevent ui freeze |
test |
إضافة اختبارات آلية جديدة أو تعديل الحالية | test(engine): add exhaustive suite for LSB 3-channel encode |
build |
تعديلات على أدوات التجميع أو الحزم (npm, Vite) |
build(vite): configure static asset inline limit |
ci |
تعديلات على إعدادات GitHub Actions | ci(workflow): set output artifact retention days to 7 |
قواعد هامة لكتابة الالتزام:
- يجب كتابة الالتزام باللغة الإنجليزية لضمان التوافق العالمي.
- يجب أن يبدأ الموضوع فعل أمر بصيغة المضارع (مثال:
addوليسaddedأوadds). - ألا يتجاوز السطر الأول
72حرفاً.
4. بروتوكول طلبات الدمج والمراجعة (Pull Request & Code Review)
لتقديم مساهمة برمجية ناجحة، يُرجى الالتزام بالبروتوكول التالي عند إنشاء طلب دمج (Pull Request):
- تحديث الفرع المحلي: تأكد من عمل
git pull origin developودمج أحدث التغييرات في فرعك قبل إنشاء الـ PR. - العنوان القياسي: استخدم نفس صيغة الالتزامات (مثال:
feat(ui): implement success confetti animations). - استخدام قالب طلب الدمج: انسخ واملأ القالب التالي في صندوق وصف الـ PR:
### 🎯 ملخص التغييرات (Summary of Changes)
- [شرح مختصر لما تم إضافته أو إصلاحه في هذا الـ PR]
### 🔗 التذكرة المتصلة (Related Issue)
- يغلق تذكرة رقم: #123
### 📋 قائمة التحقق (Checklist)
- [ ] تم اختبار التغييرات محلياً على أكثر من متصفح (Chrome, Firefox).
- [ ] الكود خالي من تعليقات الـ `console.log` والـ `TODO` المنسية.
- [ ] تم الالتزام بأفضل ممارسات الـ TypeScript (عدم استخدام `any`).
- [ ] تمت إضافة تعليقات توضيحية كاملة لأي جزء منطقي معقد.
### 🖼️ لقطات شاشة / معاينة (Screenshots / Before & After)
| قبل (Before) | بعد (After) |
| :---: | :---: |
| [ضع صورة هنا إن وجد] | [ضع صورة هنا إن وجد] |
5. إدارة الإصدارات والوسوم (Semantic Versioning - SemVer)
نتبع في SteganoPixel معيار التقسيم الدلالي للإصدارات (SemVer: MAJOR.MINOR.PATCH):
MAJOR(الإصدار الرئيسي): تغييرات جذرية غير متوافقة مع الإصدارات السابقة (مثلاً: تغيير خوارزمية التشفير من LSB إلى خوارزمية DCT معمارية).MINOR(الإصدار الفرعي): إضافات وظائف جديدة متوافقة مع الإصدارات السابقة (مثلاً: إضافة خيار حماية النص بكلمة مرور).PATCH(الإصدار التصحيحي): إصلاحات أخطاء أو تحسينات أداء طفيفة (مثلاً: إصلاح مشكلة تنزيل الصورة في متصفح سفاري).
كيفية إطلاق إصدار جديد (Releasing Protocol):
- قم بإنشاء فرع إصدار مشتق من
develop(مثال:release/v1.1.0). - حدّث رقم الإصدار في
package.json. - ادمج الفرع إلى
mainوإلىdevelop. - قم بإنشاء وسم Git Tag على الفرع
main:git tag -a v1.1.0 -m "Release v1.1.0: Enhanced performance and new preview tools" git push origin v1.1.0 - توجّه إلى صفحة Releases في GitHub وأطلق الإصدار رسمياً مع إرفاق سجل التغييرات (
Changelog).
6. قوالب الإبلاغ عن الأخطاء والميزات (GitHub Issue Templates)
لتسهيل إدارة المهام، يُنصح بتفعيل مجلد .github/ISSUE_TEMPLATE أو الاعتماد على القوالب التالية عند فتح Issue جديدة:
أ. قالب الإبلاغ عن خطأ (Bug Report Template)
**عنوان التذكرة:** [Bug]: وصف مختصر للخطأ
**وصف الخطأ:**
[اشرح الخطأ بالتفصيل وما الذي حدث خلافاً للمتوقع]
**خطوات إعادة التكرار (Steps to Reproduce):**
1. اذهب إلى صفحة '...'
2. ارفع صورة من نوع '...'
3. اضغط على زر '...'
4. شاهد الخطأ
**السلوك المتوقع (Expected Behavior):**
[ما الذي كان يفترض أن يحدث؟]
**البيئة (Environment):**
- نظام التشغيل: [مثال: Windows 11 / macOS 14]
- المتصفح وإصداره: [مثال: Chrome 122]
- حجم الصورة ونوعها: [مثال: 5MB PNG]
ب. قالب طلب ميزة (Feature Request Template)
**عنوان التذكرة:** [Feature]: اسم الميزة المقترحة
**المشكلة التي تحلها الميزة:**
[اشرح الصعوبة أو المشكلة الحالية التي تواجه المستخدمين]
**الحل المقترح (Proposed Solution):**
[اشرح كيف ستعمل الميزة الجديدة وكيف ستعزز من قدرات التطبيق]
**بدائل تم التفكير فيها (Alternatives Considered):**
[أي طرق أخرى فكرت فيها لحل المشكلة]
7. الأتمتة المدمجة (GitHub Actions CI/CD Pipeline)
يحتوي المستودع على خط أنابيب مؤتمت بالكامل معرّف في .github/workflows/ci.yml. يعمل هذا الخط تلقائياً عند أي عملية push أو pull_request على فروع التطوير والإنتاج لضمان الجودة.
المهام التي ينفذها خط الأنابيب (CI Workflow):
- التحقق من التنسيق (Linting): فحص الكود والتأكد من خلوه من الأخطاء البنيوية.
- فحص التنميط (Type Checking): تشغيل مترجم
TypeScriptالصارم لضمان عدم وجود تناقض في الأنواع. - تجميع الإنتاج (Production Build): تنفيذ الأمر
npm run buildللتأكد من أن تطبيقViteقادر على تحويل الكود بالكامل إلى مجلدdist/سليم. - حفظ المخرجات (Artifacts): حفظ المخرجات النهائية المجمعة لمدة 7 أيام ليتمكن المطورون من تنزيلها وفحصها.