Notes de version
Checklist de publication
Utilisez pnpm (Node 22+) depuis la racine du dépôt. Gardez l'arbre de travail propre avant le tagging/la publication.
Déclenchement par l'opérateur
Quand l'opérateur dit "release", effectuez immédiatement cette vérification préalable (pas de questions supplémentaires sauf blocage) :
- Lisez ce document et
docs/platforms/mac/release.md. - Chargez les variables d'environnement depuis
~/.profileet confirmez queSPARKLE_PRIVATE_KEY_FILE+ les variables App Store Connect sont définies (SPARKLE_PRIVATE_KEY_FILE doit se trouver dans~/.profile). - Utilisez les clés Sparkle depuis
~/Library/CloudStorage/Dropbox/Backup/Sparklesi nécessaire.
- Version & métadonnées
- Incrémentez la version dans
package.json(ex :2026.1.29). - Exécutez
pnpm plugins:syncpour aligner les versions des packages d'extensions + les journaux des modifications. - Mettez à jour les chaînes CLI/version dans
src/version.tset l'agent utilisateur Baileys danssrc/web/session.ts. - Confirmez les métadonnées du package (nom, description, repository, keywords, license) et que la map
binpointe versopenclaw.mjspouropenclaw. - Si les dépendances ont changé, exécutez
pnpm installpour quepnpm-lock.yamlsoit à jour.
- Build & artefacts
- Si les entrées A2UI ont changé, exécutez
pnpm canvas:a2ui:bundleet committez toute mise à jour desrc/canvas-host/a2ui/a2ui.bundle.js. -
pnpm run build(régénèredist/). - Vérifiez que le package npm
filesinclut tous les dossiersdist/*requis (notammentdist/node-host/**etdist/acp/**pour le mode headless node + CLI ACP). - Confirmez que
dist/build-info.jsonexiste et inclut le hashcommitattendu (la bannière CLI l'utilise pour les installations npm). - Optionnel :
npm pack --pack-destination /tmpaprès le build ; inspectez le contenu du tarball et gardez-le à portée de main pour la release GitHub (ne pas le committer).
- Journal des modifications & documentation
- Mettez à jour
CHANGELOG.mdavec les points forts pour l'utilisateur (créez le fichier s'il manque) ; gardez les entrées strictement décroissantes par version. - Assurez-vous que les exemples/options du README correspondent au comportement actuel du CLI (notamment les nouvelles commandes ou options).
- Validation
-
pnpm build -
pnpm check -
pnpm test(oupnpm test:coveragesi vous avez besoin d'un rapport de couverture) -
pnpm release:check(vérifie le contenu du npm pack) -
OPENCLAW_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke(test de fumée d'installation Docker, chemin rapide ; requis avant la publication)- Si la version npm précédente immédiate est connue comme cassée, définissez
OPENCLAW_INSTALL_SMOKE_PREVIOUS=<last-good-version>ouOPENCLAW_INSTALL_SMOKE_SKIP_PREVIOUS=1pour l'étape de pré-installation.
- Si la version npm précédente immédiate est connue comme cassée, définissez
- (Optionnel) Test de fumée complet de l'installateur (ajoute la couverture non-root + CLI) :
pnpm test:install:smoke - (Optionnel) E2E de l'installateur (Docker, exécute
curl -fsSL https://openclaw.ai/install.sh | bash, procède à l'onboarding, puis exécute des appels réels de l'outil) :pnpm test:install:e2e:openai(requiertOPENAI_API_KEY)pnpm test:install:e2e:anthropic(requiertANTHROPIC_API_KEY)pnpm test:install:e2e(requiert les deux clés ; exécute les deux fournisseurs)
- (Optionnel) Vérification ponctuelle de la passerelle web si vos changements affectent les chemins d'envoi/réception.
- Application macOS (Sparkle)
- Build + signez l'application macOS, puis ziprez-la pour la distribution.
- Générez le flux Sparkle appcast (notes HTML via
scripts/make_appcast.sh) et mettez à jourappcast.xml. - Gardez le zip de l'application (et le zip dSYM optionnel) prêt à être attaché à la release GitHub.
- Suivez macOS release pour les commandes exactes et les variables d'environnement requises.
APP_BUILDdoit être numérique + monotone (pas de-beta) pour que Sparkle compare correctement les versions.- Si vous notarisez, utilisez le profil de trousseau
openclaw-notarycréé à partir des variables d'environnement de l'API App Store Connect (voir macOS release).
- Publication (npm)
- Confirmez que le statut git est propre ; committez et poussez si nécessaire.
-
npm login(vérifiez la 2FA) si nécessaire. -
npm publish --access public(utilisez--tag betapour les pré-versions). - Vérifiez le registre :
npm view openclaw version,npm view openclaw dist-tags, etnpx -y openclaw@X.Y.Z --version(ou--help).
Dépannage (notes de la version 2.0.0-beta2)
- npm pack/publish se bloque ou produit un tarball énorme : le bundle de l'application macOS dans
dist/OpenClaw.app(et les zips de release) sont inclus dans le package. Corrigez en listant explicitement le contenu à publier viapackage.jsonfiles(inclure les sous-répertoires dist, docs, skills ; exclure les bundles d'applications). Confirmez avecnpm pack --dry-runquedist/OpenClaw.appn'est pas listé. - Boucle d'authentification web npm pour les dist-tags : utilisez l'authentification legacy pour obtenir une invite OTP :
NPM_CONFIG_AUTH_TYPE=legacy npm dist-tag add openclaw@X.Y.Z latest
- La vérification
npxéchoue avecECOMPROMISED: Lock compromised: réessayez avec un cache frais :NPM_CONFIG_CACHE=/tmp/npm-cache-$(date +%s) npx -y openclaw@X.Y.Z --version
- Le tag doit être redirigé après une correction tardive : forcez la mise à jour et poussez le tag, puis assurez-vous que les assets de la release GitHub correspondent toujours :
git tag -f vX.Y.Z && git push -f origin vX.Y.Z
- Release GitHub + appcast
- Taggez et poussez :
git tag vX.Y.Z && git push origin vX.Y.Z(ougit push --tags). - Créez/rafraîchissez la release GitHub pour
vX.Y.Zavec le titreopenclaw X.Y.Z(pas seulement le tag) ; le corps doit inclure la section complète du journal des modifications pour cette version (Points forts + Changements + Corrections), en ligne (pas de liens nus), et ne doit pas répéter le titre dans le corps. - Attachez les artefacts : tarball
npm pack(optionnel),OpenClaw-X.Y.Z.zip, etOpenClaw-X.Y.Z.dSYM.zip(si généré). - Committez le
appcast.xmlmis à jour et poussez-le (Sparkle se nourrit depuis main). - Depuis un répertoire temporaire propre (sans
package.json), exécuteznpx -y openclaw@X.Y.Z send --helppour confirmer que les points d'entrée d'installation/CLI fonctionnent. - Annoncez/partagez les notes de version.
Périmètre de publication des plugins (npm)
Nous ne publions que les plugins npm existants sous le scope @openclaw/*. Les plugins intégrés qui ne sont pas sur npm restent uniquement sur l'arborescence disque (toujours livrés dans extensions/**). Processus pour obtenir la liste :
npm search @openclaw --jsonet capturez les noms des packages.- Comparez avec les noms dans
extensions/*/package.json. - Publiez uniquement l'intersection (déjà sur npm).
Liste actuelle des plugins npm (à mettre à jour si nécessaire) :
- @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
Les notes de version doivent également mentionner les nouveaux plugins optionnels intégrés qui sont désactivés par défaut (exemple : tlon).