Skip to content

v0.3.0

Choose a tag to compare

@AhmedSaadi0 AhmedSaadi0 released this 07 Sep 12:01
· 14 commits to master since this release

🌟 التطبيق:

  • ⚡ معجم الجذور يفتح بسرعه: لن تنتظر ثانية واحدة؛ تم تسريع فتح قائمة الجذور القرآنية لتظهر جميعها (1642 جذراً) بشكل فوري ولحظي.
  • 🔍 بحث شامل: تم إصلاح شاشة البحث؛ يمكنك الآن التمرير لأسفل لرؤية جميع نتائج البحث والآيات مهما كان عددها دون أن تتوقف النتائج عند أول 20 نتيجة فقط.
  • 🎯 البحث عن الجذور: أصبح البحث داخل معجم الجذور ذكياً ويعثر على أي جذر قرآني تبحث عنه فوراً حتى آخر حرف من الحروف الهجائية، مع فهم كامل لاختلافات الهمزات والحركات.
  • 🛠️ تفاصيل الجذر تفتح سريعا: تم القضاء نهائياً على مشكلة تجمد التطبيق أو دوران مؤشر التحميل المستمر عند فتح أي جذر، وأصبحت معانيه ومشتقاته وشواهده تفتح بسلاسة تامة.
  • 🔋 استهلاك أقل للبطارية: التطبيق أصبح أخف بكثير على المعالج وأسرع في التنقل بين الصفحات والتبويبات.

💻 للمطورين (Technical Changelog):

  • Search Pagination & Infinite Scroll:
    • تطبيق نظام الـ Pagination الكلاسيكي عبر LIMIT & OFFSET في التبويبات الأربعة (آيات، جذور، مصادر، مشتقات) داخل SearchScreen.kt بالاعتماد على snapshotFlow ومؤشر تحميل سفلي عند جلب المزيد.
    • إضافة Debounce (300ms) مع إدارة إلغاء المهام السابقة (Job.cancel()) لمنع سباق البيانات (Race Conditions) وتخفيف الضغط على خيوط المعالجة.
    • حذف استعلام جدول الكلمات الميت (words) الذي كان يفحص أكثر من 21,000 سجل دون استخدام الواجهة له.
  • Roots List Performance Overhaul:
    • تحويل قائمة الجذور إلى نظام الـ In-Memory Virtualization بتحميل الـ 1642 جذراً في الذاكرة (زمن القراءة انخفض من ~39s إلى ~1-9ms).
    • تفعيل دالة ArabicNormalizer المباشرة في الذاكرة مع كل إدخال نصي لضمان تجربة بحث بزمن استجابة صفر ميلي ثانية (Zero Latency).
    • جعل عداد الجذور ديناميكياً يعكس العدد الفعلي المحمل (${roots.size}).
  • Database Lifecycle & Stale Handle Guard:
    • حل مشكلة تجميد الاتصال (Stale DB Handle) عند استيراد أو تحديث ملف قاعدة البيانات؛ من خلال فحص mtime وحجم الملف في getDb()، واستدعاء closeDb() تلقائياً في DatabaseSetupViewModel عند اكتمال التثبيت.
    • تحديث كائن RootEntity في مكتبة Room بالأعمدة الثلاثة الجديدة مع إبقاء النسخة عند 2 لتجنب أخطاء ترحيل غير مستخدمة.
  • Target Version: versionCode = 4, versionName = "0.3.0".