عن المشروع
Bento هي حزمة مكتبية مفتوحة المصدر تقوم فكرتها الأساسية على أن المستند هو البرنامج نفسه: العرض التقديمي هو ملف HTML واحد ذاتي الاحتواء يحمل عارضه وعارض العرض والمحرر الخاص به. افتحه في أي متصفح حديث فيظهر كمحرر؛ وعند الحفظ، يعيد كتابة كتلة البيانات الخاصة به. أول تطبيق، Bento Slides، هو بديل لـ PowerPoint يُوزَّع كملف واحد بحجم ~560 كيلوبايت (Bento_Slides.bento.html) دون الحاجة إلى حساب أو مثبّت.
القدرات الرئيسية الموصوفة في ملف README:
- قابلية النقل بملف واحد: العرض التقديمي والخطوط والصور والرسوم البيانية والحركات والمحرر الكامل تنتقل معًا؛ وتقع بيانات المستند في كتلة JSON نصية واضحة قرب أعلى الملف، مما يجعلها قابلة للفحص والتعديل بواسطة أدوات خارجية.
- الحفظ الذاتي: يعيد الملف كتابة كتلة بياناته عند الحفظ عبر File System Access API، مع خيار تنزيل كبديل.
- عرض Morph: العناصر التي تشترك في نفس المعرّف تتحرك بين الشرائح في الموضع والحجم واللون والتدرجات، محسوبة من نموذج المستند وليس من DOM.
- التعاون المباشر: تشفير من طرف إلى طرف (AES-GCM) مع تخزين المفاتيح في الملف وليس على خادم؛ ومرحّل مزامنة أعمى اختياري يخزن النص المشفر فقط. الدمج يستخدم CRDT داخلي مع دمج نص على مستوى الأحرف، تم اختباره بالتشويش عبر سكربت اختبار تقارب.
- رسوم بيانية مدمجة: أعمدة وخطوط ودائرية ومبعثرة تُرسم بمحرك بدون تبعيات خارجية، تفاعلية أثناء العرض، مع تحول البيانات بين أنواع الرسوم.
- صيغة صديقة للذكاء الاصطناعي: لأن المستند هو JSON نصي، يمكن للوكلاء القائمة على الملفات (Claude Code، Cursor، Aider) تعديل .bento.html في مكانه، ويمكن لروبوتات الدردشة تمرير JSON عبر window.bento.loadDoc. وهو موثق للعمل دون اتصال مع نماذج مفتوحة الوزن محلية عبر Ollama أو llama.cpp أو LM Studio.
- تحديثات ذاتية موقعة: الإصدارات موقعة بـ ECDSA وتُعرض داخل التطبيق؛ التحديث يكتب ملفًا جديدًا بينما يبقى القديم كخيار للتراجع.
- ميزات أخرى مذكورة: عرض المتحدث، التعليقات، التخطيطات، حالات تفاعلية مخفية، كشف عند التمرير، مسارات حركة، تصدير PDF، أحجام صفحات، و8 لغات للواجهة.
البنية المعمارية ملخصة كنموذج مستند TypeScript (slides/src/model.ts) مع عارض واحد يُستخدم لسطح المحرر والصور المصغرة ووضع العرض؛ وReveal.js يقود التنقل؛ والحركات والرسوم البيانية والتعاون مكونات داخلية. الصدفة تُضغط إلى حوالي 560 كيلوبايت مع ترك كتلة المستند كنص واضح.
ملف README صريح بشأن نموذج الأمان: مفاتيح التعاون تُنشأ من جهة العميل وتوجد فقط في الملف، لذا امتلاك الملف يعني العضوية وتدوير المفتاح هو الإلغاء؛ المرحّل يرى النص المشفر وتوقيت الاتصال وتجزئة مفتاح الغرفة؛ أسماء الحضور ادعاءات وليست إثباتات؛ فحص التحديثات يجلب بيانًا ثابتًا ويتحقق من التوقيع والتجزئة ورتابة الإصدار. المقايضات المعروفة تشمل التراجع القائم على اللقطات أثناء التعاون المباشر وتجربة تحرير موجهة للحاسوب المكتبي، بينما الهواتف أفضل للعرض والتقديم.
البناء من المصدر يتطلب Node 20+ وnpm؛ التطبيق بناء صفحة واحدة بدون خادم خلفي. الأوامر تشمل npm run dev وnpm run build:single وسكربت اختبار تقارب CRDT. الإصدارات تُقطع محليًا بحيث يبقى مفتاح التوقيع على جهاز الصيانة. التوثيق يغطي البنية المعمارية ومواصفات صيغة bento/slides المعيارية وتصميم التعاون ونموذج التهديد ودليل الوكلاء. خارطة الطريق تذكر تطبيقات مستقبلية: bento/spaces (ملاحظات)، bento/dash (جداول)، وbento/vault، كل منها كملف .bento.html مستقل. كل شيء مرخص بـ MIT، مع مكونات وقت التشغيل المضمنة تحت MIT والخطوط المضمنة تحت OFL.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.