Skip to content

Commit caafb98

Browse files
committed
Docs: redact private release setup
1 parent 756d9b5 commit caafb98

File tree

3 files changed

+18
-45
lines changed

3 files changed

+18
-45
lines changed

AGENTS.md

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -262,8 +262,7 @@
262262
- **Device checks:** before testing, verify connected real devices (iOS/Android) before reaching for simulators/emulators.
263263
- iOS Team ID lookup: `security find-identity -p codesigning -v` → use Apple Development (…) TEAMID. Fallback: `defaults read com.apple.dt.Xcode IDEProvisioningTeamIdentifiers`.
264264
- A2UI bundle hash: `src/canvas-host/a2ui/.bundle.hash` is auto-generated; ignore unexpected changes, and only regenerate via `pnpm canvas:a2ui:bundle` (or `scripts/bundle-a2ui.sh`) when needed. Commit the hash as a separate commit.
265-
- Release signing/notary keys are managed outside the repo; follow internal release docs.
266-
- Notary auth env vars (`APP_STORE_CONNECT_ISSUER_ID`, `APP_STORE_CONNECT_KEY_ID`, `APP_STORE_CONNECT_API_KEY_P8`) are expected in your environment (per internal release docs).
265+
- Release signing/notary credentials are managed outside the repo; use the private [maintainer release docs](https://github.com/openclaw/maintainers/tree/main/release) for local setup and access notes.
267266
- **Multi-agent safety:** do **not** create/apply/drop `git stash` entries unless explicitly requested (this includes `git pull --rebase --autostash`). Assume other agents may be working; keep unrelated WIP untouched and avoid cross-cutting state changes.
268267
- **Multi-agent safety:** when the user says "push", you may `git pull --rebase` to integrate latest changes (never discard other agents' work). When the user says "commit", scope to your changes only. When the user says "commit all", commit everything in grouped chunks.
269268
- **Multi-agent safety:** do **not** create/remove/modify `git worktree` checkouts (or edit `.worktrees/*`) unless explicitly requested.
@@ -290,35 +289,12 @@
290289
- Release guardrails: do not change version numbers without operator’s explicit consent; always ask permission before running any npm publish/release step.
291290
- Beta release guardrail: when using a beta Git tag (for example `vYYYY.M.D-beta.N`), publish npm with a matching beta version suffix (for example `YYYY.M.D-beta.N`) rather than a plain version on `--tag beta`; otherwise the plain version name gets consumed/blocked.
292291

293-
## NPM + 1Password (publish/verify)
294-
295-
- Use the 1password skill; all `op` commands must run inside a fresh tmux session.
296-
- Correct 1Password path for npm release auth: `op://Private/Npmjs` (use that item; OTP stays `op://Private/Npmjs/one-time password?attribute=otp`).
297-
- Sign in: `eval "$(op signin --account my.1password.com)"` (app unlocked + integration on).
298-
- OTP: `op read 'op://Private/Npmjs/one-time password?attribute=otp'`.
299-
- Publish: `npm publish --access public --otp="<otp>"` (run from the package dir).
300-
- Verify without local npmrc side effects: `npm view <pkg> version --userconfig "$(mktemp)"`.
301-
- Kill the tmux session after publish.
302-
303-
## Plugin Release Fast Path (no core `openclaw` publish)
304-
305-
- Release only already-on-npm plugins. Source list is in `docs/reference/RELEASING.md` under "Current npm plugin list".
306-
- Run all CLI `op` calls and `npm publish` inside tmux to avoid hangs/interruption:
307-
- `tmux new -d -s release-plugins-$(date +%Y%m%d-%H%M%S)`
308-
- `eval "$(op signin --account my.1password.com)"`
309-
- 1Password helpers:
310-
- password used by `npm login`:
311-
`op item get Npmjs --format=json | jq -r '.fields[] | select(.id=="password").value'`
312-
- OTP:
313-
`op read 'op://Private/Npmjs/one-time password?attribute=otp'`
314-
- Fast publish loop (local helper script in `/tmp` is fine; keep repo clean):
315-
- compare local plugin `version` to `npm view <name> version`
316-
- only run `npm publish --access public --otp="<otp>"` when versions differ
317-
- skip if package is missing on npm or version already matches.
318-
- Keep `openclaw` untouched: never run publish from repo root unless explicitly requested.
319-
- Post-check for each release:
320-
- per-plugin: `npm view @openclaw/<name> version --userconfig "$(mktemp)"` should be `2026.2.17`
321-
- core guard: `npm view openclaw version --userconfig "$(mktemp)"` should stay at previous version unless explicitly requested.
292+
## Release Auth
293+
294+
- Core `openclaw` publish uses GitHub trusted publishing; do not use `NPM_TOKEN` or the plugin OTP flow for core releases.
295+
- Separate `@openclaw/*` plugin publishes use a different maintainer-only auth flow.
296+
- Plugin scope is public: only publish already-on-npm plugins listed in [`docs/reference/RELEASING.md`](https://github.com/openclaw/openclaw/blob/main/docs/reference/RELEASING.md).
297+
- Maintainers: private 1Password item names, tmux rules, plugin publish helpers, and local mac signing/notary setup live in the private [maintainer release docs](https://github.com/openclaw/maintainers/tree/main/release).
322298

323299
## Changelog Release Notes
324300

docs/platforms/mac/release.md

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,9 @@ This app now ships Sparkle auto-updates. Release builds must be Developer ID–s
1313
## Prereqs
1414

1515
- Developer ID Application cert installed (example: `Developer ID Application: <Developer Name> (<TEAMID>)`).
16-
- Sparkle private key path set in the environment as `SPARKLE_PRIVATE_KEY_FILE` (path to your Sparkle ed25519 private key; public key baked into Info.plist). If it is missing, check `~/.profile`.
16+
- Sparkle private key path set in the environment as `SPARKLE_PRIVATE_KEY_FILE` (path to your Sparkle ed25519 private key; public key baked into Info.plist).
1717
- Notary credentials (keychain profile or API key) for `xcrun notarytool` if you want Gatekeeper-safe DMG/zip distribution.
18-
- We use a Keychain profile named `openclaw-notary`, created from App Store Connect API key env vars in your shell profile:
19-
- `APP_STORE_CONNECT_API_KEY_P8`, `APP_STORE_CONNECT_KEY_ID`, `APP_STORE_CONNECT_ISSUER_ID`
20-
- `echo "$APP_STORE_CONNECT_API_KEY_P8" | sed 's/\\n/\n/g' > /tmp/openclaw-notary.p8`
21-
- `xcrun notarytool store-credentials "openclaw-notary" --key /tmp/openclaw-notary.p8 --key-id "$APP_STORE_CONNECT_KEY_ID" --issuer "$APP_STORE_CONNECT_ISSUER_ID"`
18+
- Maintainers: keep local key paths, profile names, and bootstrap commands in the private [maintainer release docs](https://github.com/openclaw/maintainers/tree/main/release).
2219
- `pnpm` deps installed (`pnpm install --config.node-linker=hoisted`).
2320
- Sparkle tools are fetched automatically via SwiftPM at `apps/macos/.build/artifacts/sparkle/Sparkle/bin/` (`sign_update`, `generate_appcast`, etc.).
2421

@@ -30,7 +27,7 @@ Notes:
3027
- If `APP_BUILD` is omitted, `scripts/package-mac-app.sh` derives a Sparkle-safe default from `APP_VERSION` (`YYYYMMDDNN`: stable defaults to `90`, prereleases use a suffix-derived lane) and uses the higher of that value and git commit count.
3128
- You can still override `APP_BUILD` explicitly when release engineering needs a specific monotonic value.
3229
- For `BUILD_CONFIG=release`, `scripts/package-mac-app.sh` now defaults to universal (`arm64 x86_64`) automatically. You can still override with `BUILD_ARCHS=arm64` or `BUILD_ARCHS=x86_64`. For local/dev builds (`BUILD_CONFIG=debug`), it defaults to the current architecture (`$(uname -m)`).
33-
- Use `scripts/package-mac-dist.sh` for release artifacts (zip + DMG + notarization). Use `scripts/package-mac-app.sh` for local/dev packaging.
30+
- Use [`scripts/package-mac-dist.sh`](https://github.com/openclaw/openclaw/blob/main/scripts/package-mac-dist.sh) for release artifacts (zip + DMG + notarization). Use [`scripts/package-mac-app.sh`](https://github.com/openclaw/openclaw/blob/main/scripts/package-mac-app.sh) for local/dev packaging.
3431

3532
```bash
3633
# From repo root; set release IDs so Sparkle feed is enabled.
@@ -53,10 +50,10 @@ ditto -c -k --sequesterRsrc --keepParent dist/OpenClaw.app dist/OpenClaw-2026.3.
5350
scripts/create-dmg.sh dist/OpenClaw.app dist/OpenClaw-2026.3.13.dmg
5451

5552
# Recommended: build + notarize/staple zip + DMG
56-
# First, create a keychain profile once:
57-
# xcrun notarytool store-credentials "openclaw-notary" \
53+
# First, create or select a keychain profile once:
54+
# xcrun notarytool store-credentials "<profile-name>" \
5855
# --apple-id "<apple-id>" --team-id "<team-id>" --password "<app-specific-password>"
59-
NOTARIZE=1 NOTARYTOOL_PROFILE=openclaw-notary \
56+
NOTARIZE=1 NOTARYTOOL_PROFILE=<profile-name> \
6057
BUNDLE_ID=ai.openclaw.mac \
6158
APP_VERSION=2026.3.13 \
6259
BUILD_CONFIG=release \

docs/reference/RELEASING.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ Use `pnpm` from the repo root with Node 24 by default. Node 22 LTS, currently `2
1515

1616
When the operator says “release”, immediately do this preflight (no extra questions unless blocked):
1717

18-
- Read this doc and `docs/platforms/mac/release.md`.
19-
- Load env from `~/.profile` and confirm `SPARKLE_PRIVATE_KEY_FILE` + App Store Connect vars are set (SPARKLE_PRIVATE_KEY_FILE should live in `~/.profile`).
20-
- Use Sparkle keys from `~/Library/CloudStorage/Dropbox/Backup/Sparkle` if needed.
18+
- Read this doc and [macOS release](/platforms/mac/release).
19+
- Confirm the required signing, Sparkle, and notary credentials are available in your environment.
20+
- Maintainers: keep operator-only credential setup, local secret locations, and approval notes in the private [maintainer release docs](https://github.com/openclaw/maintainers/tree/main/release).
2121

2222
## Versioning
2323

@@ -93,14 +93,14 @@ Historical note:
9393
- [ ] Keep the app zip (and optional dSYM zip) ready to attach to the GitHub release.
9494
- [ ] Follow [macOS release](/platforms/mac/release) for the exact commands and required env vars.
9595
- `APP_BUILD` must be numeric + monotonic (no `-beta`) so Sparkle compares versions correctly.
96-
- If notarizing, use the `openclaw-notary` keychain profile created from App Store Connect API env vars (see [macOS release](/platforms/mac/release)).
96+
- If notarizing, use your configured `notarytool` keychain profile (see [macOS release](/platforms/mac/release)).
9797

9898
6. **Publish (npm)**
9999

100100
- [ ] Confirm git status is clean; commit and push as needed.
101101
- [ ] Confirm npm trusted publishing is configured for the `openclaw` package.
102102
- [ ] Do not rely on an `NPM_TOKEN` secret for this workflow; the publish job uses GitHub OIDC trusted publishing.
103-
- [ ] Push the matching git tag to trigger the preview run in `.github/workflows/openclaw-npm-release.yml`.
103+
- [ ] Push the matching git tag to trigger the preview run in [`.github/workflows/openclaw-npm-release.yml`](https://github.com/openclaw/openclaw/blob/main/.github/workflows/openclaw-npm-release.yml).
104104
- [ ] Run `OpenClaw NPM Release` manually with the same tag to publish after `npm-release` environment approval.
105105
- Stable tags publish to npm `latest`.
106106
- Beta tags publish to npm `beta`.

0 commit comments

Comments
 (0)