تخط إلى المحتوى

المعمارية

bae نواة Rust واحدة ترتدي أربعة تطبيقات أصلية. كل ما يعرّف المنتج، ونموذج المكتبة، والاستيراد، والتشغيل، والمزامنة، والتشفير، يعيش في Rust ويتصرف بالطريقة نفسها على كل منصة؛ وكل تطبيق واجهة أصلية رقيقة فوقه.

  • bae-core: المنتج. نموذج المكتبة والبيانات الوصفية، ومسارا الاستيراد والتعرف، ومحرك تشغيل FFmpeg، وتحليل الجهارة، والتصدير، والتكامل مع coven تحته. لا يُبنى الاستيراد والتعرف إلا على سطح المكتب؛ وبنى الهاتف عملاء مزامنة وتشغيل.
  • coven: طبقة البيانات، مكتبة منفصلة. يملك coven اتصال SQLite، ويلتقط كل تغيير يثبته bae، ويزامن تلك التغييرات بتشفير طرف إلى طرف عبر تخزين المستخدم السحابي. ويملك أيضًا تخزين blobs (بايتات الصوت، والأعمال الفنية)، والذاكرة المخبأة المحلية، ومفاتيح الهوية، والعضوية. يثبت bae مراجعة coven محددة ويختمها في كل binary؛ وهي تحدد جيل توافق المزامنة بين البنى.
  • bae-bridge: حد UniFFI. تُعرّف أنواع الجسر مرة في Rust وتُولّد إلى Swift وKotlin وقت البناء.
  • التطبيقات: SwiftUI على macOS وiOS، وJetpack Compose على Android، وتطبيق Windows أصلي. ينفذ كل منها أيضًا قطع المنصة التي يطلبها core: إخراج الصوت، والتعرف على نصوص الأعمال الفنية، وتحكمات الوسائط، والوصول إلى keychain، وتقارير الأعطال.

إلى جانب التطبيقات: bae-mcp (خادم MCP)، وbae-cli (سطر الأوامر)، وbae-automation (طبقة الأدوات المشتركة التي يستخدمها كلاهما).

مكتبة واحدة على القرص

رابط إلى هذا القسم

تعيش المكتبة في ~/.bae/libraries/<library-id>/ (دليل بيانات منصة على الهاتف):

~/.bae/libraries/<id>/
library.db # SQLite: catalog, credits, playback specs
config.yaml # device-local settings, never synced
storage/
local/ # blobs this device owns (covers, artist images)
cache/ # evictable copies of cloud blobs
pinned/ # pinned-for-offline copies, never evicted

لا تُفتح قاعدة البيانات إلا عبر coven، الذي يضع جداول التتبع الخاصة به (مؤشرات المزامنة، وصندوق الصادر، وحالة blob) بجانب مخطط bae ويشغّل ترحيلات bae. الملفات الصوتية المستوردة كغير مُدارة لا تكون تحت ~/.bae أصلًا: تشير إليها قاعدة البيانات في المسارات التي استُوردت منها.

لا تعيش الأسرار في هذه الملفات. مفاتيح الهوية، ومفتاح تشفير المكتبة، وبيانات اعتماد السحابة، ورموز API تعيش في keyring نظام التشغيل (Keychain على منصات Apple، متزامنة عبر iCloud Keychain؛ وما يقابلها على المنصات الأخرى).

يوجد إصداران وقت البناء على كل منصة. يضمّن bae مزودي OAuth (Google Drive، Dropbox، OneDrive)، وCloudKit، وtelemetry. يخرج baeium كل ذلك: تخزين متوافق مع S3 فقط، وبلا telemetry، ولا شيء مملوك في شجرة الاعتماديات. الإصداران من المصدر نفسه والنواة نفسها؛ يقرر feature flag قائمة المزودين وتوصيل التشخيصات.

ترقم التطبيقات كـ MAJOR.MINOR لكل منصة. major هو حقبة التوافق، مشتركة بين كل التطبيقات: تستطيع الأجهزة ذات major نفسه مزامنة مكتبة. لا يزيد إلا عندما ينكسر تنسيق wire أو القرص، غالبًا مراجعة coven المثبتة. تحسب minor الإصدارات لكل تطبيق ولا تُقارن بين المنصات.