रिलीज़ चेकलिस्ट (npm + macOS)
Usepnpm (Node 22+) from the repo root. टैग/पब्लिश करने से पहले वर्किंग ट्री को साफ रखें।
ऑपरेटर ट्रिगर
जब ऑपरेटर “release” कहे, तो तुरंत यह प्रीफ़्लाइट करें (जब तक अवरुद्ध न हों, अतिरिक्त प्रश्न न पूछें):- इस दस्तावेज़ और
docs/platforms/mac/release.mdको पढ़ें। ~/.profileसे env लोड करें और पुष्टि करें किSPARKLE_PRIVATE_KEY_FILE+ App Store Connect वेरिएबल्स सेट हैं (SPARKLE_PRIVATE_KEY_FILE को~/.profileमें होना चाहिए)।- आवश्यकता होने पर
~/Library/CloudStorage/Dropbox/Backup/Sparkleसे Sparkle कुंजियों का उपयोग करें।
- संस्करण एवं मेटाडेटा
-
package.jsonसंस्करण बढ़ाएँ (उदा.,2026.1.29)। - एक्सटेंशन पैकेज संस्करणों + चेंजलॉग्स को संरेखित करने के लिए
pnpm plugins:syncचलाएँ। - CLI/संस्करण स्ट्रिंग्स अपडेट करें:
src/cli/program.tsऔरsrc/provider-web.tsमें Baileys यूज़र एजेंट। - पैकेज मेटाडेटा (name, description, repository, keywords, license) की पुष्टि करें और यह भी कि
binमैपopenclawके लिएopenclaw.mjsकी ओर इशारा करता है। - यदि निर्भरताएँ बदली हैं, तो
pnpm installचलाएँ ताकिpnpm-lock.yamlअद्यतन रहे।
- बिल्ड एवं आर्टिफ़ैक्ट्स
- यदि A2UI इनपुट बदले हैं, तो
pnpm canvas:a2ui:bundleचलाएँ और किसी भी अद्यतनsrc/canvas-host/a2ui/a2ui.bundle.jsको कमिट करें। -
pnpm run build(यहdist/को पुनः उत्पन्न करता है)। - सत्यापित करें कि npm पैकेज
filesमें सभी आवश्यकdist/*फ़ोल्डर शामिल हैं (विशेष रूप से हेडलेस नोड + ACP CLI के लिएdist/node-host/**औरdist/acp/**)। - पुष्टि करें कि
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 pack सामग्री का सत्यापन) -
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(दोनों कुंजियाँ आवश्यक; दोनों प्रदाता चलाता है)
- (वैकल्पिक) यदि आपके परिवर्तन सेंड/रिसीव पाथ को प्रभावित करते हैं, तो वेब Gateway का स्पॉट-चेक करें।
- macOS ऐप (Sparkle)
- macOS ऐप को बिल्ड + साइन करें, फिर वितरण के लिए ज़िप करें।
- Sparkle ऐपकास्ट उत्पन्न करें (HTML नोट्स
scripts/make_appcast.shके माध्यम से) औरappcast.xmlअपडेट करें। - GitHub रिलीज़ से संलग्न करने के लिए ऐप ज़िप (और वैकल्पिक dSYM ज़िप) तैयार रखें।
- सटीक कमांड्स और आवश्यक env वेरिएबल्स के लिए macOS release का पालन करें।
APP_BUILDसंख्यात्मक + मोनोटोनिक होना चाहिए (कोई-betaनहीं) ताकि Sparkle संस्करणों की सही तुलना कर सके।- यदि नोटराइज़ कर रहे हैं, तो App Store Connect API env वेरिएबल्स से बनाए गए
openclaw-notaryकीचेन प्रोफ़ाइल का उपयोग करें (देखें macOS release)।
- प्रकाशित करें (npm)
- पुष्टि करें कि git स्थिति साफ़ है; आवश्यकता अनुसार कमिट और पुश करें।
- आवश्यकता होने पर
npm login(2FA सत्यापित करें)। -
npm publish --access public(प्री-रिलीज़ के लिए--tag betaका उपयोग करें)। - रजिस्ट्री सत्यापित करें:
npm view openclaw version,npm view openclaw dist-tags, औरnpx -y [email protected] --version(या--help)।
समस्या-निवारण (2.0.0-beta2 रिलीज़ से नोट्स)
- npm pack/publish अटक जाता है या बहुत बड़ा टारबॉल बनाता है:
dist/OpenClaw.appमें मौजूद macOS ऐप बंडल (और रिलीज़ ज़िप्स) पैकेज में शामिल हो जाते हैं।package.jsonकेfilesके ज़रिये पब्लिश सामग्री को व्हाइटलिस्ट करके ठीक करें (dist सबडायरेक्टरीज़, docs, skills शामिल करें; ऐप बंडल्स को बाहर रखें)।npm pack --dry-runसे पुष्टि करें किdist/OpenClaw.appसूचीबद्ध नहीं है। - dist-tags के लिए npm auth web लूप: OTP प्रॉम्प्ट पाने के लिए लेगेसी auth का उपयोग करें:
NPM_CONFIG_AUTH_TYPE=legacy npm dist-tag add [email protected] latest
npxसत्यापनECOMPROMISED: Lock compromisedके साथ विफल: ताज़ा कैश के साथ पुनः प्रयास करें:NPM_CONFIG_CACHE=/tmp/npm-cache-$(date +%s) npx -y [email protected] --version
- देर से किए गए फ़िक्स के बाद टैग को रीपॉइंट करना आवश्यक: टैग को फ़ोर्स-अपडेट करें और पुश करें, फिर सुनिश्चित करें कि GitHub रिलीज़ एसेट्स अभी भी मेल खाते हों:
git tag -f vX.Y.Z && git push -f origin vX.Y.Z
- GitHub रिलीज़ + ऐपकास्ट
- टैग करें और पुश करें:
git tag vX.Y.Z && git push origin vX.Y.Z(याgit push --tags)। -
vX.Y.Zके लिए GitHub रिलीज़ बनाएँ/रीफ़्रेश करें, शीर्षकopenclaw X.Y.Zके साथ (सिर्फ़ टैग नहीं); बॉडी में उस संस्करण का पूरा चेंजलॉग सेक्शन (Highlights + Changes + Fixes) इनलाइन शामिल होना चाहिए (कोई खाली लिंक नहीं), और बॉडी के अंदर शीर्षक दोहराया नहीं जाना चाहिए। - आर्टिफ़ैक्ट्स संलग्न करें:
npm packटारबॉल (वैकल्पिक),OpenClaw-X.Y.Z.zip, औरOpenClaw-X.Y.Z.dSYM.zip(यदि उत्पन्न हुआ हो)। - अद्यतन
appcast.xmlको कमिट करें और पुश करें (Sparkle main से फ़ीड करता है)। - एक साफ़ अस्थायी डायरेक्टरी से (कोई
package.jsonनहीं), इंस्टॉल/CLI एंट्रीपॉइंट्स के काम करने की पुष्टि के लिएnpx -y [email protected] send --helpचलाएँ। - रिलीज़ नोट्स की घोषणा/साझा करें।
प्लगइन पब्लिश स्कोप (npm)
हम केवल मौजूदा npm प्लगइन्स को@openclaw/* स्कोप के तहत पब्लिश करते हैं। बंडल्ड
प्लगइन्स जो npm पर नहीं हैं, वे केवल डिस्क-ट्री में रहते हैं (फिर भी extensions/** में शिप किए जाते हैं)।
सूची निकालने की प्रक्रिया:
npm search @openclaw --jsonचलाएँ और पैकेज नाम कैप्चर करें।extensions/*/package.jsonनामों से तुलना करें।- केवल इंटरसेक्शन (जो पहले से 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)।