v1.6.0
الأحدث
إطلاق حزمة شاملة: ترخيص متعدد الأجهزة، طابور إعادة محاولة للبريد، زر استئناف أثناء الانقطاع، وباقة المؤسسات بتصميم احترافي جديد.
ميزات جديدة
- دعم جهازين لكل ترخيص — نقل ذاتي مرة كل 90 يوماً دون دعم فني.
- باقة MAX (مؤسسات) بتصميم enterprise-grade — "احصل على العرض" + طلب انضمام مخصّص.
- زر «استئناف» يظهر داخل الإجابة إذا انقطع الاتصال أثناء التدفق.
- طابور persistent لإعادة محاولة بريد الترخيص — لا رسالة تضيع حتى لو تعطل مزود SMTP.
- لوحة Admin لمراقبة طابور البريد:
GET /api/v1/admin/email-queue+ summary + retry. - بانر ترويجي + تحديث الأسعار: AIR 89 ر.س، PLUS 149 ر.س (بدلاً من 49 و 99).
تحسينات أمنية
- Admin auto-login الآن يتطلب
X-Admin-PINheader كطبقة دفاع إضافية. - Multi-device verify يستخدم
SELECT ... FOR UPDATEلمنع race بين طلبات متزامنة. - Rate limit على
POST /contact(5 في الدقيقة لكل IP) يحدّ من إغراق صندوق الوارد. - فحص قوة JWT secret: يرفض الإقلاع في prod إذا كان قصيراً أو يحتوي substring ضعيف.
- Webhook HMAC إلزامي في prod (Shopify + Salla + Zid) — لا توقيع = 503.
- Revocation list endpoint فعلي (
/api/v1/license/revocation-list) يفرض استرداد الأموال خلال 24 ساعة.
الوصول والأداء
- aria-label على كل زر SVG-only + aria-expanded ديناميكي على FAQ.
- Focus trap + inert background في modal طلبات المؤسسات.
- skip-link +
<main>landmark على الصفحات الرئيسية. - Preconnect لـ Google Fonts على 9 صفحات — توفير 100-150ms LCP.
- Contrast على النصوص الثانوية:
#86868b → #5a5a60(يجتاز WCAG AA). - role=tablist + aria-selected على أزرار تصنيف نموذج التواصل.
إصلاحات
- Electron: قفل نسخة واحدة — لا تُفتح نسختان من التطبيق في آن واحد.
- تدفق النص الطويل: rAF batching + AbortController + flush-on-cancel بلا تسريب DOM.
- 401 أثناء stream يُنظّف tokens ويعيد توجيه
/loginبعد 1.2 ثانية. - نموذج التصدير يستبعد
meyar_license_key+ tokens من الـ JSON backup. - CaseChat يعرض Toast عند انقطاع SSE مع مسودة جزئية.