You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Slack/interactive replies: preserve `channelData.slack.blocks` through live DM delivery and preview-finalized edits so Block Kit button and select directives render instead of falling back to raw text. Thanks @vincentkoc.
21
+
- CI/channel test routing: move the built-in channel suites into `test:channels` and keep them out of `test:extensions`, so extension CI no longer fails after the channel migration while targeted test routing still sends Slack, Signal, and iMessage suites to the right lane. (#46066) Thanks @scoootscooob.
22
+
- Agents/usage tracking: stop forcing `supportsUsageInStreaming: false` on non-native openai-completions endpoints so providers like DashScope, DeepSeek, and other OpenAI-compatible backends report token usage and cost instead of showing all zeros. (#46142)
- Telegram/media errors: redact Telegram file URLs before building media fetch errors so failed inbound downloads do not leak bot tokens into logs. Thanks @space08.
92
94
- Agents/failover: normalize abort-wrapped `429 RESOURCE_EXHAUSTED` provider failures before abort short-circuiting so wrapped Google/Vertex rate limits continue across configured fallback models, including the embedded runner prompt-error path. (#39820) Thanks @lupuletic.
93
95
- Mattermost/thread routing: non-inbound reply paths (TUI/WebUI turns, tool-call callbacks, subagent responses) now correctly route to the originating Mattermost thread when `replyToMode: "all"` is active; also prevents stale `origin.threadId` metadata from resurrecting cleared thread routes. (#44283) thanks @teconomix
96
+
- Gateway/websocket pairing bypass for disabled auth: skip device-pairing enforcement when `gateway.auth.mode=none` so Control UI connections behind reverse proxies no longer get stuck on `pairing required` (code 1008) despite auth being explicitly disabled. (#42931)
97
+
- Auth/login lockout recovery: clear stale `auth_permanent` and `billing` disabled state for all profiles matching the target provider when `openclaw models auth login` is invoked, so users locked out by expired or revoked OAuth tokens can recover by re-authenticating instead of waiting for the cooldown timer to expire. (#43057)
- Agents/failover: classify HTTP 422 malformed-request responses as `format` and recognize OpenRouter "requires more credits" billing errors so provider fallback triggers instead of surfacing raw errors. (#43823) thanks @jnMetaCode.
324
328
- Memory/QMD Windows: fail closed when `qmd.cmd` or `mcporter.cmd` wrappers cannot be resolved to a direct entrypoint, so memory search no longer falls back to shell execution on Windows.
325
329
- macOS/remote gateway: stop PortGuardian from killing Docker Desktop and other external listeners on the gateway port in remote mode, so containerized and tunneled gateway setups no longer lose their port-forward owner on app startup. (#6755) Thanks @teslamint.
330
+
- Feishu/streaming recovery: clear stale `streamingStartPromise` when card creation fails (HTTP 400) so subsequent messages can retry streaming instead of silently dropping all future replies. Fixes #43322.
Copy file name to clipboardExpand all lines: docs/reference/RELEASING.md
+12-5Lines changed: 12 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,6 +29,10 @@ Current OpenClaw releases use date-based versioning.
29
29
- Beta prerelease version: `YYYY.M.D-beta.N`
30
30
- Git tag: `vYYYY.M.D-beta.N`
31
31
- Examples from repo history: `v2026.2.15-beta.1`, `v2026.3.8-beta.1`
32
+
- Fallback correction tag: `vYYYY.M.D-N`
33
+
- Use only as a last-resort recovery tag when a published immutable release burned the original stable tag and you cannot reuse it.
34
+
- The npm package version stays `YYYY.M.D`; the `-N` suffix is only for the git tag and GitHub release.
35
+
- Prefer betas for normal pre-release iteration, then cut a clean stable tag once ready.
32
36
- Use the same version string everywhere, minus the leading `v` where Git tags are not used:
33
37
-`package.json`: `2026.3.8`
34
38
- Git tag: `v2026.3.8`
@@ -38,12 +42,12 @@ Current OpenClaw releases use date-based versioning.
38
42
-`latest` = stable
39
43
-`beta` = prerelease/testing
40
44
- Dev is the moving head of `main`, not a normal git-tagged release.
41
-
- The tag-triggered preview run enforces the current stable/beta tag formats and rejects versions whose CalVer date is more than 2 UTC calendar days away from the release date.
45
+
- The tag-triggered preview run accepts stable, beta, and fallback correction tags, and rejects versions whose CalVer date is more than 2 UTC calendar days away from the release date.
42
46
43
47
Historical note:
44
48
45
49
- Older tags such as `v2026.1.11-1`, `v2026.2.6-3`, and `v2.0.0-beta2` exist in repo history.
46
-
- Treat those as legacy tag patterns. New releases should use `vYYYY.M.D` for stable and `vYYYY.M.D-beta.N` for beta.
50
+
- Treat correction tags as a fallback-only escape hatch. New releases should still use `vYYYY.M.D` for stable and `vYYYY.M.D-beta.N` for beta.
47
51
48
52
1.**Version & metadata**
49
53
@@ -99,7 +103,9 @@ Historical note:
99
103
-[ ] Run `OpenClaw NPM Release` manually with the same tag to publish after `npm-release` environment approval.
100
104
- Stable tags publish to npm `latest`.
101
105
- Beta tags publish to npm `beta`.
102
-
- Both the preview run and the manual publish run reject tags that do not match `package.json`, are not on `main`, or whose CalVer date is more than 2 UTC calendar days away from the release date.
106
+
- Fallback correction tags like `v2026.3.13-1` map to npm version `2026.3.13`.
107
+
- Both the preview run and the manual publish run reject tags that do not map back to `package.json`, are not on `main`, or whose CalVer date is more than 2 UTC calendar days away from the release date.
108
+
- If `[email protected]` is already published, a fallback correction tag is still useful for GitHub release and Docker recovery, but npm publish will not republish that version.
-**Tag needs repointing after a late fix**: force-update and push the tag, then ensure the GitHub release assets still match:
113
-
-`git tag -f vX.Y.Z && git push -f origin vX.Y.Z`
118
+
-**Tag needs recovery after a late fix**: if the original stable tag is tied to an immutable GitHub release, mint a fallback correction tag like `vX.Y.Z-1` instead of trying to force-update `vX.Y.Z`.
119
+
- Keep the npm package version at `X.Y.Z`; the correction suffix is for the git tag and GitHub release only.
120
+
- Use this only as a last resort. For normal iteration, prefer beta tags and then cut a clean stable release.
0 commit comments