- اختبار سقف التخزين: نجح `scripts/verify_vhd_disk_quota.ps1` بقرص VHDX مؤقت 64MiB؛ كتب 53,477,376 بايت حتى `ERROR_DISK_FULL` (112)، بقي 151,552 بايت حرًا، وحُذف قرص الاختبار بعد التحقق. سكربت القرص الدائم 1GiB اجتاز تحليل PowerShell بعد إصلاحه، لكن `Status` أكد عدم وجود القرص؛ محاولات UAC عبر Windows PowerShell وPowerShell 7 و`cmd.exe` انتهت بخطأ بدء `0xc0000142` قبل أي تعديل. لذلك لا يوجد حتى الآن VHDX دائم، ولا يُسمح للوكيل بتنفيذ أوامر.
- اختبار سقف التخزين: نجح `scripts/verify_vhd_disk_quota.ps1` بقرص VHDX مؤقت 64MiB؛ كتب 53,477,376 بايت حتى `ERROR_DISK_FULL` (112)، بقي 151,552 بايت حرًا، وحُذف قرص الاختبار بعد التحقق. سكربت القرص الدائم 1GiB اجتاز تحليل PowerShell بعد إصلاحه، لكن `Status` أكد عدم وجود القرص؛ محاولات UAC عبر Windows PowerShell وPowerShell 7 و`cmd.exe` انتهت بخطأ بدء `0xc0000142` قبل أي تعديل. لذلك لا يوجد حتى الآن VHDX دائم، ولا يُسمح للوكيل بتنفيذ أوامر.
- تهيئة Linux: وُحّد `APPLICATION_ID` مع اسم سطح المكتب والأيقونة إلى `com.mithqal.ai`، وأضيف دليل اعتماديات البناء والتشغيل الآمن مع Libsecret وخدمة Secret Service في `flutter_app/linux/packaging/README.md`. لم يُنفذ بناء أو اختبار Linux أصلي على هذا المضيف Windows؛ بند Linux/macOS لا يزال مفتوحًا حتى يتحقق البناء ومخزن الجلسة على المنصات نفسها.
- وضوح تسجيل المشروع في النافذة الضيقة: أضيف إجراء دائم في الشريط العلوي بعنوان وصولي «تسجيل مشروع من مجلد موجود»، لأن القائمة الجانبية تختفي عند عرض 760px أو أقل. يحتفظ بسلوك اختيار مجلد موجود وتسجيله. تحقق اختبار واجهة عند عرض 700px من ظهور الإجراء رغم اختفاء القائمة؛ مجموعة `widget_test.dart` نجحت 6/6 و`flutter analyze --no-pub` بلا ملاحظات (2026-10-04). لم يُستبدل التطبيق المفتوح ببناء جديد في هذه الخطوة.
- متابعة التقييم على ملفات المشروع الفعلية: أضيفت مرادفات `permission/permissions/صلاحية/صلاحيات` لرموز صلاحيات الأدوات، فأصبح المقطع العميق `tool_name not in selected_skill.allowed_tools` يظهر ضمن نتائج السؤال الذي كان يفشل سابقًا؛ تقييم الاسترجاع 9/9 أدلة (`evals/results/retrieval_project_permission_synonym_2026-10-03.json`). هذا يقيس العثور على المصدر لا جودة صياغة Gemma. أضيف حدّ سياق لأربع مقاطع وإزالة التكرار وتوزيع المقاطع على ملفات مختلفة. في 2026-10-03 أُعيد تشغيل FastAPI من الشفرة الحالية بعد اكتشاف أن الخدمة الحية كانت أقدم من تعديل السياق. على الخدمة الجديدة، أعاد التقييم الكامل 11/11 ملفًا مستهدفًا في المرتبة الأولى ووجد الدليل 11/11 (`evals/results/retrieval_project_agent_fresh_api_2026-10-03.json`). مراجعة يدوية أولية لإجابات الجولة وجدت 9/11 إجابات مباشرة؛ سؤال ترحيل الإجابات وسؤال توجيه الصور امتنعا رغم وجود الدليل، لكن إعادة كل حالة منفردة أجابت عنها مع اقتباس المصدر (`evals/results/retrieval_project_agent_migration_retry_2026-10-03.json` و`evals/results/retrieval_project_agent_routing_retry_2026-10-03.json`). هذا يكشف تذبذب جودة التوليد، ولا يعادل درجات مستقلة؛ مراجعة بشرية أوسع ما زالت مفتوحة. اختبارات Flutter الكاملة الآن 16/16، واختبارات Python الكاملة عبر `unittest` الآن 89/89 (2026-10-03). فحص `compileall` و`git diff --check` ناجحان.
- متابعة التقييم على ملفات المشروع الفعلية: أضيفت مرادفات `permission/permissions/صلاحية/صلاحيات` لرموز صلاحيات الأدوات، فأصبح المقطع العميق `tool_name not in selected_skill.allowed_tools` يظهر ضمن نتائج السؤال الذي كان يفشل سابقًا؛ تقييم الاسترجاع 9/9 أدلة (`evals/results/retrieval_project_permission_synonym_2026-10-03.json`). هذا يقيس العثور على المصدر لا جودة صياغة Gemma. أضيف حدّ سياق لأربع مقاطع وإزالة التكرار وتوزيع المقاطع على ملفات مختلفة. في 2026-10-03 أُعيد تشغيل FastAPI من الشفرة الحالية بعد اكتشاف أن الخدمة الحية كانت أقدم من تعديل السياق. على الخدمة الجديدة، أعاد التقييم الكامل 11/11 ملفًا مستهدفًا في المرتبة الأولى ووجد الدليل 11/11 (`evals/results/retrieval_project_agent_fresh_api_2026-10-03.json`). مراجعة يدوية أولية لإجابات الجولة وجدت 9/11 إجابات مباشرة؛ سؤال ترحيل الإجابات وسؤال توجيه الصور امتنعا رغم وجود الدليل، لكن إعادة كل حالة منفردة أجابت عنها مع اقتباس المصدر (`evals/results/retrieval_project_agent_migration_retry_2026-10-03.json` و`evals/results/retrieval_project_agent_routing_retry_2026-10-03.json`). هذا يكشف تذبذب جودة التوليد، ولا يعادل درجات مستقلة؛ مراجعة بشرية أوسع ما زالت مفتوحة. اختبارات Flutter الكاملة الآن 16/16، واختبارات Python الكاملة عبر `unittest` الآن 89/89 (2026-10-03). فحص `compileall` و`git diff --check` ناجحان.
- تحقق تشغيل حديث: أُعيد تشغيل FastAPI على `127.0.0.1:8000` من نسخة المشروع الحالية مع Ollama وGemma 4؛ `/health` أعاد `ok`، والجلسة المحلية أكدت وضع الوكيل متعدد الخطوات وحده 3، وتجربة API حية اختارت `calculator` وأعادت `391.0` لـ17×23. في 2026-10-03 اختُبر أيضًا طلب بحث+حساب حي: `search_workspace` أعاد `MAX_AGENT_TOOL_CALLS = 3` من `app/main.py`، ثم الحاسبة أعادت `21` لـ3×7 في خطوتين. بقي تطبيق Windows Debug شغّالًا، وظل ملف SQLite المحلي موجودًا في مساره. اختبارات Python الكاملة 83/83؛ اختبارات Flutter 15/15 و`flutter analyze` بلا ملاحظات من الجولة السابقة، ولم تتغير واجهة Flutter في هذه الخطوة.
- تحقق تشغيل حديث: أُعيد تشغيل FastAPI على `127.0.0.1:8000` من نسخة المشروع الحالية مع Ollama وGemma 4؛ `/health` أعاد `ok`، والجلسة المحلية أكدت وضع الوكيل متعدد الخطوات وحده 3، وتجربة API حية اختارت `calculator` وأعادت `391.0` لـ17×23. في 2026-10-03 اختُبر أيضًا طلب بحث+حساب حي: `search_workspace` أعاد `MAX_AGENT_TOOL_CALLS = 3` من `app/main.py`، ثم الحاسبة أعادت `21` لـ3×7 في خطوتين. بقي تطبيق Windows Debug شغّالًا، وظل ملف SQLite المحلي موجودًا في مساره. اختبارات Python الكاملة 83/83؛ اختبارات Flutter 15/15 و`flutter analyze` بلا ملاحظات من الجولة السابقة، ولم تتغير واجهة Flutter في هذه الخطوة.
@@ -91,7 +95,7 @@
- [x] HTTPS محلي اختياري لعميل Windows/Dart والمتصفح: أضيف `scripts/setup_local_tls.ps1` لإنشاء جذر تطوير خاص بـ`CurrentUser\Root` وشهادة خادم SAN لـ`localhost` و`127.0.0.1`؛ يقيّد ACL لمفتاح الخادم للمستخدم و`SYSTEM` ويحذف مفتاح الجذر بعد التوقيع. أضيف `start-api-https.ps1` لمنفذ 8443 و`remove_local_tls.ps1` لإزالة الشهادات والملفات المحددة. في 2026-10-04 أعاد Windows PowerShell وDart `HttpClient` الحالة 200 عبر الاسمين؛ فتح Edge headless صفحة `/health` وأظهر JSON بالحالة 200. رفض HTTPX بمخزن CA الافتراضي الشهادة الخاصة. أُوقف خادم الاختبار وبقي HTTP 8000 كما هو. `curl.exe` احتاج `--ssl-no-revoke` بسبب غياب CRL لجذر التطوير؛ لا نعطل فحص الشهادات في التطبيق. الإعداد loopback للتطوير فقط وليس شهادة عامة أو وصولًا شبكيًا.
- [x] HTTPS محلي اختياري لعميل Windows/Dart والمتصفح: أضيف `scripts/setup_local_tls.ps1` لإنشاء جذر تطوير خاص بـ`CurrentUser\Root` وشهادة خادم SAN لـ`localhost` و`127.0.0.1`؛ يقيّد ACL لمفتاح الخادم للمستخدم و`SYSTEM` ويحذف مفتاح الجذر بعد التوقيع. أضيف `start-api-https.ps1` لمنفذ 8443 و`remove_local_tls.ps1` لإزالة الشهادات والملفات المحددة. في 2026-10-04 أعاد Windows PowerShell وDart `HttpClient` الحالة 200 عبر الاسمين؛ فتح Edge headless صفحة `/health` وأظهر JSON بالحالة 200. رفض HTTPX بمخزن CA الافتراضي الشهادة الخاصة. أُوقف خادم الاختبار وبقي HTTP 8000 كما هو. `curl.exe` احتاج `--ssl-no-revoke` بسبب غياب CRL لجذر التطوير؛ لا نعطل فحص الشهادات في التطبيق. الإعداد loopback للتطوير فقط وليس شهادة عامة أو وصولًا شبكيًا.
- [x] حد أولي دائم لتخمين كلمات المرور وإنشاء الحسابات في SQLite مع نافذة انتهاء و`Retry-After`؛ اختبرته مجموعة Python كاملة، وتبقى مراجعة الحدود تحت reverse proxy موثوق قبل أي نشر خارجي.
- [x] حد أولي دائم لتخمين كلمات المرور وإنشاء الحسابات في SQLite مع نافذة انتهاء و`Retry-After`؛ اختبرته مجموعة Python كاملة، وتبقى مراجعة الحدود تحت reverse proxy موثوق قبل أي نشر خارجي.
- [x] تعطيل حفظ رمز الجلسة الدائم في الويب؛ استخدام مخزن ذاكرة مؤقت وإظهار ذلك للمستخدم.
- [x] تعطيل حفظ رمز الجلسة الدائم في الويب؛ استخدام مخزن ذاكرة مؤقت وإظهار ذلك للمستخدم.
- [ ] التحقق من متطلبات Linux keyring وتشغيل تخزين الجلسة الأصلي، وبناء macOS وLinux على منصات فعلية.
- [ ] التحقق من متطلبات Linux keyring وتشغيل تخزين الجلسة الأصلي، وبناء macOS وLinux على منصات فعلية. متطلبات Linux المبدئية موثقة في `flutter_app/linux/packaging/README.md` ومعرّف GTK يطابق `com.mithqal.ai`؛ الاختبار الأصلي على Linux لم يُنفذ، واختبار Keychain والبناء على macOS ما زالا مطلوبين.
- [x] تثبيت مكوّن C++ ATL في Visual Studio Build Tools؛ تحقق وجود `atlstr.h` ونجح `flutter build windows --debug` (2026-10-03).
- [x] تثبيت مكوّن C++ ATL في Visual Studio Build Tools؛ تحقق وجود `atlstr.h` ونجح `flutter build windows --debug` (2026-10-03).
- تصميم بيانات المستخدمين والمحادثات والمرفقات ونسخ الإجابات مع ملكية واضحة وفهارس وترحيلات قاعدة بيانات.
- تصميم بيانات المستخدمين والمحادثات والمرفقات ونسخ الإجابات مع ملكية واضحة وفهارس وترحيلات قاعدة بيانات.
- SQLite مناسب لنسخة محلية أحادية الجهاز. عند تشغيل خدمة لعدة مستخدمين/أجهزة، ننتقل إلى PostgreSQL، مع نسخ احتياطية وسياسة حذف وتصدير.
- SQLite مناسب لنسخة محلية أحادية الجهاز. عند تشغيل خدمة لعدة مستخدمين/أجهزة، ننتقل إلى PostgreSQL، مع نسخ احتياطية وسياسة حذف وتصدير.
expect(find.byTooltip('تسجيل مشروع من مجلد موجود'),findsOneWidget);
expect(tester.takeException(),isNull);
awaitchatCubit.close();
});
testWidgets('model selector displays capabilities reported by Ollama',(
testWidgets('model selector displays capabilities reported by Ollama',(
tester,
tester,
)async{
)async{
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.