リリースチェックリスト(npm + macOS)

リポジトリルートから pnpm(Node 22+)を使用します。タグ付け/公開の前に作業ツリーをクリーンに保ちます。

オペレータートリガー

オペレーターが「release」と言ったら、すぐにこのプリフライトを実行します(ブロックされない限り追加の質問はしない):

  • このドキュメントと 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 を実行して拡張パッケージのバージョン + 変更履歴を揃える
  • CLI/バージョン文字列を更新:src/cli/program.tssrc/provider-web.ts の Baileys ユーザーエージェント
  • パッケージメタデータ(name、description、repository、keywords、license)を確認し、bin マップが openclawopenclaw.mjs を指していることを確認
  • 依存関係が変更された場合、pnpm install を実行して pnpm-lock.yaml を最新に保つ

ビルドとアーティファクト

  • A2UI 入力が変更された場合、pnpm canvas:a2ui:bundle を実行し、更新された src/canvas-host/a2ui/a2ui.bundle.js をコミット
  • pnpm run builddist/ を再生成)
  • npm パッケージ files にすべての必要な dist/* フォルダーが含まれていることを確認(特にヘッドレス node + ACP CLI 用の dist/node-host/**dist/acp/**
  • dist/build-info.json が存在し、期待されるコミットハッシュが含まれていることを確認(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 pack の内容を検証)
  • OPENCLAW_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke(Docker インストールスモークテスト、高速パス;リリース前に必須)

直前の npm リリースが壊れていることがわかっている場合、プリインストールステップ用に OPENCLAW_INSTALL_SMOKE_PREVIOUS= または OPENCLAW_INSTALL_SMOKE_SKIP_PREVIOUS=1 を設定します。

  • (オプション)完全インストーラースモークテスト(非 root + CLI カバレッジを追加):pnpm test:install:smoke
  • (オプション)インストーラー E2E(Docker、curl -fsSL https://openclaw.ai/install.sh | bash を実行、オンボード、その後実際のツール呼び出しを実行):
    • pnpm test:install:e2e:openaiOPENAI_API_KEY が必要)
    • pnpm test:install:e2e:anthropicANTHROPIC_API_KEY が必要)
    • pnpm test:install:e2e(両方のキーが必要;両方のプロバイダーを実行)
  • (オプション)変更が送受信パスに影響する場合、web ゲートウェイをスポットチェック

macOS アプリ(Sparkle)

  • macOS アプリをビルド + 署名し、配布用に zip 圧縮
  • Sparkle appcast を生成(scripts/make_appcast.sh 経由で HTML ノート)し、appcast.xml を更新
  • アプリ zip(およびオプションの dSYM zip)を GitHub リリースに添付する準備を整える
  • 正確なコマンドと必要な環境変数については macOS リリース に従う

APP_BUILD は数値 + 単調増加である必要があります(-beta なし)。これにより Sparkle がバージョンを正しく比較できます。

  • 公証する場合、App Store Connect API 環境変数から作成された openclaw-notary キーチェーンプロファイルを使用(macOS リリース を参照)

公開(npm)

  • git status がクリーンであることを確認;必要に応じてコミットしてプッシュ
  • 必要に応じて npm login(2FA を確認)
  • npm publish --access public(プレリリースには --tag beta を使用)
  • レジストリを確認:npm view openclaw versionnpm view openclaw dist-tagsnpx -y openclaw@latest --version(または --help

トラブルシューティング(2.0.0-beta2 リリースからのメモ)

  • npm pack/publish がハングするか巨大な tarball を生成: dist/OpenClaw.app の macOS アプリバンドル(およびリリース zip)がパッケージに含まれます。package.jsonfiles で公開コンテンツをホワイトリスト化して修正(dist サブディレクトリ、docs、skills を含む;アプリバンドルを除外)。npm pack --dry-rundist/OpenClaw.app がリストされていないことを確認します。

  • dist-tags の npm auth web ループ: レガシー auth を使用して OTP プロンプトを取得:

    NPM_CONFIG_AUTH_TYPE=legacy npm dist-tag add [email protected] latest
    
  • npx 検証が ECOMPROMISED で失敗: ロックが破損:新しいキャッシュで再試行:

    NPM_CONFIG_CACHE=/tmp/npm-cache-$(date +%s) npx -y openclaw@latest --version
    
  • 後の修正後にタグを再ポイントする必要がある: タグを強制更新してプッシュし、GitHub リリースアセットが一致していることを確認:

    git tag -f vX.Y.Z && git push -f origin vX.Y.Z
    

GitHub リリース + appcast

  • タグ付けしてプッシュ:git tag vX.Y.Z && git push origin vX.Y.Z(または git push --tags
  • vX.Y.Z 用の GitHub リリースを作成/更新、タイトルは openclaw X.Y.Z(タグだけでなく);本文にはそのバージョンの完全な変更履歴セクション(ハイライト + 変更 + 修正)をインラインで含める(裸のリンクなし)。本文内でタイトルを繰り返さない
  • アーティファクトを添付:npm pack tarball(オプション)、OpenClaw-X.Y.Z.zipOpenClaw-X.Y.Z.dSYM.zip(生成された場合)
  • 更新された appcast.xml をコミットしてプッシュ(Sparkle は main からフィード)
  • クリーンな一時ディレクトリ(package.json なし)から npx -y openclaw@latest send --help を実行して、インストール/CLI エントリポイントが機能することを確認
  • リリースノートを発表/共有

プラグイン公開スコープ(npm)

@openclaw/* スコープ下の既存の npm プラグインのみを公開します。npm にないバンドルされたプラグインはディスクツリーのみに留まります(extensions/** で引き続き出荷)。

リストを導出するプロセス:

  • npm search @openclaw --json を実行してパッケージ名をキャプチャ
  • extensions/*/package.json の名前と比較
  • 交差部分のみを公開(すでに npm 上にあるもの)

現在の npm プラグインリスト(必要に応じて更新):

  • @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

リリースノートには、デフォルトでオンになっていない新しいオプションのバンドルプラグイン(例:tlon)も記載する必要があります。