عن المشروع

توفر SwiftTUI Web حزمتي npm تتيحان تشغيل تطبيقات SwiftTUI—وهي واجهات ببنية SwiftUI مرسومة في خلايا طرفية—في المتصفح. يمكن كتابة التطبيق مرة واحدة ونشر نفس شجرة العرض، و@State، و@FocusState إلى صفحة ويب، مع العرض عبر Canvas أو DOM وشجرة وصول دلالية، دون إعادة كتابة أو استخدام محاكي طرفية مثل xterm.js. يُجمَّع تطبيق SwiftTUI إلى wasm32-wasi ويبث سطحًا نقطيًا منظمًا. تقوم حزمة @swifttui/web بطلاء هذا السطح في الصفحة عبر محركات DOM أو canvas وتركيب شجرة وصول ARIA حقيقية. شجرة ARIA هي معاينة عرض دلالية أحادية الاتجاه: يتم عرض ترتيب القراءة، والأسماء، والأدوار، والحالة المخفية، والإعلانات، والتركيز ذو الأصل التشغيلي، لكن التركيز ذو الأصل المساعد، والتفعيل، والضبط، والتحرير لا تُعاد توجيهها إلى SwiftTUI. يحتوي هذا المستودع على اثنين من مضيفات SwiftTUI الخمسة: حزمة WASI ثابتة وWebHost محلي. الإطار نفسه موجود في SwiftTUI/swift-tui. يحافظ هذا التقسيم على عمليات Swift وعمل نظام الملفات في وقت البناء خارج بيئة التشغيل الآمنة للمتصفح، بحيث يمكن لأي أداة تجميع استيراد بيئة التشغيل. الحزم: - @swifttui/web: بيئة تشغيل المتصفح—تحميل بيان المشهد، عرض DOM + canvas، تركيب ARIA، وجسور مشهد WebSocket + WASI. - @swifttui/build: أدوات البناء—توليد البيان، بناء Swift WASI، التحقق من wasm، وواجهة سطر الأوامر swifttui-web. التثبيت: تُنشر كلتا الحزمتين على npm كوحدات ESM مع تعريفات TypeScript مجمعة. لا حاجة إلى Bun أو سلسلة أدوات TypeScript؛ فهي تحتوي على JavaScript مُجمَّعة في dist/ وتعريفات. يمكن التثبيت عبر npm أو من أرشيفات إصدارات GitHub. الاستخدام الأساسي: قم ببناء تطبيق SwiftTUI إلى WASI باستخدام `npx swifttui-web build --package-path ./TerminalApp --app MyApp`، ثم قم بتركيب البيان الناتج وwasm من بيئة تشغيل المتصفح باستخدام createWebHostApp وcreateWasmSceneRuntimeFactory. تتطلب بيئة تشغيل WASI أن تقدم الصفحة المضيفة ترويسات Cross-Origin-Opener-Policy: same-origin وCross-Origin-Embedder-Policy: require-corp لدعم stdin المدعوم بـ SharedArrayBuffer؛ بدونها تبقى اللوحة فارغة. الحالة: إصدار تجريبي؛ يمكن أن تتغير الواجهة العامة. يوجد عرض توضيحي مباشر على https://swifttui.sh/webexample. الوثائق ومرجع الواجهة على https://swifttui.sh/docs/documentation/. تشمل المضيفات الأخرى الطرفية (استيراد SwiftTUI الافتراضي)، وSwiftUI الأصلي (swift-tui-swiftui)، وJetpack Compose (swift-tui-android). الترخيص: MIT.