ملاحظات الإصدار
قائمة التحقق للإصدار
استخدم pnpm (Node 22+) من جذر المستودع. حافظ على شجرة العمل نظيفة قبل وضع العلامات/النشر.
تشغيل المشغل
عندما يقول المشغل "أطلق الإصدار"، قم فورًا بتنفيذ فحص ما قبل الإطلاق هذا (بدون أسئلة إضافية إلا إذا تم حظرك):
- اقرأ هذا المستند و
docs/platforms/mac/release.md. - قم بتحميل المتغيرات البيئية من
~/.profileوتأكد من تعيينSPARKLE_PRIVATE_KEY_FILE+ متغيرات App Store Connect (يجب أن يكون SPARKLE_PRIVATE_KEY_FILE موجودًا في~/.profile). - استخدم مفاتيح Sparkle من
~/Library/CloudStorage/Dropbox/Backup/Sparkleإذا لزم الأمر.
- الإصدار والبيانات الوصفية
- رفع رقم الإصدار في
package.json(مثال:2026.1.29). - تشغيل
pnpm plugins:syncلمحاذاة إصدارات حزم الإضافات + سجلات التغيير. - تحديث سلاسل إصدار CLI في
src/version.tsوعامل مستخدم Baileys فيsrc/web/session.ts. - تأكيد البيانات الوصفية للحزمة (الاسم، الوصف، المستودع، الكلمات المفتاحية، الترخيص) وأن خريطة
binتشير إلىopenclaw.mjsلـopenclaw. - إذا تغيرت التبعيات، قم بتشغيل
pnpm installحتى يكونpnpm-lock.yamlمحدثًا.
- البناء والقطع الأثرية
- إذا تغيرت مدخلات A2UI، قم بتشغيل
pnpm canvas:a2ui:bundleوقم بتسجيل أي تحديث لـsrc/canvas-host/a2ui/a2ui.bundle.js. -
pnpm run build(يعيد إنشاءdist/). - التحقق من أن حزمة npm
filesتتضمن جميع مجلداتdist/*المطلوبة (خاصةdist/node-host/**وdist/acp/**لـ node headless + ACP CLI). - تأكيد وجود
dist/build-info.jsonوأنه يتضمن تجزئةcommitالمتوقعة (يستخدمها شعار CLI لعمليات تثبيت npm). - اختياري:
npm pack --pack-destination /tmpبعد البناء؛ افحص محتويات الأرشيف واحتفظ به في متناول اليد لإصدار GitHub (لا تقم بتسجيله).
- سجل التغييرات والوثائق
- تحديث
CHANGELOG.mdبأبرز التغييرات للمستخدمين (أنشئ الملف إذا كان مفقودًا)؛ حافظ على الإدخالات مرتبة تنازليًا حسب الإصدار. - التأكد من أن الأمثلة/الخيارات في README تتطابق مع سلوك CLI الحالي (خاصة الأوامر أو الخيارات الجديدة).
- التحقق
-
pnpm build -
pnpm check -
pnpm test(أوpnpm test:coverageإذا كنت بحاجة إلى إخراج تغطية) -
pnpm release:check(يتحقق من محتويات حزمة npm) -
OPENCLAW_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke(اختبار دخان التثبيت باستخدام Docker، المسار السريع؛ مطلوب قبل الإصدار)- إذا كان الإصدار السابق المباشر من npm معروفًا بأنه معطل، قم بتعيين
OPENCLAW_INSTALL_SMOKE_PREVIOUS=<last-good-version>أوOPENCLAW_INSTALL_SMOKE_SKIP_PREVIOUS=1لخطوة ما قبل التثبيت.
- إذا كان الإصدار السابق المباشر من npm معروفًا بأنه معطل، قم بتعيين
- (اختياري) اختبار دخان المثبت الكامل (يضيف تغطية لغير الجذر + CLI):
pnpm test:install:smoke - (اختياري) اختبار E2E للمثبت (Docker، يشغل
curl -fsSL https://openclaw.ai/install.sh | bash، ثم الإعداد الأولي، ثم تشغيل استدعاءات الأدوات الحقيقية):pnpm test:install:e2e:openai(يتطلبOPENAI_API_KEY)pnpm test:install:e2e:anthropic(يتطلبANTHROPIC_API_KEY)pnpm test:install:e2e(يتطلب كلا المفتاحين؛ يشغل كلا المزودين)
- (اختياري) فحص سريع لبوابة الويب إذا كانت تغييراتك تؤثر على مسارات الإرسال/الاستقبال.
- تطبيق macOS (Sparkle)
- بناء + توقيع تطبيق macOS، ثم ضغطه للتوزيع.
- إنشاء تغذية Sparkle appcast (ملاحظات HTML عبر
scripts/make_appcast.sh) وتحديثappcast.xml. - احتفظ بملف zip للتطبيق (واختياريًا ملف dSYM المضغوط) جاهزًا لإرفاقه بإصدار GitHub.
- اتبع إصدار macOS للحصول على الأوامر الدقيقة ومتغيرات البيئة المطلوبة.
- يجب أن يكون
APP_BUILDرقميًا + رتيبًا (بدون-beta) حتى تتمكن Sparkle من مقارنة الإصدارات بشكل صحيح. - إذا كنت تقوم بالتصديق، استخدم ملف تعريف keychain
openclaw-notaryالمنشأ من متغيرات بيئة App Store Connect API (انظر إصدار macOS).
- يجب أن يكون
- النشر (npm)
- تأكيد أن حالة git نظيفة؛ قم بالتسجيل والدفع حسب الحاجة.
-
npm login(تحقق من المصادقة الثنائية) إذا لزم الأمر. -
npm publish --access public(استخدم--tag betaللإصدارات التجريبية). - التحقق من السجل:
npm view openclaw version,npm view openclaw dist-tags, وnpx -y openclaw@X.Y.Z --version(أو--help).
استكشاف الأخطاء وإصلاحها (ملاحظات من إصدار 2.0.0-beta2)
- npm pack/publish يتعطل أو ينتج أرشيفًا ضخمًا: حزمة تطبيق macOS في
dist/OpenClaw.app(وأرشيفات الإصدار) يتم تضمينها في الحزمة. الإصلاح عن طريق تضمين محتويات النشر عبرpackage.jsonfiles(قم بتضمين مجلدات فرعية من dist، الوثائق، المهارات؛ استبعد حزم التطبيقات). تأكد باستخدامnpm pack --dry-runأنdist/OpenClaw.appغير مدرج. - حلقة مصادقة npm الويب لعلامات التوزيع (dist-tags): استخدم المصادقة القديمة للحصول على مطالبة OTP:
NPM_CONFIG_AUTH_TYPE=legacy npm dist-tag add openclaw@X.Y.Z latest
- فشل التحقق بـ
npxمعECOMPROMISED: Lock compromised: أعد المحاولة بذاكرة تخزين مؤقت جديدة:NPM_CONFIG_CACHE=/tmp/npm-cache-$(date +%s) npx -y openclaw@X.Y.Z --version
- تحتاج العلامة إلى إعادة توجيه بعد إصلاح متأخر: قم بتحديث قسري ودفع العلامة، ثم تأكد من أن مرفقات إصدار GitHub لا تزال مطابقة:
git tag -f vX.Y.Z && git push -f origin vX.Y.Z
- إصدار GitHub + تغذية التطبيق (appcast)
- وضع علامة ودفع:
git tag vX.Y.Z && git push origin vX.Y.Z(أوgit push --tags). - إنشاء/تحديث إصدار GitHub لـ
vX.Y.Zبعنوانopenclaw X.Y.Z(ليس مجرد العلامة)؛ يجب أن يتضمن النص كامل قسم سجل التغييرات لذلك الإصدار (أبرز التغييرات + التغييرات + الإصلاحات)، مضمنًا (بدون روابط عارية)، ويجب ألا يكرر العنوان داخل النص. - إرفاق القطع الأثرية: أرشيف
npm pack(اختياري)،OpenClaw-X.Y.Z.zip، وOpenClaw-X.Y.Z.dSYM.zip(إذا تم إنشاؤه). - تسجيل
appcast.xmlالمحدث ودفعه (تقرأ Sparkle التغذية من الفرع الرئيسي main). - من دليل مؤقت نظيف (بدون
package.json)، قم بتشغيلnpx -y openclaw@X.Y.Z send --helpللتأكد من عمل نقاط دخول التثبيت/CLI. - الإعلان/مشاركة ملاحظات الإصدار.
نطاق نشر الإضافات (npm)
نحن ننشر فقط الإضافات الموجودة على npm تحت النطاق @openclaw/*. الإضافات المضمنة غير الموجودة على npm تبقى على القرص فقط (لا تزال تُشحن في extensions/**). العملية لاشتقاق القائمة:
npm search @openclaw --jsonوالتقاط أسماء الحزم.- المقارنة مع أسماء
extensions/*/package.json. - انشر فقط التقاطع (الموجود بالفعل على npm).
قائمة إضافات npm الحالية (قم بالتحديث حسب الحاجة):
- @openclaw/bluebubbles
- @openclaw/diagnostics-otel
- @openclaw/discord
- @openclaw/feishu
- @openclaw/lobster
- @openclaw/matrix
- @openclaw/msteams
- @openclaw/nextcloud-talk
- @openclaw/nostr
- @openclaw/voice-call
- @openclaw/zalo
- @openclaw/zalouser
يجب أن تشير ملاحظات الإصدار أيضًا إلى الإضافات المضمنة الاختيارية الجديدة التي ليست مفعلة افتراضيًا (مثال: tlon).