pnpm (ノード 22+) を使用します。タグ付け/公開する前に、作業ツリーをクリーンな状態に保ってください。
オペレータートリガー
オペレーターが「リリース」と言ったら、すぐに次のプリフライトを実行します (ブロックされない限り、追加の質問はありません)。- このドキュメントと
docs/platforms/mac/release.mdをお読みください。 ~/.profileから環境をロードし、SPARKLE_PRIVATE_KEY_FILE+ App Store Connect 変数が設定されていることを確認します (SPARKLE_PRIVATE_KEY_FILE は~/.profileに存在する必要があります)。- 必要に応じて、
~/Library/CloudStorage/Dropbox/Backup/Sparkleの Sparkle キーを使用します。
- バージョンとメタデータ
-
package.jsonバージョンをバンプします (例:2026.1.29)。 -
pnpm plugins:syncを実行して、拡張機能パッケージのバージョンと変更ログを調整します。 -
src/version.tsの CLI/バージョン文字列と、src/web/session.tsの Baileys ユーザー エージェントを更新します。 - パッケージのメタデータ (名前、説明、リポジトリ、キーワード、ライセンス) を確認し、
binマップがopenclawのopenclaw.mjsをポイントしていることを確認します。 - 依存関係が変更された場合は、
pnpm-lock.yamlが最新になるようにpnpm installを実行します。
- ビルドとアーティファクト- [ ] A2UI 入力が変更された場合は、
pnpm canvas:a2ui:bundleを実行し、更新されたsrc/canvas-host/a2ui/a2ui.bundle.jsをコミットします。
-
pnpm run build(dist/を再生成します)。 - npm パッケージ
filesに、必要なすべてのdist/*フォルダー (特に、ヘッドレス ノード + ACP CLI のdist/node-host/**およびdist/acp/**) が含まれていることを確認します。 -
dist/build-info.jsonが存在し、予期されるcommitハッシュが含まれていることを確認します (CLI バナーは npm インストールにこれを使用します)。 - オプション: ビルド後の
npm pack --pack-destination /tmp。 tarball の内容を検査し、GitHub リリースに備えて保管しておいてください (コミットしないでください)。
- 変更履歴とドキュメント
-
CHANGELOG.mdをユーザー向けのハイライトで更新します (見つからない場合はファイルを作成します)。エントリは厳密にバージョン順に降順に保持します。 - README の例/フラグが現在の CLI の動作 (特に新しいコマンドやオプション) と一致していることを確認します。
- 検証- [ ]
pnpm build
-
pnpm check -
pnpm test(カバレッジ出力が必要な場合はpnpm test:coverage) -
pnpm release:check(npm パックの内容を確認します) -
OPENCLAW_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke(Docker インストール スモーク テスト、高速パス。リリース前に必要)- 直前の npm リリースが壊れていることがわかっている場合は、プレインストール ステップに
OPENCLAW_INSTALL_SMOKE_PREVIOUS=<last-good-version>またはOPENCLAW_INSTALL_SMOKE_SKIP_PREVIOUS=1を設定します。
- 直前の npm リリースが壊れていることがわかっている場合は、プレインストール ステップに
- (オプション) フルインストーラスモーク (非 root + CLI のカバレッジを追加):
pnpm test:install:smoke - (オプション) インストーラー E2E (Docker、
curl -fsSL https://openclaw.ai/install.sh | bashを実行し、オンボードして実際のツール呼び出しを実行します):pnpm test:install:e2e:openai(OPENAI_API_KEYが必要)pnpm test:install:e2e:anthropic(ANTHROPIC_API_KEYが必要)pnpm test:install:e2e(両方のキーが必要、両方のプロバイダーを実行)
- (オプション) 変更が送受信パスに影響を与えるかどうか、Web ゲートウェイをスポットチェックします。
- macOS アプリ (Sparkle)- [ ] macOS アプリをビルドして署名し、配布用に圧縮します。
- Sparkle アプリキャスト (
scripts/make_appcast.sh経由の HTML ノート) を生成し、appcast.xmlを更新します。 - アプリ zip (およびオプションの dSYM zip) を GitHub リリースに添付できるようにしておきます。
- 正確なコマンドと必要な環境変数については、macOS リリース に従ってください。
- Sparkle がバージョンを正しく比較できるように、
APP_BUILDは数値 + 単調でなければなりません (-betaは不可)。 - 公証する場合は、App Store Connect API 環境変数から作成された
openclaw-notaryキーチェーン プロファイルを使用します (macOS リリース を参照)。
- Sparkle がバージョンを正しく比較できるように、
- 公開 (npm)
- git ステータスがクリーンであることを確認します。必要に応じてコミットとプッシュを行います。
-
npm login(2FA を確認) (必要な場合)。 -
npm publish --access public(プレリリースには--tag betaを使用してください)。 - レジストリを確認します:
npm view openclaw version、npm view openclaw dist-tags、およびnpx -y openclaw@X.Y.Z --version(または--help)。
トラブルシューティング (2.0.0-beta2 リリースのメモ)- npm Pack/publish がハングする、または巨大な tarball が生成される: dist/OpenClaw.app の macOS アプリ バンドル (およびリリース zip) がパッケージに取り込まれます。 package.json files 経由で公開コンテンツをホワイトリストに登録することで修正します (dist サブディレクトリ、ドキュメント、スキルを含み、アプリ バンドルは除外します)。 npm pack --dry-run で、dist/OpenClaw.app がリストされていないことを確認します
- dist-tags の npm 認証 Web ループ: 従来の認証を使用して OTP プロンプトを取得します。
NPM_CONFIG_AUTH_TYPE=legacy npm dist-tag add openclaw@X.Y.Z latest
npx検証がECOMPROMISED: Lock compromisedで失敗します: 新しいキャッシュを使用して再試行してください:NPM_CONFIG_CACHE=/tmp/npm-cache-$(date +%s) npx -y openclaw@X.Y.Z --version
- 後期修正後にタグを再ポイントする必要があります: タグを強制的に更新してプッシュし、GitHub リリース アセットがまだ一致していることを確認します。
git tag -f vX.Y.Z && git push -f origin vX.Y.Z
- GitHub リリース + アプリキャスト- [ ] タグを付けてプッシュ:
git tag vX.Y.Z && git push origin vX.Y.Z(またはgit push --tags)。
- タイトル
openclaw X.Y.Z(タグだけでなく) を使用してvX.Y.Zの GitHub リリースを作成/更新します。本文には、そのバージョンの 完全な変更ログ セクション (ハイライト + 変更 + 修正) をインラインで (裸のリンクは禁止) 含める必要があり、本文内でタイトルを繰り返してはなりません。 - アーティファクトを添付します:
npm packtarball (オプション)、OpenClaw-X.Y.Z.zip、およびOpenClaw-X.Y.Z.dSYM.zip(生成された場合)。 - 更新された
appcast.xmlをコミットしてプッシュします (メインからの Sparkle フィード)。 - クリーンな一時ディレクトリ (
package.jsonなし) からnpx -y openclaw@X.Y.Z send --helpを実行して、インストール/CLI エントリポイントが機能することを確認します。 - リリースノートを発表/共有します。
プラグインの公開スコープ (npm)
既存の npm プラグインのみを@openclaw/* スコープで公開します。同梱
npm にないプラグインは ディスクツリーのみ のままです (引き続き
extensions/**)。
リストを取得するプロセス:
npm search @openclaw --jsonとパッケージ名を取得します。extensions/*/package.jsonの名前と比較します。- 交差点のみを公開します(すでにnpm上にあります)。
- @openclaw/bluebubbles
- @openclaw/diagnostics-otel
- @openclaw/ディスコード
- @openclaw/フェイシュ
- @openclaw/ロブスター
- @openclaw/マトリックス
- @openclaw/msteams
- @openclaw/nextcloud-talk
- @openclaw/nostr
- @openclaw/音声通話
- @openclaw/ザロ
- @openclaw/zalouserリリース ノートでは、新しいオプションのバンドル プラグインについても言及する必要があります。
デフォルトでオン** (例:
tlon)。