Proceso de Release
Lista de verificación paso a paso para release de npm + app macOS
Usa pnpm (Node 22+) desde la raíz del repo. Mantén el working tree limpio antes de taggear/publicar.
Disparador del operador
Cuando el operador dice "release", inmediatamente haz este preflight (sin preguntas extra a menos que esté bloqueado):
- Lee este doc y docs/platforms/mac/release.md.
- Carga env desde ~/.profile y confirma que SPARKLE_PRIVATE_KEY_FILE + vars de App Store Connect están establecidos (SPARKLE_PRIVATE_KEY_FILE debería vivir en ~/.profile).
- Usa claves Sparkle de ~/Library/CloudStorage/Dropbox/Backup/Sparkle si es necesario.
1. Versión y metadatos
- [ ] Incrementa versión en package.json (ej., 2026.1.29).
- [ ] Ejecuta pnpm plugins:sync para alinear versiones de paquetes de extensión + changelogs.
- [ ] Actualiza strings de CLI/version: src/cli/program.ts y el user agent de Baileys en src/provider-web.ts.
- [ ] Confirma metadatos del paquete (name, description, repository, keywords, license) y que el mapa bin apunta a openclaw.mjs para openclaw.
- [ ] Si cambiaron dependencias, ejecuta pnpm install para que pnpm-lock.yaml esté actualizado.
2. Build y artefactos
- [ ] Si cambiaron inputs de A2UI, ejecuta pnpm canvas:a2ui:bundle y commitea cualquier src/canvas-host/a2ui/a2ui.bundle.js actualizado.
- [ ] pnpm run build (regenera dist/).
- [ ] Verifica que files del paquete npm incluye todas las carpetas dist/* requeridas (notablemente dist/node-host/** y dist/acp/** para node headless + CLI ACP).
- [ ] Confirma que dist/build-info.json existe e incluye el hash de commit esperado (el banner del CLI usa esto para instalaciones npm).
- [ ] Opcional: npm pack --pack-destination /tmp después del build; inspecciona el contenido del tarball y tenlo a mano para el release de GitHub (no lo commitees).
3. Changelog y docs
- [ ] Actualiza CHANGELOG.md con highlights visibles para el usuario (crea el archivo si falta); mantén las entradas estrictamente descendientes por versión.
- [ ] Asegúrate que ejemplos/flags del README coinciden con comportamiento actual del CLI (notablemente nuevos comandos u opciones).
4. Validación
- [ ] pnpm build
- [ ] pnpm check
- [ ] pnpm test (o pnpm test:coverage si necesitas salida de cobertura)
- [ ] pnpm release:check (verifica contenido de npm pack)
ReferenceOthersRELEASINGPage.steps.01.p25
ReferenceOthersRELEASINGPage.steps.01.p26
ReferenceOthersRELEASINGPage.steps.01.p27
ReferenceOthersRELEASINGPage.steps.01.p28
ReferenceOthersRELEASINGPage.steps.01.p29
ReferenceOthersRELEASINGPage.steps.01.p30
ReferenceOthersRELEASINGPage.steps.01.p31
ReferenceOthersRELEASINGPage.steps.01.p32
ReferenceOthersRELEASINGPage.steps.01.p33
ReferenceOthersRELEASINGPage.steps.01.p34
ReferenceOthersRELEASINGPage.steps.01.p35
ReferenceOthersRELEASINGPage.steps.01.p36
ReferenceOthersRELEASINGPage.steps.01.p37
ReferenceOthersRELEASINGPage.steps.01.p38
ReferenceOthersRELEASINGPage.steps.01.p39
ReferenceOthersRELEASINGPage.steps.01.p40
ReferenceOthersRELEASINGPage.steps.01.p41
ReferenceOthersRELEASINGPage.steps.01.p42
ReferenceOthersRELEASINGPage.steps.01.p43
ReferenceOthersRELEASINGPage.steps.01.p44
ReferenceOthersRELEASINGPage.steps.01.p45
ReferenceOthersRELEASINGPage.steps.01.p46
ReferenceOthersRELEASINGPage.steps.01.p47
ReferenceOthersRELEASINGPage.steps.01.p48
ReferenceOthersRELEASINGPage.steps.01.p49
ReferenceOthersRELEASINGPage.steps.01.p50
ReferenceOthersRELEASINGPage.steps.01.p51
ReferenceOthersRELEASINGPage.steps.01.p52
Troubleshooting (notes from 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 via package.json files (include dist subdirs, docs, skills; exclude app bundles). Confirm with npm pack --dry-run that dist/OpenClaw.app is not listed.
- npm auth web loop for dist-tags: use legacy auth to get an OTP prompt:
- NPM_CONFIG_AUTH_TYPE=legacy npm dist-tag add [email protected] latest
- npx verification fails with ECOMPROMISED: Lock compromised: retry with a fresh cache:
- NPM_CONFIG_CACHE=/tmp/npm-cache-$(date +%s) npx -y [email protected] --version
- Tag needs repointing after a late fix: force-update and push the tag, then ensure the GitHub release assets still match:
- git tag -f vX.Y.Z && git push -f origin vX.Y.Z
Plugin publish scope (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/**).
Process to derive the list:
1. npm search @openclaw --json and capture the package names.
2. Compare with extensions/*/package.json names.
3. Publish only the intersection (already on npm).
Current npm plugin list (update as needed):
- @openclaw/bluebubbles
- @openclaw/diagnostics-otel
- @openclaw/discord
- @openclaw/lobster
- @openclaw/matrix
- @openclaw/msteams
- @openclaw/nextcloud-talk
- @openclaw/nostr
- @openclaw/voice-call
- @openclaw/zalo
- @openclaw/zalouser
Release notes must also call out new optional bundled plugins that are **not on by default** (example: tlon).