Releasechecklista (npm + macOS)¶
Använd pnpm (Node 22+) från reporoten. Håll arbetsträdet rent innan taggning/publicering.
Operatörstrigger¶
När operatören säger ”release”, gör omedelbart denna preflight (inga extra frågor om inget blockerar):
- Läs detta dokument och
docs/platforms/mac/release.md. - Ladda env från
~/.profileoch bekräfta attSPARKLE_PRIVATE_KEY_FILE+ App Store Connect-variabler är satta (SPARKLE_PRIVATE_KEY_FILE ska ligga i~/.profile). - Använd Sparkle-nycklar från
~/Library/CloudStorage/Dropbox/Backup/Sparklevid behov.
- Version & metadata
- [ ] Bump
package.jsonversion (t.ex.,2026.1.29). - [ ] Kör
pnpm plugins:syncför att synka versioner + ändringsloggar för tilläggspaket. - [ ] Uppdatera CLI-/versionssträngar:
src/cli/program.tsoch Baileys user agent isrc/provider-web.ts. - [ ] Bekräfta paketmetadata (namn, beskrivning, repository, nyckelord, licens) och att
bin-mappningen pekar påopenclaw.mjsföropenclaw. - [ ] Om beroenden ändrats, kör
pnpm installså attpnpm-lock.yamlär uppdaterad.
- Build & artefakter
- [ ] Om A2UI-indata ändrats, kör
pnpm canvas:a2ui:bundleoch committa eventuella uppdateradesrc/canvas-host/a2ui/a2ui.bundle.js. - [ ]
pnpm run build(regenererardist/). - [ ] Verifiera att npm-paketet
filesinkluderar alla nödvändigadist/*-mappar (särskiltdist/node-host/**ochdist/acp/**för headless node + ACP CLI). - [ ] Bekräfta att
dist/build-info.jsonfinns och innehåller förväntadcommit-hash (CLI-bannern använder detta för npm-installationer). - [ ] Valfritt:
npm pack --pack-destination /tmpefter bygget; inspektera tarball-innehållet och behåll det redo för GitHub-releasen (committa det inte).
- Ändringslogg & dokumentation
- [ ] Uppdatera
CHANGELOG.mdmed användarsynliga höjdpunkter (skapa filen om den saknas); håll poster strikt fallande efter version. - [ ] Säkerställ att README-exempel/flaggor matchar aktuell CLI-funktionalitet (särskilt nya kommandon eller alternativ).
- Validering
- [ ]
pnpm build - [ ]
pnpm check - [ ]
pnpm test(ellerpnpm test:coverageom du behöver täckningsutdata) - [ ]
pnpm release:check(verifierar npm pack-innehåll) - [ ]
OPENCLAW_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke(Docker-installations-smoke test, snabb väg; krävs före release) - Om den omedelbart föregående npm-releasen är känd trasig, sätt
OPENCLAW_INSTALL_SMOKE_PREVIOUS=<last-good-version>ellerOPENCLAW_INSTALL_SMOKE_SKIP_PREVIOUS=1för preinstall-steget. - [ ] (Valfritt) Full installer-smoke (lägger till non-root + CLI-täckning):
pnpm test:install:smoke - [ ] (Valfritt) Installer E2E (Docker, kör
curl -fsSL https://openclaw.ai/install.sh | bash, introducerar, kör sedan riktiga verktygsanrop): pnpm test:install:e2e:openai(kräverOPENAI_API_KEY)pnpm test:install:e2e:anthropic(kräverANTHROPIC_API_KEY)pnpm test:install:e2e(kräver båda nycklarna; kör båda leverantörerna)- [ ] (Valfritt) Snabbkontrollera web gateway om dina ändringar påverkar sänd-/mottagningsvägar.
- macOS-app (Sparkle)
- [ ] Bygg + signera macOS-appen och zip:a den för distribution.
- [ ] Generera Sparkle-appcast (HTML-noter via
scripts/make_appcast.sh) och uppdateraappcast.xml. - [ ] Håll app-zippen (och valfri dSYM-zip) redo att bifogas GitHub-releasen.
- [ ] Följ macOS release för exakta kommandon och nödvändiga env-variabler.
APP_BUILDmåste vara numerisk + monoton (inga-beta) så att Sparkle jämför versioner korrekt.- Vid notarization, använd
openclaw-notary-nyckelringsprofilen som skapats från App Store Connect API-env-variabler (se macOS release).
- Publicera (npm)
- [ ] Bekräfta att git-status är ren; committa och pusha vid behov.
- [ ]
npm login(verifiera 2FA) vid behov. - [ ]
npm publish --access public(använd--tag betaför förhandsreleaser). - [ ] Verifiera registret:
npm view openclaw version,npm view openclaw dist-tagsochnpx -y openclaw@X.Y.Z --version(eller--help).
Felsökning (anteckningar från 2.0.0-beta2-releasen)¶
- npm pack/publicera hänger eller producerar enorma tarball: macOS app bunt i
dist/OpenClaw.app(och släpp zips) svepas in i paketet. Fixa genom att vitlista publicera innehåll viapackage.jsonfiles(inkludera dist underjord, dokument, färdigheter; exkludera apppaket). Bekräfta mednpm pack --dry-runattdist/OpenClaw.appinte är listad. - npm auth web-loop för dist-tags: använd legacy-auth för att få OTP-prompt:
NPM_CONFIG_AUTH_TYPE=legacy npm dist-tag add openclaw@X.Y.Z latestnpx-verifiering misslyckas medECOMPROMISED: Lock compromised: försök igen med en ny cache:NPM_CONFIG_CACHE=/tmp/npm-cache-$(date +%s) npx -y openclaw@X.Y.Z --version- Tagg behöver pekas om efter en sen fix: tvångsuppdatera och pusha taggen, säkerställ sedan att GitHub-release-artefakter fortfarande matchar:
git tag -f vX.Y.Z && git push -f origin vX.Y.Z
- GitHub-release + appcast
- [ ] Tagga och pusha:
git tag vX.Y.Z && git push origin vX.Y.Z(ellergit push --tags). - [ ] Skapa/uppdatera GitHub-releasen för
vX.Y.Zmed titelopenclaw X.Y.Z(inte bara taggen); brödtexten ska inkludera den fullständiga ändringsloggssektionen för versionen (Höjdpunkter + Ändringar + Fixar), inline (inga bara länkar), och får inte upprepa titeln i brödtexten. - [ ] Bifoga artefakter:
npm pack-tarball (valfritt),OpenClaw-X.Y.Z.zipochOpenClaw-X.Y.Z.dSYM.zip(om genererad). - [ ] Committa den uppdaterade
appcast.xmloch pusha den (Sparkle hämtar från main). - [ ] Från en ren tempkatalog (inga
package.json), körnpx -y openclaw@X.Y.Z send --helpför att bekräfta att installation/CLI-entrypoints fungerar. - [ ] Annonsera/dela release notes.
Plugin-publiceringsomfång (npm)¶
Vi publicerar endast befintliga npm plugins under @openclaw/* -omfattningen. Paketerade
plugins som inte är på npm stannar diskträd endast (levereras fortfarande i
extensions/**).
Process för att ta fram listan:
npm search @openclaw --jsonoch fånga paketnamnen.- Jämför med
extensions/*/package.json-namn. - Publicera endast snittmängden (redan på npm).
Aktuell lista över npm-plugins (uppdatera vid behov):
- @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
Release notes måste också lyfta nya valfria bundlade plugins som inte är påslagna
som standard (exempel: tlon).