Releases: AhmedSaadi0/quran-words-android
Releases · AhmedSaadi0/quran-words-android
Release list
v0.4.0
أولاً: ما الجديد للمستخدمين؟ (تجربة الاستخدام)
- سلاسة أكبر في حركة الترويسة والتمرير:
- إعادة ضبط شريط السورة وشريط تفاصيل الجذور؛ حيث تختفي عناصر التحكم بسلاسة عند التمرير لأسفل وتعود للظهور فوراً عند السحب لأعلى في قمة القائمة.
- قراءة كاملة لملخصات الجذور:
- يظهر الآن الملخص اللغوي للجذور (المولّد بالذكاء الاصطناعي) بحجمه الطبيعي والكامل دون اقتطاع للنص ودون الحاجة لفتح نوافذ إضافية.
- أيقونات متناسقة ودعم كامل للواجهات:
- استبدال كافة الرموز التعبيرية (الإيموجي) في شريط التنقل السفلي والبطاقات بأيقونات نظام واضحة ومهنية (Material Icons) تدعم الوضع الداكن والاتجاه العربي من اليمين لليسار (RTL).
- سهولة أكبر في النقر (إمكانية الوصول):
- توسيع مساحات النقر للأزرار الصغيرة (مثل زر حفظ السورة والإشارات المرجعية) لتصبح مريحة وسهلة اللمس وفق معايير الوصول العالمية.
- استهلاك أقل للبطارية والذاكرة:
- تحسينات داخلية تمنع التطبيق من استهلاك موارد الهاتف أو المعالج أثناء وجوده في الخلفية.
🛠️ ثانياً: للمطورين والمساهمين (التفاصيل المعمارية والهندسية)
هذا التحديث يمثّل هجرة معمارية كاملة لطبقة العرض والواجهات نحو نمط Unidirectional Data Flow (UDF/MVI) و Clean Architecture:
1. القضاء على الملفات المتضخمة (Eliminating God-Files):
- حذف ملف
ViewModels.ktبالكامل (الذي كان يتجاوز 1,400 سطر ويحوي 9 كلاسات متباينة). - تفكيك مجلد
ui/screens/القديم وتوزيع كل شاشة داخل حزمتها المستقلة بنمط (Feature-First):
ui/{feature}/{Contract, Route, Screen, components/}. - عزل الشاشات إلى ثنائية نظيفة:
Routeمسؤولة عن جمع الحالات وإدارة الآثار الجانبية، وScreenنقية (Stateless) لا تتجاوز 200 سطر وتدعم الـ@Previewوالاختبارات المباشرة.
2. مسارات تنقل آمنة برمجياً (Type-Safe Navigation):
- حذف كلاس
Screen.ktوالمسارات النصية الهشة بالكامل، واستبدالها بكائنات ومفردات@Serializableصلبة، مما يمنع الأخطاء في استخراج المتغيرات أثناء التنقل.
3. تجريد طبقة التفضيلات وحقن الاعتماديات (DI & DataStore):
- تحويل
UserPreferencesRepositoryإلىinterfaceمجردة في طبقة الـdomainمع نقل التنفيذ الفعلي إلىcore/datastore/UserPreferencesDataStore. - حذف الـ Extension العام
Context.dataStoreلمنع تسريب الـ Context. - توحيد تصفيات الـ Dispatchers (
@IoDispatcher,@MainDispatcher) وحذف التكرار بينAppModuleوcore/di. - عزل كلاسات التحميل والشبكة (
data.remote) عن طبقة العرض؛ حيث أصبحت شاشة الإعداد تستهلكSetupUiStateنقي.
4. كفاءة محرك Jetpack Compose:
- استبدال أكثر من 55 موضع استدعاء لـ
collectAsState()بـcollectAsStateWithLifecycle()لتفريغ الموارد تلقائياً مع دورة حياة التطبيق. - حل مشاكل الكتابة في مرحلة القياس (Layout-phase state writes) وفصل قراءة بيكسلات التمرير لمنع الـ Recomposition المتكرر أثناء السحب.
5. تأسيس حزمة اختبارات حديثة مع Turbine:
- إدخال مكتبة Turbine 1.2.1 لاختبار تدفق الحالات التفاعلية.
- كتابة 12 اختبار وحدة جديداً مع أدوات محاكاة مستقلة (
FakeUserPreferences,FakeQuranRepository) تغطي ميزات البحث ومعالجة النصوص والإشارات المرجعية. - إعداد أدوات ضبط جودة الكود والتنسيق (
SpotlessوDetekt Baseline).
v0.3.0
🌟 التطبيق:
- ⚡ معجم الجذور يفتح بسرعه: لن تنتظر ثانية واحدة؛ تم تسريع فتح قائمة الجذور القرآنية لتظهر جميعها (1642 جذراً) بشكل فوري ولحظي.
- 🔍 بحث شامل: تم إصلاح شاشة البحث؛ يمكنك الآن التمرير لأسفل لرؤية جميع نتائج البحث والآيات مهما كان عددها دون أن تتوقف النتائج عند أول 20 نتيجة فقط.
- 🎯 البحث عن الجذور: أصبح البحث داخل معجم الجذور ذكياً ويعثر على أي جذر قرآني تبحث عنه فوراً حتى آخر حرف من الحروف الهجائية، مع فهم كامل لاختلافات الهمزات والحركات.
- 🛠️ تفاصيل الجذر تفتح سريعا: تم القضاء نهائياً على مشكلة تجمد التطبيق أو دوران مؤشر التحميل المستمر عند فتح أي جذر، وأصبحت معانيه ومشتقاته وشواهده تفتح بسلاسة تامة.
- 🔋 استهلاك أقل للبطارية: التطبيق أصبح أخف بكثير على المعالج وأسرع في التنقل بين الصفحات والتبويبات.
💻 للمطورين (Technical Changelog):
- Search Pagination & Infinite Scroll:
- تطبيق نظام الـ Pagination الكلاسيكي عبر
LIMIT & OFFSETفي التبويبات الأربعة (آيات، جذور، مصادر، مشتقات) داخلSearchScreen.ktبالاعتماد علىsnapshotFlowومؤشر تحميل سفلي عند جلب المزيد. - إضافة
Debounce (300ms)مع إدارة إلغاء المهام السابقة (Job.cancel()) لمنع سباق البيانات (Race Conditions) وتخفيف الضغط على خيوط المعالجة. - حذف استعلام جدول الكلمات الميت (
words) الذي كان يفحص أكثر من 21,000 سجل دون استخدام الواجهة له.
- تطبيق نظام الـ Pagination الكلاسيكي عبر
- 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 لتجنب أخطاء ترحيل غير مستخدمة.
- حل مشكلة تجميد الاتصال (Stale DB Handle) عند استيراد أو تحديث ملف قاعدة البيانات؛ من خلال فحص
- Target Version:
versionCode = 4,versionName = "0.3.0".
v0.2.1
ما الجديد في هذا الإصدار
⚡ تنزيل أسرع لقاعدة البيانات
- أصبحت قاعدة البيانات مضغوطة، فالتنزيل الآن أسرع بأربع مرات تقريبًا ويستهلك بيانات أقل.
- تحديثات مستقبلية بضغطة واحدة: عندما تتوفر نسخة محسّنة من البيانات سيصلك تنبيه داخل التطبيق مع حجم التحديث وملاحظات حول الجديد فيه.
🏠 تنبيه بالتحديثات
- بانر في الصفحة الرئيسية يعلمك فور توفر تحديث لقاعدة البيانات، مع إمكانية التأجيل.
- صفحة «إدارة قاعدة البيانات» أصبحت تعرض: نسختك الحالية، أحدث نسخة، والحجم قبل التنزيل.
📋 نسخ آيات أي كلمة كاملة
- في صفحة الكلمة، زر «نسخ الكل» يعمل فورًا وينسخ جميع الآيات المرتبطة بالكلمة دفعة واحدة — دون انتظار تحميل القائمة كاملة.
🐛 إبلاغ أسهل عن أخطاء الملخص الذكي
- نموذج إبلاغ جديد داخل التطبيق: تختار نوع المشكلة، تشرحها، وتقترح التصحيح — ثم ترسل عبر GitHub أو تنسخ البلاغ / تشاركه عبر أي تطبيق (واتساب، بريد...) حتى بدون حساب GitHub.
✨ تحسينات الواجهة
- تم اضافة تاب جديد يحتوي كلمات القران المشتقه من الجذر, مع ايات الكلمة المحدده وامكانيه نسخ ايات كلمه او عدة كلمات مره واحده
- تبويبات صفحة الجذر أصبحت تُسحب أفقيًا مع شارات بعدد العناصر — لا نصوص مقصوصة بعد اليوم.
- صفحة إدارة قاعدة البيانات أصبحت تُمرَّر بسلاسة على جميع الشاشات.
- ثبات شريط التقدم أثناء التنزيل (بلا وميض) وزر تنزيل واضح عند توفر تحديث.
v 0.1.1
v 0.1.1
تم تحسين التنقل بشكل عام خصوصا بين الكلمات وتصفح الايات والجذور وغيرها.
تم تغيير اسم الحزمة ليتطابق مع اسم المستودع
new package name : io.github.ahmedsaadi0.quranwords