Checklist ng Release (npm + macOS)¶
Use pnpm (Node 22+) from the repo root. Keep the working tree clean before tagging/publishing.
Operator trigger¶
Kapag sinabi ng operator na “release”, agad gawin ang preflight na ito (walang dagdag na tanong maliban kung may harang):
- Basahin ang doc na ito at ang
docs/platforms/mac/release.md. - I-load ang env mula sa
~/.profileat kumpirmahing naka-set angSPARKLE_PRIVATE_KEY_FILE+ App Store Connect vars (ang SPARKLE_PRIVATE_KEY_FILE ay dapat nasa~/.profile). - Gamitin ang Sparkle keys mula sa
~/Library/CloudStorage/Dropbox/Backup/Sparklekung kailangan.
- Version & metadata
- [ ] I-bump ang version ng
package.json(hal.,2026.1.29). - [ ] Patakbuhin ang
pnpm plugins:syncpara i-align ang extension package versions + mga changelog. - [ ] I-update ang CLI/version strings:
src/cli/program.tsat ang Baileys user agent sasrc/provider-web.ts. - [ ] Kumpirmahin ang package metadata (name, description, repository, keywords, license) at na ang
binmap ay tumuturo saopenclaw.mjspara saopenclaw. - [ ] Kung may nagbago sa dependencies, patakbuhin ang
pnpm installpara updated angpnpm-lock.yaml.
- Build & artifacts
- [ ] Kung may nagbago sa A2UI inputs, patakbuhin ang
pnpm canvas:a2ui:bundleat i-commit ang anumang na-update nasrc/canvas-host/a2ui/a2ui.bundle.js. - [ ]
pnpm run build(nire-regenerate angdist/). - [ ] I-verify na ang npm package
filesay may kasamang lahat ng kinakailangangdist/*folders (lalo na angdist/node-host/**atdist/acp/**para sa headless node + ACP CLI). - [ ] Kumpirmahin na umiiral ang
dist/build-info.jsonat kasama nito ang inaasahangcommithash (ginagamit ito ng CLI banner para sa npm installs). - [ ] Opsyonal:
npm pack --pack-destination /tmppagkatapos ng build; suriin ang laman ng tarball at itabi ito para sa GitHub release (huwag i-commit).
- Changelog & docs
- [ ] I-update ang
CHANGELOG.mdgamit ang mga highlight na pang-user (likhain ang file kung wala); panatilihing mahigpit na pababa ayon sa version ang mga entry. - [ ] Tiyaking tugma ang mga README example/flag sa kasalukuyang behavior ng CLI (lalo na ang mga bagong command o opsyon).
- Validation
- [ ]
pnpm build - [ ]
pnpm check - [ ]
pnpm test(opnpm test:coveragekung kailangan ng coverage output) - [ ]
pnpm release:check(bine-verify ang laman ng npm pack) - [ ]
OPENCLAW_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke(Docker install smoke test, mabilis na ruta; kailangan bago ang release) - Kung alam na sira ang agarang naunang npm release, i-set ang
OPENCLAW_INSTALL_SMOKE_PREVIOUS=<last-good-version>oOPENCLAW_INSTALL_SMOKE_SKIP_PREVIOUS=1para sa preinstall step. - [ ] (Opsyonal) Full installer smoke (nagdadagdag ng non-root + CLI coverage):
pnpm test:install:smoke - [ ] (Opsyonal) Installer E2E (Docker, pinapatakbo ang
curl -fsSL https://openclaw.ai/install.sh | bash, nag-o-onboard, tapos tumatakbo ng totoong tool calls): pnpm test:install:e2e:openai(kailangan angOPENAI_API_KEY)pnpm test:install:e2e:anthropic(kailangan angANTHROPIC_API_KEY)pnpm test:install:e2e(kailangan ang parehong key; pinapatakbo ang parehong provider)- [ ] (Opsyonal) Spot-check ang web gateway kung naaapektuhan ng mga pagbabago ang send/receive paths.
- macOS app (Sparkle)
- [ ] I-build + i-sign ang macOS app, pagkatapos ay i-zip ito para sa distribusyon.
- [ ] I-generate ang Sparkle appcast (HTML notes sa pamamagitan ng
scripts/make_appcast.sh) at i-update angappcast.xml. - [ ] Ihanda ang app zip (at opsyonal na dSYM zip) para i-attach sa GitHub release.
- [ ] Sundin ang macOS release para sa eksaktong mga command at kinakailangang env vars.
- Dapat numeric + monotonic ang
APP_BUILD(walang-beta) para maikumpara nang tama ng Sparkle ang mga version. - Kung magno-notarize, gamitin ang
openclaw-notarykeychain profile na ginawa mula sa App Store Connect API env vars (tingnan ang macOS release).
- Publish (npm)
- [ ] Kumpirmahing malinis ang git status; mag-commit at mag-push kung kailangan.
- [ ]
npm login(i-verify ang 2FA) kung kailangan. - [ ]
npm publish --access public(gamitin ang--tag betapara sa pre-releases). - [ ] I-verify ang registry:
npm view openclaw version,npm view openclaw dist-tags, atnpx -y openclaw@X.Y.Z --version(o--help).
Pag-troubleshoot (mga tala mula sa 2.0.0-beta2 release)¶
- npm pack/publish hangs or produces huge tarball: the macOS app bundle in
dist/OpenClaw.app(and release zips) get swept into the package. Fix by whitelisting publish contents viapackage.jsonfiles(include dist subdirs, docs, skills; exclude app bundles). Confirm withnpm pack --dry-runthatdist/OpenClaw.appis not listed. - npm auth web loop para sa dist-tags: gamitin ang legacy auth para makakuha ng OTP prompt:
NPM_CONFIG_AUTH_TYPE=legacy npm dist-tag add openclaw@X.Y.Z latest- Bumabagsak ang verification ng
npxna mayECOMPROMISED: Lock compromised: ulitin gamit ang sariwang cache: NPM_CONFIG_CACHE=/tmp/npm-cache-$(date +%s) npx -y openclaw@X.Y.Z --version- Kailangang i-repoint ang tag matapos ang huling ayos: i-force-update at i-push ang tag, pagkatapos tiyaking tugma pa rin ang mga asset ng GitHub release:
git tag -f vX.Y.Z && git push -f origin vX.Y.Z
- GitHub release + appcast
- [ ] I-tag at i-push:
git tag vX.Y.Z && git push origin vX.Y.Z(ogit push --tags). - [ ] Gumawa/i-refresh ang GitHub release para sa
vX.Y.Zna may pamagat naopenclaw X.Y.Z(hindi lang ang tag); dapat isama ng body ang buong seksyon ng changelog para sa bersyong iyon (Highlights + Changes + Fixes), inline (walang bare links), at huwag ulitin ang pamagat sa loob ng body. - [ ] I-attach ang mga artifact:
npm packtarball (opsyonal),OpenClaw-X.Y.Z.zip, atOpenClaw-X.Y.Z.dSYM.zip(kung na-generate). - [ ] I-commit ang na-update na
appcast.xmlat i-push ito (kumukuha ang Sparkle mula sa main). - [ ] Mula sa malinis na temp directory (walang
package.json), patakbuhin angnpx -y openclaw@X.Y.Z send --helppara kumpirmahing gumagana ang install/CLI entrypoints. - [ ] I-announce/ibahagi ang release notes.
Saklaw ng pag-publish ng plugin (npm)¶
We only publish existing npm plugins under the @openclaw/* scope. Bundled
plugins that are not on npm stay disk-tree only (still shipped in
extensions/**).
Proseso para buuin ang listahan:
npm search @openclaw --jsonat kunin ang mga pangalan ng package.- Ihambing sa mga pangalang
extensions/*/package.json. - I-publish lamang ang intersection (mga nasa npm na).
Kasalukuyang listahan ng npm plugin (i-update kung kailangan):
- @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
Dapat ding banggitin ng release notes ang mga bagong opsyonal na bundled plugin na hindi naka-on bilang default (halimbawa: tlon).