Примечания к выпуску
Контрольный список выпуска
Используйте pnpm (Node 22+) из корня репозитория. Перед тегированием/публикацией убедитесь, что рабочее дерево чистое.
Триггер оператора
Когда оператор говорит «выпустить», немедленно выполните эту предварительную проверку (без лишних вопросов, если нет блокировок):
- Прочтите этот документ и
docs/platforms/mac/release.md. - Загрузите переменные окружения из
~/.profileи убедитесь, чтоSPARKLE_PRIVATE_KEY_FILE+ переменные App Store Connect установлены (SPARKLE_PRIVATE_KEY_FILE должен находиться в~/.profile). - При необходимости используйте ключи Sparkle из
~/Library/CloudStorage/Dropbox/Backup/Sparkle.
- Версия и метаданные
- Увеличьте версию в
package.json(например,2026.1.29). - Запустите
pnpm plugins:sync, чтобы синхронизировать версии пакетов расширений и списки изменений. - Обновите строки CLI/версии в
src/version.tsи пользовательский агент Baileys вsrc/web/session.ts. - Подтвердите метаданные пакета (name, description, repository, keywords, license) и что
binуказывает наopenclaw.mjsдляopenclaw. - Если зависимости изменились, запустите
pnpm install, чтобыpnpm-lock.yamlбыл актуальным.
- Сборка и артефакты
- Если изменились входные данные A2UI, запустите
pnpm canvas:a2ui:bundleи закоммитьте обновленныйsrc/canvas-host/a2ui/a2ui.bundle.js. -
pnpm run build(перегенерируетdist/). - Убедитесь, что npm-пакет
filesвключает все необходимые папкиdist/*(особенноdist/node-host/**иdist/acp/**для headless node + ACP CLI). - Подтвердите, что
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 smoke-тест установки, быстрый путь; обязателен перед выпуском)- Если известно, что предыдущий npm-релиз сломан, установите
OPENCLAW_INSTALL_SMOKE_PREVIOUS=<последняя-рабочая-версия>илиOPENCLAW_INSTALL_SMOKE_SKIP_PREVIOUS=1для шага предустановки.
- Если известно, что предыдущий npm-релиз сломан, установите
- (Опционально) Полный smoke-тест установщика (добавляет покрытие non-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(требуются оба ключа; запускает обоих провайдеров)
- (Опционально) Выборочно проверьте веб-шлюз, если ваши изменения затрагивают пути отправки/получения.
- Приложение для macOS (Sparkle)
- Соберите + подпишите приложение для macOS, затем запакуйте его в zip для распространения.
- Сгенерируйте Sparkle appcast (HTML-заметки через
scripts/make_appcast.sh) и обновитеappcast.xml. - Держите zip-архив приложения (и опциональный dSYM zip) готовыми для прикрепления к выпуску на GitHub.
- Следуйте инструкции по выпуску для macOS для точных команд и необходимых переменных окружения.
APP_BUILDдолжен быть числовым и монотонным (без-beta), чтобы Sparkle корректно сравнивал версии.- При нотаризации используйте профиль связки ключей
openclaw-notary, созданный из переменных окружения API App Store Connect (см. macOS release).
- Публикация (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: бандл приложения macOS вdist/OpenClaw.app(и релизные zip-архивы) попадают в пакет. Исправьте, указав разрешенное содержимое для публикации черезfilesвpackage.json(включите подкаталоги dist, docs, skills; исключите бандлы приложений). Подтвердите с помощьюnpm pack --dry-run, чтоdist/OpenClaw.appне указан.- Цикл веб-аутентификации npm для dist-tags: используйте устаревшую аутентификацию для получения запроса 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 + appcast
- Создайте и запушьте тег:
git tag vX.Y.Z && git push origin vX.Y.Z(илиgit push --tags). - Создайте/обновите выпуск на GitHub для
vX.Y.Zс заголовкомopenclaw X.Y.Z(а не просто тегом); тело должно содержать полный раздел списка изменений для этой версии (Основное + Изменения + Исправления), встроенный (не просто ссылки), и не должно повторять заголовок внутри тела. - Прикрепите артефакты: tarball
npm pack(опционально),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)
Мы публикуем только существующие npm-плагины под областью @openclaw/*. Встроенные плагины, которых нет в 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).