ميزة: إعادة بناء كاملة لواجهة وحدة الرسائل لتصبح متجاوبة، حديثة، وذات تصميم موحد (_page.blade.php, messages.css)؛ مما يحسن تجربة القراءة على أجهزة الكمبيوتر والهواتف المحمولة.
ميزة: استبدال روابط التنقل التقليدية بين الصفحات بنظام التمرير اللانهائي (AJAX Infinite Scroll) لقائمة المحادثات في الشريط الجانبي (messages-app.js).
ميزة: إضافة منطق الدمج الذكي (Smart Merge) أثناء التحديث التلقائي في الخلفية؛ لدفع الرسائل الجديدة الواردة إلى الأعلى مع الحفاظ على سجل المحادثة الذي يتصفحه المستخدم حالياً، لضمان تنقل غير منقطع.
ميزة: دمج إشعار صوتي (pop.wav) يعمل تلقائياً عند استلام تنبيه برسالة جديدة، مع تحسين التحميل المسبق لتقليل قيود التشغيل التلقائي في المتصفحات.
ميزة: ترقية "منقي الرموز التعبيرية" (Emoji Picker) ليصبح منبثقاً بتصميم شبكي متجاوب ومتوافق مع سمة الموقع (Theme). تم توسيع المكتبة لتشمل مئات الرموز التعبيرية، وتطبيق فلتر دقيق للأعلام وفقاً لسياسات المنصة.
إصلاح: حل مشكلة تكرار الأسماء في الشريط الجانبي للتمرير اللانهائي عن طريق استخدام سمات data-name الفريدة لإزالة تكرار عناصر DOM، متجاوزاً بذلك عدم اتساق مفاتيح التشفير أثناء إعادة رندر AJAX.
إعدادات البريد (تعتمد على قاعدة البيانات)
ميزة: ترحيل تكوين البريد من ملف .env الثابت إلى صفحة إدارة مخصصة تعتمد على قاعدة البيانات في المسار /admin/settings/mail؛ مما يسمح بتغيير إعدادات البريد في وقت التشغيل دون الحاجة لتعديل ملفات السيرفر.
إضافة: إنشاء جدول أحادي (Singleton) باسم mail_settings لتخزين بروتوكول البريد، المضيف، المنفذ، اسم المستخدم، كلمة المرور (مشفرة عبر Crypt)، التشفير، عنوان المرسل، واسم المرسل.
إضافة: إدخال MailConfigServiceProvider الذي يبدأ العمل مبكراً ليقوم بتجاوز إعدادات Laravel الافتراضية config('mail.*') من قاعدة البيانات، مع العودة التلقائية للإعدادات الافتراضية في config/mail.php في حال فقدان الجدول أو كونه فارغاً.
إضافة: بناء نموذج إدارة بتصميم Duralux مع ميزة التبديل الديناميكي لقسم SMTP عبر JavaScript (إظهار/إخفاء بناءً على المشغل المختار)، ومنطق "الحفاظ على كلمة المرور القديمة في حال ترك الحقل فارغاً"، والتحقق الشرطي من الحقول.
تنظيف: إزالة حقول SMTP القديمة من /admin/settings/system وحذف منطق الكتابة في ملف .env من AdminController::updateSystemSettings()، واستبدالها برابط يحول إلى الصفحة الجديدة المخصصة.
الأمن: يتم تخزين كلمة مرور البريد مشفرة في قاعدة البيانات باستخدام Crypt الخاص بـ Laravel ولا يتم عرضها أبداً في نموذج الإدارة؛ كما أن إرسال حقل كلمة مرور فارغ يحافظ على القيمة المخزنة الحالية.
التدويل (i18n): إضافة 18 مفتاح ترجمة لإعدادات البريد عبر جميع اللغات التسع المدعومة، مع ترجمة كاملة للعربية والفارسية.
الأداء والإحصائيات
الأداء: استبدال استرجاع البيانات الكامل بنظام تقسيم الصفحات من جهة الخادم (Server-side Pagination) بواقع paginate(50) لجميع صفحات الإحصائيات (/state). هذا يزيل تأخير التحميل الكبير للمستخدمين الذين لديهم بيانات زيارات ضخمة مع الحفاظ على سهولة الوصول للبيانات التاريخية عبر روابط Bootstrap 5.
ميزة: تقديم نظام دقيق للتحكم في رؤية عنوان IP في لوحة تحكم إعدادات الإعلانات. يمكن للمديرين الآن تقييد رؤية عناوين IP للزوار في الإحصائيات لتكون متاحة لـ: الجميع، جميع الأعضاء المشتركين، خطط اشتراك محددة، المديرين فقط، أو تعطيلها تماماً للخصوصية.
إعادة هيكلة: فرض تنسيق تقسيم صفحات Bootstrap 5 عالمياً عبر AppServiceProvider لضمان اتساق بصري في جميع الوحدات، بما في ذلك وحدات الإحصائيات والرسائل المحدثة.
التدويل (i18n): إضافة مفاتيح ترجمة "رؤية عنوان IP" للغتين الإنجليزية والعربية لدعم خيارات الإدارة الجديدة.
الفواتير وبوابات الدفع
ميزة: دمج Lemon Squeezy كبوابة دفع مدعومة بالكامل لنظام الاشتراكات والخطط المدفوعة، ومعالجة جلسات الدفع عبر JSON:API.
ميزة: إضافة تكوين ديناميكي لبوابة Lemon Squeezy في لوحة الإدارة (/admin/billing/gateways)، مع دعم إعداد معرف المتجر (Store ID)، معرف المنتج (Variant ID)، مفتاح API، وسر الـ Webhook.
ميزة: تنفيذ التحقق من Webhook باستخدام HMAC SHA256 (order_created) لإتمام دورة حياة الدفع بشكل آمن وغير متزامن.
ميزة: إضافة "أداة مزامنة التطوير المحلي" في صفحة تفاصيل الطلب بالمدير لمحاكاة Webhooks الخاصة بـ Lemon Squeezy والموافقة الفورية على الطلبات أثناء الاختبار المحلي.
إصلاح: إعادة هيكلة تدفق رابط العودة (Return URL) لـ Lemon Squeezy للبحث عن جلسات الدفع مباشرة عبر قاعدة البيانات المحلية، لتجاوز نقص الرموز الديناميكية لروابط إعادة التوجيه في Lemon Squeezy.
إصلاح: زيادة الحد الأقصى لطول مفاتيح API في إعدادات البوابة إلى 5,000 حرف لاستيعاب رموز Bearer الطويلة جداً الخاصة بـ Lemon Squeezy دون حدوث أخطاء 404.
إصلاح: تحديث منطق إخفاء مفتاح API (Masking) في إعدادات بوابة الاشتراك لاستخدام قناع ثابت (***) بدلاً من تكرار الرموز، مما يمنع مشاكل تمدد CSS في لوحة الإدارة.
التدويل (i18n): إضافة مفاتيح ترجمة بالإنجليزية والعربية لواجهة دمج Lemon Squeezy.
تحديثات الإدارة المرحلية
ميزة: إعادة تصميم /admin/updates ليصبح مُحدّث AJAX مرحلي مع عرض تقدم مرئي لعمليات: التنزيل، الاستخراج، فحص سلامة الحزمة، وضع الصيانة، تثبيت الملفات، ترحيل قاعدة البيانات، والتنظيف.
الموثوقية: كل مرحلة تحديث تعمل الآن كطلب منفصل وتخزن حالة الجلسة في الخيارات (options)، مما يقلل الضغط على الاستضافات الضعيفة أو المشتركة مع ضمان استعادة وضع الصيانة عند الفشل.
الأمان: يتم استخراج حزم الإصدار في مستودع تخزين معزول، وفحصها للتأكد من سلامة مسارات ZIP، ومسحها بحثاً عن أي ترحيلات قاعدة بيانات تخريبية قبل نسخ أي ملفات للموقع الحي.
OAuth 2.0 والتكاملات
إصلاح: حل مشكلة خطأ "انتهت صلاحية الصفحة" (419) أثناء تدفق تبادل رموز ADStn OAuth. تم استثناء مسار /oauth/token من فحص CSRF في bootstrap/app.php؛ مما يسمح بطلبات POST من خادم إلى خادم لاسترداد رموز الوصول دون الحاجة لرمز CSRF المرتبط بالجلسة.
المتجر والإضافات
إصلاح: حل مشكلة عدم تتبع تنزيلات الإضافات (قوالب/إضافات برمجية) عبر API في عداد التنزيلات، وذلك من خلال الانتقال إلى مسارات تنزيل قابلة للتتبع.
تجربة المستخدم: تفعيل تنزيلات الضيوف للمنتجات المجانية في المتجر لدعم أدوات التثبيت التلقائي وتحسين الوصول العام للمصادر المجانية.
الإشعارات وتفضيلات البريد الإلكتروني
ميزة: إضافة صفحة مخصصة لـ إعدادات إشعارات البريد الإلكتروني (/settings/notification) تتيح للأعضاء تفعيل أو تعطيل تنبيهات البريد لأحداث محددة مثل: الرسائل الجديدة، التعليقات، المتابعات، الإشارات (Mentions)، إعادة النشر، التفاعلات، ردود المنتدى، وتحديثات المتجر.
المعمارية: إدخال نموذج UserNotificationSetting وجدول user_notification_settings لحفظ تفضيلات البريد الدقيقة للأعضاء.
المعمارية: توحيد إرسال الإشعارات عبر NotificationService لتقييم قواعد اشتراك العضو تلقائياً قبل إرسال أي بريد نظام (SystemNotificationMail).
إصلاح: حل مشكلة "خطأ خادم داخلي 500" أثناء عمليات المتابعة الناتجة عن فقدان Namespace لخدمة NotificationService المحقونة في ProfileController.
إصلاح: حل مشكلة "خطأ خادم داخلي 500" (بيانات طويلة جداً للعمود 'nurl') التي كانت تمنع حفظ إشعارات الرسائل الجديدة وتعطل إرسال البريد اللاحق، وذلك عبر تغيير نوع العمود nurl في جدول noti إلى TEXT.
الأمن: إشعارات البريد للرسائل الخاصة الجديدة تقوم الآن بإنشاء مفاتيح روابط مشفرة (/messages/{key}) بدلاً من معرفات رقمية قابلة للتخمين عند تفعيل تشفير الرسائل في /admin/security.
تجربة المستخدم: إضافة رابط إلغاء الاشتراك (Unsubscribe) في تذييل جميع رسائل إشعارات النظام، والذي يؤدي مباشرة إلى صفحة إعدادات إشعارات العضو.
التدويل (i18n): تعريب وترجمة واجهة إعدادات الإشعارات ووصف الأحداث بالكامل لجميع اللغات التسع المدعومة.
إصدار ميزات جديد — مركز توثيق الإضافات، المصادقة الثنائية، إدارة ملفات Ads.txt، تحسين أداء البحث، الأرشفة الذكية، بوابة دفع Paddle، والصفحات القانونية.
ميزة: تنفيذ المصادقة الثنائية (2FA) عبر البريد الإلكتروني. يمكن للأعضاء الآن تفعيل طبقة حماية إضافية من إعدادات الخصوصية، مما يتطلب رمز تحقق فريد يتم إرساله إلى بريدهم الإلكتروني أثناء تسجيل الدخول.
ميزة: إضافة أكواد الاستعادة (Recovery Codes) للمصادقة الثنائية، مما يتيح للأعضاء استعادة الوصول إلى حساباتهم في حال فقدان الوصول إلى بريدهم الإلكتروني.
الأداء: ترقية البحث العام في بوابة المجتمع لاستخدام فهرسة MySQL FULLTEXT مع خاصية MATCH AGAINST (الوضع المنطقي - Boolean Mode)، مما أدى إلى تحسين سرعة البحث وذات الصلة بشكل كبير عبر المنشورات، مواضيع المنتدى، قوائم الدليل، المنتجات، والأخبار.
الأداء: تقديم نظام الأرشفة الذكية لمرات ظهور الإعلانات. يتم الآن نقل بيانات التتبع الضخمة تلقائياً إلى جداول أرشفة مخصصة بعد 30 يوماً عبر مهمة Artisan يومية (myads:archive-impressions)، مما يحافظ على خفة وسرعة جداول الخدمة النشطة.
التدويل (i18n): تعريب كامل لواجهة المصادقة الثنائية، وأكواد الاستعادة، وتلميحات الأمان عبر جميع اللغات التسع المدعومة، لضمان تجربة أمان متسقة لجميع الأعضاء.
تبادل الإعلانات والتحليلات
ميزة: تقديم الاستهداف الجغرافي للإعلانات، مما يسمح للمعلنين بتقييد ظهور إعلانات البانر والنصوص/الروابط لدول معينة عبر أداة اختيار دول متعددة في نماذج إنشاء وتعديل الإعلانات.
ميزة: تنفيذ خرائط حرارية للنقرات بالساعة. يمكن للمعلنين الآن تصور توزيع النقرات على مدار 24 ساعة عبر خريطة حرارية مصغرة تفاعلية ومتوافقة مع سمة الموقع (فاتح/داكن) في لوحة تحكم إدارة الإعلانات.
ميزة: إضافة اختبار A/B للبانرات والروابط باستخدام خوارزمية تحسين ذكية Epsilon-Greedy (80/20). يمكن للمعلنين تقديم "نسخة B" بديلة (صورة/نص)، ويقوم النظام تلقائياً بعرض النسخة الأفضل أداءً بشكل متكرر بناءً على نسبة النقر إلى الظهور (CTR) في الوقت الفعلي.
إصلاح: حل خطأ 500 Internal Server Error الحرج في AdsServingController الناتج عن التعامل غير الصحيح مع المجموعات (Collections) ومجموعات النتائج الفارغة أثناء اختيار الإعلان.
المعمارية: تقديم AdStatsService لتجميع بيانات النقرات الساعية و AdGeoService (كمكان محجوز) لتوسعات تحديد الموقع الجغرافي مستقبلاً.
واجهة المستخدم: تحسين جداول قائمة الإعلانات بعمود الأداء الجديد وخرائط حرارية تدعم "تلميحات الأدوات" (Tooltips) وتتكيف مع الوضعين الفاتح والداكن.
ميزة: إضافة تكوين ديناميكي لبوابة Paddle في لوحة الإدارة (/admin/billing/gateways)، مع دعم مفتاح API، ومعرف السعر (Price ID)، وسر الويب هوك (Webhook Secret)، والتبديل بين وضع الاختبار (Sandbox) والوضع المباشر.
ميزة: تنفيذ التحقق من توقيع الويب هوك الخاص بـ Paddle (رأس Paddle-Signature بتنسيق ts=...;h1=...) باستخدام HMAC SHA256، مع نافذة سماح مدتها 5 دقائق للحماية من هجمات إعادة التشغيل (Replay attacks).
ميزة: دعم أنواع أحداث الويب هوك transaction.completed و transaction.payment_failed و transaction.updated لتحديثات دورة حياة الطلب بشكل غير متزامن.
المعمارية: إضافة فئة PaddleGateway وتوسيع AbstractBillingGateway وتسجيلها في BillingGatewayRegistry جنباً إلى جنب مع Stripe و PayPal والتحويل البنكي و Lemon Squeezy.
المعمارية: يتم تخزين مفتاح API وسر الويب هوك لـ Paddle بشكل مشفر باستخدام إعدادات SubscriptionGatewaySettings مع تكوين الحقول السرية، بما يتوافق مع أنماط الأمان الموجودة.
التدويل (i18n): إضافة مفاتيح ترجمة خاصة بـ Paddle باللغتين الإنجليزية والعربية.
الصفحات القانونية
ميزة: إضافة صفحة سياسة الاسترجاع الجديدة (/refund) كصفحة قانونية مخصصة، باتباع نفس النمط المعماري لصفحات الخصوصية والشروط.
إضافة: إنشاء دالة refund() في PageController مع دعم كامل لتحسين محركات البحث SEO (الوسوم الوصفية، الأوصاف، ومسارات التنقل).
إضافة: إنشاء قالب refund.blade.php بسمة لونية برتقالية/كهرمانية مميزة، مع دعم الوضع الداكن والتصميم المتجاوب.
إضافة: دمج رابط سياسة الاسترجاع في تذييل الموقع مع أيقونة مخصصة (fa-solid fa-rotate-left).
التدويل (i18n): إضافة 22 مفتاح ترجمة لسياسة الاسترجاع (المقدمة، الأهلية، العملية، الإطار الزمني، النزاعات، إلخ) عبر جميع اللغات التسع المدعومة.
إدارة الوسائط
ميزة: تقديم مدير وسائط شامل للمسؤولين في /admin/media ، مما يسمح بالإشراف الكامل على الملفات داخل مجلدات الرفع.
ميزة: تنفيذ فحص الملفات بشكل متكرر (Recursive) مع تصفية متقدمة حسب النوع (صور، فيديوهات، أرشيف، صوتيات، إلخ) وبحث فوري بالاسم أو المسار.
ميزة: إضافة نظام معاينة الصور باستخدام نافذة Bootstrap 5 المنبثقة، مما يوفر نظرة سريعة على أصول الصور مع إجراءات التحميل وإعادة التسمية المدمجة.
ميزة: عمليات آمنة على نظام الملفات تشمل إعادة التسمية مع تنقية المسارات والحذف النهائي للأصول غير المستخدمة.
المعمارية: إنشاء AdminMediaController لمركزية منطق الوسائط، مما يضمن تقييد عمليات الملفات بمسارات الرفع المسموح بها.
واجهة المستخدم: دمج أيقونات مخصصة لأنواع الملفات وقوائم إجراءات متجاوبة باستخدام نظام تصميم admin-duralux.
نظام الإضافات ومركز التوثيق
ميزة: تحسين مركز توثيق الإضافات بدعم تلقائي للصور. يقوم النظام الآن بتقديم الأصول الداخلية للإضافات (صور، webp، إلخ) بشكل آمن ويعيد كتابة مسارات الصور النسبية في Markdown إلى روابط صالحة، مما يحل مشاكل عرض التوثيق.
المعمارية: إضافة مسار admin.plugins.asset ودالة pluginAsset() لتقديم الأصول بأمان من خارج جذر الويب مع التحقق من الامتدادات والحماية من تجاوز الدليل (Directory traversal).
المعمارية: تنفيذ منطق preg_replace_callback لمعالجة وربط لقطات الشاشة الداخلية للإضافات ديناميكياً داخل ملفات README.md و screenshots.md.
تحسين محركات البحث (SEO) وتفويض الإعلانات
ميزة: إضافة إدارة ملفات Ads.txt و App-Ads.txt إلى لوحة الإدارة. يمكن للمسؤولين الآن إنشاء وتعديل ملفات التفويض هذه مباشرة عبر واجهة جديدة تحت قسم SEO.
المعمارية: تنفيذ الحفظ المزدوج (في الجذر ومجلد public/) لملفات ads.txt و app-ads.txt لضمان أقصى قدر من التوافق مع مختلف إعدادات الاستضافة وخوادم الويب.
المعمارية: تحديث ملف .htaccess في جذر المشروع للسماح صراحة بملفات .txt و .xml لضمان خدمتها بشكل صحيح.
المتجر والسوق
إصلاح: حل مشكلة في صفحة إنشاء المتجر (/store/create) حيث كان محدد الفئات الفرعية الديناميكي (AJAX) يفشل في التحميل أو يظهر بشكل خاطئ داخل حقول الإدخال، مما يمنع اختيار أنواع السكربتات.
إصلاح: حل خطأ 500 Internal Server Error حرج في صفحة تعديل المنتج للمسؤول ناتج عن تداخل الأقواس وعدم اتساق الصيغة في قوالب Blade.
واجهة المستخدم: توحيد تخطيط نموذج تعديل المنتج لضمان وضع العناوين بشكل متسق واستجابة النموذج لجميع أنواع المنتجات (سكربتات، إضافات، قوالب).
الصيانة
تحديث: ترقية مكتبة postcss من 8.5.6 إلى 8.5.14 لمعالجة الثغرات الأمنية في التبعيات.
تحديث: ترقية مكتبة axios من 1.15.0 إلى 1.15.2 لتحسين استقرار معالجة الطلبات في موجز المجتمع.
تحديث: ترقية phpseclib/phpseclib من 3.0.51 إلى 3.0.52 لضمان أحدث التصحيحات الأمنية واستقرار التشفير.
هذا الموقع يستخدم ملفات تعريف الارتباط (الكوكيز ) للمساعدة في تخصيص المحتوى وتخصيص تجربتك والحفاظ على تسجيل دخولك إذا قمت بالتسجيل.
من خلال الاستمرار في استخدام هذا الموقع، فإنك توافق على استخدامنا لملفات تعريف الارتباط.