التطبيق الحالي عبارة عن أداة سطح مكتب مكتوبة بـ PyQt5 لتحويل ملفات بايثون إلى .exe عبر تغليف PyInstaller بواجهة عربية احترافية. الكود حالياً في ملف واحد ضخم (python_to_exe.py بحوالي 1,243 سطر) مع 4 تبويبات (رئيسي، متقدم، قوالب، عن البرنامج) و6 قوالب جاهزة. لا يوجد اختبارات، ولا CI، ولا دعم لتعدد اللغات، ولا توقيع رقمي، ولا تحرير metadata، ولا تحويل دفعي.
الهدف من هذه الوثيقة: تقديم قائمة شاملة بأفكار التطوير مع خارطة طريق تفصيلية متعددة المراحل، تشمل ميزات جديدة، تحسينات واجهة، وتحسينات تقنية.
| الملف | الوصف |
|---|---|
/home/user/python_to_exe/python_to_exe.py |
التطبيق الكامل في ملف واحد |
/home/user/python_to_exe/README.md |
وثائق عربية |
ملاحظة: لا يوجد requirements.txt، ولا tests/، ولا .github/workflows/، ولا تقسيم للوحدات.
- اكتشاف تلقائي لـ venv/conda داخل مجلد المشروع
- زر "إنشاء venv جديد" مع تثبيت PyInstaller داخله
- اختيار مفسر بايثون مخصص (Python interpreter selector)
- استيراد متطلبات من
requirements.txt/Pipfile/pyproject.toml/poetry.lock
- واجهة لتعبئة معلومات الـ EXE: اسم المنتج، الشركة، الإصدار، حقوق النشر، وصف الملف
- توليد ملف
version.txtتلقائياً وتمريره عبر--version-file - معاينة كيف ستظهر المعلومات في Properties بنظام Windows
- دعم توقيع الـ EXE بشهادة Authenticode عبر
signtool.exe - اختيار شهادة (.pfx) وكلمة المرور
- توقيع تلقائي بعد البناء
- التحقق من صحة التوقيع بعد العملية
- إعدادات جاهزة لتقليل false positives (مثل
--noupx، تجنب--onefileعند الحاجة) - اقتراحات لتجزئة الكود وتعديل entry point
- زر فحص الـ EXE الناتج عبر VirusTotal API (اختياري)
- اختيار صورة splash + نص ترحيب
- تكامل مع
--splashفي PyInstaller - معاينة الصورة قبل البناء
- تحويل عدة ملفات
.pyفي عملية واحدة (طابور) - تطبيق نفس الإعدادات على المجموعة
- تقرير نهائي بنتائج كل عملية (نجاح/فشل)
- اختيار مجلد مشروع بأكمله (وليس ملف واحد)
- اكتشاف نقطة الدخول تلقائياً
- إضافة كل المجلد عبر
--add-dataبشكل ذكي
- توسيع كاشف الـ imports ليشمل:
__import__()وimportlib.import_module()- قراءة
requirements.txt/pyproject.toml
- اقتراح hidden imports تلقائياً بناءً على نوع المشروع
- تحذير من المكتبات التي يحتاجها PyInstaller hooks خاصة
- زر "عرض الأمر" يظهر الأمر الكامل قبل التنفيذ
- إمكانية تعديل الأمر يدوياً قبل التشغيل
- نسخ الأمر إلى الحافظة
- إعدادات DPI awareness
- متطلبات صلاحيات المدير (UAC)
- توافق Windows 7/8/10/11
- حفظ آخر 20 عملية بناء مع إعداداتها
- إعادة استخدام إعدادات سابقة بنقرة واحدة
- مقارنة حجم/زمن البناء بين الإصدارات
- فحص إصدار جديد من GitHub Releases
- إشعار في الواجهة عند توفر تحديث
- FastAPI، Streamlit، Kivy، PySide6، Jupyter notebook → EXE
- قالب CLI tool مع Click/Typer
- قالب bot Discord/Telegram
- مساعد "تنحيف" يقترح
--exclude-moduleللوحدات غير المستخدمة - تحليل ما الذي يأخذ المساحة بعد البناء
- تكامل مع UPX المحلي مع خيارات ضغط متقدمة
- تشغيل تلقائي للـ EXE الناتج للتحقق
- اختبار أنه يعمل بدون Python مثبّت (وضع sandbox)
- التحقق من صحة الـ exit code
- إنشاء نظام ترجمة باستخدام
QTranslatorو ملفات.ts/.qm - دعم: العربية، الإنجليزية، الفرنسية، التركية، الإسبانية كبداية
- مبدّل لغة في الواجهة دون إعادة تشغيل
- استخراج كل النصوص المضمّنة من الكود إلى ملف ترجمات
- وضع نهاري (Light mode) بجانب الداكن الحالي
- 3-4 سمات إضافية: Nord، Dracula، Solarized، Catppuccin (الحالي)
- محرر سمات بسيط للمستخدم
- حفظ السمة المفضلة في الإعدادات
- اختصارات لوحة المفاتيح لكل الإجراءات الأساسية
- دعم قارئات الشاشة (
setAccessibleName) - تحسين التباين للوضع عالي التباين
- زيادة/تقليل حجم الخط من الإعدادات
- تدفق خطوة بخطوة: اختر الملف → اختر النوع → ابنِ
- مخفي الافتراضات المعقدة عن المستخدمين الجدد
- وضع "متقدم" للمستخدمين الخبراء
- بحث/فلترة داخل السجل
- تلوين بالـ ANSI (تحذير/خطأ/معلومة)
- زر تصدير السجل إلى ملف
- طي/فتح أقسام السجل
- استبدال heuristics بشريط تقدم بناءً على مراحل PyInstaller الفعلية (Analysis، Bundling، Building)
- عرض الوقت المتبقي التقديري بناءً على بيانات سابقة
- إشعارات Windows عند الانتهاء (مع QSystemTrayIcon)
- إفلات ملف
.pyمباشرة على النافذة لتحديده - إفلات ملف
.icoلاستخدامه كأيقونة - إفلات مجلد لإضافته كـ extra data
- شاشة رئيسية تعرض: آخر بناء، الإحصائيات، الإعدادات السريعة
- روابط سريعة للقوالب الأكثر استخداماً
- عرض الأيقونة المختارة في الواجهة بأحجام مختلفة
- محرر أيقونة بسيط (تكبير/تصغير من PNG)
- اتباع إعدادات النظام (Windows/macOS theme detection)
هيكل مقترح:
python_to_exe/
├── main.py # نقطة الدخول
├── ui/
│ ├── main_window.py
│ ├── tabs/
│ │ ├── basic_tab.py
│ │ ├── advanced_tab.py
│ │ ├── templates_tab.py
│ │ └── about_tab.py
│ └── widgets/
├── core/
│ ├── builder.py # منطق PyInstaller
│ ├── dependency_analyzer.py
│ ├── config_manager.py
│ └── templates.py
├── i18n/
│ └── translations/
├── themes/
├── tests/
└── requirements.txt
pytestمعpytest-qtلاختبارات الواجهة- اختبارات وحدة لـ
build_command()و dependency analyzer - اختبارات تكامل تحاكي عملية بناء كاملة
- تغطية مستهدفة: 70%+
- GitHub Actions لـ:
- تشغيل الاختبارات على push/PR
- فحص الكود (
ruff,mypy,black) - بناء releases تلقائية لـ Windows/Linux/macOS
- نشر الـ EXE المُحوَّل في Releases
- إنشاء
requirements.txtوrequirements-dev.txt - إنشاء
pyproject.tomlبتعريف المشروع كحزمة - دعم تثبيت عبر
pip install python-to-exe-gui
- استبدال
try/exceptالصامتة بمعالجة صريحة - استخدام مكتبة
loggingبدل print - ملف سجل دائم في
~/.python_to_exe/logs/ - دوران السجل (log rotation)
- التحقق أن ملف المصدر بايثون صالح (parse عبر
ast) - التحقق من امتداد الأيقونة (
.icoفقط) - منع تعارضات المسارات (إخراج = مصدر)
- التحقق من حروف غير قانونية في اسم الملف
- التخطيط للانتقال من PyQt5 إلى PyQt6 (أو PySide6 للترخيص المرن)
- Qt6 أكثر دعماً مستقبلياً
- إصلاح badges الـ README لتعكس الدعم الفعلي
- اختبار البناء على Linux/macOS
- تعديل المسارات والأوامر لتكون cross-platform بشكل نظيف
- نسخة إنجليزية من README
- وثائق API/architecture للمطورين
- دليل المساهمة (CONTRIBUTING.md)
- ترخيص واضح (LICENSE)
- نقل عمليات I/O إلى QThread بدل
threadingلتجنب تجميد الـ UI - استخدام
QProcessبدلsubprocessللتكامل الأفضل مع Qt - lazy loading للتبويبات الثقيلة
الهدف: قاعدة صلبة قبل إضافة ميزات
- تقسيم الملف الواحد إلى وحدات (
ui/,core/,tests/) - إضافة
requirements.txtوpyproject.toml - إعداد GitHub Actions أساسي (lint + test)
- كتابة 10-15 اختبار وحدة للوظائف الحرجة (
build_command, dependency detection) - استخراج كل النصوص العربية إلى ملف واحد تمهيداً للترجمة
الملفات المتأثرة: كل البنية تتغير. الملفات الحرجة:
python_to_exe.py→ سيُقسَّم- ملفات جديدة:
requirements.txt,pyproject.toml,.github/workflows/ci.yml,tests/test_builder.py
الهدف: تحسينات ملموسة للمستخدم بمجهود قليل
- السحب والإفلات للملفات والأيقونات
- وضع الأمر المعاين (Dry-run) قبل التنفيذ
- تحسين السجل: بحث + تلوين + تصدير
- اختصارات لوحة المفاتيح للإجراءات الشائعة
- وضع نهاري (Light theme) كثانٍ
الملفات المتأثرة:
ui/main_window.py(drag & drop)ui/tabs/basic_tab.py(preview command)themes/(سمة نهارية)
الهدف: فتح التطبيق لجمهور عالمي
- بنية ترجمة بـ
QTranslator - ترجمة كاملة إنجليزية
- مبدّل لغة في الإعدادات
- حفظ تفضيل اللغة
- (لاحقاً) إضافة فرنسية وتركية
الملفات المتأثرة:
i18n/translations/ar.ts,en.tsui/settings_dialog.py(مبدّل اللغة)
الهدف: سد فجوات إنتاجية المطورين
- محرر Version Info / Metadata
- اكتشاف وإدارة venv
- استيراد من
requirements.txt/pyproject.toml - التحويل الدفعي (Batch)
- سجل البناءات السابقة (History)
- محلل تبعيات محسّن (يكشف dynamic imports)
الملفات المتأثرة:
core/version_editor.py(جديد)core/venv_manager.py(جديد)core/dependency_analyzer.py(تحسين)core/build_history.py(جديد)ui/tabs/batch_tab.py(جديد)
الهدف: جعل التطبيق جاهز لاحتياجات النشر الحقيقي
- توقيع رقمي (Code signing) عبر signtool
- شاشة البداية (Splash screen)
- محرر Manifest
- اختبار ما بعد البناء (smoke test تلقائي)
- مساعد تقليل حجم الـ EXE
الملفات المتأثرة:
core/code_signer.py(جديد)core/splash_manager.py(جديد)core/manifest_editor.py(جديد)
الهدف: توسيع نطاق الاستخدام
- قوالب جديدة: FastAPI، Streamlit، Kivy، Discord bot، CLI Click
- مكتبة قوالب يساهم بها المجتمع (جلب من repo خارجي)
- توثيق إنجليزي شامل + دليل مساهمة
- التحديث الذاتي للتطبيق
- لوحة dashboard مع إحصائيات
- معاينة EXE في sandbox
- تكامل VirusTotal
- ترقية إلى PyQt6/PySide6
| الأولوية | الميزة | السبب |
|---|---|---|
| 🔴 عالية جداً | تقسيم الكود + اختبارات + CI | بدونها أي تطوير لاحق صعب |
| 🔴 عالية جداً | تعدد اللغات (إنجليزية) | يضاعف الجمهور |
| 🟠 عالية | محلل تبعيات محسّن | يحل أكبر مشكلة للمستخدمين (ModuleNotFoundError) |
| 🟠 عالية | محرر Version Info | متطلب احترافي شائع |
| 🟠 عالية | السحب والإفلات + Dry-run | تحسينات UX سريعة |
| 🟡 متوسطة | التوقيع الرقمي | محدود للمستخدمين التجاريين |
| 🟡 متوسطة | تحويل دفعي | للمستخدمين بعدة مشاريع |
| 🟡 متوسطة | venv management | يحل تعقيد للمشاريع المعزولة |
| 🟢 منخفضة | شاشة البداية | جمالي |
| 🟢 منخفضة | محدّث تلقائي | nice-to-have |
- المخاطر التقنية: تقسيم ملف 1,243 سطر إلى وحدات قد يكسر سلوكاً ضمنياً — يحتاج اختبارات قبل التقسيم أو منهجية حذرة (refactor تدريجي).
- القرار حول PyQt5 vs PyQt6: PyQt5 لا يزال مستقراً لكن PyQt6 هو المستقبل. الترقية ليست ضرورية في المراحل الأولى لكن يجب أخذها في الحسبان.
- الترخيص: PyQt5 GPL — قد يكون PySide6 (LGPL) خياراً أفضل للمشاريع المغلقة المصدر.
- المجتمع: إضافة CHANGELOG.md، CONTRIBUTING.md، LICENSE، وقالب issues لتشجيع المساهمة.
بما أن هذا مستند أفكار (لا تنفيذ):
- لا يحتاج اختبار تنفيذي؛ المخرَج هو الوثيقة ذاتها
- بعد موافقة المستخدم على الأفكار، يمكن البدء بتنفيذ المرحلة 1 على فرع
claude/brainstorm-app-ideas-FBuW4 - التحقق من كل ميزة عند تنفيذها مستقبلاً سيكون عبر:
- تشغيل التطبيق وتجربة الميزة يدوياً
- تشغيل
pytest tests/للاختبارات - فحص خرج CI
- الموافقة على الوثيقة ومراجعتها
- اختيار المرحلة الأولى للبدء (مقترح: المرحلة 1 - الأساسيات التقنية)
- إنشاء issues على GitHub لكل مرحلة/ميزة
- البدء بالتنفيذ التدريجي على الفرع المحدد