-
Notifications
You must be signed in to change notification settings - Fork 0
PLAN
ملفّ حيّ: ما أُنجِز، وما سيُنجَز، ومكان إضافة المقترحات والمستجدّات. حدّثه مع كل تغيير. آخر تحديث: 2026-06-20. المراحل 0–7 + نظام الصوت + الحسابات + محتوى anas + قصّة الأرقام + مُسجِّل التمرّن + Piper + قارئ القصص + القرآن + (الموقع الرسميّ وهيكلة GT-MK والنشر) + حساب الأهل ولوحة التحكّم والتقارير + الوضع الداكن — منجزة ومنشورة. التحزيمُ الأصليّ (Linux+Android) منفَّذٌ ومُختبَر، يُرفَع غدًا (
packaging.md). قاعدةٌ ثابتة: لا رفع/نشر حتى يختبر المستخدمُ محليّاً ويوافق (تعديل →npm run build→ «جاهز للاختبار المحليّ» → إقرار → التزام/دفع).
أربعةُ محاورَ اختارَها المستخدمُ + استثناءٌ مأذونٌ للقرآنِ عبرَ الإنترنت. البناءُ على دفعاتٍ (أ→هـ):
- ✅ دفعة أ: إزالةُ شارات «جديد» من مزايا الإصداراتِ القديمة (تُحجَزُ للمستقبل) + حركةُ ذراعَي الآليّ في «علّم الآليّ» (تتمايلانِ من الكتفِ بطورٍ واحد، وطرفُ الذراعِ مخفيٌّ خلفَ الجسد، وتلوّحانِ عند الفرح).
-
✅ دفعة ب: تأثيرُ الإقلاع — شاشةٌ تُضيءُ أجزاءَ الآليِّ تدريجيًّا مع النسبةِ المئويّةِ (10ث) ثمّ تُلقي التحيّةَ «السلام عليكم! هيّا نلعبُ ونتعلّم»، بعلامةِ GT-MISHKAT أعلى وGNUTUX أسفل. + اهتزازٌ لطيف (haptic) + احترامُ
prefers-reduced-motion. -
✅ دفعة ج: تخصيصُ الآليّ (لونٌ + اسمٌ + 10 ملحقاتٍ تُكسَبُ بالإنجاز) + التحفيزُ اليوميّ (حلقةُ الهدفِ + شعلةُ السلسلة 🔥). راجعِ
architecture.md. - ✅ دفعة د: تنقّلٌ صوتيٌّ للصغار (البطاقةُ تَنطِقُ اسمَها) + وضعُ الاستماعِ الليليّ + دليلُ الوالد لكلِّ نشاط + بانرُ المناسباتِ الإسلاميّة (تحويلٌ هجريٌّ محلّيّ).
- 🚧 دفعة هـ (التالية): القرآنُ الكاملُ عبرَ الإنترنت — أوّلُ استثناءٍ متعمَّدٍ من «محلّيٌّ 100%»، مأذونٌ من المستخدم: بطاقاتُ أحزابٍ ← بطاقاتُ سورٍ؛ استماعٌ/حفظٌ عبرَ الإنترنت + تنزيلٌ محلّيٌّ لكلِّ سورة؛ شارةُ 🟢 محلّيّ/🌐 متّصل؛ مُطفأٌ افتراضيًّا خلفَ بوّابةِ الوالد، والوالدُ يُفعّلُه للأبناء. دونَ المساسِ بالجزءِ المحلّيِّ الحاليّ (الفاتحة+جزء عمّ). — جلسةٌ مركّزةٌ لأنّه الأكبرُ والأكثرُ حساسيّة.
أنشطةٌ جديدة (تنافسيّةً حيثما ناسب عبر 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.
-
⏰ الساعة: تعلّمٌ (عقاربٌ تُسحَب + رقميٌّ بمفتاحِ 12⇄24 + توگل صباح/مساء) + لعبةٌ تنافسيّةٌ (versus) بخمسةِ أنماط: عقارب→رقميّ · رقميّ→عقارب · اكتبِ الوقت · حرّكِ العقارب · تحويل 12↔24 (AM/PM). نطقُ الوقتِ بجُمَلٍ صحيحةٍ + صباحًا/مساءً بـPiper في اللغاتِ الثلاث (
- بقيّةُ الأنشطةِ والتحسيناتِ (وصلُ النقاط · بازل · تلوين · ميزان · جِدِ المختلف · ذاكرةُ الأصوات · 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 وإلّا صَمَتَ على لينكس.
الأولويّات (بالترتيب):
- قسمُ اللغات (الأعلى أثرًا) — كلُّ ألعابِ اللغاتِ صارت تنافسيّةً ✅ (سباق الترجمة · صنّف الكلمات · رتّب الأبجديّة · مطابقة الصور · مطابقة المعنى · الإملاء · الاستماع) عبرَ محرّكٍ عامّ + بطاقاتٌ ثنائيّةُ اللغة + جملةٌ افتتاحيّةٌ وردُّ فعلٍ باللغتين + خيارُ «ضدّ الوقت». توسيعُ اختبارِ اللغة ✅. المحتوى الفرنسيّ ✅ والإنجليزيّ ✅: الفرنسيّة: «🔊 الأصوات» (٣٢) + «🔡 خرائطُ المقاطع» (٤ خرائط · ٤٤٨ مقطعًا). الإنجليزيّة باحترامِ قواعدها: «🔊 Phonics» (٢٥ صوتًا: digraphs/vowel-teams/r-controlled) + «🔡 Word Families» (٥ عائلات CVC: a/e/i/o/u بنظام onset+rime). كلاهما مع اختبارِ المقاطع + الصوتِ المجرّد. القسمُ الصوتيُّ لكلِّ لغةٍ يظهرُ لها فقط (need:sounds/syllabaries). روتين: كلُّ خاصّيّةٍ جديدةٍ تُوسَمُ بـ«🆕 جديد» (see feedback-new-badge-routine).
-
الرياضيّات (
math.html) ✅ — لعبتان تنافسيّتان عبر versus: «تحدّي النمط» (أنماطُ أشكالٍ + تسلسلاتُ أعداد) و**«تحدّي الحساب»** (عمليّاتٌ مختلطة، تعيدُ استخدام GI.numrace). كلتاهما تشاركان الحارسَpvRun. - الاختبارات/عامّ ✅ — مظاهرُ لعبة الذاكرة (٧ مجموعات) + عجلةُ «أدرْ وأجبْ» (٦ قطاعاتٍ، SVG دوّار، سؤالٌ لكلّ قطاع، id=spinq مستقلٌّ عن «عجلة الحروف»).
-
مُعلَّقٌ من 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.
مُنجَزٌ:
-
ألعابٌ تنافسيّة (
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 على الشاشات الضيّقة) · التحقّقُ على جهازٍ من الطباعة والأيقونة.
-
زرُّ الرجوع في أندرويد:
@capacitor/app(كان مفقودًا) +mountNativeBack/window.appBackفيtheme.js— تنقّلٌ تدريجيٌّ عبر الصفحات (اللغاتُ مستوًى مستوًى، الألعابُ تعودُ لقائمتها)، وعلى الفهرس رسالةُ تأكيد الخروج/البقاء (exitApp). -
شاشةُ البدء على الهاتف (Android 12+):
@capacitor/splash-screenيعرضُsplash.pngالكاملَ بالاسم + خلفيّةُ نظامٍ خضراء (--splashBackgroundColor) + واجهةُ الأيقونة محشوّةٌ ضمن المنطقة الآمنة (لا تَقُصُّها الأقنعة). -
أيقونةُ نافذة سطح المكتب:
win.icon→dist/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يحقنُ Debiancopyright(GPL-3) و AppStreammetainfoفي الـ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.
-
الصوت يعملُ محلّيًّا: كان المحتوى الجديد صامتًا لأنّه بلا مقاطع Piper، ومتصفّحُ لينكس بلا أصوات Web Speech. وُلِّدت مقاطعُ alba/tom للأفعال والأزمنة و«كيف أسأل؟» وقصّة الأرقام (256 مقطعًا جديدًا؛ القائمةُ لم تُعَدْ ترميزًا).
مُنجَزٌ (دفعةُ الإصلاحات):
-
التصميم — بطاقاتٌ زجاجيّةٌ ملوّنةٌ في الوضع الداكن: بدلَ الأسطح المسطّحة، لكلّ بطاقةِ فهرسٍ تدرّجٌ شفّافٌ بلون هُويّتها + ضبابٌ (
backdrop-filter) + وهجٌ علويّ (dark.css→navcard: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("÷")، نتائجُ صحيحةٌ دائمًا (المقسوم = القاسم × الناتج)، عرضٌ مرئيٌّ لا يكشفُ الجواب. وأيقونتُها أُضيفت لمولّد الأيقونات (➗→FAdivideفي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.
-
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) عند الحاجة.
-
استراتيجيّةُ «أفضل المتاح» (
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(يستبدل بنفس المفتاح)→رفع.
-
زرّ «🎙️ سجّلْ نُطقك» على كلمات وعبارات اللغات (
attachReader→practice.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 — منشور 2026-06-21): الأقسامُ كاملة + نظامُ الصوت (بشريّ/عصبيّ/آليّ) + الحساباتُ ولوحةُ التحكّم + الوضعُ الداكن + التحزيمُ الأصليّ (AppImage/DEB/RPM/APK) + الموقعُ الرسميّ (سمة + أيقونات FA + بطاقاتُ تنزيل) + GitHub Release. خطّةٌ مقترحةٌ تُرتَّبُ بأولويّة المستخدم (لا التزامَ بجدول).
- ٧أ تجاوبُ الهاتف: تدقيقٌ شاملٌ لباقي الصفحات (بانتظار لقطات) — البندُ المفتوحُ الأهمّ.
- إصلاحاتٌ صغيرةٌ بعد تغذية المستخدمين.
-
توقيعُ Android للمتاجر: keystore + بناءُ AAB/APK موقَّع (
assembleRelease) — الحاليُّ debug فقط (انظرpackaging.md).
- (ج) ضمانُ نطق المحتوى الطويل (ذكريات/اختبارات/ألغاز) offline بـespeak أو «صالح» بدلَ Web Speech.
-
(هـ) تغطيةُ «صالح» التدريجيّة للنواقص (الوالدُ يُسجّل، فتُنطَق تلقائيّاً) + تسجيلاتُ الأحرف الصامتة (بْ/جْ/دْ/ضْ/أْ — قيدُ espeak، انظر
public/tts/custom/README.md).
- (د) أيقونات SVG لفئات المحتوى + نصوصٌ أطولُ للّغات.
- نسخُ EN/FR للقصّة المصوّرة «الكتاب السحريّ» (البنيةُ جاهزةٌ لاستقبالها) + مزيدٌ من القصص المصوّرة/قصص العِبَر.
- ألبومُ صورٍ منفصلٌ للطفل (سجلُّ لوحة الأهل يؤدّي دورَه جزئيًّا الآن).
- تقاريرُ أعمقُ + تصديرُ/طباعةُ تقدّمٍ مُوسَّعة.
- النشرُ على المتاجر: Google Play · F-Droid · Flathub (نسخٌ موقّعة) — أتمتةُ الحزم في CI ممكنة.
- نسخةُ iOS عبر Capacitor (إن لزم).
- مراجعةُ الأداء/الحجم (تخفيفُ حزم الصوت ~60م إن أمكن دون كسر offline).
عند بدء أيِّ بندٍ: انقُلْه من هنا إلى قسم «المفتوح» المؤرَّخ أعلى الملفّ، وحدّثْ
CHANGELOG.mdوversionعند الإصدار (انظرpackaging.mdلقائمة التحقّق).
-
العصبيُّ (Piper/kareem) صار يشمل الأحرف:
gen-piperيضمّallForms()(أسماء الأحرف وأشكالها، 471) +types:["letter",…]→ يظهرُ خياراً في منتقي صوت الحروف بلوحة التحكّم. افتراضُ الحروف يبقى espeak (أوضح)، والكلماتُ/الأرقام/الجمل عصبيّةٌ افتراضاً. (إجمالي kareem ≈ 1210 مقطعاً.)
-
الكلمات والجمل افتراضُها العصبيّ (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).
-
عبارات الآليّ مشكولةٌ كاملاً (
robo-phrases.js:encourage/recall/NOTICES) فيَنطقها الآليُّ سليمةً. -
مرجعٌ منطوقٌ مشكولٌ (
src/spoken-ref.js،spokenRef) للكلمات/الأحرف المعروضة مجرّدةً (كلمات لعبة الدمج 69 كلمة + أسماء الأحرف الـ28: ألف→أَلِف…) — العرضُ يبقى مجرّداً والمرجعُ مشكول؛ يستعملهgen-audio/gen-piper. أسماءُ الأعداد مشكولةٌ أصلاً. (أُصلِح «ألف»: allaf→alif.) نُظِّفت 169 مقطعاً يتيماً بعد تغيّر مفاتيح العبارات. - المتبقّي (طلبُ المستخدم): إتاحةُ النموذج العصبيّ (Piper) للأحرف/الأرقام كخيار · تعميمُ زرّ «سجّلْ قراءتك» على باقي الأقسام (اللغات…).
-
إصلاحُ جذرِ النطق (
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) متناسقٌ الآن.
-
شريطُ الأزرار العلويّ موحَّدٌ في كلّ الصفحات (
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.
-
الموقع الرسميّ + هيكلة المستودع: التطبيق في
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"]).
-
الحسابات والأمان (
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): توگل انتقال تلقائيّ + لا يقطع ردّة الفعل + عبارة «نعود لها لاحقاً». الحركات بمستويات.
- تعميق التفكير — الطفل يفكّر لا يتلقّى.
- الاستكشاف والحرية — اختيار ذاتي لا مسار مفروض.
- التعلّم المتكيّف — يتكيّف مع مستوى الطفل.
- المتعة والتفاعل — الآليّ متجاوب في كل الأقسام.
ومبادئ شاملة لا تُكسَر: محلّي 100% دون إنترنت/ذكاء اصطناعي · إطار إسلامي عقدي · الآلي لا يُوصَف بحيّ · تعدّد منصّات (ويب/حاسوب/هاتف/لوحي) · خصوصية مطلقة. (التفصيل في CLAUDE.md).
-
src/sound-prefs.js(مفتاحا النغمات/النطق المستقلّان)،src/speak.js(نطق عربي مشترك، عُمّم وأُزيل inline منread.html/basics.html/play.html)،src/sfx.js(WebAudio)،src/islamic.js(بسملة/شكر/تدبّر)، تتبّع الإتقان + سقالة لايتنر فيsrc/progress.js. - الآليّ متحرّك متجاوب (تنفّس/رمش/نبض/مزاج) عبر CSS keyframes +
setMood.
-
src/think.js(deepenForأسئلة تعمّق عامّة بحسب المجال تربط بالتدبّر +roboWrongFor). - خطوة التلقين صارت حواراً من مرحلتين: جواب الطفل ← تعميق «لماذا/كيف» + وضع «علّمني الخطأ» (الآليّ يقول خطأً والطفل يصحّحه).
- حقول
think{why, robo_wrong}لـ5 ذكريات نموذجية (واحدة لكل مجال).
- شفاء فردي مرئي (الجزء/العنصر ينبثق لحظة إضاءته).
-
src/robo-companion.js: رفيق الآليّ مُحقَن فيbasics/play/quiz/tales/puzzles/read— نجاح→cheer، خطأ→encourage، قراءة الحرف/الكلمة→read، قراءة الكلمة→applaud. تفاعل الخطأ يشمل كل ألعابplay.html.
- مقاطع MP3 مُولَّدة مسبقاً بـ
espeak-ng(tools/gen-audio.mjs→public/tts/+src/tts-manifest.json، ~282 مقطعاً، ~2.5م).speak.js: مقطع أولاً ثم Web Speech.
- خريطة عالم بصرية (مناطق بتقدّمها،
renderMap) + زرّ «🎲 فاجئني». -
حقل جواب مكتوب في خطوة التلقين (موجَّه بسؤال الآليّ، يُحفظ كـ
note). - حذف كل تسجيل على حدة مع مهلة تراجع 6 ثوانٍ في لوحة الأهل.
-
src/adaptive.js(pickAdaptive: ترجيح لايتنر للضعيف/المستحقّ) فيbasics(حروف/أرقام) وplay(كلمات). -
recordMasteryعند النجاح:L:حرف،N:رقم،W:كلمة،R:قراءة،Q:فئة اختبار،M:ذكرى. -
getChildAge/setChildAge: افتراض عمر الطفل يصفّيindex/play/quizتلقائياً (مُنتقٍ في لوحة الأهل). - رؤى الإتقان في لوحة الأهل (أُتقِن / للمراجعة، بحسب نوع المهارة).
-
وضع الإخوة (
coopMode): يقتصر على ذكريات «لطفلين معًا» (6 أنشطةcoop-*) بزرّ دخول/خروج وبانر مميّز. - 4 أوسمة تكافئ التفكير/الاستكشاف/التعاون: ناقدٌ صغير، مُفكِّرٌ عميق، مُغامِر، رفيقُ الإخوة.
- أيقونات PNG (192/512/maskable + apple-touch-icon) + meta لـiOS/Android +
viewport-fit=cover. - لمسة لمس عامّة (
tap-highlightشفّاف +touch-action:manipulation) +safe-area-insetللعناصر الثابتة. - (Capacitor APK: اختياريّ، لم يُنفَّذ بعد.)
- 7 ذكريات جديدة: طب نبوي (عسل، حبّة سوداء، سواك، آداب طعام، آداب نوم) + علماء (ابن الهيثم/الضوء، جابر بن حيّان/التجربة) — بإطار تدبّر و
think. (library.js = 78 ذكرية).
- بطاقة الفهرس كانت تفتح حلقة الآليّ نفسها (مكرّرة). الحلّ (لا حذف بل إثراء): صفحة مستقلّة فيها 4 أنشطة: الأشكال · عُدّ وقارن · أكمل النمط · الأكبر والأصغر. بإطار تدبّر + رفيق الآليّ +
pickAdaptive+recordMastery("S:")+logEvent("math_correct")+SECTION_OF.math. مُسجّلة فيvite.config.js.
- المقاطع وُسِّعت إلى كل الأبجدية (28 حرفاً) (
reading.consonants). - لكل حرف صفوف: الحركات (بَ بُ بِ) · المدود (بَا بُو بِي) · التنوين (بًا بٌ بٍ) · الشدّة والسكون (بَّ بْ).
- الألف حالة خاصّة: الهمزة بالحركات (أَ أُ إِ) · المدّ (آ أوّل الكلمة · أى آخرها · أُو · إِي) · التنوين (أً أٌ إٍ) · السكون (أْ).
- 500 مقطعاً مُولَّداً. تصحيحات (تُعدِّل النطق فقط، المفتاح يبقى أصلياً):
-
SPEAK_FIX: «تَ» كانت تُنطَق «ت فتحة» → «تَـ»؛ «يِ» كانت تُمَدّ →[[j'i]]؛ «آ» →[[?'a:]]؛ «أً» →[[?'an]]؛ كلمات العين. -
weakFix: العين (A) والغين (Q) ضعيفتان → إطالة فونيميةA:/Q:في كل أشكالهما؛ وسكونهما نقيٌّ ممتدّ[[A:]]/[[Q:]]. - السكون = صوتُ الحرف مجرّدًا دون أيّ إضافة (قرار المستخدم).
-
- حدّ espeak مُثبَت بالقياس (−91dB صمت): السكون على الانفجاريّة المجهورة ب ج د ض + الهمزة أْ = صمتٌ تامّ. لا يُحَلّ دون حركة (مرفوضة). بقيّة الـ23 سليمة.
- تسجيلٌ بشريّ في
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. -
إكمال✅ منجز (2026-06-15): 79/79 — أسئلة تعمّق مخصّصة بإطار تدبّر + عبارة «علّمني الخطأ» لكلِّ ذكرية (يظهر زرُّ الخطأ في الحلقة لكلِّها الآن).think{why, robo_wrong}لبقيّة الذكريات - مقاطع نطق للنصوص الطويلة (أسئلة الذكريات) إن لزم ضمانها بلا أصوات نظام.
- ألبوم صور منفصل للطفل (سجلّ لوحة الأهل يؤدّي دوره حالياً).
- (قيدا 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.
أضِف هنا أي اقتراح/تغيير/مستجدّ قبل تحويله إلى مهمة. (فارغ حالياً — جاهز للإضافة.)
📖 هذا الويكي مرآةٌ مولَّدةٌ من GT-MK/docs/ في المستودع — حرّرِ الملفَّ هناك ثمّ شغّلْ bash tools/publish-wiki.sh.
رخصةُ المشروعِ والوثائق: GPL-3.0.
البداية
المرجعُ التقنيّ
الخبرةُ المتراكمة