Releasechecklista (npm + macOS)
Användpnpm (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.
- Om den omedelbart föregående npm-releasen är känd trasig, sätt
- (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 [email protected] --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 [email protected] latest
npx-verifiering misslyckas medECOMPROMISED: Lock compromised: försök igen med en ny cache:NPM_CONFIG_CACHE=/tmp/npm-cache-$(date +%s) npx -y [email protected] --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 [email protected] 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).
- @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).