Release-checklist (npm + macOS)
Gebruikpnpm (Node 22+) vanaf de root van de repo. Houd de working tree schoon vóór taggen/publiceren.
Operator-trigger
Wanneer de operator “release” zegt, voer onmiddellijk deze preflight uit (geen extra vragen tenzij geblokkeerd):- Lees dit document en
docs/platforms/mac/release.md. - Laad omgevingsvariabelen vanuit
~/.profileen bevestig datSPARKLE_PRIVATE_KEY_FILE+ App Store Connect-variabelen zijn ingesteld (SPARKLE_PRIVATE_KEY_FILE moet zich bevinden in~/.profile). - Gebruik Sparkle-sleutels uit
~/Library/CloudStorage/Dropbox/Backup/Sparkleindien nodig.
- Versie & metadata
- Verhoog de
package.json-versie (bijv.2026.1.29). - Voer
pnpm plugins:syncuit om extensiepakketversies + changelogs uit te lijnen. - Werk CLI/versiestrings bij:
src/cli/program.tsen de Baileys user agent insrc/provider-web.ts. - Bevestig pakketmetadata (naam, beschrijving, repository, trefwoorden, licentie) en dat de
bin-map verwijst naaropenclaw.mjsvooropenclaw. - Als afhankelijkheden zijn gewijzigd, voer
pnpm installuit zodatpnpm-lock.yamlactueel is.
- Build & artefacten
- Als A2UI-invoer is gewijzigd, voer
pnpm canvas:a2ui:bundleuit en commit eventuele bijgewerktesrc/canvas-host/a2ui/a2ui.bundle.js. -
pnpm run build(genereertdist/opnieuw). - Verifieer dat het npm-pakket
filesalle vereistedist/*-mappen bevat (met namedist/node-host/**endist/acp/**voor headless node + ACP CLI). - Bevestig dat
dist/build-info.jsonbestaat en de verwachtecommit-hash bevat (de CLI-banner gebruikt dit voor npm-installaties). - Optioneel:
npm pack --pack-destination /tmpna de build; inspecteer de tarball-inhoud en houd deze bij de hand voor de GitHub-release (commit deze niet).
- Changelog & documentatie
- Werk
CHANGELOG.mdbij met gebruikersgerichte hoogtepunten (maak het bestand aan als het ontbreekt); houd items strikt aflopend per versie. - Zorg dat README-voorbeelden/flags overeenkomen met het huidige CLI-gedrag (met name nieuwe opdrachten of opties).
- Validatie
-
pnpm build -
pnpm check -
pnpm test(ofpnpm test:coverageals je dekkingsuitvoer nodig hebt) -
pnpm release:check(verifieert npm pack-inhoud) -
OPENCLAW_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke(Docker-installatie smoke test, snelle route; vereist vóór release)- Als de direct vorige npm-release bekend defect is, stel
OPENCLAW_INSTALL_SMOKE_PREVIOUS=<last-good-version>ofOPENCLAW_INSTALL_SMOKE_SKIP_PREVIOUS=1in voor de preinstall-stap.
- Als de direct vorige npm-release bekend defect is, stel
- (Optioneel) Volledige installer smoke (voegt non-root + CLI-dekking toe):
pnpm test:install:smoke - (Optioneel) Installer E2E (Docker, voert
curl -fsSL https://openclaw.ai/install.sh | bashuit, onboardt en voert vervolgens echte tool-aanroepen uit):pnpm test:install:e2e:openai(vereistOPENAI_API_KEY)pnpm test:install:e2e:anthropic(vereistANTHROPIC_API_KEY)pnpm test:install:e2e(vereist beide sleutels; voert beide providers uit)
- (Optioneel) Spot-check de web gateway als je wijzigingen de verzend/ontvang-paden beïnvloeden.
- macOS-app (Sparkle)
- Build en onderteken de macOS-app en zip deze vervolgens voor distributie.
- Genereer de Sparkle-appcast (HTML-notities via
scripts/make_appcast.sh) en werkappcast.xmlbij. - Houd de app-zip (en optionele dSYM-zip) gereed om aan de GitHub-release te koppelen.
- Volg macOS release voor de exacte opdrachten en vereiste omgevingsvariabelen.
APP_BUILDmoet numeriek en monotoon zijn (geen-beta) zodat Sparkle versies correct vergelijkt.- Als je notariseert, gebruik het
openclaw-notary-sleutelhangprofiel dat is aangemaakt op basis van App Store Connect API-omgevingsvariabelen (zie macOS release).
- Publiceren (npm)
- Bevestig dat git status schoon is; commit en push indien nodig.
-
npm login(verifieer 2FA) indien nodig. -
npm publish --access public(gebruik--tag betavoor pre-releases). - Verifieer de registry:
npm view openclaw version,npm view openclaw dist-tagsennpx -y [email protected] --version(of--help).
Problemen oplossen (notities uit de 2.0.0-beta2-release)
- npm pack/publish hangt of produceert een enorme tarball: de macOS-appbundle in
dist/OpenClaw.app(en release-zips) worden in het pakket meegenomen. Los dit op door publicatie-inhoud te whitelisten viapackage.jsonfiles(inclusief dist-submappen, docs, skills; exclusief appbundles). Bevestig metnpm pack --dry-rundatdist/OpenClaw.appniet wordt vermeld. - npm auth web-loop voor dist-tags: gebruik legacy-auth om een OTP-prompt te krijgen:
NPM_CONFIG_AUTH_TYPE=legacy npm dist-tag add [email protected] latest
npx-verificatie faalt metECOMPROMISED: Lock compromised: probeer opnieuw met een frisse cache:NPM_CONFIG_CACHE=/tmp/npm-cache-$(date +%s) npx -y [email protected] --version
- Tag moet opnieuw worden gepoint na een late fix: force-update en push de tag en zorg er daarna voor dat de GitHub-release-assets nog steeds overeenkomen:
git tag -f vX.Y.Z && git push -f origin vX.Y.Z
- GitHub-release + appcast
- Tag en push:
git tag vX.Y.Z && git push origin vX.Y.Z(ofgit push --tags). - Maak/ververs de GitHub-release voor
vX.Y.Zmet titelopenclaw X.Y.Z(niet alleen de tag); de body moet de volledige changelogsectie voor die versie bevatten (Highlights + Changes + Fixes), inline (geen kale links), en mag de titel niet herhalen in de body. - Voeg artefacten toe:
npm pack-tarball (optioneel),OpenClaw-X.Y.Z.zipenOpenClaw-X.Y.Z.dSYM.zip(indien gegenereerd). - Commit de bijgewerkte
appcast.xmlen push deze (Sparkle leest feeds vanaf main). - Voer vanuit een schone tijdelijke map (geen
package.json)npx -y [email protected] send --helpuit om te bevestigen dat installatie/CLI-entrypoints werken. - Kondig de release aan/deel de releasenotes.
Plugin-publicatiescope (npm)
We publiceren alleen bestaande npm-plugins onder de@openclaw/*-scope. Gebundelde
plugins die niet op npm staan blijven alleen in de schijfboom (worden nog steeds meegeleverd in
extensions/**).
Proces om de lijst af te leiden:
npm search @openclaw --jsonen verzamel de pakketnamen.- Vergelijk met
extensions/*/package.json-namen. - Publiceer alleen de doorsnede (al op 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).