Reliz uchun tekshiruv roʻyxati (npm + macOS)
Usepnpm (Node 22+) from the repo root. Keep the working tree clean before tagging/publishing.
Operatorni ishga tushirish
Operator “release” deganda, darhol quyidagi preflight bosqichlarini bajaring (toʻsiq boʻlmasa, ortiqcha savollarsiz):- Ushbu hujjatni va
docs/platforms/mac/release.mdni oʻqing. ~/.profiledan env o‘zgaruvchilarni yuklang vaSPARKLE_PRIVATE_KEY_FILE+ App Store Connect o‘zgaruvchilari o‘rnatilganini tasdiqlang (SPARKLE_PRIVATE_KEY_FILE~/.profileichida bo‘lishi kerak).- Zarur bo‘lsa, Sparkle kalitlarini
~/Library/CloudStorage/Dropbox/Backup/Sparkledan oling.
- Versiya va metamaʼlumotlar
-
package.jsonversiyasini oshiring (masalan,2026.1.29). - Extension paket versiyalari + changeloglarni moslashtirish uchun
pnpm plugins:syncni ishga tushiring. - CLI/versiya satrlarini yangilang:
src/cli/program.tsva Baileys user agent nisrc/provider-web.tsichida. - Paket metamaʼlumotlarini (name, description, repository, keywords, license) tasdiqlang va
binxaritasiopenclawuchunopenclaw.mjsga ishora qilayotganini tekshiring. - Agar dependency’lar oʻzgargan boʻlsa,
pnpm-lock.yamlyangiligi uchunpnpm installni ishga tushiring.
- Build va artefaktlar
- Agar A2UI kirishlari oʻzgargan boʻlsa,
pnpm canvas:a2ui:bundleni ishga tushiring va yangilangansrc/canvas-host/a2ui/a2ui.bundle.jsfaylini commit qiling. -
pnpm run build(dist/ni qayta generatsiya qiladi). - npm paketidagi
filesbarcha zarurdist/*papkalarni (ayniqsa headless node + ACP CLI uchundist/node-host/**vadist/acp/**) oʻz ichiga olganini tekshiring. -
dist/build-info.jsonmavjudligini va unda kutilgancommitxeshi borligini tasdiqlang (npm o‘rnatishlarida CLI banner shundan foydalanadi). - Ixtiyoriy: build’dan so‘ng
npm pack --pack-destination /tmp; tarball tarkibini tekshiring va uni GitHub relizi uchun saqlab qo‘ying (commit qilmang).
- Changelog va hujjatlar
-
CHANGELOG.mdni foydalanuvchiga ko‘rinadigan yangiliklar bilan yangilang (agar yo‘q bo‘lsa, fayl yarating); yozuvlar versiya bo‘yicha qatʼiy kamayish tartibida bo‘lsin. - README misollari/flag’lari joriy CLI xatti-harakatiga (ayniqsa yangi buyruqlar yoki opsiyalar) mos ekanini tekshiring.
- Validatsiya
-
pnpm build -
pnpm check -
pnpm test(yoki coverage kerak bo‘lsapnpm test:coverage) -
pnpm release:check(npm pack tarkibini tekshiradi) -
OPENCLAW_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke(Docker install smoke test, tezkor yo‘l; relizdan oldin majburiy)- Agar oldingi npm relizi buzilganligi maʼlum bo‘lsa, preinstall bosqichi uchun
OPENCLAW_INSTALL_SMOKE_PREVIOUS=<last-good-version>yokiOPENCLAW_INSTALL_SMOKE_SKIP_PREVIOUS=1ni o‘rnating.
- Agar oldingi npm relizi buzilganligi maʼlum bo‘lsa, preinstall bosqichi uchun
- (Ixtiyoriy) To‘liq installer smoke (non-root + CLI coverage qo‘shadi):
pnpm test:install:smoke - (Ixtiyoriy) Installer E2E (Docker,
curl -fsSL https://openclaw.ai/install.sh | bashni ishga tushiradi, onboarding qiladi, so‘ng haqiqiy tool call’larni bajaradi):pnpm test:install:e2e:openai(OPENAI_API_KEYtalab qilinadi)pnpm test:install:e2e:anthropic(ANTHROPIC_API_KEYtalab qilinadi)pnpm test:install:e2e(ikkala kalit ham talab qilinadi; ikkala provider’ni ishga tushiradi)
- (Ixtiyoriy) O‘zgartirishlaringiz yuborish/qabul qilish yo‘llariga taʼsir qilgan bo‘lsa, web gateway’ni tezkor tekshirib chiqing.
- macOS ilovasi (Sparkle)
- macOS ilovasini build qiling + imzolang, so‘ng tarqatish uchun zip qiling.
- Sparkle appcast’ni (HTML izohlar
scripts/make_appcast.shorqali) generatsiya qiling vaappcast.xmlni yangilang. - Ilova zip faylini (va ixtiyoriy dSYM zip) GitHub reliziga biriktirish uchun tayyor saqlang.
- Aniq buyruqlar va zarur env o‘zgaruvchilar uchun macOS release ga amal qiling.
APP_BUILDraqamli va monoton bo‘lishi kerak (-betasiz), shunda Sparkle versiyalarni to‘g‘ri solishtiradi.- Agar notarization qilinsa, App Store Connect API env o‘zgaruvchilaridan yaratilgan
openclaw-notarykeychain profilidan foydalaning (qarang: macOS release).
- Nashr qilish (npm)
- git status toza ekanini tasdiqlang; kerak bo‘lsa commit va push qiling.
- Zarur bo‘lsa,
npm login(2FA ni tekshiring). -
npm publish --access public(pre-relizlar uchun--tag betadan foydalaning). - Registry’ni tekshiring:
npm view openclaw version,npm view openclaw dist-tags, vanpx -y [email protected] --version(yoki--help).
Nosozliklarni bartaraf etish (2.0.0-beta2 relizidan eslatmalar)
- npm pack/publish osilib qoladi yoki juda katta tarball hosil qiladi:
dist/OpenClaw.appichidagi macOS ilova bundle’i (va reliz ziplar) paketga qo‘shilib ketadi.package.jsondagifilesorqali nashr tarkibini whitelist qilish bilan tuzating (dist quyi kataloglari, docs, skills ni kiriting; app bundle’larni chiqarib tashlang).npm pack --dry-runbilandist/OpenClaw.appro‘yxatda yo‘qligini tasdiqlang. - dist-tags uchun npm auth web loop: OTP so‘rovini olish uchun legacy auth’dan foydalaning:
NPM_CONFIG_AUTH_TYPE=legacy npm dist-tag add [email protected] latest
npxtekshiruviECOMPROMISED: Lock compromisedbilan muvaffaqiyatsiz tugaydi: yangi cache bilan qayta urinib ko‘ring:NPM_CONFIG_CACHE=/tmp/npm-cache-$(date +%s) npx -y [email protected] --version
- Kechikkan tuzatishdan keyin tag’ni qayta yo‘naltirish kerak: tag’ni majburan yangilang va push qiling, so‘ng GitHub relizi artefaktlari hanuz mosligini tekshiring:
git tag -f vX.Y.Z && git push -f origin vX.Y.Z
- GitHub relizi + appcast
- Teg qo‘ying va push qiling:
git tag vX.Y.Z && git push origin vX.Y.Z(yokigit push --tags). -
vX.Y.Zuchun GitHub relizini yarating/yangilang, sarlavhaopenclaw X.Y.Zbo‘lsin (faqat tag emas); body qismida shu versiya uchun to‘liq changelog bo‘limi (Highlights + Changes + Fixes) inline ko‘rinishda bo‘lsin (yalang‘och havolalarsiz) va body ichida sarlavha takrorlanmasin. - Artefaktlarni biriktiring:
npm packtarball (ixtiyoriy),OpenClaw-X.Y.Z.zip, vaOpenClaw-X.Y.Z.dSYM.zip(agar generatsiya qilingan bo‘lsa). - Yangilangan
appcast.xmlni commit qiling va push qiling (Sparkle main’dan feed oladi). - Toza vaqtinchalik papkadan (
package.jsonsiz),npx -y [email protected] send --helpni ishga tushirib, install/CLI entrypoint’lar ishlashini tasdiqlang. - Reliz eslatmalarini eʼlon qiling/ulashing.
Plugin nashr qilish qamrovi (npm)
Biz faqat mavjud npm plaginlarini@openclaw/* doirasi ostida nashr qilamiz. npm’da bo‘lmagan, lekin bundle qilingan plaginlar faqat disk-daraxt holatida qoladi (baribir extensions/** ichida yetkaziladi).
Ro‘yxatni aniqlash jarayoni:
npm search @openclaw --jsonni ishga tushiring va paket nomlarini oling.extensions/*/package.jsonichidagi nomlar bilan solishtiring.- Faqat kesishma (npm’da allaqachon mavjud bo‘lganlar) ni nashr qiling.
- @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).