リリースノート
リリースチェックリスト
リポジトリのルートで pnpm (Node 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 installを実行してpnpm-lock.yamlを最新の状態にする。
- ビルド & 成果物
- 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 pack の内容を検証) -
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 アプリをビルド + 署名し、配布用に zip 化する。
- Sparkle アプキャストを生成し(
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 ステータスがクリーンであることを確認し、必要に応じてコミットしてプッシュする。
- 必要に応じて
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 サブディレクトリ、docs、skills を含め、アプリバンドルは除外)。npm pack --dry-runでdist/OpenClaw.appがリストされていないことを確認する。 - dist-tags の npm auth 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)。 -
vX.Y.Zの GitHub リリースを作成/更新し、タイトルをopenclaw X.Y.Zとする(単なるタグ名ではない)。本文にはそのバージョンの完全な変更履歴セクション(ハイライト + 変更点 + 修正点)を含め、インラインで(リンクのみではなく)、本文内でタイトルを繰り返してはならない。 - 成果物を添付:
npm packtarball (オプション),OpenClaw-X.Y.Z.zip,OpenClaw-X.Y.Z.dSYM.zip(生成された場合)。 - 更新された
appcast.xmlをコミットしてプッシュする(Sparkle は main からフィードを取得する)。 - クリーンな一時ディレクトリ(
package.jsonなし)から、npx -y openclaw@X.Y.Z 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/feishu
- @openclaw/lobster
- @openclaw/matrix
- @openclaw/msteams
- @openclaw/nextcloud-talk
- @openclaw/nostr
- @openclaw/voice-call
- @openclaw/zalo
- @openclaw/zalouser
リリースノートでは、デフォルトではオンになっていない新しいオプションのバンドル済みプラグイン(例: tlon)も明記する必要があります。