انتقل إلى المحتوى

التطوير

المتطلبات

  • Bun لتثبيت مكونات مساحة العمل وتشغيل النصوص البرمجية
  • Node.js 20+
  • tmux وcloudflared للاختبارات الشاملة من البداية إلى النهاية
  • مفتاح Daytona API وبيانات اعتماد git لاختبار تكامل البيئة المعزولة (اختياري)
  • Playwright لاختبارات e2e الخاصة بـ UI

التثبيت

سطر الأوامر
bun install

تشغيل التطبيق

سطر الأوامر
bun run dev:beam

ينشئ هذا الأمر CLI، ويشغّل الخادم المحلي على المنفذ 8787 (يمكن تغييره باستخدام TERMBRIDGE_DEV_PORT) ضمن جلسة tmux باسم codex (يمكن تغييره باستخدام TERMBRIDGE_DEV_SESSION)، ثم يشغّل خادم Vite dev UI الذي يوجّه /__tb (بما في ذلك WebSockets) إلى ذلك الخادم. ويطبع رابط استرداد dev URL لفتحه في المتصفح. عيّن TERMBRIDGE_SKIP_BUILD=1 لتخطي بناء CLI.

جلسات متعددة

سطر الأوامر
TERMBRIDGE_SESSIONS=2 bun run dev:beam

أو استخدم الاختصار:

سطر الأوامر
bun run dev:beam:multi

يضبط dev:beam القيمة TERMBRIDGE_INSECURE_COOKIE=1 ما لم تضبطها بنفسك، لكي تعمل ملفات تعريف ارتباط الجلسة عبر HTTP العادي. عند تشغيل CLI مباشرةً دون HTTPS، عيّنها صراحةً:

سطر الأوامر
TERMBRIDGE_INSECURE_COOKIE=1 node cli/dist/bin.js --no-tunnel --public-url http://127.0.0.1:8080 --port 8080

الاختبارات

سطر الأوامر
bun run test
  • يشغّل test:mocked اختبارات الوحدة والتكامل بتغطية 100٪.
  • يشغّل test:cli اختبارات e2e حقيقية لـ CLI وUI (tmux وcloudflared وPlaywright).
  • يقرأ اختبار بيئة Daytona المعزولة في test:cli إعداداته من ملف .env فقط، داخل مجلد termbridge-test-app بجوار هذا المستودع (../termbridge-test-app/.env). ويعمل عند ضبط TERMBRIDGE_E2E_DAYTONA=1 وTERMBRIDGE_DAYTONA_API_KEY في ذلك الملف. عيّن TERMBRIDGE_SANDBOX_REPO فيه إلى مستودع يمكنك استنساخه؛ مستودع الاختبار الافتراضي خاص ويتطلب أيضًا TERMBRIDGE_SANDBOX_GIT_USERNAME وTERMBRIDGE_SANDBOX_GIT_TOKEN.

الوثائق

الوثائق ملفات Markdown عادية في docs/، مع بيانات وصفية في مقدمة كل صفحة وملفات meta.json لتحديد ترتيب التنقل. تُنشر على termbridge.dev. للتحقق منها، شغّل:

سطر الأوامر
node scripts/check-docs-content.mjs --root docs --expected-docs 16 --expected-nav 3

يجري سير عمل محتوى Docs الفحص نفسه على طلبات السحب التي تتضمن تغييرات في docs/.