Skip to content

Commit 5f43c0b

Browse files
committed
Auto-merge upstream openclaw/openclaw
2 parents cd2ca68 + 1e188bc commit 5f43c0b

113 files changed

Lines changed: 4250 additions & 307 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/skills/openclaw-landable-bug-sweep/SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,11 @@ Reject:
8989
- if unwritable or wrong shape, create own PR and preserve useful contributor credit
9090
- if no PR exists, create one
9191
- add regression test when it fits
92-
- changelog for user-facing fixes; thank credited human reporter/contributor
92+
- release-note context for user-facing fixes in PR body or commit message; credit human reporter/contributor when known
9393
6. Review, refresh, and publish:
9494
- rebase or otherwise refresh the PR branch on current `origin/main`
9595
- resolve drift, including newly exposed CI failures, rather than counting the PR as ready
96-
- changelog-only conflicts are routine on busy `main`; resolve them mechanically when already refreshing, but do not treat them as a real code conflict, a reason to reject the PR, or evidence that the branch needs extra fixup beyond the changelog entry order
96+
- do not add `CHANGELOG.md` during normal sweep PRs; release automation generates it from PRs and commits
9797
- left-test the rebased head with the smallest meaningful local/Testbox/live command that proves the bug
9898
- run `$autoreview` until no accepted/actionable findings remain before creating, updating, or presenting the PR URL
9999
- create/update PR with real body and proof fields

.agents/skills/openclaw-pr-maintainer/SKILL.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -139,12 +139,12 @@ Issue triage is review/prove/patch-local by default:
139139
2. Fix only issues that are easy, high-confidence, and narrowly owned by the implicated path.
140140
3. Add focused regression proof when practical.
141141
4. Stop with the dirty diff, touched files, and test/gate output for maintainer review.
142-
5. After maintainer approval to ship, make one commit per accepted fix, with its own changelog entry when user-facing.
142+
5. After maintainer approval to ship, make one commit per accepted fix, with release-note context in the PR body or commit message when user-facing.
143143
6. Pull/rebase, push, then comment and close only the issues that were fixed or explicitly triaged closed.
144144

145145
Do not batch unrelated issue fixes into one commit. Do not publish, comment, close, or label during the review/prove phase.
146146

147-
Missing changelog is not a PR review finding or merge blocker. If landing/fixing a user-visible change, add/update changelog automatically when practical; never ask or block solely on it.
147+
Missing `CHANGELOG.md` is not a PR review finding or merge blocker. If landing/fixing a user-visible change, make sure the PR body or commit message captures the release-note context; never ask or block solely on it.
148148

149149
Only list candidates that pass all gates:
150150

@@ -244,9 +244,8 @@ gh search issues --repo openclaw/openclaw --match title,body --limit 50 \
244244

245245
## Follow PR review and landing hygiene
246246

247-
- Never mention merge conflicts that are relatively easy to resolve, such as
248-
`CHANGELOG.md` entries, in review-only output. These are landing mechanics,
249-
not correctness findings.
247+
- Never mention release-note bookkeeping in review-only output. It is landing
248+
or release-generation mechanics, not a correctness finding.
250249
- If bot review conversations exist on your PR, address them and resolve them yourself once fixed.
251250
- Leave a review conversation unresolved only when reviewer or maintainer judgment is still needed.
252251
- Before landing any PR with non-trivial code changes, run `$autoreview` until no accepted/actionable findings remain, unless equivalent manual review already covered it, the change is trivial/docs-only, or the user opts out.

.agents/skills/release-openclaw-maintainer/SKILL.md

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ Use this skill for release and publish-time workflow. Load `$release-private` if
2323
green. Then branch from that commit so regular development can continue on
2424
`main` while release validation runs.
2525
- Before release branching, commit any dirty files in coherent groups, push,
26-
pull/rebase, then run `/changelog` on `main` and commit/push/pull that
26+
pull/rebase, then generate `CHANGELOG.md` on `main` from merged PRs and all
27+
direct commits since the last reachable release tag. Commit/push/pull that
2728
changelog rewrite immediately before creating the release branch.
2829
- During release planning, inspect both `src/plugins/compat/registry.ts` and
2930
`src/commands/doctor/shared/deprecation-compat.ts` before branching and again
@@ -68,8 +69,8 @@ Use this skill for release and publish-time workflow. Load `$release-private` if
6869
or clawgrit reports. Report regressions explicitly. A major regression is a
6970
release blocker unless the operator waives it or the data clearly proves
7071
infrastructure noise.
71-
- Use `/changelog` before version/tag preparation so the top changelog section
72-
is deduped and ordered by user impact.
72+
- Generate the changelog before version/tag preparation so the top changelog
73+
section is deduped and ordered by user impact.
7374
- Do not create beta-specific `CHANGELOG.md` headings. Beta releases use the
7475
stable base version section, for example `v2026.4.20-beta.1` uses
7576
`## 2026.4.20` release notes.
@@ -136,11 +137,25 @@ Use this skill for release and publish-time workflow. Load `$release-private` if
136137

137138
## Build changelog-backed release notes
138139

140+
- `CHANGELOG.md` is release-owned. Normal PRs and direct `main` fixes should
141+
not edit it.
139142
- Before release branching or tagging, rewrite the target `CHANGELOG.md`
140-
section from commit history, not just from existing notes: scan commits since
141-
the last reachable release tag, add missed user-facing changes, dedupe
142-
overlapping entries, and sort each section from most to least interesting for
143-
users.
143+
section from history, not existing notes. Use the last reachable stable or
144+
beta release tag as the base, then inspect every commit through the target
145+
release SHA.
146+
- Include both merged PR commits and direct commits on `main`. Direct commits
147+
matter: infer notes from their subject, body, touched files, linked issues,
148+
tests, and nearby code when no PR body exists.
149+
- Prefer PR bodies, issue links, review proof, and commit bodies over commit
150+
subjects alone. If a commit fixed an issue directly, the commit body should
151+
name the user-visible behavior, affected surface, issue ref, and credited
152+
reporter/contributor when known.
153+
- Treat missing context as a release-note audit gap: inspect the diff and linked
154+
issue, draft the best accurate entry, and note the uncertainty for maintainer
155+
review rather than inventing impact.
156+
- Add missed user-facing changes, remove internal-only noise, dedupe overlapping
157+
PR/direct-commit entries, and sort each section from most to least interesting
158+
for users.
144159
- Changelog entries should be user-facing, not internal release-process notes.
145160
- GitHub release and prerelease bodies must use the full matching
146161
`CHANGELOG.md` version section, not highlights or an excerpt. When creating

.github/codex/prompts/docs-agent.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Hard limits:
1212
- Do not change production code, tests, package metadata, generated baselines, lockfiles, or CI config.
1313
- Keep changes minimal and factual.
1414
- Use "plugin/plugins" in user-facing docs/UI/changelog; `extensions/` is only the internal workspace layout.
15-
- Do not add a changelog entry unless the docs update describes a user-facing behavior/API change from the triggering commit.
15+
- Do not add `CHANGELOG.md` entries during normal docs work. Capture user-facing release-note context in the PR body or commit message instead.
1616

1717
Allowed paths:
1818

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Docs: https://docs.openclaw.ai
66

77
### Changes
88

9+
- Cron: default `cron.maxConcurrentRuns` to 8 so scheduled automations and their isolated agent turns can make progress in parallel without explicit configuration.
910
- QA-Lab: add `qa coverage --match <query>` so focused proof selection can discover matching scenarios from existing metadata before running live or remote lanes.
1011
- Control UI: add an ephemeral Activity tab for sanitized live tool activity summaries without persisting raw telemetry. Fixes #12831. Thanks @BunsDev.
1112
- Build: include `ui:build` in the `full` and `ciArtifacts` profiles of `scripts/build-all.mjs` so `pnpm build` always rebuilds `dist/control-ui` after `tsdown` cleans `dist`, removing the second-command requirement and the missing-asset failure mode for source/runtime installs and CI artifact uploads. (#85206)
@@ -15,13 +16,25 @@ Docs: https://docs.openclaw.ai
1516

1617
### Fixes
1718

19+
- Agents/media: hydrate current-turn image attachments from filename-derived MIME types so active vision can see generated or forwarded images whose source omitted an image content type. (#84812) Thanks @marchpure.
20+
- Agents/fs: point workspace-only scratch-path guidance at in-workspace temp directories while keeping host-root writes rejected by the tool guard. (#86501) Thanks @tianxiaochannel-oss88.
21+
- Agents/media: keep async cron media completions scoped to their run session while preserving direct delivery for stale generated-media success and failure notifications. (#86529) Thanks @ai-hpc.
22+
- Gateway: emit plugin `session_end`/`session_start` hooks when `agent.send` rotates or replaces a session id, keeping hook lifecycle state aligned with `sessions.changed` notifications. Fixes #83507. (#85875) Thanks @brokemac79.
23+
- OpenShell/SSH: reject malformed generated exec commands before sandbox/session setup so unresolved workflow placeholders fail fast instead of reaching the remote shell. Fixes #72373. Thanks @brokemac79.
24+
- Google: stop normalizing `gemini-3.1-flash-lite` to the retired preview endpoint and update Flash Lite alias guidance to the GA model id. Fixes #86151. (#86240) Thanks @SebTardif.
25+
- Installer: make Alpine apk installs cover Git, verify the Node runtime floor, try `nodejs-current`, and report Alpine version guidance when repositories only provide older Node packages.
26+
- Agents/status: prefer the active Claude CLI OAuth auth label over an unused Anthropic env API-key label for equivalent runtime aliases. Fixes #80184. (#86570) Thanks @brokemac79.
1827
- Agents/media: send direct fallback for generated media still missing after an active requester wake fails. (#85489) Thanks @fuller-stack-dev.
1928
- Agents: derive overflow compaction budgets from provider-reported and synthetic over-budget token counts so confirmed context overflows compact before retrying. (#70473) Thanks @fuller-stack-dev.
2029
- Agents/Codex: recover Codex context-window prompt errors through overflow compaction and surface reset guidance when recovery is exhausted. (#85542) Thanks @fuller-stack-dev.
2130
- Agent transcript: include OpenClaw agent session logs when finding local transcript candidates.
31+
- Crabbox: bootstrap raw AWS macOS shell commands wrapped in absolute `time` paths so RSS probes can run Node and pnpm on fresh macOS runners.
32+
- Crabbox: bootstrap raw AWS macOS shell commands even when setup statements precede Node or pnpm usage.
2233
- Sessions/doctor: load large session stores without clone amplification during read-only doctor checks and reclaim stale `sessions.json.*.tmp` sidecars. Fixes #56827. Thanks @openperf.
2334
- Tests: clean successful plugin gateway gauntlet isolated temp roots while keeping an explicit preservation switch for failed/debug runs.
2435
- Plugins/perf: reuse derived plugin metadata snapshots for the lifetime of the process so reply-time skill setup no longer rescans plugin metadata on every turn.
36+
- Discord/OpenAI voice: keep wake-name master consults using the current speaker context after ignored ambient transcripts and shorten the default capture silence grace.
37+
- Doctor: skip redundant Gateway restart prompts when a recent supervisor restart leaves the Gateway healthy. Fixes #86518. (#86533) Thanks @liaoyl830.
2538
- Gateway: keep session-only Control UI tool-start mirrors flowing during diagnostic queue pressure instead of silently dropping non-terminal tool updates.
2639
- Agents/memory: return optional not-found context for missing date-only daily memory reads instead of logging benign first-run `ENOENT` failures. Fixes #82928. Thanks @galiniliev.
2740
- Discord: merge streamed text captions into following media block replies so captions and attachments send as one message. (#86487) Thanks @neeravmakwana.
@@ -58,6 +71,7 @@ Docs: https://docs.openclaw.ai
5871
- xAI/LM Studio: avoid buffering ordinary bracketed or `final` prose until stream completion while watching for plain-text tool-call fallbacks.
5972
- Doctor: warn and continue when the cron job store exists but cannot be read so later health checks still run. Fixes #86102. (#86384) Thanks @1052326311.
6073
- Discord: suppress a bot's previous reply body and referenced media from prompt context when a user replies to that bot message, while keeping reply metadata for routing. (#86238) Thanks @fuller-stack-dev.
74+
- Discord: restore bare numeric channel IDs for outbound message-tool sends while keeping explicit DM targets unambiguous. (#86571) Thanks @joshavant.
6175
- Docker E2E: avoid rebuilding the Control UI twice while preparing the shared OpenClaw package tarball for package-backed scenario runs.
6276
- Tests: avoid rebuilding the Control UI twice during the installer Docker smoke now that `pnpm build` includes `ui:build`.
6377
- Tests: give QA config mutation RPCs enough native Windows budget to finish gateway config writes and restart settle after hot scenario runs.
@@ -84,6 +98,7 @@ Docs: https://docs.openclaw.ai
8498
- Tests: sample the Windows kitchen-sink RPC gateway directly and serialize RSS probes so native runs keep the memory guard active.
8599
- Tests: normalize bundled plugin lifecycle probe paths and state-root lookup so native Windows release sweeps accept valid packaged plugin installs.
86100
- Agents/Claude CLI: route live native Bash permission requests through OpenClaw exec policy so Claude turns no longer stall on `control_request`, and document that OpenClaw exec policy is authoritative. Fixes #80819. (#86330, from #81971) Thanks @guthirry and @sallyom.
101+
- Security audit: warn when YOLO OpenClaw exec policy overrides a restrictive raw Claude `--permission-mode` for managed live sessions. (#86557) Thanks @sallyom.
87102
- Config: keep benign legacy metadata write anomalies out of default doctor and config command output while preserving explicit anomaly logging for diagnostics.
88103
- Codex: log when implicit app-server `never` approvals are promoted for OpenClaw tool policy, including whether the trigger was a `before_tool_call` hook or trusted tool policy.
89104
- Codex harness: make subscription usage-limit errors without reset times explain that OpenClaw cannot determine the reset and point users to wait until Codex is available, use another Codex account, or switch to another configured model/provider. Thanks @amknight.
@@ -189,6 +204,7 @@ Docs: https://docs.openclaw.ai
189204
- Gateway/plugins: reuse a compatible Gateway startup plugin registry during dispatch so safe plugin dispatches avoid redundant registry loading. (#84324) Thanks @ai-hpc.
190205
- Plugins/SDK: add a general `embeddingProviders` capability contract and registration API so embeddings can become a reusable provider surface outside memory-specific adapters.
191206
- Dependencies: refresh provider, plugin, UI, and tooling packages, update `protobufjs` to 8.4.0 to clear the current npm advisory, and carry the Claude ACP completion patch forward to `@agentclientprotocol/claude-agent-acp` 0.36.1.
207+
- ACPX: bump the bundled ACP backend to `acpx` 0.10.0 for session export/import support.
192208
- Agents/tools: remove the old sender-owner tool gating path so configured tools stay visible for trusted sessions while command and channel-action auth still carry real sender identity.
193209
- QA-Lab: add curated mock JSONL replay fixtures and first-drift reporting for runtime-parity audits. (#80323, refs #80176) Thanks @100yenadmin.
194210
- QA-Lab: add a QA bus tool-trace visibility scenario for sanitized tool-call assertions.
@@ -208,6 +224,7 @@ Docs: https://docs.openclaw.ai
208224

209225
### Fixes
210226

227+
- CLI/update: allow package-manager-managed hardlinked package roots during global update swaps while keeping generic plugin, hook, and dependency-free install moves fail-closed. (#85569) Thanks @ai-hpc.
211228
- Gateway/update: avoid fetching unrelated tags during dev-channel git updates so moved release tags do not block branch-based updates. (#84737) Thanks @rubencu.
212229
- CLI/update: suppress the expected future-config warning while an old update parent hands off to the freshly installed post-core process.
213230
- MiniMax: store OAuth token expiry as an absolute millisecond timestamp so OAuth profiles no longer appear expired on every request. (#83480) Thanks @NianJiuZst.
@@ -2119,6 +2136,7 @@ Docs: https://docs.openclaw.ai
21192136
- Telegram/groups: include the recent local chat window and nearby reply-target window as generic inbound context so stale reply ancestry does not overshadow the live group conversation.
21202137
- Plugins/Nix: allow externally configured plugin roots under `/nix/store` to load in `OPENCLAW_NIX_MODE=1` while keeping normal external plugin hardlink rejection unchanged. Thanks @joshp123.
21212138
- Nextcloud Talk: include the required bot `response` feature in setup, explain missing `--feature response` on rejected sends, and surface missing response capability in doctor/status checks. Fixes #78935. (#79657) Thanks @joshavant.
2139+
- Cron/diagnostics: emit the existing `message.queued`, `session.state` (processing/idle), and `message.processed` lifecycle events for isolated-cron agent turns in `runCronIsolatedAgentTurn`, matching the dispatch and embedded-runner paths so subscribers (diagnostics OTLP, OTel exporters, custom observability plugins) get per-run session attribution instead of bucketing isolated cron LLM calls under static fallback ids. Events are gated on `isDiagnosticsEnabled(cfg)` so the documented `diagnostics.enabled: false` master toggle continues to silence the recorder. (#79214) Thanks @arniesaha.
21222140
- fix(discord): gate user allowlist name resolution [AI]. (#79002) Thanks @pgondhi987.
21232141
- fix(msteams): gate startup user allowlist resolution [AI]. (#79003) Thanks @pgondhi987.
21242142
- Infra/fetch-timeout: pass `operation` and `url` context to `buildTimeoutAbortSignal` from the music-generate reference fetch and the Matrix guarded redirect transport, so the `fetch timeout reached; aborting operation` warning carries actionable structured fields instead of a bare line. Fixes #79195. Thanks @pandadev66.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
e8e71a715bd33405280b5a9f6b6e788abed636fba66ec5f3a4f9b9a768a1637f config-baseline.json
2-
003183db53a41905c540f37b1d30b3006ef8906915e13eac844b643cd210fdfe config-baseline.core.json
3-
859b021f65400df22c95ae55b074cf26c83d3a0bfadb3fceeaca522f6ea391ae config-baseline.channel.json
1+
5f62e1fcb1b641432dbf30213b8be9b7fd5b70d53f048c8d033a3bdc723d16f9 config-baseline.json
2+
0b75385e71e2a3aec5736b7df55e318aae81d3ad1b5794966400a2a7f01c3eca config-baseline.core.json
3+
18415d0f8a920e4d50b2bd46f10dc02bdea7c387c1f5e1f46fd4990ebca51eed config-baseline.channel.json
44
74441e331aabb3026784c148d4ee5ce3f489a15ed87ffd9b7ba0c5e2a7bc93be config-baseline.plugin.json

docs/automation/cron-jobs.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ Model override note:
436436
cron: {
437437
enabled: true,
438438
store: "~/.openclaw/cron/jobs.json",
439-
maxConcurrentRuns: 1,
439+
maxConcurrentRuns: 8,
440440
retry: {
441441
maxAttempts: 3,
442442
backoffMs: [60000, 120000, 300000],
@@ -449,7 +449,7 @@ Model override note:
449449
}
450450
```
451451

452-
`maxConcurrentRuns` limits both scheduled cron dispatch and isolated agent-turn execution. Isolated cron agent turns use the queue's dedicated `cron-nested` execution lane internally, so raising this value lets independent cron LLM runs progress in parallel instead of only starting their outer cron wrappers. The shared non-cron `nested` lane is not widened by this setting.
452+
`maxConcurrentRuns` limits both scheduled cron dispatch and isolated agent-turn execution, and defaults to 8. Isolated cron agent turns use the queue's dedicated `cron-nested` execution lane internally, so raising this value lets independent cron LLM runs progress in parallel instead of only starting their outer cron wrappers. The shared non-cron `nested` lane is not widened by this setting.
453453

454454
The runtime state sidecar is derived from `cron.store`: a `.json` store such as `~/clawd/cron/jobs.json` uses `~/clawd/cron/jobs-state.json`, while a store path without a `.json` suffix appends `-state.json`.
455455

0 commit comments

Comments
 (0)