Skip to content
SalehGNUTUX edited this page Jul 22, 2026 · 2 revisions

خطة العمل الحيّة — «تلميذي»

ملفّ حيّ: ما أُنجِز، وما سيُنجَز، ومكان إضافة المقترحات والمستجدّات. حدّثه مع كل تغيير. آخر تحديث: 2026-06-20. المراحل 0–7 + نظام الصوت + الحسابات + محتوى anas + قصّة الأرقام + مُسجِّل التمرّن + Piper + قارئ القصص + القرآن + (الموقع الرسميّ وهيكلة GT-MK والنشر) + حساب الأهل ولوحة التحكّم والتقارير + الوضع الداكن — منجزة ومنشورة. التحزيمُ الأصليّ (Linux+Android) منفَّذٌ ومُختبَر، يُرفَع غدًا (packaging.md). قاعدةٌ ثابتة: لا رفع/نشر حتى يختبر المستخدمُ محليّاً ويوافق (تعديل → npm run build → «جاهز للاختبار المحليّ» → إقرار → التزام/دفع).

🔧 المفتوح — نقطة الاستئناف (التفاصيل في ذاكرة project_mishkat_open_issues)

🚧 v1.7 — قيدَ التطوير (بدأت 2026-07-19، بعدَ نشرِ v1.6.0)

أربعةُ محاورَ اختارَها المستخدمُ + استثناءٌ مأذونٌ للقرآنِ عبرَ الإنترنت. البناءُ على دفعاتٍ (أ→هـ):

  • ✅ دفعة أ: إزالةُ شارات «جديد» من مزايا الإصداراتِ القديمة (تُحجَزُ للمستقبل) + حركةُ ذراعَي الآليّ في «علّم الآليّ» (تتمايلانِ من الكتفِ بطورٍ واحد، وطرفُ الذراعِ مخفيٌّ خلفَ الجسد، وتلوّحانِ عند الفرح).
  • ✅ دفعة ب: تأثيرُ الإقلاع — شاشةٌ تُضيءُ أجزاءَ الآليِّ تدريجيًّا مع النسبةِ المئويّةِ (10ث) ثمّ تُلقي التحيّةَ «السلام عليكم! هيّا نلعبُ ونتعلّم»، بعلامةِ GT-MISHKAT أعلى وGNUTUX أسفل. + اهتزازٌ لطيف (haptic) + احترامُ prefers-reduced-motion.
  • ✅ دفعة ج: تخصيصُ الآليّ (لونٌ + اسمٌ + 10 ملحقاتٍ تُكسَبُ بالإنجاز) + التحفيزُ اليوميّ (حلقةُ الهدفِ + شعلةُ السلسلة 🔥). راجعِ architecture.md.
  • ✅ دفعة د: تنقّلٌ صوتيٌّ للصغار (البطاقةُ تَنطِقُ اسمَها) + وضعُ الاستماعِ الليليّ + دليلُ الوالد لكلِّ نشاط + بانرُ المناسباتِ الإسلاميّة (تحويلٌ هجريٌّ محلّيّ).
  • 🚧 دفعة هـ (التالية): القرآنُ الكاملُ عبرَ الإنترنتأوّلُ استثناءٍ متعمَّدٍ من «محلّيٌّ 100%»، مأذونٌ من المستخدم: بطاقاتُ أحزابٍ ← بطاقاتُ سورٍ؛ استماعٌ/حفظٌ عبرَ الإنترنت + تنزيلٌ محلّيٌّ لكلِّ سورة؛ شارةُ 🟢 محلّيّ/🌐 متّصل؛ مُطفأٌ افتراضيًّا خلفَ بوّابةِ الوالد، والوالدُ يُفعّلُه للأبناء. دونَ المساسِ بالجزءِ المحلّيِّ الحاليّ (الفاتحة+جزء عمّ). — جلسةٌ مركّزةٌ لأنّه الأكبرُ والأكثرُ حساسيّة.

🔜 v1.6 — الخطّةُ القادمة (أُجِّلت من v1.5 بطلبِ المستخدم 2026-07-07)

أنشطةٌ جديدة (تنافسيّةً حيثما ناسب عبر versus): وصلُ النقاط (أرقام/حروف بالترتيب) · بازلُ صورٍ · تلوينٌ رقميّ · ميزانُ المقارنة (أثقل/أخفّ · أكثر/أقلّ) · جِدِ المختلف/الفرق · ذاكرةُ الأصوات · لوحةٌ هندسيّة (geoboard). تحسينات: تعميمُ «الشاشة المخصّصة للّعب» (body.ingame) على ألعابِ اللغات/الرياضيّات · توسيعُ المحتوى الصوتيّ للغات · إصلاحاتُ اختبار الجهاز.

✅ v1.5.0 (2026-07-07) + v1.5.1/v1.5.2 (2026-07-08) — منشورةٌ بالكامل: نسخةٌ احتياطيّةٌ JSON + «الزمانُ والمكان»

v1.5.1: «📂 أعمالي» (معرضُ الطفلِ لذكرياتِه المنجَزة) + 6 ذكرياتٍ جديدة (الإجمالي 85) + زرُّ «شارك المشروع». v1.5.2: إصلاحُ الوضعِ الداكن (لونُ نصِّ الأزرار) + مشاركةُ الحاسوب + تشكيلُ نطقِ الاتجاهات/الفصول/الفترات + بطاقاتٌ عائمةٌ ونطقٌ عند النقرِ (فترات/فصول/صلوات) + أيقوناتُ SVG معتمدة. ✅ الأولويّة 1 — تصدير/استيراد الحسابات (نسخةٌ احتياطيّةٌ JSON) [مطلبُ المستخدم — أساسيّ] — مُنجَز: وحدةٌ مشترَكة src/backup.js (backupExport/backupImport/openBackupModal) تجمعُ كلَّ مفاتيح tilmithi_* (الحسابات · التقدّم · إعداداتُ الوالدين · تفضيلاتُ الصوت) ← JSON، وتستعيدُها بتأكيد. في لوحة التحكّم (index.html#sec-accounts) + بطاقةُ اختصارٍ في صفحةِ الوالدين (home.html) تفتحُ نافذةً مباشرةً بالزرَّين (بأيقونةِ التطبيقِ data-icon="backup"). التصديرُ على الهاتف: يكتبُ في CACHE (بلا صلاحيّةِ تخزين) ثمّ Share — نفسُ نهجِ الطباعةِ المُثبَت (يتفادى قيودَ scoped-storage على أندرويد 11+)؛ ارتدادٌ إلى Web Share ثمّ تنزيلٍ مباشر. تسجيلاتُ الطفلِ الصوتيّةُ في IndexedDB (هدفٌ إضافيّ، مؤجَّل).

الأولويّة 2 — ألعابٌ/أنشطةٌ جديدة (تنفيذٌ أصيلٌ محلّيٌّ بإطارٍ إسلاميّ؛ لا نُسمّي أيَّ مصدرِ إلهامٍ خارجيّ في التوثيق):

  • ✅ «الزمانُ والمكان» — مُنجَز (نشاطٌ كبير): بطاقةٌ جامعةٌ (صفحةُ clock.html + قسمٌ مقابلٌ في lang.html للإنجليزيّة/الفرنسيّة) بوحدتَين مشترَكتَين src/clock-widget.js وsrc/orient-widget.js:
    • ⏰ الساعة: تعلّمٌ (عقاربٌ تُسحَب + رقميٌّ بمفتاحِ 12⇄24 + توگل صباح/مساء) + لعبةٌ تنافسيّةٌ (versus) بخمسةِ أنماط: عقارب→رقميّ · رقميّ→عقارب · اكتبِ الوقت · حرّكِ العقارب · تحويل 12↔24 (AM/PM). نطقُ الوقتِ بجُمَلٍ صحيحةٍ + صباحًا/مساءً بـPiper في اللغاتِ الثلاث (content/clock-time.js؛ 144 جملة + لصيقتا ص/م لكلِّ لغة).
    • 🧭 الاتجاهات: بوصلةٌ تفاعليّةٌ + كرةٌ أرضيّة (SVG) + القِبلة + اختبار. 🌅 فتراتُ اليوم (8) + اختبار. 🍂 الفصول (4) + اختبار. المفرداتُ content/orient.js بـPiper (عربيٌّ kareem + alba/tom). 🕌 أوقاتُ الصلاة (تعليمُ المفهوم).
    • play.html فيه بطاقةُ «تحدّي الساعة». الأيقونة clock في icons.js. اختبارُ الاتجاهات/الفصول/الفترات: محرّكٌ عامٌّ orientQuiz (رمز↔اسم) تنافسيٌّ عبر versus.
  • بقيّةُ الأنشطةِ والتحسيناتِ (وصلُ النقاط · بازل · تلوين · ميزان · جِدِ المختلف · ذاكرةُ الأصوات · geoboard · تعميمُ body.ingame …) أُجِّلت إلى v1.6 (أعلاه).

✅ v1.4.0 — منشورٌ بالكامل (2026-07-06): ألعابٌ تنافسيّة + محتًى صوتيٌّ فرنسيٌّ/إنجليزيّ + تحسيناتُ تجربة (تفصيلٌ في project-v14-plan)

كانت فِكَرًا وأُنجِزت (كلُّ محتوانا أصيلٌ محلّيٌّ بإطارنا الإسلاميّ ونطقنا العصبيّ؛ لا نَنسخُ كودًا/أصولًا): «اصطدِ الإجابةَ الساقطة» · «أطعمِ الآليَّ» · «أكملِ النمط» على لوحة أعداد · لوحةٌ هندسيّة (اصنعِ الشكل) · ساعةٌ تفاعليّة (+ أوقاتُ صلاة) · «رتّبِ الأبجديّة» · «صنّفِ الكلمات» · «جِدِ القافية» · «عجلةُ أدرْ وأجبْ» · مظاهرُ إضافيّةٌ للعبة الذاكرة (مجموعاتُ أيقونات). فِكَرُ الآليّات (كلُّ محتوانا أصيلٌ محلّيٌّ بإطارنا الإسلاميّ ونطقنا العصبيّ؛ لا نَنسخُ كودًا/أصولًا): «اصطدِ الإجابةَ الساقطة» · «أطعمِ الآليَّ» · «أكملِ النمط» على لوحة أعداد · لوحةٌ هندسيّة (اصنعِ الشكل) · ساعةٌ تفاعليّة (+ أوقاتُ صلاة) · «رتّبِ الأبجديّة» · «صنّفِ الكلمات» · «جِدِ القافية» · «عجلةُ أدرْ وأجبْ» · مظاهرُ إضافيّةٌ للعبة الذاكرة (مجموعاتُ أيقونات).

قاعدةٌ لـv1.4: كلُّ لعبةٍ مناسبةٍ تُبنى على الإطار التنافسيّ المشترك src/versus.js (ضدّ الآليّ بثلاث صعوبات/الإخوة/الوالد + ألوانٌ + vsReact عصبيّ + علامةُ ⚔️). أيُّ نصٍّ منطوقٍ جديدٍ ⇒ robo-phrases→vocab→gen-piper وإلّا صَمَتَ على لينكس.

الأولويّات (بالترتيب):

  1. قسمُ اللغات (الأعلى أثرًا)كلُّ ألعابِ اللغاتِ صارت تنافسيّةً ✅ (سباق الترجمة · صنّف الكلمات · رتّب الأبجديّة · مطابقة الصور · مطابقة المعنى · الإملاء · الاستماع) عبرَ محرّكٍ عامّ + بطاقاتٌ ثنائيّةُ اللغة + جملةٌ افتتاحيّةٌ وردُّ فعلٍ باللغتين + خيارُ «ضدّ الوقت». توسيعُ اختبارِ اللغة ✅. المحتوى الفرنسيّ ✅ والإنجليزيّ ✅: الفرنسيّة: «🔊 الأصوات» (٣٢) + «🔡 خرائطُ المقاطع» (٤ خرائط · ٤٤٨ مقطعًا). الإنجليزيّة باحترامِ قواعدها: «🔊 Phonics» (٢٥ صوتًا: digraphs/vowel-teams/r-controlled) + «🔡 Word Families» (٥ عائلات CVC: a/e/i/o/u بنظام onset+rime). كلاهما مع اختبارِ المقاطع + الصوتِ المجرّد. القسمُ الصوتيُّ لكلِّ لغةٍ يظهرُ لها فقط (need:sounds/syllabaries). روتين: كلُّ خاصّيّةٍ جديدةٍ تُوسَمُ بـ«🆕 جديد» (see feedback-new-badge-routine).
  2. الرياضيّات (math.html) ✅ — لعبتان تنافسيّتان عبر versus: «تحدّي النمط» (أنماطُ أشكالٍ + تسلسلاتُ أعداد) و**«تحدّي الحساب»** (عمليّاتٌ مختلطة، تعيدُ استخدام GI.numrace). كلتاهما تشاركان الحارسَ pvRun.
  3. الاختبارات/عامّ ✅مظاهرُ لعبة الذاكرة (٧ مجموعات) + عجلةُ «أدرْ وأجبْ» (٦ قطاعاتٍ، SVG دوّار، سؤالٌ لكلّ قطاع، id=spinq مستقلٌّ عن «عجلة الحروف»).
  4. مُعلَّقٌ من v1.3 ✅: بطاقاتُ الأحرف على الهاتف (basics.html) — خاناتُ أشكال الحرف (أوّل/وسط/آخر) صارت مرنةً متساويةً لا تفيضُ على الشاشات الضيّقة + دعمُ الوضع الداكن.

تصغيرُ الحجم:

  • ✅ ضُغِطت مقاطعُ public/tts إلى 48kbps أحاديّ 22kHz (precache 62م→55م، ~7م أقلّ؛ الوضوحُ محفوظ). التوفيرُ متواضعٌ لأنّ أغلبَ المقاطع قصيرة.
  • تلاوةُ القرآن (public/quran ~80م) تُترَكُ كما هي — قرارُ المستخدم: لا تُضغَط. (وهي أصلًا لا تُخزَّنُ مسبقًا بل CacheFirst وقت التشغيل.)
  • حزمُ صوتٍ قابلةٌ للتنزيل (البشريّ/اللغات): دُرِست ورُفِضت نهائيًّا (2026-07-06). التوفيرُ غيرُ مجدٍ لأنّ الصوتَ البشريَّ محتوًى فريدٌ لا مكرَّر (٦٢ مقطعًا فقط يكرّرُ العصبيَّ). لا تُعَدْ إليها. (see project-voice-size-plan)

✅ v1.4 — كلُّ بنودِ الخطّة أُنجِزت (الأولويّات ١-٤ + المحتوى الصوتيُّ للّغتين + المستجدّاتُ أثناء الاختبار). جاهزٌ للمراجعةِ ثمّ الإصدار.

مُنجَزٌ في v1.4 حتى الآن (الإصدارُ = 1.4.0):

  • src/versus.js — الإطارُ التنافسيّ المشترك (يحقنُ أنماطَه، يعملُ في أيّ صفحة): vsSetup/vsMakePlayers/vsReact/vsScoreHtml + vsEndRound (نافذةُ نهاية الجولة المركزيّة: فائز + سجلُّ انتصاراتٍ لكلّ طرف يتراكم + جولة/خروج/تصفير؛ ويظهرُ السجلُّ في vsScoreHtml أثناء اللعب) + vsTurnHtml (رسالةُ الدور المبهجة الملوّنة بحركة) + vsWinsOf.
  • «سباقُ الترجمة» و**«صنّفِ الكلمات»** (⚖️، اسمعِ الكلمةَ ← اختَرْ فئتَها من L.words) في lang.html (تنافسيّتان على versus) + تناوبُ بطاقات الكلمات بين اللغتين (عُمِّم startTitleAlt على كلّ [data-fg]) + شارةُ ⚔️ وعناوينُ ألعابٍ ثنائيّةُ اللغة بنفس تصميم play.html.
  • خيارُ «وحدي» في كلّ الألعاب التنافسيّة (كلعبة الذاكرة): soloOk:true في vsSetup + vsMakePlayers() (بلا إجبارِ خصم) ⇒ لاعبٌ واحدٌ للتدرّب؛ وفي دائرةٍ وعلامة «وحدي» = لعبٌ بالعلامتين ✖◯ (لاعبان مُشتقّان من نفسِك).
  • دائرةٌ وعلامة: أحجامُ لوحة 3×3/4×4/5×5 (صفُّ «حجم اللوحة») + صعوبةُ الآليّ في صفّها المستقلّ؛ توليدُ الخطوط/الفوز/الذكاء مُعمَّمٌ (طولُ الفوز min(N,4)؛ مينيماكس للصغيرة، حجبُ التهديدات للكبيرة).
  • تعليماتُ الألعاب تُنطَقُ عبر Piper (GAME_INTROS → vocab → 7 مقاطع kareem) — تُعرَضُ وتُنطَقُ عند الإعداد في كلّ الألعاب.
  • إصلاح: الألعابُ تتوقّفُ فعلاً عند الرجوع/الإعدادات (حارس vsRun في play.html و**trRun** في lang.html يُلغي المؤقّتاتِ وذكاءَ الآليّ).
  • توحيدُ الألعاب: ألعابُ play.html الستّ + سباق الترجمة تستعملُ vsEndRound/vsTurnHtml من versus.js.

✅ v1.3.0 — منشورٌ بالكامل (2026-06-30): ويب/PWA + GitHub Release بالحزم الأربع + روابطُ الموقع.

مُنجَزٌ:

  • ألعابٌ تنافسيّة (play.html): إطارٌ مشترك vsSetup(cfg) / vsMakePlayers(forceTwo) / vsReact(p0,p1) / vsScoreHtml — خصمٌ (الآليّ بثلاث صعوبات/الإخوة/الوالد) + لونٌ لكلّ لاعب + علامةُ ⚔️ على البطاقات (g.vs). الألعاب: دائرةٌ وعلامة (مينيماكس في الصعب) · تحدّي الأعداد (تناوب) · صيدُ الحرف/الرقم (مؤقّتٌ يَنزِفُ في دور الآليّ أيضًا) · سباقُ المطابقة (صورُ MEMORY_ART) · شبكةُ الكلمات (تتبُّعُ حروفِ الكلمة بالتسلسل من شبكة 6×6 + تلوينُ خانات اللاعب). والذاكرةُ ضمنها (صوتٌ على المطابقات + vsReact).
  • صوتُ الألعاب: sfx (لمسة/نجاح/خطأ) + ردودُ الآليّ المنطوقة عصبيًّاGAME_REACTIONS في src/robo-phrases.js → وحدةُ «games» في vocab.js → مُولَّدةٌ بـgen:piper (kareem)؛ تُعرَضُ وتُنطَقُ بالنصّ نفسِه (robo.cheer/encourage/say(text)). أيُّ تعديلٍ لنصوص الألعاب ⇒ أعِدْ node tools/gen-piper.mjs.
  • ألعاب/أنشطة للطباعة (print.html): نماذجُ ورقيّةٌ جاهزة (دائرةٌ وعلامة بثلاثة أحجام · شبكةُ كلمات · صيدُ حرف · تحدّي أعداد · وصِّلْ بخطّ · ذاكرة · بنغو)، يُختارُ منها فُرادى/الكلّ (TEMPLATES + خاناتٌ + «الكلّ»)، وكلُّ ورقةٍ فيها حقولُ أسماء المتنافسين. بطاقةُ «print» في play.html تفتحُ print.html (كانت تفتحُ تعليماتٍ داخليّة).
  • الطباعةُ على الهاتف (src/smart-print.js، بعد اختبار الجهاز 2026-06-30): نصٌّ عربيٌّ سليمٌ عبر html2canvas (لا pdf.html الذي يُشوّهُ العربيّة) → تنقيطٌ بعرض A4 ثابت (794px) فتصطفُّ اللوحاتُ صفًّا، وكلُّ لعبةٍ .tpl في صفحتها (لا تنقسم)، ثمّ كتابةٌ ومشاركةٌ عبر @capacitor/filesystem+@capacitor/share (+html2canvas في package.json؛ زُومِنَ القفل).
  • أيقونةُ البرنامج (قرارُ المستخدم 2026-06-30): الشعارُ الكاملُ بالعنوان في كلّ الأماكن دون اجتزاء — أُعيد توليدُ public/+assets/icon.png من GT-MISHKATKIDS-icon.png+icon-background.png، وfix_android_icons يُعيدُ أيقوناتِ أندرويد من assets/icon.png. شاشةُ البدء = assets/splash.png (3 ثوانٍ). لا تُرجِعِ الأيقونةَ إلى صورةٍ بلا نصّ.
  • أيقونةُ أندرويد/شاشةُ البدء: كانت ناقصةً/رديئةً (يولّدُها @capacitor/assets بأحجامٍ ≤192px ويملأُ الإطار). fix_android_icons في build-packages.sh يُعيدُ توليدَ كلّ mipmap (واجهةٌ تكيّفيّة حتى 432px + مربّعة + دائريّة) بدقّةٍ عاليةٍ ومحشوّةً من المصدر.
  • الوضع الداكن: نصُّ نافذة تبديل الحساب (confirm-action.js: لونٌ ثابت ← var(--ink)) + تعميمُ ظهور الخيار المختار (قاعدةٌ أعلى تخصيصًا لـ.on في dark.css تتجاوزُ سطحَ العنصر العامّ — تشمل «اختبارات تعليمية» وكلَّ chip/dchip/region/opt/tile).
  • الألغاز تقبلُ كلَّ صيغ الجواب (puzzles.html): المُطبِّعُ يَقبلُ أداةَ التعريف (وال/فال/بال/كال) والتاءَ المربوطة (مفرد↔جذر)؛ وخريطةُ مرادفاتٍ مركزيّة SYN تقبلُ المرادفاتِ والجموعَ. مُعمَّمٌ على كلّ الألغاز.
  • الطباعةُ على الهاتف (src/smart-print.js): على Capacitor تُولَّدُ PDF (jsPDF + html2canvas) للشهادة والأنشطة (window.print لا يعمل في WebView). يبقى التحقّقُ على جهازٍ من ظهور الملفّ (وإلّا نضيفُ @capacitor/share).
  • عجلةُ الحروف: 96 كلمةً قابلةً للتكوين (تعرّفٌ أوسع) + زرُّ تسجيلِ نطق الطفل + نطقُ أيّ كلمة.
  • لعبةُ الذاكرة: مستوًى «خبير · 20».
  • وضعُ الإخوة (مُنفَّذٌ في v1.2): شريكٌ واحدٌ تلقائيٌّ أو منتقٍ، والنقاطُ للحسابين — يبقى التحقّقُ الميدانيّ.

يتبقّى لـv1.3: ترتيبُ بطاقات الأحرف على الهاتف (لم يُنفَّذْ — .grid/.gcard في lang.html وbasics.html على الشاشات الضيّقة) · التحقّقُ على جهازٍ من الطباعة والأيقونة.

✅ v1.2.0 — منشورٌ بالكامل (2026-06-28): ويب/PWA + GitHub Release بالحزم الأربع + روابطُ الموقع

  • زرُّ الرجوع في أندرويد: @capacitor/app (كان مفقودًا) + mountNativeBack/window.appBack في theme.js — تنقّلٌ تدريجيٌّ عبر الصفحات (اللغاتُ مستوًى مستوًى، الألعابُ تعودُ لقائمتها)، وعلى الفهرس رسالةُ تأكيد الخروج/البقاء (exitApp).
  • شاشةُ البدء على الهاتف (Android 12+): @capacitor/splash-screen يعرضُ splash.png الكاملَ بالاسم + خلفيّةُ نظامٍ خضراء (--splashBackgroundColor) + واجهةُ الأيقونة محشوّةٌ ضمن المنطقة الآمنة (لا تَقُصُّها الأقنعة).
  • أيقونةُ نافذة سطح المكتب: win.icondist/icon.png (الشعارُ الكامل) بدل icon-512 المحشوّة.
  • شاشةُ دخولٍ عصريّة (home.html): بطاقةٌ متجاوبةٌ مع السمة + تحديدٌ بصنف .lchip.on (الفئةُ والصورةُ بإطارٍ وحلقةٍ بارزةٍ في الوضعين، إصلاحُ عيب cssText.replace) + زرُّ تبديل وضع (loginThemeBtn) + 42 رمزًا (بلا 🌈). ولوحةُ التحكّم: تعديلُ رمز حساب الطفل + إصلاحُ أزرار الفئة في الداكن.
  • علّمِ الآليّ (index.html): النقرُ على بطاقةِ منطقةٍ يُمرّرُ تلقائيًّا إلى زرّ «✨ شرارة ذكرى» مع نبضةٍ (actpulse).
  • وضعُ الإخوة: coopPartnerId + creditSibling — النقاطُ (ذكرى/جزء/عنصر/سجلّ) تُضافُ لحساب الشريك أيضًا (مفتاحُه tilmithi_progress_v1__<id>).
  • الخطّ: Noto Sans Arabic مُضمَّنٌ offline (src/fonts/ + src/fonts.css عبر theme.js) في مقدّمة font-family لكلّ الصفحات.
  • نطقُ «Père» الفرنسيّة: SYNTH_FIX في gen-piper-lang يُركّبُها من نظيرتها «paire».
  • الرخصة في الحزم: license في package.json + inject_deb_metadata يحقنُ Debian copyright (GPL-3) و AppStream metainfo في الـdeb (ويرثُهما الـrpm عبر alien). ملاحظة: تظهرُ في مدير البرامج بعد التثبيت (فهرسةُ AppStream)؛ معاينةُ الملفِّ قبل التثبيت قد تُبقي «Unknown» (قيدُ الأداة). مزلقٌ أُصلِح: توليدُ md5sums كان يُسقِطُ /opt ← يُلحَقُ الآن.
  • مزلقُ النشر: إضافةُ @capacitor/app/@capacitor/splash-screen لـpackage.json دون مزامنة package-lock أفشلَ npm ci في النشر ← npm install --package-lock-only ثمّ التزام.

🚀 v1.1.0 — الويبُ منشورٌ (2026-06-24) · حزمُ سطح المكتب/أندرويد تُبنى وتُختبَرُ وتُرفَعُ غدًا بإذن الله

إضافاتٌ بعد النشر الأوّل (2026-06-25، تُدفَعُ مع حزم الغد):

  • استبدالُ «روبو» بـ«الآليّ» في كامل البرنامج والتوثيق (158 موضعًا/28 ملفًّا، استبدالٌ نحويٌّ مرتّب؛ مُعرّفاتُ الكود robo* تبقى). ملاحظةٌ صوتيّة: عباراتُ الآلي المنطوقةُ تغيّر نصُّها ⇒ يُعاد توليدُ الصوت العصبيّ (gen:piper) وإلّا يرتدُّ إلى espeak.
  • قسمُ «الأفعال والأزمنة» في اللغات: تصريفُ 8 أفعالٍ في الماضي/المضارع/المستقبل (EN/FR) مع الترجمة والنطق.
  • قصّةُ «رحلة الأرقام» (نشأةُ الأرقام العربيّة والصفر) في رأس قصص اللغات (EN/FR) برسومٍ SVG أصليّة (numerals-1..4).
  • دفعةُ إصلاحٍ وإثراءٍ للّغات (2026-06-25 مساءً):
    • الصوت يعملُ محلّيًّا: كان المحتوى الجديد صامتًا لأنّه بلا مقاطع Piper، ومتصفّحُ لينكس بلا أصوات Web Speech. وُلِّدت مقاطعُ alba/tom للأفعال والأزمنة و«كيف أسأل؟» وقصّة الأرقام (256 مقطعًا جديدًا؛ القائمةُ لم تُعَدْ ترميزًا). gen-piper-lang صار يجمعُ صيغَ الأفعال.
    • الأفعال: تصريفٌ كاملٌ في المضارع لكلّ الضمائر (أنا/أنتَ/هو/هي/نحن/هم) + الأزمنةُ الثلاثُ + 10 أفعال + زرُّ تسجيلِ نُطق الطفل (attachReader).
    • رسومُ قصّة الأرقام: إصلاحُ انقلاب الأرقام في SVG داخل صفحةٍ RTL (direction="ltr" على <text>) + عباراتٌ حواريّةٌ داخل الصور حسب اللغة (.scaption فوق الرسم؛ حقلُ caption في الصفحات).
    • قسمٌ جديد «كيف أسأل؟» (فئةُ عبارات): 12 سؤالًا يوميًّا (كيف حالك/ماذا بك/إلى أين تذهب/ماذا تأكل…) بالترجمة والنطق والتسجيل، بأيقونة FA person-circle-question.

مُنجَزٌ (دفعةُ الإصلاحات):

  • التصميم — بطاقاتٌ زجاجيّةٌ ملوّنةٌ في الوضع الداكن: بدلَ الأسطح المسطّحة، لكلّ بطاقةِ فهرسٍ تدرّجٌ شفّافٌ بلون هُويّتها + ضبابٌ (backdrop-filter) + وهجٌ علويّ (dark.cssnavcard:nth-child). (لوحةُ الأهل المفصّلة تبقى مسطّحة.)
  • صلاحيّاتُ Electron (AppImage/DEB): setPermissionRequestHandler يسمحُ بالميكروفون/الكاميرا (كان getUserMedia محجوبًا فيفشلُ التسجيل).
  • أيقونةُ نافذة Electron: win.icon صار من المخرَج المُحزَّم dist/icon-512.png (كان يشيرُ إلى build/ غير المُضمَّن في asar → أيقونةٌ افتراضيّة بعد فتح AppImage/DEB).
  • زرُّ الرجوع في أندرويد: مُعالَجٌ في theme.js (mountNativeBack عبر جسر Capacitor): تنقّلٌ تدريجيٌّ عبر الصفحات (history.back)، وعلى الفهرس (home.html) رسالةُ تأكيد الخروج/البقاء (exitConfirm)، ثمّ App.exitApp(). (كان يخرجُ مباشرةً.)
  • صلاحيّةُ RECORD_AUDIO في أندرويد: يُضيفُها build-packages.sh إلى AndroidManifest.xml المُولَّد قبل البناء.

مُنجَزٌ (دفعةُ الأنشطة):

  • بطاقةُ القسمة (➗) في الرياضيّات: startArith("÷")، نتائجُ صحيحةٌ دائمًا (المقسوم = القاسم × الناتج)، عرضٌ مرئيٌّ لا يكشفُ الجواب. وأيقونتُها أُضيفت لمولّد الأيقونات (→FA divide في gen-fa-icons.mjs) لتطابِقَ بقيّةَ العمليّات (كانت إيموجي).

  • عجلةُ الحروف: عددُ الأحرف صار مختارًا (2–5) عبر wheelN بدل 3 ثابتة (رفعُ احتمال كلمةٍ ذاتِ معنًى).

  • ألغازٌ ذكيّة — إدخالُ الحلّ كتابةً: حقلُ إدخالٍ + «تحقّقْ» مع مُطبِّعٍ (canon/normAns) يقبلُ كلَّ صيغ الكتابة: أداةُ التعريف، التشكيل، المسافات، الألف/الياء/التاء، والأرقامَ رقمًا أو كلمةً (خمسة=5=٥)، مع accept[] اختياريٍّ للمرادفات. +5 ألغاز جديدة (66 إجمالًا).

  • لعبةُ الذاكرة (play.html): اللعب ضدّ الإخوة/الوالد/الآليّ بأدوارٍ ونقاطٍ وإعلانِ فائز، مع الإبقاء على الفرديّ. الإخوةُ من listProfiles (واحد→تلقائيّ، أكثر→اختيار)، الوالدُ خيارٌ دائم، والآليُّ بثلاث صعوبات (ذاكرةُ الأزواج المكشوفة) — كفكرة سارة وريم. شاشةُ إعدادٍ مرتّبةٌ (.memset). المستويات: سهل 8 · متوسّط 12.

  • إصلاحُ «الصعب 16 بطاقة» ✅: كان WORLD_ART=7 أيقوناتٍ فيقتصرُ الصعبُ على 14. أُضيف MEMORY_ART (export جديدٌ في src/art.js = WORLD_ART + 6 أيقوناتٍ بنفس النمط: زهرة/سحابة/سمكة/فراشة/قلب/بيت = 13)، ولعبةُ الذاكرة تستعملُه → الصعبُ 8 أزواج = 16 بطاقة. (بقي WORLD_ART نقيًّا لخريطة العالم.)

  • أنشطةُ قسم اللغات (الأربع) ✅: قسمُ «ألعاب» صار مركزًا (?sec=games&g=…) بأربع ألعاب: مطابقةُ الصور (قائمة) · مطابقةُ المعنى (لغة↔عربيّ نصًّا، renderMatchAr) · الإملاء/التهجئة (استماعٌ ثمّ ترتيبُ الحروف، renderSpell) · استماعٌ واختيار (renderListen). وتوسعةُ المحتوى: 3 فئاتِ كلماتٍ جديدة (مهن/رياضة/أدوات البيت → 18) + فئةُ «جُمَلٌ مفيدة» الأطول (→6 فئاتِ عبارات) لـEN/FR، مع أيقونات FA لكلٍّ. (الصوتُ الجديد عبر webSpeak فورًا؛ للعصبيّ المُدمَج: gen-piper-lang.mjs en|fr ثمّ بناء.)

يتبقّى لـv1.1:

  • توليدُ صوت Piper العصبيّ للمحتوى الجديد (node tools/gen-piper-lang.mjs en وfr) ثمّ إعادةُ البناء — اختياريٌّ (يعملُ بـwebSpeak دونه).
  • التحقّقُ على جهازٍ فعليّ من: تسجيلِ الميكروفون في APK (قد يلزمُ منحُ WebView لـgetUserMedia عبر تعديل MainActivity)، وزرِّ الرجوع، وأيقونةِ AppImage/DEB بعد إعادة البناء.
  • غدًا بإذن الله: بناءُ حزم v1.1.0 (scripts/build-packages.sh all) → اختبارُها على جهازٍ فعليّ (ميكروفون/زرُّ رجوع/أيقونةُ AppImage/DEB) → إصدارُ GitHub Release v1.1.0 برفع الحزم + SHA256SUMS → تحديثُ روابطِ تنزيلِ الموقع (الجذر index.html) من v1.0.0 إلى v1.1.0.

✅ مُنجَزٌ (لم يُرفَع بعد — يُرفَع غدًا بإذن الله) 2026-06-20 — استعداداتُ الإصدار v1 والتحزيم

  • CHANGELOG.md (بالجذر) للنسخة 1.0.0 يلخّصُ الأقسامَ والمزايا.
  • أيقونةُ التطبيق المُعَنوَنةُ على الأخضر: مصادرُ في assets/ (icon-foreground/background + splash/-dark)؛ منها public/icon.png وأيقوناتُ PWA وbuild/icons؛ وكلُّ مقاسات أندرويد (mipmap-* أيقونةٌ بلا نصّ + drawable-* شاشةُ بدءٍ بالعنوان) عبر @capacitor/assets. الأيقونةُ بلا نصّ (للمُشغِّل)، العنوانُ في شاشةِ البدء.
  • التحزيمُ الأصليُّ مُنفَّذٌ ومُختبَرٌ (على نهج GT-MARKDAWIN): scripts/build-packages.sh + electron/main.cjs + capacitor.config.json + قسمُ build في package.json. بُنِيت بنجاحٍ وبالأيقونة الجديدة: AppImage ~245م · DEB ~205م · RPM ~243م · APK ~160م. التفاصيلُ في packaging.md، والمزالقُ (DEB homepage · RPM عبر alien · Capacitor --no-save · APK القديم) في pitfalls-and-solutions.md.
  • مبدأُ التبعيّات: Capacitor (صغير) في package.json؛ electron/electron-builder/@capacitor/assets (ثقيل) عند الطلب --no-save فيبقى نشرُ الويب خفيفًا؛ package-lock.json نظيفٌ (--package-lock-only).
  • بقيَ: الرفعُ والنشر (غدًا)؛ توقيعُ APK release لمتاجر أندرويد (keystore) عند الحاجة.

✅ مُنجَزٌ ومنشورٌ 2026-06-19 (منظومةُ الصوت كاملةً)

  • استراتيجيّةُ «أفضل المتاح» (AUTO) الافتراضُ لكلّ الأنواع: srcAuto يختارُ لكلّ نصّ بشريّ (deviceAnyURL+صالح) ← عصبيّ (kareem) ← آليّ (espeak)؛ يحترمُ الاختيارَ الصريحَ ثمّ يرتدُّ بنفس الترتيب (resolve في tts-clips). المنتقي يعرض «⭐ أفضل المتاح».
  • العصبيُّ للجُمَل/النصوص/ردود الآلي فقط (kareem types:["sentence","story","reaction"]؛ حُذِف توليدُ المفردات — ترشيدُ الحجم). نوعٌ رابعٌ مستقلّ «reaction» بإعدادِ صوتٍ خاصّ.
  • مبدأٌ ثابتٌ: لا تُشكَّلُ مفاتيحُ المحتوى أبداً (الصوتُ البشريُّ يُطابِقُها حرفيّاً)؛ التشكيلُ في التركيب فقط (spoken-ref/forSynthesis).
  • gen-voices تراكميٌّ ({...prev, ...new}): التصديرُ الجزئيُّ يُضيف ولا يَحذف. استُرِدَّ صوتُ «صالح» كاملاً (914) من git بعد فقدٍ.
  • آليّةُ تعديل تسجيلٍ مُدمَج: الاستوديو يُظهِرُ المُدمَجَ كـ«مُسجَّل»؛ التسجيلُ فوقه يُحفَظ على الجهاز ويُنطَق فوراً (أولويّةُ الجهاز)، ولِلنشر: تصدير→gen:voices(يستبدل بنفس المفتاح)→رفع.

✅ مُنجَزٌ (لم يُرفَع بعد) 2026-06-19 — قسم اللغات

  • زرّ «🎙️ سجّلْ نُطقك» على كلمات وعبارات اللغات (attachReaderpractice.js لكلّ حسابٍ على الجهاز، لا يُدمَج — للتعلّم والمقارنة والمشاركة؛ زرُّ «النطق الصحيح» يشغّل المرجعَ العصبيّ). لا صوتَ بشريَّ مُدمَجاً للغات (بطلب المستخدم).
  • ردودُ أفعال الآلي ثنائيّةُ اللغة في اختبار/ألعاب اللغات: مدحٌ بلغة القسم (L.reactions، بصوت Piper alba/tom) ثمّ مدحٌ عربيّ (speak→صوت ردود الآلي). praise(L) في lang.html.

⏳ المتبقّي (اختياريّ، بحسب أولويّة المستخدم)

  • (أ) تعميمُ زرّ «🎙️ سجّلْ قراءتك» صار في: الأساسيّات «اقرأ بصوتك» · القراءة · القصص · قصص وعِبَر · القرآن · الأعداد · اللغات ✓.

  • (ب) ٧أ التجاوب: تدقيقٌ شاملٌ لباقي الصفحات على الهاتف (بانتظار لقطات).

  • (ج) تشكيلُ/تغطيةُ المحتوى الطويل (ذكريات/اختبارات/ألغاز) ليُنطَق مضموناً offline (espeak أو صالح) بدل Web Speech.

  • (د) صقلٌ: أيقونات SVG للفئات المحتوائيّة · نصوصٌ أطول للّغات.

  • (هـ) تغطيةُ «صالح» التدريجيّة: الوالدُ يسجّل النواقص (أحرف/أرقام/كلمات) في الاستوديو → تُنطَق بصوته تلقائيّاً.

  • ✅ مُنجَزٌ ومنشور: الوضع الداكن الكامل (كلّ الصفحات + القرآن: ورقٌ داكنٌ ونصٌّ فاتح + زرُّ تبديلٍ بكلّ صفحة)؛ التصميم الجذّاب (بطاقات مدمجة ملوّنة متحرّكة، الكلاسيكيّة بالوصف للأهل)؛ استيراد ZIP للتسجيلات؛ مطويات لوحة التحكّم + إغلاقٌ تلقائيٌّ 30ث.

  • قسم اللغات (٦) منشور: أحرف (نطقُ الاسم صوتيّاً عبر حقل name) · أرقام 0–100 · كلمات 15 فئة · عبارات وجمل 5 فئات · قصص مترجمة + قراءة كاملة · اختبار · ألعاب — بصوت Piper alba/tom (offline)؛ تنقّلٌ ببطاقاتٍ هرميّةٍ ملوّنة؛ عنوانُ البطاقة يتبدّل عربيّة↔لغة القسم كلَّ 5ث.

  • ٧أ التجاوب: أُصلِحت لوحةُ التحكّم؛ يتبقّى تدقيقٌ شاملٌ لباقي الصفحات على الهاتف (بانتظار لقطاتٍ من المستخدم).

  • ⏳ صقلٌ اختياريّ: أيقونات SVG بدل الإيموجي · مزيدٌ من العبارات/النصوص الأطول للّغة.


🚀 خارطةُ طريق الإصدارات القادمة (بعد v1.0.0)

الأساس (v1.0.0 — منشور 2026-06-21): الأقسامُ كاملة + نظامُ الصوت (بشريّ/عصبيّ/آليّ) + الحساباتُ ولوحةُ التحكّم + الوضعُ الداكن + التحزيمُ الأصليّ (AppImage/DEB/RPM/APK) + الموقعُ الرسميّ (سمة + أيقونات FA + بطاقاتُ تنزيل) + GitHub Release. خطّةٌ مقترحةٌ تُرتَّبُ بأولويّة المستخدم (لا التزامَ بجدول).

🔧 v1.0.x — صيانةٌ واستقرار

  • ٧أ تجاوبُ الهاتف: تدقيقٌ شاملٌ لباقي الصفحات (بانتظار لقطات) — البندُ المفتوحُ الأهمّ.
  • إصلاحاتٌ صغيرةٌ بعد تغذية المستخدمين.
  • توقيعُ Android للمتاجر: keystore + بناءُ AAB/APK موقَّع (assembleRelease) — الحاليُّ debug فقط (انظر packaging.md).

🔊 v1.1 — الصوتُ والتغطية الكاملة offline

  • (ج) ضمانُ نطق المحتوى الطويل (ذكريات/اختبارات/ألغاز) offline بـespeak أو «صالح» بدلَ Web Speech.
  • (هـ) تغطيةُ «صالح» التدريجيّة للنواقص (الوالدُ يُسجّل، فتُنطَق تلقائيّاً) + تسجيلاتُ الأحرف الصامتة (بْ/جْ/دْ/ضْ/أْ — قيدُ espeak، انظر public/tts/custom/README.md).

🌍 v1.2 — اللغاتُ والقصص

  • (د) أيقونات SVG لفئات المحتوى + نصوصٌ أطولُ للّغات.
  • نسخُ EN/FR للقصّة المصوّرة «الكتاب السحريّ» (البنيةُ جاهزةٌ لاستقبالها) + مزيدٌ من القصص المصوّرة/قصص العِبَر.

👪 v1.3 — الأهلُ والتقدّم

  • ألبومُ صورٍ منفصلٌ للطفل (سجلُّ لوحة الأهل يؤدّي دورَه جزئيًّا الآن).
  • تقاريرُ أعمقُ + تصديرُ/طباعةُ تقدّمٍ مُوسَّعة.

📦 v2.0 — المنصّاتُ والتوطين

  • النشرُ على المتاجر: Google Play · F-Droid · Flathub (نسخٌ موقّعة) — أتمتةُ الحزم في CI ممكنة.
  • نسخةُ iOS عبر Capacitor (إن لزم).
  • مراجعةُ الأداء/الحجم (تخفيفُ حزم الصوت ~60م إن أمكن دون كسر offline).

عند بدء أيِّ بندٍ: انقُلْه من هنا إلى قسم «المفتوح» المؤرَّخ أعلى الملفّ، وحدّثْ CHANGELOG.md وversion عند الإصدار (انظر packaging.md لقائمة التحقّق).


✅ تطويرات 2026-06-18 (النموذج العصبيّ للأحرف خياراً)

  • العصبيُّ (Piper/kareem) صار يشمل الأحرف: gen-piper يضمّ allForms() (أسماء الأحرف وأشكالها، 471) + types:["letter",…] → يظهرُ خياراً في منتقي صوت الحروف بلوحة التحكّم. افتراضُ الحروف يبقى espeak (أوضح)، والكلماتُ/الأرقام/الجمل عصبيّةٌ افتراضاً. (إجمالي kareem ≈ 1210 مقطعاً.)

✅ تطويرات 2026-06-18 (الكلمات بالعصبيّ + تدقيق الوضع الداكن)

  • الكلمات والجمل افتراضُها العصبيّ (Piper/kareem): VOICE_DEFAULTS في sound-prefs.js (الحروفُ تبقى espeak — أوضحُ للحرف المفرد)؛ يرتدُّ tts-clips لـespeak إن غاب المقطعُ العصبيّ. (الكلماتُ كانت ضعيفةً بـespeak.)
  • تدقيقُ الوضع الداكن للمكوّنات المحقونة عالميّاً: فقاعةُ الآليّ .rc-bubble، نوافذُ التأكيد .ca-card/.ca-cancel، مُنتقي القارئ .sr-now/.sr-pick — حُوِّلت لمتغيّرات (var(--card/ink/line/muted) بقيمةٍ احتياطيّةٍ فاتحة: لا تغييرَ في الفاتح، تَدكَن في الداكن). + إصلاحاتُ الاستوديو (.topbtn/.lbtn/.form/.form.done).

✅ تطويرات 2026-06-18 (المرجع المنطوق المشكول)

  • عبارات الآليّ مشكولةٌ كاملاً (robo-phrases.js: encourage/recall/NOTICES) فيَنطقها الآليُّ سليمةً.
  • مرجعٌ منطوقٌ مشكولٌ (src/spoken-ref.js، spokenRef) للكلمات/الأحرف المعروضة مجرّدةً (كلمات لعبة الدمج 69 كلمة + أسماء الأحرف الـ28: ألف→أَلِف…) — العرضُ يبقى مجرّداً والمرجعُ مشكول؛ يستعمله gen-audio/gen-piper. أسماءُ الأعداد مشكولةٌ أصلاً. (أُصلِح «ألف»: allaf→alif.) نُظِّفت 169 مقطعاً يتيماً بعد تغيّر مفاتيح العبارات.
  • المتبقّي (طلبُ المستخدم): إتاحةُ النموذج العصبيّ (Piper) للأحرف/الأرقام كخيار · تعميمُ زرّ «سجّلْ قراءتك» على باقي الأقسام (اللغات…).

✅ تطويرات 2026-06-18 (نطق الشدّة/الجلالة + اقرأ بصوتك + أيقونات SVG)

  • إصلاحُ جذرِ النطق (src/arabic-normalize.js): كان ترتيبُ «حرف+حركة+شدّة» يُفقِد الشدّةَ في espeak/Piper فتُسمَع كالسكون (أوّل/محرّم/عدّ/جنّة)، ولفظُ الجلالة يُشوَّه. forSynthesis (شدّة قبل الحركة + تجريد الجلالة) على نصّ التركيب فقط (المفتاح يبقى الأصل) في gen-audio/gen-piper؛ وreorderMarks في segment(). أُعيد توليدُ المقاطع (espeak 188 تغيّرت · Piper kareem كاملاً). تأكَّد بـespeak IPA: أوّل ʔˈauːl→ʔˈauːˌal، الله ʔˈalllh→ʔˈallaːh.
  • أيقونات SVG (Font Awesome Free): عُمِّمت على كلّ بطاقات الأقسام (الفهرس·الرياضيّات·الألعاب·الأساسيّات·القراءة·قصص وعِبَر·اللغات) عبر src/icons.js (gen:icons) + iconHtml/injectIcons + nav-icons.css (تلوينٌ حيويٌّ لكلّ بطاقة).
  • «اقرأ بصوتك»: تصميمٌ منسّق + سرعاتٌ محسوسة + زرّ «🎙️ سجّلْ قراءتك» لكلّ كلمة (تسجيلٌ لكلّ حسابٍ عبر attachReader).
  • الوضع الداكن للاستوديو (record.html) ومسجّل التمرّن (reader-recorder) متناسقٌ الآن.

✅ تطويرات 2026-06-18 (إغناء قسم اللغات + توحيد شريط الأزرار)

  • شريطُ الأزرار العلويّ موحَّدٌ في كلّ الصفحات (src/topbar.css، يُستورَد عبر theme.js): أزرارٌ متساويةُ الارتفاع والزوايا (نصّيّ .topbtn + أيقونيّ .iconbtn مربّعٌ 38px)، بلا التفافِ نصّ (white-space:nowrap فلا تطول البطاقات)، وحاويةٌ .topbtns تلتفّ صفًّا ثانياً مرتّباً على الهاتف بدل التزاحم. أُزيلت الأنماطُ المضمَّنة المتفرّقة لزرّ السمة (دائرةٌ 36px) ووُحِّدت. تصغيرٌ تلقائيّ @media(max-width:430px).

  • تنقّلٌ ببطاقاتٍ هرميّةٍ ملوّنةٍ متحرّكة (.lcard): لغة→أقسام→(فئات)→محتوى، مع زرّ رجوع.

  • عنوانُ كلّ بطاقةِ قسمٍ/فئةٍ يتبدّل بين العربيّة ولغة القسم كلَّ 5ث (startTitleAlt بتلاشٍ؛ ترجماتُ الأقسام في SECTIONS[k]، الفئاتِ في CAT_I18N) — تعزيزٌ للتعلّم.

  • نطقُ أسماء الحروف صوتيّاً: حقلُ name لكلّ حرف (مثلًا H→aitch، فرنسيّ H→ache)؛ تُنطَق البطاقةُ بـname لا بالحرف المجرّد (Piper ضعيفٌ له).

  • بطاقةُ «عبارات وجمل» مركّبة (en/fr): 5 فئات (تحايا·تأدّب·مفيدة·أسئلة·الصفّ)، 37 عبارةً لكلّ لغة، عرضٌ بقائمةٍ أنيقة (.pcard) تُنطَق بنقرة.

  • توليدٌ + تنظيف: أُعيد توليدُ Piper للّغتين (240 en / 244 fr) بعد إضافة العبارات/أسماء الحروف، ونُظِّفت 52 مقطعاً يتيماً (حروفٌ مجرّدة قديمة) من مجلّدات المجموعات → precache 3289.


✅ تطويرات 2026-06-16/17

  • الموقع الرسميّ + هيكلة المستودع: التطبيق في GT-MK/؛ الجذر = هبوطٌ ثابت index.html + assets/. نشرٌ على GitHub Pages (/ الموقع، /app/ التطبيق). مزلق نشر: مساراتٌ فرعيّةٌ 404 رغم النشر → build_type=legacy لا workflow (gh api --method PUT .../pages -f build_type=workflow).
  • الأيقونة الرسميّة + شعارٌ متحرّك في رأس الموقع.
  • حساب الأهل + لوحة التحكّم + تقارير الأبناء + إدارة الحسابات (accounts.js دور parent · getStatsFor/getBadgesFor/loadProgressFor)؛ لوحةُ والدٍ عُليا؛ بوّابةٌ حاجزةٌ تحترمُ كلمةَ المرور كلَّ مرّةٍ لغير الوالد؛ مطويات + إغلاق تلقائيّ 30ث.
  • توحيد ردود فعل الآليّ (NOTICES) + نطقُ الجواب الصحيح ثمّ ردّةُ الفعل في كلّ الأنشطة + إغناءُ ألعاب الرياضيّات. عبارةُ فتح «علّم الآليّ».
  • الوضع الداكن الكامل (theme.js + dark.css المشترك عبر الصفحات، بلا وميض؛ شامل القرآن والمسجّل والأسطح الكريميّة) + تصميمٌ جذّابٌ (بطاقات مدمجة ملوّنة متحرّكة) + ترتيبُ الفهرس + تذييلٌ محسَّن.
  • استيراد ZIP للتسجيلات (unzipStore + saveVoice) — مشاركةٌ عالميّة.
  • قسم اللغات الأجنبيّة (lang.html + lang-en/fr.js): الإنجليزيّة (en_GB-alba) والفرنسيّة (fr_FR-tom) — أحرف·أرقام·كلمات (9 فئات)·قصص مصوّرة مترجمة (نفس الرسوم) + «القصّة كاملةً»، بنطق Piper عصبيٍّ offline (tools/gen-piper-lang.mjs، مجموعات tts-alba/tts-tom، types:["foreign"]).

✅ تطويرات 2026-06-15 (بعد المراحل)

  • الحسابات والأمان (src/accounts.js): ملفّات أطفال/ضيف + كلمة مرور والدين + جلسة 5د + استعادة بسؤال أمنيّ. شاشة دخول (home) + لوحة أهل بكلمة مرور + تقدّم منفصل لكل ملفّ. تغيير كلمة المرور (قديمة+جديدة+تأكيد) + سؤال الاستعادة مخفيٌّ لا يظهر إلّا بكلمة المرور.
  • حارس العمليات الحسّاسة (src/confirm-action.js): كل حذف/نقل/مسح = تأكيد + كلمة مرور + مهلة تراجع. confirmChoice لتبديل الحساب.
  • تبنّي محتوى anas: math.html موسّع (أرقام 0–100 + جمع/طرح/ضرب + موسوعة أشكال + ورشة الورق + PDF) · compose-vocab.js (≈310 كلمة) + شاشة «اقرأ بصوتك» · «فهرس الحروف».
  • قصّة الأرقام (content/numerals.js): تاريخ 0–9 والصِّفر (إطار صادق) + الخوارزميّ (library = 79) + 5 أسئلة (quiz = 99). الأرقام الغربية في كل الواجهة.
  • مُسجِّل تمرّن القراءة لكل حساب (src/practice.js + reader-recorder.js): زرّ «🎙️ سجّل» في كل بطاقة + الاستماع + المساعدة عبر الحسابات. الضيف مؤقّت، الطفل دائم، تديره الأهل. (منفصلٌ عن نموذج الصوت المشترك voices.js.)
  • الصوت العصبيّ Piper (tools/gen-piper.mjs, ar_JO-kareem): «قارئ النصوص» (729 مقطعاً، وقت التطوير فقط) للكلمات/الجمل/القصص لا الحروف (types). espeak افتراض الحروف.
  • قارئ القصص (src/story-reader.js): تشغيل/إيقاف + قراءة تلقائيّة للقصّة كاملةً + قائمة اختيار قارئ ظاهرة + توگل إظهار الشكل. نصوص القصص المصوّرة شُكِّلت بالكامل. precache ≈48MB.
  • تدفّق الاختبارات (src/quiz-flow.js): توگل انتقال تلقائيّ + لا يقطع ردّة الفعل + عبارة «نعود لها لاحقاً». الحركات بمستويات.

المحاور الناظمة (تحكم كل المراحل)

  1. تعميق التفكير — الطفل يفكّر لا يتلقّى.
  2. الاستكشاف والحرية — اختيار ذاتي لا مسار مفروض.
  3. التعلّم المتكيّف — يتكيّف مع مستوى الطفل.
  4. المتعة والتفاعل — الآليّ متجاوب في كل الأقسام.

ومبادئ شاملة لا تُكسَر: محلّي 100% دون إنترنت/ذكاء اصطناعي · إطار إسلامي عقدي · الآلي لا يُوصَف بحيّ · تعدّد منصّات (ويب/حاسوب/هاتف/لوحي) · خصوصية مطلقة. (التفصيل في CLAUDE.md).


✅ ما أُنجِز

المرحلة 0 — البنية التمكينية

  • src/sound-prefs.js (مفتاحا النغمات/النطق المستقلّان)، src/speak.js (نطق عربي مشترك، عُمّم وأُزيل inline من read.html/basics.html/play.htmlsrc/sfx.js (WebAudio)، src/islamic.js (بسملة/شكر/تدبّر)، تتبّع الإتقان + سقالة لايتنر في src/progress.js.
  • الآليّ متحرّك متجاوب (تنفّس/رمش/نبض/مزاج) عبر CSS keyframes + setMood.

المرحلة 1 — تعميق التفكير

  • src/think.js (deepenFor أسئلة تعمّق عامّة بحسب المجال تربط بالتدبّر + roboWrongFor).
  • خطوة التلقين صارت حواراً من مرحلتين: جواب الطفل ← تعميق «لماذا/كيف» + وضع «علّمني الخطأ» (الآليّ يقول خطأً والطفل يصحّحه).
  • حقول think{why, robo_wrong} لـ5 ذكريات نموذجية (واحدة لكل مجال).

المرحلة 2 — المتعة والتفاعل

  • شفاء فردي مرئي (الجزء/العنصر ينبثق لحظة إضاءته).
  • src/robo-companion.js: رفيق الآليّ مُحقَن في basics/play/quiz/tales/puzzles/read — نجاح→cheer، خطأ→encourage، قراءة الحرف/الكلمة→read، قراءة الكلمة→applaud. تفاعل الخطأ يشمل كل ألعاب play.html.

النطق المضمون على كل الأجهزة

  • مقاطع MP3 مُولَّدة مسبقاً بـespeak-ng (tools/gen-audio.mjspublic/tts/ + src/tts-manifest.json، ~282 مقطعاً، ~2.5م). speak.js: مقطع أولاً ثم Web Speech.

المرحلة 3 — الاستكشاف والحرية

  • خريطة عالم بصرية (مناطق بتقدّمها، renderMap) + زرّ «🎲 فاجئني».
  • حقل جواب مكتوب في خطوة التلقين (موجَّه بسؤال الآليّ، يُحفظ كـnote).
  • حذف كل تسجيل على حدة مع مهلة تراجع 6 ثوانٍ في لوحة الأهل.

المرحلة 4 — التعلّم المتكيّف

  • src/adaptive.js (pickAdaptive: ترجيح لايتنر للضعيف/المستحقّ) في basics (حروف/أرقام) وplay (كلمات).
  • recordMastery عند النجاح: L:حرف، N:رقم، W:كلمة، R:قراءة، Q:فئة اختبار، M:ذكرى.
  • getChildAge/setChildAge: افتراض عمر الطفل يصفّي index/play/quiz تلقائياً (مُنتقٍ في لوحة الأهل).
  • رؤى الإتقان في لوحة الأهل (أُتقِن / للمراجعة، بحسب نوع المهارة).

المرحلة 5 — لمسات أخيرة

  • وضع الإخوة (coopMode): يقتصر على ذكريات «لطفلين معًا» (6 أنشطة coop-*) بزرّ دخول/خروج وبانر مميّز.
  • 4 أوسمة تكافئ التفكير/الاستكشاف/التعاون: ناقدٌ صغير، مُفكِّرٌ عميق، مُغامِر، رفيقُ الإخوة.

المرحلة 6 — تلميع متعدد المنصّات

  • أيقونات PNG (192/512/maskable + apple-touch-icon) + meta لـiOS/Android + viewport-fit=cover.
  • لمسة لمس عامّة (tap-highlight شفّاف + touch-action:manipulation) + safe-area-inset للعناصر الثابتة.
  • (Capacitor APK: اختياريّ، لم يُنفَّذ بعد.)

المرحلة 7 — الإطار الإسلامي والمحتوى

  • 7 ذكريات جديدة: طب نبوي (عسل، حبّة سوداء، سواك، آداب طعام، آداب نوم) + علماء (ابن الهيثم/الضوء، جابر بن حيّان/التجربة) — بإطار تدبّر وthink. (library.js = 78 ذكرية).

✅ تطويرات لاحقة (بعد المراحل، 2026-06-14)

قسم «أرقام وهندسة» مستقلّ — math.html

  • بطاقة الفهرس كانت تفتح حلقة الآليّ نفسها (مكرّرة). الحلّ (لا حذف بل إثراء): صفحة مستقلّة فيها 4 أنشطة: الأشكال · عُدّ وقارن · أكمل النمط · الأكبر والأصغر. بإطار تدبّر + رفيق الآليّ + pickAdaptive + recordMastery("S:") + logEvent("math_correct") + SECTION_OF.math. مُسجّلة في vite.config.js.

سُلّم القراءة — صفوف التشكيل الكاملة (read.htmlsylRows(c))

  • المقاطع وُسِّعت إلى كل الأبجدية (28 حرفاً) (reading.consonants).
  • لكل حرف صفوف: الحركات (بَ بُ بِ) · المدود (بَا بُو بِي) · التنوين (بًا بٌ بٍ) · الشدّة والسكون (بَّ بْ).
  • الألف حالة خاصّة: الهمزة بالحركات (أَ أُ إِ) · المدّ (آ أوّل الكلمة · أى آخرها · أُو · إِي) · التنوين (أً أٌ إٍ) · السكون (أْ).

نظام الصوت وتصحيحات/حدود espeak (tools/gen-audio.mjs)

  • 500 مقطعاً مُولَّداً. تصحيحات (تُعدِّل النطق فقط، المفتاح يبقى أصلياً):
    • SPEAK_FIX: «تَ» كانت تُنطَق «ت فتحة» → «تَـ»؛ «يِ» كانت تُمَدّ → [[j'i]]؛ «آ» → [[?'a:]]؛ «أً» → [[?'an]]؛ كلمات العين.
    • weakFix: العين (A) والغين (Q) ضعيفتان → إطالة فونيمية A:/Q: في كل أشكالهما؛ وسكونهما نقيٌّ ممتدّ [[A:]]/[[Q:]].
    • السكون = صوتُ الحرف مجرّدًا دون أيّ إضافة (قرار المستخدم).
  • حدّ espeak مُثبَت بالقياس (−91dB صمت): السكون على الانفجاريّة المجهورة ب ج د ض + الهمزة أْ = صمتٌ تامّ. لا يُحَلّ دون حركة (مرفوضة). بقيّة الـ23 سليمة.

طبقة التسجيل البشريّ (تجاوز espeak) — src/tts-clips.js

  • تسجيلٌ بشريّ في public/tts/custom/<hash>.mp3 يُقدَّم على مقطع espeak. src/tts-custom.json قائمة الموجود (يبنيها npm run gen:custom). public/tts/custom/README.md فيه أسماء ملفّات الحروف الخمسة المطلوبة.

نظام نماذج الصوت الكامل (وضع التهجئة + الاستوديو + المجموعات)

  • وضع التهجئة (src/spell.js): «🐢 هجِّ ببطء» في read.html — تركيب الكلمة من مقاطعها ثم كاملةً.
  • اختيار نموذج الصوت لكل نوع (حرف/كلمات/جمل) في لوحة الأهل: «مقاطع مُولَّدة (espeak)» أو مجموعةٌ بشريّةٌ بالاسم (مُدمجة أو على الجهاز). sound-prefs.getVoiceSet/setVoiceSet، tts-clips.classify+srcFor.
  • استوديو التسجيل (record.html): 3 تبويبات/وحدات + ملفّ مُسجِّل (اسم/جنس/فئة) + تسجيل IndexedDB لكل مجموعة (src/voices.js) + ضمّ المجموعات + تصدير ZIP مصنّف (src/zip.js).
  • الدمج مع الحزمة: npm run gen:voices (من voices-src/ المُصدَّر) → public/tts/voices/ + src/voices-bundled.json.
  • مصدر مفردات موحّد (src/vocab.js + src/robo-phrases.js): الاستوديو والمولّد يقرآن منه → تزامنٌ تلقائيّ مع المحتوى.
  • أوّل صوتٍ بشريّ مُدمج: «صالح» (632 مقطعاً: حروف+كلمات+جمل+عبارات).
  • نتيجة تجربة Piper/MMS: العصبيّ غير مناسبٍ للحروف المنفردة والشكل؛ صالحٌ للكلمات/الجمل فقط. القرار: espeak افتراض + بشريّ للجوهر.

⏳ ما تبقّى (لاحقًا)

  • 🎙️ تسجيلات بشرية للحروف الصامتة (نقطة الاستئناف): بْ/جْ/دْ/ضْ/أْ — انظر public/tts/custom/README.md.
  • Capacitor APK للأندرويدمنجز (2026-06-20): APK + AppImage + DEB + RPM عبر scripts/build-packages.sh — انظر packaging.md.
  • إكمال think{why, robo_wrong} لبقيّة الذكرياتمنجز (2026-06-15): 79/79 — أسئلة تعمّق مخصّصة بإطار تدبّر + عبارة «علّمني الخطأ» لكلِّ ذكرية (يظهر زرُّ الخطأ في الحلقة لكلِّها الآن).
  • مقاطع نطق للنصوص الطويلة (أسئلة الذكريات) إن لزم ضمانها بلا أصوات نظام.
  • ألبوم صور منفصل للطفل (سجلّ لوحة الأهل يؤدّي دوره حالياً).
  • (قيدا espeak غير القابلين للحلّ فونيمياً: «نِ» تلتبس بـ«ذِ»، والشدّة تقريبية — حلّهما تسجيل بشريّ).

🗂️ مرجع سريع للملفّات (للاستئناف)

  • الحلقة: index.html (آلة حالات + خريطة + لوحة أهل + وضع إخوة).
  • الأنشطة: basics.html · math.html · read.html · play.html · quiz.html · tales.html · puzzles.html · stories.html · progress.html · home.html · print.html · record.html (استوديو).
  • الوحدات: src/ → speak · sfx · robo-voice · robo-phrases · robo-companion · sound-prefs · islamic · think · adaptive · progress · art · story-art · الصوت: tts-clips · voices · voices-bundled.json · vocab · syl · spell · zip · tts-manifest.json · tts-custom.json.
  • الصوت: tools/gen-audio.mjs (npm run gen:audio) → public/tts/*.mp3 + src/tts-manifest.json. البشريّ: tools/gen-voices.mjs (npm run gen:voices) → public/tts/voices/ + src/voices-bundled.json. التجاوز اليدويّ: gen-custom.mjs + public/tts/custom/.
  • المحتوى: content/*.js. التحقّق بعد أي تعديل: npm run build.

💡 مقترحات ومستجدّات

أضِف هنا أي اقتراح/تغيير/مستجدّ قبل تحويله إلى مهمة. (فارغ حالياً — جاهز للإضافة.)

Clone this wiki locally