diff --git "a/data/prs.json" "b/data/prs.json" --- "a/data/prs.json" +++ "b/data/prs.json" @@ -1,13285 +1,37184 @@ [ { - "additions": 3565, - "author": "Takhoffman", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - Problem: `/tools` could mislead users by reflecting catalog/config guesses instead of the tools the active agent could actually use in the current session, and native command surfaces did not expose the same useful modes as te\u2026", - "changed_files": 56, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54088", - "created_at": "2026-03-24T23:40:00Z", - "deletions": 989, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54088/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54088", - "labels": [ - "app: web-ui", - "gateway", - "agents", - "maintainer", - "size: XL" - ], - "merged": true, - "number": 54088, - "review_comments_count": 12, - "state": "open", - "title": "feat: add /tools runtime availability view", - "updated_at": "2026-03-24T23:44:25Z" - }, - { - "additions": 34, - "author": "hclsys", + "additions": 2, + "author": "EronFan", "author_association": "CONTRIBUTOR", - "body_excerpt": "lobster-biscuit Closes #53878 ## Problem On macOS, `openclaw gateway stop` runs `launchctl bootout` which unloads the LaunchAgent. After that, `openclaw gateway start` just prints \"not loaded\" hints and exits \u2014 it never re-bootstraps the s\u2026", - "changed_files": 1, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54087", - "created_at": "2026-03-24T23:39:32Z", - "deletions": 12, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54087/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54087", - "labels": [ - "cli", - "size: XS" - ], - "merged": true, - "number": 54087, - "review_comments_count": 6, - "state": "open", - "title": "fix(daemon): bootstrap stopped service on gateway start", - "updated_at": "2026-03-24T23:42:29Z" - }, - { - "additions": 41, - "author": "evanjacobson", - "author_association": "NONE", - "body_excerpt": "## Summary - Moves plugin registry initialization in the `pairing` subcli from **registration time** to **action time**, eliminating an eager `loadOpenClawPlugins` call that ran on every CLI invocation that triggered lazy subcli registrati\u2026", - "changed_files": 3, + "body_excerpt": "## Summary Increases `LAUNCH_AGENT_THROTTLE_INTERVAL_SECONDS` from `1` to `30` in the launchd plist template. ## Problem When the gateway exits due to a missing config, `launchd` with `KeepAlive: true` and `ThrottleInterval: 1` respawns it\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 0, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54086", - "created_at": "2026-03-24T23:32:38Z", - "deletions": 17, - "draft": true, - "files_url": "https://github.com/openclaw/openclaw/pull/54086/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54086", - "labels": [ - "cli", - "size: S" - ], + "conversation_url": "https://github.com/openclaw/openclaw/pull/66538", + "created_at": "2026-04-14T12:27:29Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66538/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66538", + "labels": [], "merged": false, - "number": 54086, + "number": 66538, "review_comments_count": 0, "state": "open", - "title": "perf(cli): defer plugin loading in pairing CLI to action time", - "updated_at": "2026-03-24T23:37:20Z" + "title": "fix: increase ThrottleInterval from 1s to 30s to prevent crash-loop log spam", + "updated_at": "2026-04-14T12:27:29Z" }, { - "additions": 135, - "author": "evanjacobson", - "author_association": "NONE", - "body_excerpt": "## Summary - Broadens the respawn-skip policy in `src/cli/respawn-policy.ts` from a narrow blocklist (only `--help`/`--version`) to an allowlist of commands that actually need `--disable-warning=ExperimentalWarning` - Only `gateway`, `daem\u2026", + "additions": 166, + "author": "sahilsatralkar", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: If this PR fixes a plugin beta-release blocker, title it `fix(): beta blocker - ` and link the matching `Beta blocker: - ` issue labeled `be\u2026", "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 0, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54085", - "created_at": "2026-03-24T23:31:56Z", - "deletions": 18, - "draft": true, - "files_url": "https://github.com/openclaw/openclaw/pull/54085/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54085", + "conversation_url": "https://github.com/openclaw/openclaw/pull/66537", + "created_at": "2026-04-14T12:26:35Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66537/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66537", "labels": [ - "cli", + "agents", "size: S" ], "merged": false, - "number": 54085, + "number": 66537, "review_comments_count": 0, "state": "open", - "title": "perf(cli): skip process respawn for short-lived CLI commands", - "updated_at": "2026-03-24T23:37:37Z" + "title": "Fix: Issue 66397 silent final answer loss", + "updated_at": "2026-04-14T12:26:49Z" }, { - "additions": 348, - "author": "evanjacobson", + "additions": 16, + "author": "skylee-01", "author_association": "NONE", - "body_excerpt": "## Summary - Add a fast route for `openclaw pairing list` that bypasses full Commander program construction and plugin loading overhead - Extract `runPairingList` into a dedicated `src/cli/pairing-list.ts` module (dynamically imported by t\u2026", - "changed_files": 7, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, - "comments_count": 0, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54084", - "created_at": "2026-03-24T23:31:52Z", - "deletions": 2, - "draft": true, - "files_url": "https://github.com/openclaw/openclaw/pull/54084/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54084", + "body_excerpt": "Fixes #66314 ## Problem When all model-fallback candidates are skipped due to billing cooldown, users see a generic `\"Something went wrong\"` instead of the proper billing error message. **Trace:** 1. A billing error causes a profile to ent\u2026", + "changed_files": 2, + "cluster_id": "cluster-66314-5", + "cluster_ids": [ + "cluster-66314-5" + ], + "cluster_role": "member", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66536", + "created_at": "2026-04-14T12:25:01Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66536/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66536", "labels": [ - "cli", - "size: M" + "agents", + "size: XS" ], "merged": false, - "number": 54084, + "number": 66536, "review_comments_count": 0, "state": "open", - "title": "perf(cli): add fast route for pairing list", - "updated_at": "2026-03-24T23:36:25Z" + "title": "fix(agents): recognize billing-cooldown skip messages as billing errors", + "updated_at": "2026-04-14T12:26:21Z" }, { - "additions": 21, - "author": "jhawpetoss6-collab", + "additions": 7, + "author": "skylee-01", "author_association": "NONE", - "body_excerpt": "This PR introduces the `UsageGuard`, which works alongside the Telemetry monitor to proactively throttle requests BEFORE they hit provider-side rate limits (#remediation). ### Changes: - Added `src/infra/model-client/guard/usage-guard.ts`.\u2026", + "body_excerpt": "## Summary Fixes #66403 \u2014 exec approval popup can push action buttons below the viewport when the command preview is long. The mobile responsive styles already had the correct fix (`max-height`, `display: flex; flex-direction: column`, `ov\u2026", "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54083", - "created_at": "2026-03-24T23:31:26Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66529", + "created_at": "2026-04-14T12:14:20Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54083/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54083", + "files_url": "https://github.com/openclaw/openclaw/pull/66529/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66529", "labels": [ - "size: XS", - "r: too-many-prs" + "app: web-ui", + "size: XS" ], "merged": false, - "number": 54083, - "review_comments_count": 5, - "state": "closed", - "title": "feat: implement proactive UsageGuard for API limit hardening", - "updated_at": "2026-03-24T23:36:51Z" + "number": 66529, + "review_comments_count": 0, + "state": "open", + "title": "fix(ui): keep exec approval popup within viewport on long commands", + "updated_at": "2026-04-14T12:16:09Z" }, { - "additions": 35, - "author": "evanjacobson", - "author_association": "NONE", - "body_excerpt": "## Summary - `pnpm openclaw ` currently triggers three Node.js process startups: (1) `run-node.mjs` itself, (2) `run-node.mjs` spawns `node openclaw.mjs ` without `--disable-warning=ExperimentalWarning`, and (3) `entry.ts` detec\u2026", + "additions": 92, + "author": "feiskyer", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Fix `ConfigMutationConflictError` when adding GitHub Copilot model via `openclaw configure`. The configure wizard reads the config snapshot hash once at start, but plugins (e.g. github-copilot) can mutate the config file during\u2026", "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 0, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54082", - "created_at": "2026-03-24T23:30:21Z", - "deletions": 16, - "draft": true, - "files_url": "https://github.com/openclaw/openclaw/pull/54082/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54082", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66528", + "created_at": "2026-04-14T12:13:08Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66528/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66528", "labels": [ - "scripts", + "commands", "size: S" ], "merged": false, - "number": 54082, - "review_comments_count": 0, + "number": 66528, + "review_comments_count": 2, "state": "open", - "title": "perf(cli): eliminate extra process spawn in dev runner", - "updated_at": "2026-03-24T23:30:35Z" + "title": "fix(configure): re-read config hash after persist to avoid stale-hash race (#64188)", + "updated_at": "2026-04-14T12:17:46Z" }, { - "additions": 23, - "author": "jhawpetoss6-collab", + "additions": 1819, + "author": "klingai-dev", "author_association": "NONE", - "body_excerpt": "This PR introduces the `ClientSideRateLimiter`, which allows OpenClaw to proactively space out API requests to prevent triggering provider-side rate limits (#remediation). ### Changes: - Added `src/infra/model-client/throttling/rate-limite\u2026", - "changed_files": 1, + "body_excerpt": "## Summary Adds a new bundled extension klingai that provides both image and video generation providers. This PR introduces provider registration, runtime integration, onboarding/auth wiring, and docs updates so KlingAI can be configured a\u2026", + "changed_files": 19, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54081", - "created_at": "2026-03-24T23:27:31Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66526", + "created_at": "2026-04-14T12:08:17Z", + "deletions": 13, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54081/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54081", + "files_url": "https://github.com/openclaw/openclaw/pull/66526/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66526", "labels": [ - "size: XS", - "r: too-many-prs" + "docs", + "size: XL" ], "merged": false, - "number": 54081, - "review_comments_count": 5, - "state": "closed", - "title": "feat: implement client-side API throttling to prevent 429 errors", - "updated_at": "2026-03-24T23:29:59Z" + "number": 66526, + "review_comments_count": 3, + "state": "open", + "title": "feat(video_gen): add bundled image/video extension 'klingai'", + "updated_at": "2026-04-14T12:17:26Z" }, { - "additions": 21, - "author": "jhawpetoss6-collab", + "additions": 394, + "author": "houston2394", "author_association": "NONE", - "body_excerpt": "This PR introduces the `ApiUsageMonitor`, which tracks provider-specific performance and rate limit hits in the background (#diagnostics). ### Changes: - Added `src/infra/telemetry/api-monitor.ts`. - Support for real-time tracking of 429 e\u2026", - "changed_files": 1, + "body_excerpt": "## Summary Adds `opencode-full` plugin that bridges OpenCode's development tools into OpenClaw's agent runtime. - **Tools**: LSP operations, automated refactoring, TDD workflow, test management, code review, brainstorming, debugging - **Co\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54079", - "created_at": "2026-03-24T23:27:06Z", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66525", + "created_at": "2026-04-14T11:55:53Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54079/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54079", + "files_url": "https://github.com/openclaw/openclaw/pull/66525/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66525", "labels": [ - "size: XS", - "r: too-many-prs" + "size: M" ], "merged": false, - "number": 54079, - "review_comments_count": 4, - "state": "closed", - "title": "feat: implement API Usage Telemetry for proactive rate limit monitoring", - "updated_at": "2026-03-24T23:29:20Z" + "number": 66525, + "review_comments_count": 8, + "state": "open", + "title": " add OpenCode integration plugin with dev tools", + "updated_at": "2026-04-14T12:25:12Z" }, { - "additions": 28, - "author": "jhawpetoss6-collab", + "additions": 13, + "author": "liuchuanjie", "author_association": "NONE", - "body_excerpt": "This PR introduces `executeWithSmartRetry`, a core utility that wraps model API calls with exponential backoff and jitter for 429 and 503 errors (#remediation). ### Changes: - Added `src/infra/model-client/retry-handler.ts`. - Implements s\u2026", + "body_excerpt": "## Problem Group messages feel noticeably slower than DMs because the typing indicator only fires when the first AI token arrives (`onReplyStart`). Before that, there's significant pre-dispatch overhead that's invisible to users: 1. **Pend\u2026", "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54078", - "created_at": "2026-03-24T23:26:47Z", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66521", + "created_at": "2026-04-14T11:48:46Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54078/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54078", + "files_url": "https://github.com/openclaw/openclaw/pull/66521/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66521", "labels": [ - "size: XS", - "r: too-many-prs" + "channel: signal", + "size: XS" ], "merged": false, - "number": 54078, - "review_comments_count": 3, - "state": "closed", - "title": "feat: implement Smart API Retry logic for rate limits and timeouts", - "updated_at": "2026-03-24T23:29:16Z" + "number": 66521, + "review_comments_count": 2, + "state": "open", + "title": "fix(signal): send early typing indicator before dispatch", + "updated_at": "2026-04-14T11:51:42Z" }, { - "additions": 14, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR introduces logic to suppress assistant narration text when the `message()` tool is explicitly used to deliver a payload in the same turn (#54061). ### Changes: - Added `shouldSuppressAssistantNarration` check to the auto-reply flow\u2026", - "changed_files": 1, + "additions": 730, + "author": "cheapestinference", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Motivation OpenClaw users increasingly run multiple agents side-by-side against models with wildly different context windows \u2014 e.g. GLM 200k, Claude 200k, Kimi K2 1M, and smaller local models. The compaction config today mixes ratios (`\u2026", + "changed_files": 13, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54075", - "created_at": "2026-03-24T23:22:07Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66517", + "created_at": "2026-04-14T11:43:30Z", + "deletions": 8, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54075/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54075", + "files_url": "https://github.com/openclaw/openclaw/pull/66517/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66517", "labels": [ - "size: XS", - "r: too-many-prs" + "agents", + "size: L" ], "merged": false, - "number": 54075, - "review_comments_count": 4, - "state": "closed", - "title": "feat: suppress inline narration when message() tool is used", - "updated_at": "2026-03-24T23:27:29Z" + "number": 66517, + "review_comments_count": 3, + "state": "open", + "title": "feat(config): add ratio-based sibling fields for compaction token budgets", + "updated_at": "2026-04-14T11:57:28Z" }, { - "additions": 1003, - "author": "Sheldenshi", + "additions": 516, + "author": "bullwinkle", "author_association": "NONE", - "body_excerpt": "Removes all ClawHub references across docs (en + zh-CN), source, and config. Deletes bundled skill-creator and clawhub skills. - 41 files changed, ~2200 lines removed - Fixes compile error from leftover `appendClawHubHint()` call - Cleans\u2026", - "changed_files": 87, + "body_excerpt": "> **Note:** This replaces #59768, which was accidentally closed when the fork was temporarily made private. GitHub does not allow reopening PRs once the fork relationship is broken \u2014 hence this new PR. All commits are identical. --- ## Wha\u2026", + "changed_files": 15, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54074", - "created_at": "2026-03-24T23:21:56Z", - "deletions": 2526, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54074/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54074", + "conversation_url": "https://github.com/openclaw/openclaw/pull/66515", + "created_at": "2026-04-14T11:30:41Z", + "deletions": 0, + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/66515/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66515", "labels": [ "docs", - "channel: discord", - "app: web-ui", - "gateway", - "cli", "scripts", - "commands", - "agents", - "size: XL" + "size: M" ], "merged": false, - "number": 54074, + "number": 66515, "review_comments_count": 3, "state": "open", - "title": "chore: remove ClawHub references and bundled skill-creator/clawhub skills", - "updated_at": "2026-03-24T23:30:08Z" + "title": "feat: add YandexGPT as native provider via Yandex AI Studio", + "updated_at": "2026-04-14T12:27:21Z" }, { - "additions": 17, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR addresses a security gap where sandboxed agents could bypass local media root restrictions by using `mediaUrl` or `fileUrl` aliases (#54034). ### Changes: - Added `normalizeSandboxMediaParams` to the outbound processing flow. - Ens\u2026", - "changed_files": 1, + "additions": 120, + "author": "yfge", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - keep native Ollama chat requests warm across adjacent turns with `keep_alive` - cover the request shape in stream runtime tests - reduce the cold-start penalty reported in #64541 for gemma4-class local models ## Testing - pnpm\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54072", - "created_at": "2026-03-24T23:21:39Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66511", + "created_at": "2026-04-14T11:15:29Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54072/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54072", + "files_url": "https://github.com/openclaw/openclaw/pull/66511/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66511", "labels": [ - "size: XS", - "r: too-many-prs" + "size: S" ], "merged": false, - "number": 54072, - "review_comments_count": 4, - "state": "closed", - "title": "fix: close sandbox media root bypass for mediaUrl and fileUrl aliases", - "updated_at": "2026-03-24T23:24:20Z" + "number": 66511, + "review_comments_count": 1, + "state": "open", + "title": "fix: reduce ollama gemma4 cold-start penalty on first heavy turn", + "updated_at": "2026-04-14T11:18:24Z" }, { - "additions": 25, - "author": "jhawpetoss6-collab", + "additions": 1, + "author": "kiatng", "author_association": "NONE", - "body_excerpt": "This PR introduces the `MatrixSyncJanitor`, addressing a critical regression where the Matrix channel stops processing events after a config hot-reload (#54069). ### Changes: - Added `repairMatrixSyncState` to detect and clear future-times\u2026", + "body_excerpt": "### Context\\n\\nThis PR resolves an issue where the build runner attempts to execute a native binary (like the pnpm ELF executable) as JavaScript, which leads to syntax errors like:\\n\\n`\\n\\n### Root Cause\\nIn the , the script uses `process.\u2026", "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54071", - "created_at": "2026-03-24T23:21:18Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66504", + "created_at": "2026-04-14T10:51:21Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54071/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54071", + "files_url": "https://github.com/openclaw/openclaw/pull/66504/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66504", "labels": [ - "channel: matrix", - "size: XS", - "r: too-many-prs" + "scripts", + "size: XS" ], "merged": false, - "number": 54071, - "review_comments_count": 5, - "state": "closed", - "title": "fix: resolve Matrix event dispatch hangs after config hot-reload", - "updated_at": "2026-03-24T23:23:47Z" + "number": 66504, + "review_comments_count": 2, + "state": "open", + "title": "fix: prevent Node.js from executing native binaries in the pnpm runner", + "updated_at": "2026-04-14T12:02:48Z" }, { - "additions": 24, - "author": "jhawpetoss6-collab", + "additions": 88, + "author": "CnxLuc", "author_association": "NONE", - "body_excerpt": "This PR introduces the `InstantPayoutGateway`, enabling OpenClaw users and agents to realize earnings immediately via on-chain USDC or direct-to-card fiat transfers. ### Changes: - Added `src/infra/payments/instant/payout-gateway.ts`. - Su\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - keep gateway service installs off version-pinned pnpm store paths - resolve stable `node_modules/openclaw/...` candidates when the CLI is launched from a versioned `.pnpm/.../openclaw.mjs` path - add a regression test for the\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54068", - "created_at": "2026-03-24T23:14:43Z", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66502", + "created_at": "2026-04-14T10:49:17Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54068/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54068", + "files_url": "https://github.com/openclaw/openclaw/pull/66502/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66502", "labels": [ - "size: XS", - "r: too-many-prs" + "gateway", + "size: S" ], "merged": false, - "number": 54068, - "review_comments_count": 5, - "state": "closed", - "title": "feat: implement instant USDC and Credit/Debit card payouts", - "updated_at": "2026-03-24T23:16:57Z" + "number": 66502, + "review_comments_count": 0, + "state": "open", + "title": "fix: keep gateway service path stable across pnpm upgrades", + "updated_at": "2026-04-14T10:53:04Z" }, { - "additions": 22, - "author": "jhawpetoss6-collab", + "additions": 150, + "author": "Loach-Smile", "author_association": "NONE", - "body_excerpt": "This PR introduces a post-update integrity verification step, ensuring that the system identifies and auto-repairs inconsistent states caused by partial updates or failed builds (#updates). ### Changes: - Added `src/infra/updates/remediati\u2026", - "changed_files": 1, + "body_excerpt": "# GitHub Pull Request **Title:** fix(gateway): WebSocket delta corruption with inline directive tags **Base branch:** main **Compare branch:** fix/websocket-delta-corruption-whitespace **Labels:** bug, gateway, websocket --- ## Summary Fix\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54067", - "created_at": "2026-03-24T23:10:38Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66499", + "created_at": "2026-04-14T10:44:40Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54067/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54067", + "files_url": "https://github.com/openclaw/openclaw/pull/66499/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66499", "labels": [ - "size: XS", - "r: too-many-prs" + "gateway", + "size: S" ], "merged": false, - "number": 54067, - "review_comments_count": 6, - "state": "closed", - "title": "feat: implement post-update integrity check and self-repairing update logic", - "updated_at": "2026-03-24T23:14:34Z" + "number": 66499, + "review_comments_count": 5, + "state": "open", + "title": "fix(gateway): WebSocket delta corruption with inline directive tags", + "updated_at": "2026-04-14T12:22:47Z" }, { - "additions": 81, - "author": "eliot-onbox", - "author_association": "NONE", - "body_excerpt": "## Problem On POSIX hosts, `path.isAbsolute(\"C:\\\\...\")` returns `false`, so when an agent passes a Windows absolute path to the read/write/edit tools, the workspace root gets prepended \u2014 producing doubled paths like: ``` C:\\Users\\Dan\\.open\u2026", - "changed_files": 4, + "additions": 97, + "author": "ImLukeF", + "author_association": "MEMBER", + "body_excerpt": "## Summary - add `agents.defaults.localModelMode` with `\"default\" | \"lean\"` - make `\"lean\"` drop heavyweight default tools (`browser`, `cron`, `message`) before request assembly - document the setting for local-model troubleshooting and up\u2026", + "changed_files": 10, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54066", - "created_at": "2026-03-24T23:10:25Z", - "deletions": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66495", + "created_at": "2026-04-14T10:40:33Z", + "deletions": 16, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54066/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54066", - "labels": [], + "files_url": "https://github.com/openclaw/openclaw/pull/66495/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66495", + "labels": [ + "docs", + "gateway", + "agents", + "maintainer", + "size: S" + ], "merged": false, - "number": 54066, + "number": 66495, "review_comments_count": 2, "state": "open", - "title": "fix(tools): detect Windows drive-letter paths as absolute on POSIX hosts (#54039)", - "updated_at": "2026-03-24T23:14:33Z" + "title": "Agents: add lean local model mode", + "updated_at": "2026-04-14T11:55:50Z" }, { - "additions": 31, - "author": "jhawpetoss6-collab", + "additions": 440, + "author": "questionares", "author_association": "NONE", - "body_excerpt": "This PR introduces a dedicated `SkillManifestCache`, which caches the results of skill manifest parsing to eliminate redundant filesystem operations during agent startup (#performance). ### Changes: - Added `src/infra/cache/skills/manifest\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - suppress trust and provenance warnings during read-only plugin preload and diagnostics paths - keep `plugins list` behavior unchanged while quieting text `status` and `doctor` - quiet the memory embedding capability fallback u\u2026", + "changed_files": 31, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54065", - "created_at": "2026-03-24T23:10:12Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66491", + "created_at": "2026-04-14T10:33:49Z", + "deletions": 28, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54065/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54065", + "files_url": "https://github.com/openclaw/openclaw/pull/66491/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66491", "labels": [ - "size: XS", - "r: too-many-prs" + "gateway", + "cli", + "commands", + "agents", + "size: M" ], "merged": false, - "number": 54065, - "review_comments_count": 6, - "state": "closed", - "title": "feat: implement persistent SkillManifestCache for faster discovery", - "updated_at": "2026-03-24T23:15:36Z" + "number": 66491, + "review_comments_count": 3, + "state": "open", + "title": "[codex] fix(status): quiet read-only plugin registry loads", + "updated_at": "2026-04-14T11:41:26Z" }, { - "additions": 19, - "author": "jhawpetoss6-collab", + "additions": 152, + "author": "phenomenoner", "author_association": "NONE", - "body_excerpt": "This PR introduces the `FailoverMonitor`, which provides automated diagnostics for the model failover pipeline. It helps identify cases where fallback models succeed but errors are still incorrectly surfaced to the UI (#diagnostics). ### C\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - harden external untrusted-content marker sanitization against common spoofing variants - normalize fullwidth underscores and strip zero-width / bidi control characters before marker detection - ignore whitespace padding and de\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54064", - "created_at": "2026-03-24T23:09:54Z", - "deletions": 0, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66490", + "created_at": "2026-04-14T10:33:38Z", + "deletions": 42, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54064/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54064", + "files_url": "https://github.com/openclaw/openclaw/pull/66490/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66490", "labels": [ - "size: XS", - "r: too-many-prs" + "size: S" ], "merged": false, - "number": 54064, - "review_comments_count": 6, + "number": 66490, + "review_comments_count": 0, "state": "closed", - "title": "feat: implement self-diagnosing failover monitor for model routing resilience", - "updated_at": "2026-03-24T23:16:02Z" + "title": "security: harden external content marker sanitization", + "updated_at": "2026-04-14T11:12:59Z" }, { - "additions": 23, - "author": "jhawpetoss6-collab", + "additions": 22, + "author": "0riginal-claw", "author_association": "NONE", - "body_excerpt": "This PR introduces the `CollaborativeReviewer`, a core component for ensuring high code quality in the in-house bounty platform. It allows multiple agents to perform specialized reviews (e.g. security, logic, style) before a job is marked\u2026", - "changed_files": 1, + "body_excerpt": "- /status context % now uses canonical totalTokens when fresh (matches chat context notice)\\n- Refresh chat history on compaction completion to reflect compacted transcript and cleared token counters\\n\\nFixes openclaw/openclaw#66483", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54063", - "created_at": "2026-03-24T23:09:33Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66485", + "created_at": "2026-04-14T10:15:49Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54063/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54063", + "files_url": "https://github.com/openclaw/openclaw/pull/66485/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66485", "labels": [ - "size: XS", - "r: too-many-prs" + "app: web-ui", + "size: XS" ], "merged": false, - "number": 54063, - "review_comments_count": 5, - "state": "closed", - "title": "feat: implement Collaborative Code Review for multi-agent quality assurance", - "updated_at": "2026-03-24T23:11:34Z" + "number": 66485, + "review_comments_count": 4, + "state": "open", + "title": "Align context usage display, refresh chat after compaction", + "updated_at": "2026-04-14T10:23:35Z" }, { - "additions": 4, - "author": "chocobo9", - "author_association": "NONE", - "body_excerpt": "## Summary - Adds `loginctl enable-linger` and `XDG_RUNTIME_DIR` recovery hints to the non-WSL systemd unavailable error path in `renderSystemdUnavailableHints` - Users on headless/SSH servers now see actionable steps instead of the generi\u2026", - "changed_files": 2, + "additions": 11, + "author": "MoerAI", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Non-OpenAI providers (Ollama, vLLM, Azure AI Foundry, custom OpenAI-compat endpoints) reject requests since 2026.4.11 with \"provider rejected the request schema or tool payload\" because `max_completion_tokens` is sent in the req\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54062", - "created_at": "2026-03-24T23:09:01Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66482", + "created_at": "2026-04-14T10:08:25Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54062/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54062", + "files_url": "https://github.com/openclaw/openclaw/pull/66482/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66482", "labels": [ - "gateway", + "agents", "size: XS" ], - "merged": true, - "number": 54062, - "review_comments_count": 0, + "merged": false, + "number": 66482, + "review_comments_count": 2, "state": "open", - "title": "fix(daemon): add headless server hints to systemd unavailable error", - "updated_at": "2026-03-24T23:10:23Z" + "title": "fix(agents): use max_tokens instead of max_completion_tokens for non-OpenAI providers (#65603)", + "updated_at": "2026-04-14T10:13:11Z" }, { - "additions": 1878195, - "author": "sonpiaz", - "author_association": "NONE", - "body_excerpt": "## Summary Add `gateway.usageWebhook` config to report token usage to external systems after each message completion. ## Use Case Enable Hidrix dashboard (and similar billing systems) to track usage from Telegram/Slack/Discord bots, not ju\u2026", - "changed_files": 10412, + "additions": 105, + "author": "MoerAI", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Feishu reactions API returns error 231001 (\"reaction type is invalid\") because the agent sends raw unicode emojis (e.g. thumbs-up) but the API requires uppercase type strings like `THUMBSUP`. ## Root Cause In `channel.ts`, the `\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54059", - "created_at": "2026-03-24T23:04:24Z", - "deletions": 149210, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66478", + "created_at": "2026-04-14T10:01:29Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54059/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54059", + "files_url": "https://github.com/openclaw/openclaw/pull/66478/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66478", "labels": [ - "docs", - "channel: bluebubbles", - "channel: discord", - "channel: googlechat", - "channel: imessage", - "channel: line", - "channel: matrix", - "channel: mattermost", - "channel: msteams", - "channel: nextcloud-talk", - "channel: nostr", - "channel: signal", - "channel: slack", - "channel: telegram", - "channel: tlon", - "channel: whatsapp-web", - "channel: zalo", - "channel: zalouser", - "app: android", - "app: ios", - "app: macos", - "gateway", - "extensions: copilot-proxy", - "extensions: diagnostics-otel", - "extensions: llm-task", - "extensions: lobster", - "security", - "docker", "channel: feishu", - "channel: twitch", - "extensions: device-pair", - "channel: irc", - "size: XL", - "extensions: acpx", - "extensions: anthropic", - "extensions: cloudflare-ai-gateway", - "extensions: byteplus", - "extensions: huggingface", - "extensions: kimi-coding", - "extensions: kilocode", - "extensions: fal", - "extensions: duckduckgo", - "extensions: deepseek" + "size: S" ], "merged": false, - "number": 54059, - "review_comments_count": 0, - "state": "closed", - "title": "feat: add usage webhook for external billing integration", - "updated_at": "2026-03-24T23:08:11Z" + "number": 66478, + "review_comments_count": 2, + "state": "open", + "title": "fix(feishu): normalize unicode emojis to Feishu emoji type strings for reactions API (#66406)", + "updated_at": "2026-04-14T10:03:42Z" }, { - "additions": 144, - "author": "byungsker", + "additions": 27, + "author": "MoerAI", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Problem Closes #52553 Groups with `groupPolicy: open` are expected to respond to all messages \u2014 the intent of \"open\" is that the bot participates in the conversation without restrictions. However, `requireMention` defaulted to `true` re\u2026", - "changed_files": 11, + "body_excerpt": "## Summary `openclaw doctor` incorrectly reports `optionalDependencies` (like `@discordjs/opus`) as missing bundled plugin runtime deps. On ARM64, this native addon cannot build, so `doctor --fix` fails irrecoverably. ## Root Cause `collec\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54058", - "created_at": "2026-03-24T23:04:03Z", - "deletions": 21, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66476", + "created_at": "2026-04-14T09:55:50Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54058/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54058", + "files_url": "https://github.com/openclaw/openclaw/pull/66476/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66476", "labels": [ - "channel: feishu", - "size: S" + "commands", + "size: XS" ], - "merged": true, - "number": 54058, - "review_comments_count": 3, + "merged": false, + "number": 66476, + "review_comments_count": 0, "state": "open", - "title": "fix(feishu): default requireMention to false when groupPolicy is open", - "updated_at": "2026-03-24T23:10:57Z" + "title": "fix(doctor): exclude optionalDependencies from missing runtime deps check (#64070)", + "updated_at": "2026-04-14T09:56:57Z" }, { - "additions": 16, - "author": "jhawpetoss6-collab", + "additions": 10, + "author": "dallylee", "author_association": "NONE", - "body_excerpt": "This PR introduces the `BountyVerifier`, which provides automated verification of code-writing submissions by checking test results and commit metadata (#monetization). ### Changes: - Added `src/infra/payments/verification/proof-of-work.ts\u2026", - "changed_files": 1, + "body_excerpt": "## Summary\\n\\nClassify the exact provider/runtime wording `401 input item ID does not belong to this connection` as `replay_invalid`, so it follows the existing session-reset guidance instead of falling through to a raw 401-style failure.\\\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54057", - "created_at": "2026-03-24T23:03:34Z", - "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54057/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54057", + "comments_count": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66475", + "created_at": "2026-04-14T09:55:39Z", + "deletions": 1, + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/66475/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66475", "labels": [ - "size: XS", - "r: too-many-prs" + "agents", + "size: XS" ], "merged": false, - "number": 54057, - "review_comments_count": 3, - "state": "closed", - "title": "feat: implement automated Bounty Verification for code-writing jobs", - "updated_at": "2026-03-24T23:05:51Z" + "number": 66475, + "review_comments_count": 0, + "state": "open", + "title": "fix(agents): classify connection-mismatch replay errors as replay-invalid", + "updated_at": "2026-04-14T09:57:01Z" }, { - "additions": 17, - "author": "jhawpetoss6-collab", + "additions": 26, + "author": "HongzhuLiu", "author_association": "NONE", - "body_excerpt": "This PR introduces the `WorkerRegistry`, a core component for the distributed OpenClaw mesh. It enables gateways to discover and assign tasks to available worker nodes in the network. ### Changes: - Added `src/infra/distribution/registry/w\u2026", - "changed_files": 1, + "body_excerpt": "## Problem When a provider behind a proxy returns `400` or `422` with **no response body**, the failover system defaults to `\"format\"` classification. This triggers a compaction loop: ``` 400 no-body \u2192 classified as \"format\" \u2192 compaction \u2192\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54056", - "created_at": "2026-03-24T23:02:13Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66473", + "created_at": "2026-04-14T09:54:06Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54056/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54056", + "files_url": "https://github.com/openclaw/openclaw/pull/66473/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66473", "labels": [ - "size: XS", - "r: too-many-prs" + "scripts", + "agents", + "size: XS" ], "merged": false, - "number": 54056, - "review_comments_count": 5, - "state": "closed", - "title": "feat: implement Distributed Worker Registry for P2P task sharing", - "updated_at": "2026-03-24T23:05:10Z" + "number": 66473, + "review_comments_count": 1, + "state": "open", + "title": "fix: don't classify 400/422 with no body as format error", + "updated_at": "2026-04-14T09:56:32Z" }, { - "additions": 20, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR introduces the `AdminBillingApi`, providing platform operators with the tools to manage user token quotas and monitor platform-wide revenue and referrals (#monetization). ### Changes: - Added `src/gateway/api/admin/billing.ts`. - S\u2026", - "changed_files": 1, + "additions": 358, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - parse markdown image syntax in outbound reply text the same way we already parse `MEDIA:` tokens - keep surrounding caption text while lifting `![...](...)` targets into `mediaUrl` / `mediaUrls` - add regression coverage for t\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54055", - "created_at": "2026-03-24T23:00:44Z", - "deletions": 0, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66471", + "created_at": "2026-04-14T09:50:40Z", + "deletions": 11, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54055/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54055", + "files_url": "https://github.com/openclaw/openclaw/pull/66471/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66471", "labels": [ - "gateway", - "size: XS", - "r: too-many-prs" + "maintainer", + "size: M" ], "merged": false, - "number": 54055, - "review_comments_count": 7, - "state": "closed", - "title": "feat: implement Admin API for billing, quotas, and revenue tracking", - "updated_at": "2026-03-24T23:06:06Z" + "number": 66471, + "review_comments_count": 6, + "state": "open", + "title": "fix(reply): parse markdown image replies as media", + "updated_at": "2026-04-14T10:16:10Z" }, { - "additions": 22, - "author": "jhawpetoss6-collab", + "additions": 40, + "author": "yangxiyucs", "author_association": "NONE", - "body_excerpt": "This PR introduces the `WorkerNode` protocol, enabling OpenClaw gateways to act as standardized laborers in a larger, distributed agent mesh. ### Changes: - Added `src/infra/distributed/worker-node.ts`. - Support for capability announcemen\u2026", - "changed_files": 1, + "body_excerpt": "Summary This updates the OpenAI provider setup hint so the plain OpenAI API key option is described as a direct API-key flow instead of \"Codex OAuth + API key\". Why The previous hint was misleading for the standard OpenAI API key path and\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54054", - "created_at": "2026-03-24T22:59:08Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66466", + "created_at": "2026-04-14T09:47:30Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54054/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54054", + "files_url": "https://github.com/openclaw/openclaw/pull/66466/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66466", "labels": [ + "commands", "size: XS", - "r: too-many-prs" + "extensions: openai" ], "merged": false, - "number": 54054, - "review_comments_count": 5, - "state": "closed", - "title": "feat: implement Distributed Worker protocol for P2P agent labor", - "updated_at": "2026-03-24T23:00:53Z" + "number": 66466, + "review_comments_count": 0, + "state": "open", + "title": "fix(openai): clarify provider setup wizard hint", + "updated_at": "2026-04-14T09:50:20Z" }, { - "additions": 23, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR introduces the `BillingWebhookHandler`, providing the necessary infrastructure for OpenClaw to receive and process external on-chain payout confirmations and referral events. ### Changes: - Added `src/infra/billing/webhooks/`. - Su\u2026", - "changed_files": 1, + "additions": 193, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: Telegram media downloads still force local target DNS resolution even when the channel is configured with an explicit HTTP proxy. - Why it matters: proxy-backed installs regress with `could not download media` on Bot\u2026", + "changed_files": 8, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54053", - "created_at": "2026-03-24T22:58:20Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66461", + "created_at": "2026-04-14T09:36:29Z", + "deletions": 20, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54053/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54053", + "files_url": "https://github.com/openclaw/openclaw/pull/66461/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66461", "labels": [ - "size: XS", - "r: too-many-prs" + "channel: telegram", + "maintainer", + "size: M" ], - "merged": false, - "number": 54053, - "review_comments_count": 3, + "merged": true, + "number": 66461, + "review_comments_count": 0, "state": "closed", - "title": "feat: implement Billing and Payout webhooks for automated settlement", - "updated_at": "2026-03-24T23:00:22Z" + "title": "fix(telegram): trust explicit proxy DNS for media downloads", + "updated_at": "2026-04-14T09:42:36Z" }, { - "additions": 23, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR introduces the `EscrowHandler`, a critical component for the in-house bounty platform. It provides the logic for securely locking and releasing on-chain rewards for code-writing tasks. ### Changes: - Added `src/infra/payments/escro\u2026", - "changed_files": 1, + "additions": 576, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - problem: provider HTTP helper requests still forced strict SSRF DNS pinning in proxy-only environments, so remote media-understanding and transcription paths could fail with local `ENOTFOUND` / `EAI_AGAIN` before the configure\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54049", - "created_at": "2026-03-24T22:49:18Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66458", + "created_at": "2026-04-14T09:26:18Z", + "deletions": 7, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54049/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54049", + "files_url": "https://github.com/openclaw/openclaw/pull/66458/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66458", "labels": [ - "size: XS", - "r: too-many-prs" + "maintainer", + "size: L" ], - "merged": false, - "number": 54049, - "review_comments_count": 5, + "merged": true, + "number": 66458, + "review_comments_count": 2, "state": "closed", - "title": "feat: implement on-chain Escrow for code-writing job payouts", - "updated_at": "2026-03-24T22:51:16Z" + "title": "fix(media-understanding): auto-upgrade provider HTTP helper to trusted env proxy mode", + "updated_at": "2026-04-14T09:31:05Z" }, { - "additions": 17, - "author": "jhawpetoss6-collab", + "additions": 479, + "author": "aryankinha", "author_association": "NONE", - "body_excerpt": "This PR introduces the `HostingManager`, enabling OpenClaw users to monetize their idle compute by hosting agent instances for other users in exchange for crypto/USDC. ### Changes: - Added `src/infra/marketplace/hosting/host-manager.ts`. -\u2026", - "changed_files": 1, + "body_excerpt": "##Issue Number : #66394 ## Summary Describe the problem and fix in 2\u20135 bullets: If this PR fixes a plugin beta-release blocker, title it `fix(): beta blocker - ` and link the matching `Beta blocker: - instead of ); message export example is missing required argument Why it matters: Users copy-paste these examples and get CLI errors\u2026", - "changed_files": 2, + "additions": 38, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: AAC audio uploads could keep an incompatible extension instead of being remapped to a widely accepted M4A container name. - Why it matters: downstream OpenAI-compatible aud\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54032", - "created_at": "2026-03-24T22:25:22Z", - "deletions": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66446", + "created_at": "2026-04-14T09:20:53Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54032/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54032", + "files_url": "https://github.com/openclaw/openclaw/pull/66446/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66446", "labels": [ + "maintainer", "size: XS" ], - "merged": false, - "number": 54032, - "review_comments_count": 0, - "state": "open", - "title": "Fix himalaya move/copy argument order and missing export ID (fixes #9607)", - "updated_at": "2026-03-24T22:26:33Z" + "merged": true, + "number": 66446, + "review_comments_count": 2, + "state": "closed", + "title": "fix(media): remap AAC uploads to M4A", + "updated_at": "2026-04-14T10:00:31Z" }, { - "additions": 430, - "author": "AytuncYildizli", - "author_association": "CONTRIBUTOR", - "body_excerpt": "Title: fix(whatsapp): pre-transcribe inbound voice notes before agent bootstrap What: - Pre-transcribe WhatsApp inbound audio in the inbound monitor path - If transcription succeeds: - set inbound `body` to transcript text - avoid forwardi\u2026", + "additions": 204, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: native Gemini image generation could inherit an OpenAI-compat `/openai` base-url suffix and build the wrong native request path. - Why it matters: Gemini image requests fai\u2026", "changed_files": 7, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54031", - "created_at": "2026-03-24T22:25:14Z", - "deletions": 25, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66445", + "created_at": "2026-04-14T09:20:49Z", + "deletions": 13, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54031/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54031", + "files_url": "https://github.com/openclaw/openclaw/pull/66445/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66445", "labels": [ - "channel: whatsapp-web", - "commands", + "maintainer", "size: M" ], - "merged": false, - "number": 54031, - "review_comments_count": 3, + "merged": true, + "number": 66445, + "review_comments_count": 4, "state": "closed", - "title": "fix(whatsapp): pre-transcribe inbound voice notes before agent bootstrap", - "updated_at": "2026-03-24T22:38:55Z" + "title": "fix(google): strip Gemini compat base suffixes", + "updated_at": "2026-04-14T10:25:26Z" }, { - "additions": 5, - "author": "noahrasheta", - "author_association": "NONE", - "body_excerpt": "## Summary - Problem: Several British English spellings exist in docs, test descriptions, and code comments - Why it matters: CONTRIBUTING.md requires American English spelling in code, comments, docs, and UI strings - What changed: \"summa\u2026", - "changed_files": 3, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54028", - "created_at": "2026-03-24T22:16:17Z", - "deletions": 5, + "additions": 1098, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - carry `#66295` onto current `main` - fix the two real migration regressions from review: rebuild malformed units when `ExecStart=` is missing, and reconcile stale `WorkingDirectory=` in-place instead of leaving `CHDIR` failure\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66444", + "created_at": "2026-04-14T09:14:04Z", + "deletions": 262, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54028/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54028", + "files_url": "https://github.com/openclaw/openclaw/pull/66444/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66444", "labels": [ - "docs", - "app: web-ui", "gateway", - "commands", - "size: XS" + "maintainer", + "size: XL" ], "merged": false, - "number": 54028, + "number": 66444, "review_comments_count": 0, "state": "open", - "title": "fix: use American English spelling in docs, tests, and comments", - "updated_at": "2026-03-24T22:17:08Z" + "title": "fix(systemd): reconcile managed-env unit migrations", + "updated_at": "2026-04-14T09:19:48Z" }, { - "additions": 17, - "author": "jhawpetoss6-collab", + "additions": 127, + "author": "YangManBOBO", "author_association": "NONE", - "body_excerpt": "This PR introduces a diagnostic export tool that bundles redacted logs and system metadata, making it significantly easier for users to report bugs with high-quality evidence (#diagnostics). ### Changes: - Added `createDiagnosticBundle` ut\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - Fixes #66088. - Add generic anyConfig requirement support so a skill can be eligible when any one config path is satisfied. - Update bundled Discord skill gating to accept either channels.discord.token or multi-account channel\u2026", + "changed_files": 10, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54027", - "created_at": "2026-03-24T22:16:08Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66442", + "created_at": "2026-04-14T09:07:34Z", + "deletions": 8, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54027/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54027", + "files_url": "https://github.com/openclaw/openclaw/pull/66442/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66442", "labels": [ "cli", - "size: XS", - "r: too-many-prs" + "agents", + "size: S" ], "merged": false, - "number": 54027, - "review_comments_count": 7, - "state": "closed", - "title": "feat: implement automated diagnostic export for issue reporting", - "updated_at": "2026-03-24T22:19:49Z" + "number": 66442, + "review_comments_count": 2, + "state": "open", + "title": "fix(skills): support Discord multi-account config in skills check", + "updated_at": "2026-04-14T09:16:07Z" }, { - "additions": 20, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR fixes a critical bug in the Atomic Bot macOS Electron app where browser actions failed due to a filename hash mismatch for bundled Playwright chunks (#54023). ### Changes: - Added `resolvePlaywrightChunk` utility to dynamically fin\u2026", - "changed_files": 1, + "additions": 56, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - stop trusted explicit-proxy media downloads from forcing a local target DNS pin before the request reaches the configured proxy - cover the trusted vs untrusted explicit-proxy behavior in `src/media/fetch.test.ts` - add the us\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54026", - "created_at": "2026-03-24T22:15:46Z", + "comments_count": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66440", + "created_at": "2026-04-14T08:57:50Z", "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54026/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54026", + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/66440/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66440", "labels": [ - "size: XS", - "r: too-many-prs" + "maintainer", + "size: S" ], "merged": false, - "number": 54026, - "review_comments_count": 5, - "state": "closed", - "title": "fix: resolve Playwright chunk loading mismatch in Electron builds", - "updated_at": "2026-03-24T22:18:13Z" + "number": 66440, + "review_comments_count": 0, + "state": "open", + "title": "fix(telegram): restore proxy media downloads", + "updated_at": "2026-04-14T08:58:40Z" }, { - "additions": 21, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR introduces metadata to the gateway overview API that includes the absolute path to the active configuration file (#53958). ### Changes: - Added `getActiveConfigPath` utility to resolve the effective config source. - Includes `confi\u2026", - "changed_files": 1, + "additions": 2, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - enable `xhigh` for `github-copilot/gpt-5.4` - keep the change narrow to the Copilot provider allowlist - add the missing changelog entry ## Why Current `main` already removed the old built-in fallback that the original review\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54025", - "created_at": "2026-03-24T22:15:23Z", - "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54025/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54025", - "labels": [ - "gateway", - "size: XS", - "r: too-many-prs" - ], - "merged": false, - "number": 54025, - "review_comments_count": 6, - "state": "closed", - "title": "feat: show active config file path in Control UI overview", - "updated_at": "2026-03-24T22:19:08Z" - }, - { - "additions": 388, - "author": "karpizin", - "author_association": "NONE", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: Daily memory logs (`memory/YYYY-MM-DD.md`) grow indefinitely, creating noise and slowing down semantic indexing/retrieval over time. - Why it matters: Users need a way to p\u2026", - "changed_files": 12, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54024", - "created_at": "2026-03-24T22:14:22Z", - "deletions": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66437", + "created_at": "2026-04-14T08:52:26Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54024/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54024", + "files_url": "https://github.com/openclaw/openclaw/pull/66437/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66437", "labels": [ - "docs", - "cli", - "size: M" + "maintainer", + "size: XS" ], - "merged": false, - "number": 54024, - "review_comments_count": 7, - "state": "open", - "title": "feat(memory): implement sleep memory consolidation Layer 2", - "updated_at": "2026-03-24T22:57:58Z" + "merged": true, + "number": 66437, + "review_comments_count": 0, + "state": "closed", + "title": "fix(github-copilot): enable xhigh for gpt-5.4", + "updated_at": "2026-04-14T09:01:31Z" }, { - "additions": 29, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR introduces a `StartupCache` for plugin and extension metadata, significantly reducing the time spent on filesystem scans during gateway startup (#performance). ### Changes: - Added `src/infra/cache/startup/metadata-cache.ts`. - Sup\u2026", - "changed_files": 1, + "additions": 212, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - canonicalize the legacy `openai-codex/gpt-5.4-codex` runtime alias to `openai-codex/gpt-5.4` - preserve both alias-specific and canonical per-model overrides - add focused provider and embedded-runner regression coverage ## Wh\u2026", + "changed_files": 6, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54022", - "created_at": "2026-03-24T22:11:33Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66438", + "created_at": "2026-04-14T08:52:26Z", + "deletions": 16, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54022/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54022", + "files_url": "https://github.com/openclaw/openclaw/pull/66438/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66438", "labels": [ - "size: XS", - "r: too-many-prs" + "agents", + "maintainer", + "size: M", + "extensions: openai" ], - "merged": false, - "number": 54022, - "review_comments_count": 4, + "merged": true, + "number": 66438, + "review_comments_count": 2, "state": "closed", - "title": "feat: implement persistent StartupCache for faster gateway boot", - "updated_at": "2026-03-24T22:14:28Z" + "title": "fix(codex): canonicalize the gpt-5.4-codex alias", + "updated_at": "2026-04-14T09:03:25Z" }, { - "additions": 21, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR introduces the `SubagentRecoveryManager`, which provides a basic auto-restart policy for subagent processes that exit with a non-zero code (#remediation). ### Changes: - Added `src/agents/remediation/crash-recovery.ts`. - Support f\u2026", - "changed_files": 1, + "additions": 67, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - enable streaming usage compat for Ollama's OpenAI-compatible completions path - add a colocated compat-defaults regression test - add a transport-level assertion that Ollama emits `stream_options.include_usage` ## Why This kee\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54021", - "created_at": "2026-03-24T22:11:10Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66439", + "created_at": "2026-04-14T08:52:26Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54021/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54021", + "files_url": "https://github.com/openclaw/openclaw/pull/66439/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66439", "labels": [ "agents", - "size: XS", - "r: too-many-prs" + "maintainer", + "size: S" ], - "merged": false, - "number": 54021, - "review_comments_count": 6, + "merged": true, + "number": 66439, + "review_comments_count": 1, "state": "closed", - "title": "feat: implement automated crash recovery for subagent processes", - "updated_at": "2026-03-24T22:13:29Z" + "title": "fix(ollama): enable streaming usage for openai-compat", + "updated_at": "2026-04-14T09:01:43Z" }, { - "additions": 24, - "author": "jhawpetoss6-collab", + "additions": 4, + "author": "zhanggpcsu", "author_association": "NONE", - "body_excerpt": "This PR introduces a `PeerDependencyValidator`, which ensures that third-party plugins are compatible with the currently running OpenClaw SDK version (#plugins). ### Changes: - Added `src/plugins/validation/peer-deps.ts`. - Support for che\u2026", + "body_excerpt": "## Fix: CLI exit hang after cron list / agents list / status (#66227) **Problem** CLI commands (`openclaw cron list`, `openclaw agents list`, `openclaw status`) hang indefinitely after outputting data. The process does not exit. **Root Cau\u2026", "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54020", - "created_at": "2026-03-24T22:10:56Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66435", + "created_at": "2026-04-14T08:44:51Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54020/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54020", + "files_url": "https://github.com/openclaw/openclaw/pull/66435/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66435", "labels": [ - "size: XS", - "r: too-many-prs" + "gateway", + "size: XS" ], "merged": false, - "number": 54020, - "review_comments_count": 5, - "state": "closed", - "title": "feat: implement peer-dependency validation for plugins", - "updated_at": "2026-03-24T22:14:18Z" + "number": 66435, + "review_comments_count": 3, + "state": "open", + "title": "fix(gateway): await client cleanup to prevent CLI exit hang", + "updated_at": "2026-04-14T08:49:13Z" }, { - "additions": 30, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR introduces an `ArtifactJanitor`, which automatically identifies and removes orphaned `.tmp` files and stale lockfiles left behind by crashed processes or incomplete writes (#cleanup). ### Changes: - Added `src/infra/remediation/cle\u2026", - "changed_files": 1, + "additions": 408, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - fix native Discord `/status` so it returns the real status card instead of falling through to the synthetic `\u2705 Done.` ack - add a narrow lazy `openclaw/plugin-sdk/command-status-runtime` seam instead of widening `command-auth`\u2026", + "changed_files": 10, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54019", - "created_at": "2026-03-24T22:10:40Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66434", + "created_at": "2026-04-14T08:44:15Z", + "deletions": 39, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54019/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54019", + "files_url": "https://github.com/openclaw/openclaw/pull/66434/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66434", "labels": [ - "size: XS", - "r: too-many-prs" + "docs", + "channel: discord", + "scripts", + "maintainer", + "size: M" ], - "merged": false, - "number": 54019, - "review_comments_count": 5, + "merged": true, + "number": 66434, + "review_comments_count": 1, "state": "closed", - "title": "feat: implement background janitor for stale artifact cleanup", - "updated_at": "2026-03-24T22:17:25Z" + "title": "fix(discord): return native status replies directly", + "updated_at": "2026-04-14T08:57:23Z" }, { - "additions": 15, - "author": "jhawpetoss6-collab", + "additions": 123, + "author": "gee-bjak", "author_association": "NONE", - "body_excerpt": "This PR fixes a regression where the Control UI was inaccessible via Tailscale Serve or other HTTPS reverse proxies due to strict WebSocket origin validation (#54008). ### Changes: - Added `isTrustedProxyOrigin` to accurately validate forw\u2026", - "changed_files": 1, + "body_excerpt": "## Problem When an image (or other media) message exists in a Feishu thread's history, the agent only receives the placeholder text `[image message]` \u2014 it never sees the actual image data. **Root cause:** `resolveFeishuMediaList` was only\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54018", - "created_at": "2026-03-24T22:08:38Z", - "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54018/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54018", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66432", + "created_at": "2026-04-14T08:39:01Z", + "deletions": 9, + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/66432/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66432", "labels": [ - "gateway", - "size: XS", - "r: too-many-prs" + "channel: feishu", + "size: S" ], "merged": false, - "number": 54018, - "review_comments_count": 4, - "state": "closed", - "title": "fix: restore WebSocket upgrade compatibility for Tailscale and HTTPS proxies", - "updated_at": "2026-03-24T22:11:11Z" + "number": 66432, + "review_comments_count": 0, + "state": "open", + "title": "fix(feishu): download images in Feishu thread history and inline attachment hints [AI-assisted]", + "updated_at": "2026-04-14T09:13:22Z" }, { - "additions": 14, - "author": "jhawpetoss6-collab", + "additions": 5583, + "author": "manhhai999", "author_association": "NONE", - "body_excerpt": "This PR fixes a race condition in the media transcription pipeline where `echoTranscript` would occasionally fail because the channel registry was temporarily unavailable (#54013). ### Changes: - Added pre-flight outbound connectivity chec\u2026", - "changed_files": 1, + "body_excerpt": "## Summary This PR archives the earlier `v2026.4.12-safe` PR-ready snapshot from `backup/integrate-release-v2026.4.12-safe-pr-20260414-1c60f43573`. It captures the branch state before the later Vietnamese dashboard localization work was ad\u2026", + "changed_files": 112, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54017", - "created_at": "2026-03-24T22:08:19Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66431", + "created_at": "2026-04-14T08:38:23Z", + "deletions": 233, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54017/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54017", + "files_url": "https://github.com/openclaw/openclaw/pull/66431/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66431", "labels": [ - "size: XS", - "r: too-many-prs" + "docs", + "channel: telegram", + "app: macos", + "app: web-ui", + "gateway", + "cli", + "scripts", + "commands", + "agents", + "size: XL" ], "merged": false, - "number": 54017, - "review_comments_count": 5, - "state": "closed", - "title": "fix: resolve intermittent outbound configuration errors for Telegram echoes", - "updated_at": "2026-03-24T22:13:44Z" + "number": 66431, + "review_comments_count": 1, + "state": "open", + "title": "Backup/integrate release v2026.4.12 safe pr 20260414 1c60f43573", + "updated_at": "2026-04-14T10:02:32Z" }, { - "additions": 15, - "author": "jhawpetoss6-collab", + "additions": 9, + "author": "SimoneB79", "author_association": "NONE", - "body_excerpt": "This PR addresses a critical feedback loop in WhatsApp Web integrations where the bot would re-process its own outbound messages as fresh inbound input (#54010). ### Changes: - Added `isBotAuthoredMessage` filter to the WhatsApp monitoring\u2026", - "changed_files": 1, + "body_excerpt": "Currently, getMemoryEmbeddingProvider() returns undefined if any runtime adapters are registered, even if the requested provider is not among them. This prevents capability-based providers (e.g. ollama) from being resolved when other provi\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54016", - "created_at": "2026-03-24T22:07:39Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66429", + "created_at": "2026-04-14T08:35:51Z", + "deletions": 7, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54016/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54016", + "files_url": "https://github.com/openclaw/openclaw/pull/66429/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66429", "labels": [ - "channel: whatsapp-web", - "size: XS", - "r: too-many-prs" + "size: XS" ], "merged": false, - "number": 54016, - "review_comments_count": 3, - "state": "closed", - "title": "fix: suppress bot self-echoes on WhatsApp personal-number setups", - "updated_at": "2026-03-24T22:09:46Z" + "number": 66429, + "review_comments_count": 4, + "state": "open", + "title": "fix(memory): allow capability fallback lookup for missing runtime embedding provider", + "updated_at": "2026-04-14T10:32:34Z" }, { - "additions": 19, - "author": "jhawpetoss6-collab", + "additions": 5604, + "author": "manhhai999", "author_association": "NONE", - "body_excerpt": "This PR ensures that OpenClaw consistently respects the `OPENCLAW_HOME` environment variable across all sub-systems, preventing the creation of unwanted directories in the user home (#54014). ### Changes: - Added `getOpenClawHome()` utilit\u2026", - "changed_files": 1, + "body_excerpt": "## Summary This PR prepares `integrate/release-v2026.4.12-safe-pr-20260414` as the PR-ready integration branch for the `v2026.4.12-safe` release line. It restores plans support across the gateway, CLI, and Control UI, adds a full Vietnames\u2026", + "changed_files": 95, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54015", - "created_at": "2026-03-24T22:07:15Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66428", + "created_at": "2026-04-14T08:27:01Z", + "deletions": 71, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54015/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54015", + "files_url": "https://github.com/openclaw/openclaw/pull/66428/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66428", "labels": [ - "size: XS", - "r: too-many-prs" + "channel: telegram", + "app: macos", + "app: web-ui", + "gateway", + "cli", + "scripts", + "commands", + "agents", + "size: XL" ], "merged": false, - "number": 54015, - "review_comments_count": 5, - "state": "closed", - "title": "fix: respect OPENCLAW_HOME environment variable for storage paths", - "updated_at": "2026-03-24T22:09:48Z" + "number": 66428, + "review_comments_count": 4, + "state": "open", + "title": "Integrate/release v2026.4.12 safe pr 20260414", + "updated_at": "2026-04-14T09:00:27Z" }, { - "additions": 20, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR introduces the `TurnHeuristicAnalyzer`, a foundational component for a self-optimizing agentic runtime (#optimization). ### Changes: - Added `src/infra/optimization/heuristics/turn-analyzer.ts`. - Support for turn-by-turn latency m\u2026", - "changed_files": 1, + "additions": 429, + "author": "wittam-01", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: Feishu document comment flows still had two runtime gaps. First, once `feishu_drive.reply_comment` or `feishu_drive.add_comment` sent a user-visible comment, the runtime could still send an automatic final reply, caus\u2026", + "changed_files": 7, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54012", - "created_at": "2026-03-24T22:02:44Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66427", + "created_at": "2026-04-14T08:26:49Z", + "deletions": 16, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54012/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54012", + "files_url": "https://github.com/openclaw/openclaw/pull/66427/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66427", "labels": [ - "size: XS", - "r: too-many-prs" + "channel: feishu", + "size: M" ], "merged": false, - "number": 54012, + "number": 66427, "review_comments_count": 2, - "state": "closed", - "title": "feat: implement initial self-optimizing runtime heuristics", - "updated_at": "2026-03-24T22:04:20Z" + "state": "open", + "title": "Feishu: suppress duplicate comment sends and prefer local replies", + "updated_at": "2026-04-14T08:40:14Z" }, { - "additions": 25, - "author": "jhawpetoss6-collab", + "additions": 54, + "author": "RoLuoGan", "author_association": "NONE", - "body_excerpt": "This PR enables OpenClaw to recursively scan for skills in subdirectories, allowing for much cleaner organization of large skill libraries (#skills). ### Changes: - Added `RecursiveScanner` utility for manifest discovery. - Removes the fla\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - Fix web UI stuck indefinitely when a model request fails with billing errors (e.g. `402 insufficient_balance`) - Re-evaluate `skipChatErrorFinal` at timer fire time instead of using a stale closure value captured at schedule t\u2026", + "changed_files": 7, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54011", - "created_at": "2026-03-24T22:02:25Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66426", + "created_at": "2026-04-14T08:24:50Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54011/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54011", + "files_url": "https://github.com/openclaw/openclaw/pull/66426/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66426", "labels": [ - "size: XS", - "r: too-many-prs" + "app: web-ui", + "gateway", + "size: S" ], "merged": false, - "number": 54011, - "review_comments_count": 5, - "state": "closed", - "title": "feat: implement recursive skill directory discovery", - "updated_at": "2026-03-24T22:04:45Z" + "number": 66426, + "review_comments_count": 3, + "state": "open", + "title": "fix: surface billing/surface_error chat event to web UI", + "updated_at": "2026-04-14T09:21:44Z" }, { - "additions": 17, - "author": "jhawpetoss6-collab", + "additions": 882, + "author": "mfzzf", "author_association": "NONE", - "body_excerpt": "This PR introduces a `FlushGuard` for session state, ensuring that metadata and conversation history are atomically persisted before any process termination or gateway reload (#state). ### Changes: - Added `src/infra/sessions/durability/fl\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - Problem: UCloud AstraFlow is a multi-model aggregation platform offering 200+ curated models via an OpenAI-compatible API, but there is no bundled provider plugin for it yet. - Why it matters: Adding first-class support lets u\u2026", + "changed_files": 13, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54009", - "created_at": "2026-03-24T22:02:08Z", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66425", + "created_at": "2026-04-14T08:24:14Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54009/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54009", + "files_url": "https://github.com/openclaw/openclaw/pull/66425/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66425", "labels": [ - "size: XS", - "r: too-many-prs" + "docs", + "size: L" ], "merged": false, - "number": 54009, - "review_comments_count": 4, - "state": "closed", - "title": "feat: implement session state flush guard for improved durability", - "updated_at": "2026-03-24T22:05:59Z" + "number": 66425, + "review_comments_count": 9, + "state": "open", + "title": "feat(astraflow): add UCloud AstraFlow provider plugin (Global + China)", + "updated_at": "2026-04-14T08:54:11Z" }, { - "additions": 23, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR addresses critical hangs in isolated cron sessions when encountering transient model API failures (#54004). ### Changes: - Added `executeWithCronBackoff` utility for background tasks. - Implements exponential backoff (2s, 4s, 8s) f\u2026", - "changed_files": 1, + "additions": 70, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: the image and PDF tools looked up models in the Pi registry using raw provider/model refs instead of the normalized refs the rest of the runtime uses. - Why it matters: valid configured Ollama vision models could be r\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54007", - "created_at": "2026-03-24T22:01:42Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66422", + "created_at": "2026-04-14T08:17:32Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54007/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54007", + "files_url": "https://github.com/openclaw/openclaw/pull/66422/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66422", "labels": [ - "size: XS", - "r: too-many-prs" + "agents", + "maintainer", + "size: S" ], - "merged": false, - "number": 54007, - "review_comments_count": 4, + "merged": true, + "number": 66422, + "review_comments_count": 0, "state": "closed", - "title": "fix: prevent cron session hangs via exponential API backoff", - "updated_at": "2026-03-24T22:03:59Z" + "title": "fix(tools): normalize media model lookups", + "updated_at": "2026-04-14T08:24:58Z" }, { - "additions": 24, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR introduces the `AuthRepair` module, which identifies broken or incomplete authentication profiles (like stale OAuth tokens) and provides actionable repair paths (#53998). ### Changes: - Added `src/onboard/remediation/auth-repair.ts\u2026", - "changed_files": 1, + "additions": 3, + "author": "obviyus", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - point the subagent registry lazy runtime import at the stable stub that tsdown emits under `dist/agents/` - fix the `ERR_MODULE_NOT_FOUND` regression where the built root chunk looked for `./subagent-registry.runtime.js` ## Ve\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54006", - "created_at": "2026-03-24T21:59:50Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66420", + "created_at": "2026-04-14T08:13:28Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54006/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54006", + "files_url": "https://github.com/openclaw/openclaw/pull/66420/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66420", "labels": [ - "size: XS", - "r: too-many-prs" + "maintainer", + "size: XS" ], - "merged": false, - "number": 54006, - "review_comments_count": 5, + "merged": true, + "number": 66420, + "review_comments_count": 1, "state": "closed", - "title": "feat: implement automated auth-profile health checks and repair suggestions", - "updated_at": "2026-03-24T22:03:15Z" + "title": "fix(build): correct subagent registry runtime import path", + "updated_at": "2026-04-14T08:26:22Z" }, { - "additions": 16, - "author": "jhawpetoss6-collab", + "additions": 5604, + "author": "manhhai999", "author_association": "NONE", - "body_excerpt": "This PR fixes a critical crash in embedded mode where tool names containing dots (e.g. `web_fetch.result`) were rejected by the Anthropic API (#53990). ### Changes: - Added `sanitizeEmbeddedToolName` helper to replace invalid characters wi\u2026", - "changed_files": 1, + "body_excerpt": "## Summary This PR integrates our `v2026.4.12-safe` branch updates for the 2026-04-14 release line. It restores plans support across the gateway, CLI, and Control UI, adds a full Vietnamese localization for the dashboard, makes Vietnamese\u2026", + "changed_files": 95, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54005", - "created_at": "2026-03-24T21:59:17Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66419", + "created_at": "2026-04-14T08:11:55Z", + "deletions": 71, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54005/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54005", + "files_url": "https://github.com/openclaw/openclaw/pull/66419/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66419", "labels": [ + "channel: telegram", + "app: macos", + "app: web-ui", + "gateway", + "cli", + "scripts", + "commands", "agents", - "size: XS", - "r: too-many-prs" + "size: XL" ], "merged": false, - "number": 54005, - "review_comments_count": 4, - "state": "closed", - "title": "fix: sanitize tool names in embedded mode for Anthropic compatibility", - "updated_at": "2026-03-24T22:02:05Z" + "number": 66419, + "review_comments_count": 3, + "state": "open", + "title": "Integrate/release v2026.4.12 safe 20260414", + "updated_at": "2026-04-14T09:04:06Z" }, { - "additions": 19, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR updates the `secrets audit` logic to distinguish between actual hardcoded secrets and `$VAR` environment variable references (#53998). ### Changes: - Added `isEnvVarReference` utility to detect shell-style indirections. - Introduce\u2026", - "changed_files": 1, + "additions": 56, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: embedded Pi runs still initialized global undici stream timeouts with the default 30-minute value instead of the configured run timeout. - Why it matters: slow local Ollama requests could still hit the wrong lower-lev\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54003", - "created_at": "2026-03-24T21:58:39Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66418", + "created_at": "2026-04-14T08:11:10Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54003/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54003", + "files_url": "https://github.com/openclaw/openclaw/pull/66418/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66418", "labels": [ - "size: XS", - "r: too-many-prs" + "agents", + "maintainer", + "size: S" ], - "merged": false, - "number": 54003, - "review_comments_count": 3, + "merged": true, + "number": 66418, + "review_comments_count": 2, "state": "closed", - "title": "fix: prevent secrets audit from flagging env-refs as plaintext", - "updated_at": "2026-03-24T22:00:52Z" + "title": "fix(agents): honor embedded ollama timeouts", + "updated_at": "2026-04-14T08:30:44Z" }, { - "additions": 18, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR introduces the `SessionPruner`, a background janitor that automatically cleans up idle or orphaned agent sessions (#sessions). ### Changes: - Added `src/infra/sessions/janitor/session-pruner.ts`. - Support for age-based session arc\u2026", - "changed_files": 1, + "additions": 22, + "author": "EronFan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Bug: heartbeat exec-event relay prompt drops the actual system-event body **Issue**: [#66382](https://github.com/openclaw/openclaw/issues/66382) **Root Cause**: When heartbeat wakes for an async exec completion event, returned a generic\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54002", - "created_at": "2026-03-24T21:56:03Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66417", + "created_at": "2026-04-14T08:07:38Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54002/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54002", + "files_url": "https://github.com/openclaw/openclaw/pull/66417/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66417", "labels": [ "size: XS", - "r: too-many-prs" + "r: too-many-prs", + "channel: qqbot" ], "merged": false, - "number": 54002, - "review_comments_count": 4, + "number": 66417, + "review_comments_count": 1, "state": "closed", - "title": "feat: implement automated SessionPruner for housekeeping", - "updated_at": "2026-03-24T22:01:36Z" + "title": "fix(heartbeat): embed exec event text in buildExecEventPrompt", + "updated_at": "2026-04-14T08:13:12Z" }, { - "additions": 31, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR introduces the `DoctorHeartbeat`, which periodically runs `openclaw doctor --repair` in the background to ensure that the gateway environment remains healthy (#self-healing). ### Changes: - Added `src/infra/remediation/heartbeat/do\u2026", - "changed_files": 1, + "additions": 698, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: If this PR fixes a plugin beta-release blocker, title it `fix(): beta blocker - ` and link the matching `Beta blocker: - ` issue labeled `be\u2026", + "changed_files": 9, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54001", - "created_at": "2026-03-24T21:55:35Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66416", + "created_at": "2026-04-14T08:03:41Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54001/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54001", + "files_url": "https://github.com/openclaw/openclaw/pull/66416/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66416", "labels": [ - "size: XS", - "r: too-many-prs" + "agents", + "maintainer", + "size: L", + "extensions: qa-lab" ], - "merged": false, - "number": 54001, - "review_comments_count": 5, + "merged": true, + "number": 66416, + "review_comments_count": 2, "state": "closed", - "title": "feat: implement background DoctorHeartbeat for environment self-healing", - "updated_at": "2026-03-24T21:58:58Z" + "title": "test(qa-lab): seed broken-turn recovery scenarios", + "updated_at": "2026-04-14T08:08:07Z" }, { - "additions": 28, - "author": "jhawpetoss6-collab", + "additions": 204, + "author": "LiuYihey", "author_association": "NONE", - "body_excerpt": "This PR introduces the `LogPruner`, which automatically removes gateway and agent log files older than a configurable threshold (default 7 days) (#logging). ### Changes: - Added `src/infra/logging/janitor/log-pruner.ts`. - Support for back\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - add `required: []` for object schemas on the non-strict OpenAI tool path - limit the recursive rewrite to schema-bearing keywords so literal objects under `enum`, `const`, `default`, and `examples` are left unchanged - update\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/54000", - "created_at": "2026-03-24T21:55:09Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66415", + "created_at": "2026-04-14T08:00:20Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54000/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54000", + "files_url": "https://github.com/openclaw/openclaw/pull/66415/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66415", "labels": [ - "size: XS", - "r: too-many-prs" + "agents", + "size: M" ], "merged": false, - "number": 54000, - "review_comments_count": 5, - "state": "closed", - "title": "feat: implement automated LogPruner for log rotation and disk maintenance", - "updated_at": "2026-03-24T21:58:15Z" + "number": 66415, + "review_comments_count": 3, + "state": "open", + "title": "fix(custom-provider): add empty required arrays for non-strict OpenAI tool schemas", + "updated_at": "2026-04-14T09:14:24Z" }, { - "additions": 34, - "author": "jhawpetoss6-collab", + "additions": 81, + "author": "pandaAIGC", "author_association": "NONE", - "body_excerpt": "This PR introduces the `UpdateWatcher`, which enables the gateway to periodically check for new OpenClaw releases in the background (#updates). ### Changes: - Added `src/infra/updates/update-watcher.ts`. - Support for git and npm update-ch\u2026", - "changed_files": 1, + "body_excerpt": "## Summary This fixes two issues that can cause image attachments from Control UI chat to be lost before they reach the model: 1. `resolveGatewayModelSupportsImages()` could miss image-capable models when the runtime reported a bare model\u2026", + "changed_files": 11, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53999", - "created_at": "2026-03-24T21:54:48Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66414", + "created_at": "2026-04-14T07:58:01Z", + "deletions": 7, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53999/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53999", + "files_url": "https://github.com/openclaw/openclaw/pull/66414/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66414", "labels": [ - "size: XS", - "r: too-many-prs" + "app: web-ui", + "gateway", + "size: S" ], "merged": false, - "number": 53999, + "number": 66414, "review_comments_count": 7, - "state": "closed", - "title": "feat: implement automated UpdateWatcher for background release tracking", - "updated_at": "2026-03-24T21:59:48Z" + "state": "open", + "title": "Fix image attachment handling in Control UI chat", + "updated_at": "2026-04-14T08:06:39Z" }, { - "additions": 1043, - "author": "god59081", + "additions": 94, + "author": "Angfr95", "author_association": "NONE", - "body_excerpt": "## Summary This PR is **Patch 1A only**. Exact review target: - commit `bcb4116bc756bd6fe5f1fa6f3d5094c856130562` - reviewed against base `17c1ee7716` This patch is the terminal-truth-only split for ACP runtime-wrapped execution. ## Scope\u2026", + "body_excerpt": "## Summary - **Problem:** During config hot-reload, plugin init logs (stdout) are concatenated into exec secret provider output. When `jsonOnly: false` and a single ref ID is resolved, the full stdout (logs + actual value) is returned as t\u2026", "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53997", - "created_at": "2026-03-24T21:53:10Z", - "deletions": 37, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66413", + "created_at": "2026-04-14T07:56:51Z", + "deletions": 11, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53997/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53997", + "files_url": "https://github.com/openclaw/openclaw/pull/66413/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66413", "labels": [ - "size: XL", - "extensions: acpx" + "channel: slack", + "app: web-ui", + "size: S" ], "merged": false, - "number": 53997, - "review_comments_count": 10, + "number": 66413, + "review_comments_count": 5, "state": "open", - "title": "acpx: add terminal-truth artifacts and strict terminal states", - "updated_at": "2026-03-24T23:46:44Z" + "title": "fix(secrets): extract last non-empty stdout line for single-value exec secret refs", + "updated_at": "2026-04-14T11:52:45Z" }, { - "additions": 27, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR introduces the `MemorySummaryOptimizer`, a background component that identifies large daily memory logs and summarizes them into concise artifacts (#memory). ### Changes: - Added `src/memory/optimization/summary-generator.ts`. - Su\u2026", + "additions": 41, + "author": "mjamiv", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Closes #66328. The dreaming pipeline writes Light Sleep and REM Sleep phase blocks to the location selected by `dreaming.storage.mode`. The mode was already wired up to support `\"inline\" | \"separate\" | \"both\"` in `writeDailyDrea\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66412", + "created_at": "2026-04-14T07:53:26Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66412/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66412", + "labels": [ + "extensions: memory-core", + "size: XS" + ], + "merged": false, + "number": 66412, + "review_comments_count": 0, + "state": "open", + "title": "fix(dreaming): default storage.mode to \"separate\" so phase blocks stop polluting daily memory files", + "updated_at": "2026-04-14T08:01:58Z" + }, + { + "additions": 2, + "author": "EronFan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Bug: cron agentTurn payload crashes with startsWith error **Issue**: [#66283](https://github.com/openclaw/openclaw/issues/66283) **Root Cause**: When a cron job with payload.kind=agentTurn fires, the qqbot gateway event handler calls pa\u2026", "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53996", - "created_at": "2026-03-24T21:52:54Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66411", + "created_at": "2026-04-14T07:53:04Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53996/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53996", + "files_url": "https://github.com/openclaw/openclaw/pull/66411/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66411", "labels": [ "size: XS", - "r: too-many-prs" + "r: too-many-prs", + "channel: qqbot" ], "merged": false, - "number": 53996, - "review_comments_count": 5, + "number": 66411, + "review_comments_count": 0, "state": "closed", - "title": "feat: implement automated Memory Summary Optimizer", - "updated_at": "2026-03-24T21:54:50Z" + "title": "fix(qqbot): guard parseFaceTags against undefined event.content", + "updated_at": "2026-04-14T07:54:02Z" }, { - "additions": 12, - "author": "jhawpetoss6-collab", + "additions": 9, + "author": "zhanggpcsu", "author_association": "NONE", - "body_excerpt": "This PR implements atomic JSON writes by using a temporary file and `renameSync`, preventing configuration or credential corruption during crashes or partial writes (#53969). ### Changes: - Updated `src/infra/json-file.ts` to use atomic wr\u2026", - "changed_files": 1, + "body_excerpt": "## Fix: Control UI exec approval popup layout issue (fixes #66403) **Problem** When the exec approval popup displays a long multiline command, the card can grow taller than the viewport, causing the action buttons (Allow once, Always allow\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53995", - "created_at": "2026-03-24T21:51:24Z", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66408", + "created_at": "2026-04-14T07:49:49Z", "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53995/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53995", + "files_url": "https://github.com/openclaw/openclaw/pull/66408/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66408", "labels": [ - "size: XS", - "r: too-many-prs" + "app: web-ui", + "size: XS" ], "merged": false, - "number": 53995, - "review_comments_count": 2, + "number": 66408, + "review_comments_count": 3, "state": "closed", - "title": "feat: implement Atomic JSON writes for config and auth stores", - "updated_at": "2026-03-24T21:54:00Z" + "title": "fix(ui): prevent exec approval popup from pushing actions off viewport", + "updated_at": "2026-04-14T08:10:28Z" }, { - "additions": 103, - "author": "drobison00", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: `/send on|off|inherit` was documented as owner-only, but the handler only checked general command authorization and not owner status. - Why it matters: a lower-trust partic\u2026", - "changed_files": 2, - "cluster_id": "cluster-53248-81", + "additions": 138, + "author": "kindomLee", + "author_association": "NONE", + "body_excerpt": "## Summary - Problem: `/acp close` (and every other `/acp` text command) sent inside a Discord thread bound to an ACP session never reaches `handleAcpCommand`. It is handed off to the thread's ACP session and consumed as conversational inp\u2026", + "changed_files": 4, + "cluster_id": "cluster-63329-8", "cluster_ids": [ - "cluster-53248-81" + "cluster-63329-8" ], - "cluster_role": "member", + "cluster_role": "canonical", "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53994", - "created_at": "2026-03-24T21:49:59Z", - "deletions": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66407", + "created_at": "2026-04-14T07:46:43Z", + "deletions": 13, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53994/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53994", + "files_url": "https://github.com/openclaw/openclaw/pull/66407/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66407", "labels": [ - "maintainer", "size: S" ], - "merged": true, - "number": 53994, - "review_comments_count": 0, - "state": "closed", - "title": "fix: block non-owner authorized senders from changing /send policy", - "updated_at": "2026-03-24T21:58:40Z" + "merged": false, + "number": 66407, + "review_comments_count": 12, + "state": "open", + "title": "fix(acp): bypass ACP dispatch for /acp text commands in bound threads", + "updated_at": "2026-04-14T10:02:52Z" }, { - "additions": 12, - "author": "jhawpetoss6-collab", + "additions": 30, + "author": "nighting0615", "author_association": "NONE", - "body_excerpt": "This PR implements atomic JSON writes by using a temporary file and `renameSync`, preventing configuration or credential corruption during crashes or partial writes (#53969). ### Changes: - Updated `src/infra/json-file.ts` to use atomic wr\u2026", - "changed_files": 1, + "body_excerpt": "## Summary `exec-approvals` still resolved its default file and socket paths from `~/.openclaw`, even when runtime state was redirected via `OPENCLAW_STATE_DIR`. This caused exec approval state to drift from the rest of the state-dir-based\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53993", - "created_at": "2026-03-24T21:49:27Z", - "deletions": 2, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66404", + "created_at": "2026-04-14T07:39:00Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53993/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53993", + "files_url": "https://github.com/openclaw/openclaw/pull/66404/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66404", "labels": [ - "size: XS", - "r: too-many-prs" + "commands", + "size: XS" ], "merged": false, - "number": 53993, - "review_comments_count": 4, - "state": "closed", - "title": "feat: implement Atomic JSON writes for config and auth stores", - "updated_at": "2026-03-24T21:52:34Z" + "number": 66404, + "review_comments_count": 0, + "state": "open", + "title": "fix(exec-approvals): honor OPENCLAW_STATE_DIR for default host paths", + "updated_at": "2026-04-14T07:43:47Z" }, { - "additions": 1011, - "author": "vincentkoc", - "author_association": "MEMBER", - "body_excerpt": "## Summary - Problem: OpenAI-compatible gateway support covered `/v1/chat/completions` and `/v1/responses`, but many clients also expect `/v1/models` and many RAG setups expect `/v1/embeddings`. - Why it matters: This is the highest-levera\u2026", - "changed_files": 14, - "cluster_id": "cluster-53248-81", + "additions": 22, + "author": "soloxue", + "author_association": "NONE", + "body_excerpt": "## Fix: cron agentTurn crash (fixes #66283) **Root cause confirmed by @johnturek** Two-line fix: 1. **`extensions/qqbot/src/utils/text-parsing.ts`** \u2014 return `\"\"` instead of `undefined` when input is falsy: ```ts if (!text) { return \"\"; //\u2026", + "changed_files": 3, + "cluster_id": "cluster-66283-4", "cluster_ids": [ - "cluster-53248-81" + "cluster-66283-4" ], "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53992", - "created_at": "2026-03-24T21:48:14Z", - "deletions": 27, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66402", + "created_at": "2026-04-14T07:36:11Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53992/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53992", + "files_url": "https://github.com/openclaw/openclaw/pull/66402/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66402", "labels": [ - "docs", - "gateway", - "maintainer", - "size: L" + "size: XS", + "channel: qqbot" ], - "merged": true, - "number": 53992, - "review_comments_count": 7, + "merged": false, + "number": 66402, + "review_comments_count": 0, "state": "open", - "title": "feat(gateway): add missing OpenAI-compatible endpoints (models and embeddings)", - "updated_at": "2026-03-24T22:51:48Z" + "title": "fix(qqbot): null guard in parseFaceTags \u2014 fixes cron agentTurn crash", + "updated_at": "2026-04-14T09:08:21Z" }, { - "additions": 1, - "author": "jhawpetoss6-collab", + "additions": 15, + "author": "g199209", "author_association": "NONE", - "body_excerpt": "This PR ensures that MiniMax reasoning content is correctly stripped when `thinkingDefault: \"off\"` by treating the `` tag as a terminal for the reasoning block (#53956). ### Changes: - Updated `stripReasoningTagsFromText` logic to t\u2026", - "changed_files": 1, + "body_excerpt": "## Problem When `/verbose full` is set in the TUI, tool execution cards are not rendered for live runs. They only appear after reloading history (e.g. via `/verbose full` which triggers `loadHistory()`). This means the user sees no tool ac\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53991", - "created_at": "2026-03-24T21:47:38Z", - "deletions": 1, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66400", + "created_at": "2026-04-14T07:33:12Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53991/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53991", + "files_url": "https://github.com/openclaw/openclaw/pull/66400/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66400", "labels": [ - "size: XS", - "r: too-many-prs" + "size: XS" ], "merged": false, - "number": 53991, - "review_comments_count": 2, - "state": "closed", - "title": "fix: prevent MiniMax reasoning tag leaks (/)", - "updated_at": "2026-03-24T21:50:21Z" + "number": 66400, + "review_comments_count": 3, + "state": "open", + "title": "fix(tui): tool events dropped when arriving before chat delta", + "updated_at": "2026-04-14T07:44:42Z" }, { - "additions": 12, - "author": "jhawpetoss6-collab", + "additions": 763, + "author": "Kyzcreig", "author_association": "NONE", - "body_excerpt": "This PR introduces a configuration option to disable unconditional image optimization in the Slack channel, ensuring that high-quality resources (like PNG diagrams) remain lossless during upload (#53932). ### Changes: - Added `optimizeUplo\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - add embedded-run observability for the Active Memory recall path - persist failure artifacts and tool census data for diagnosis - keep empty recalls silent while retaining actionable memory-search warnings as debug-only lines\u2026", + "changed_files": 7, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53988", - "created_at": "2026-03-24T21:38:51Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66398", + "created_at": "2026-04-14T07:21:39Z", + "deletions": 34, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53988/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53988", + "files_url": "https://github.com/openclaw/openclaw/pull/66398/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66398", "labels": [ - "channel: slack", - "size: XS", - "r: too-many-prs" + "gateway", + "agents", + "size: L" ], "merged": false, - "number": 53988, - "review_comments_count": 4, + "number": 66398, + "review_comments_count": 3, "state": "closed", - "title": "feat: allow opt-out for image optimization in Slack", - "updated_at": "2026-03-24T21:40:58Z" + "title": "feat: instrument active-memory embedded runs", + "updated_at": "2026-04-14T07:35:09Z" }, { - "additions": 10, - "author": "jhawpetoss6-collab", + "additions": 9, + "author": "zhanggpcsu", "author_association": "NONE", - "body_excerpt": "This PR updates the Nextcloud Talk documentation to include the mandatory `--feature response` flag, which is required for bots to send outgoing messages (#53982). ### Changes: - Added explicit registration command example. - Documented co\u2026", - "changed_files": 1, + "body_excerpt": "## Summary The `formatNextRun` function was returning localized strings when the system locale was non-English: - `formatNextRun(null)` returned Chinese \"\u4e0d\u9002\u7528\" instead of \"n/a\" - Weekday was displayed in Chinese (e.g., \"\u5468\u4e00\") instead of Engl\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53987", - "created_at": "2026-03-24T21:38:33Z", - "deletions": 132, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66396", + "created_at": "2026-04-14T07:10:06Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53987/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53987", + "files_url": "https://github.com/openclaw/openclaw/pull/66396/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66396", "labels": [ - "docs", - "channel: nextcloud-talk", - "size: XS", - "r: too-many-prs" + "app: web-ui", + "size: XS" ], "merged": false, - "number": 53987, - "review_comments_count": 3, + "number": 66396, + "review_comments_count": 1, "state": "closed", - "title": "docs: clarify mandatory features for Nextcloud Talk bots", - "updated_at": "2026-03-24T21:43:56Z" + "title": "fix(ui): use explicit English locale in formatNextRun", + "updated_at": "2026-04-14T07:52:42Z" }, { - "additions": 9, - "author": "jhawpetoss6-collab", + "additions": 53, + "author": "Angfr95", "author_association": "NONE", - "body_excerpt": "This PR fixes a bug where URLs containing the sequence `/ .` were incorrectly rendered or truncated in the Web UI dashboard (#53934). ### Changes: - Added `preserveUrlSequences` logic to the UI rendering pipeline. - Uses zero-width space i\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - **Problem:** The refresh chat data button was only disabled when `chatLoading` or disconnected, remaining clickable during active agent turns. - **Why it matters:** Clicking refresh mid-turn stalls the live run, resets chat st\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53986", - "created_at": "2026-03-24T21:38:12Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66395", + "created_at": "2026-04-14T07:08:55Z", + "deletions": 7, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53986/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53986", + "files_url": "https://github.com/openclaw/openclaw/pull/66395/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66395", "labels": [ - "size: XS", - "r: too-many-prs" + "channel: slack", + "app: web-ui", + "size: S" ], "merged": false, - "number": 53986, - "review_comments_count": 4, - "state": "closed", - "title": "fix: prevent URL corruption for `/ .` sequences in Web UI", - "updated_at": "2026-03-24T21:40:18Z" + "number": 66395, + "review_comments_count": 2, + "state": "open", + "title": "Fix/disable refresh during active turn", + "updated_at": "2026-04-14T07:13:44Z" }, { - "additions": 17, - "author": "jhawpetoss6-collab", + "additions": 551, + "author": "CyberRaccoonTeam", "author_association": "NONE", - "body_excerpt": "This PR fixes a bug where leading zeros in port numbers (like 3000) were occasionally misparsed as octal or truncated when processed by the LLM output parser (#53935). ### Changes: - Added `parsePort` utility with explicit base-10 coercion\u2026", - "changed_files": 1, + "body_excerpt": "## Summary Adds a new **Matrix theme** inspired by the iconic film, featuring: - Lime green (`#00ff41`) accent on deep black (`#000000`) - Digital rain aesthetic with glow effects - Animations: glitch, flicker, scanline overlay - Monospace\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53985", - "created_at": "2026-03-24T21:37:42Z", - "deletions": 0, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66387", + "created_at": "2026-04-14T06:41:56Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53985/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53985", + "files_url": "https://github.com/openclaw/openclaw/pull/66387/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66387", "labels": [ - "size: XS", - "r: too-many-prs" + "app: web-ui", + "size: L" ], "merged": false, - "number": 53985, - "review_comments_count": 5, - "state": "closed", - "title": "fix: implement precise port parsing for leading zeros", - "updated_at": "2026-03-24T21:44:36Z" + "number": 66387, + "review_comments_count": 6, + "state": "open", + "title": "feat: Add Matrix theme with lime green digital rain aesthetic", + "updated_at": "2026-04-14T07:11:19Z" }, { - "additions": 733, - "author": "karpizin", - "author_association": "NONE", - "body_excerpt": "## Summary - **Problem:** OpenClaw's Markdown/LanceDB memory lacks semantic self-organization \u2014 facts aren't deduplicated, entities aren't extracted, and daily logs grow unboundedly over time. - **Why it matters:** Power users accumulate m\u2026", - "changed_files": 8, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53984", - "created_at": "2026-03-24T21:37:30Z", - "deletions": 3, + "additions": 64, + "author": "obviyus", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - allow hostname navigation under the default browser SSRF policy object - keep strict hostname blocking and redirect-hop inspection for explicit strict mode only - use the loopback CDP control policy for the `/json/new` fallbac\u2026", + "changed_files": 9, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66386", + "created_at": "2026-04-14T06:37:28Z", + "deletions": 10, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53984/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53984", + "files_url": "https://github.com/openclaw/openclaw/pull/66386/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66386", "labels": [ - "docs", - "agents", - "size: L" + "maintainer", + "size: S" ], - "merged": false, - "number": 53984, - "review_comments_count": 4, - "state": "open", - "title": "Feature/hybrid mem0 backend", - "updated_at": "2026-03-24T22:14:10Z" + "merged": true, + "number": 66386, + "review_comments_count": 3, + "state": "closed", + "title": "fix(browser): close SSRF browser follow-ups", + "updated_at": "2026-04-14T07:18:12Z" }, { - "additions": 6486, - "author": "nefainl", + "additions": 162, + "author": "mkg20001", "author_association": "NONE", - "body_excerpt": "## Summary **PR10B \u2014 Hive skill registry seed:** extends managed `hub.lock.json` with optional hive provenance + scanner policy metadata, adds ClawHub-anchored skill feed sync (`src/hive/`), gateway **`hive.sync`** (ADMIN) and CLI `opencla\u2026", - "changed_files": 116, + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: Adds an option named skills.allowExternalSkillsIn string[] that allows symlinks resolving outside their skills root to be accepted when their real path falls under any of the listed p\u2026", + "changed_files": 8, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53983", - "created_at": "2026-03-24T21:37:15Z", - "deletions": 83, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66385", + "created_at": "2026-04-14T06:36:13Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53983/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53983", + "files_url": "https://github.com/openclaw/openclaw/pull/66385/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66385", "labels": [ "docs", - "app: macos", - "app: web-ui", - "gateway", - "cli", - "scripts", "agents", - "size: XL" + "size: S" ], "merged": false, - "number": 53983, - "review_comments_count": 0, + "number": 66385, + "review_comments_count": 6, "state": "open", - "title": "feat(hive): PR10B hive skill registry seed (feed sync, lockfile, consortium)", - "updated_at": "2026-03-24T22:00:44Z" + "title": "feat(skills): add allowExternalSkillsIn config", + "updated_at": "2026-04-14T07:44:25Z" }, { - "additions": 20, - "author": "jhawpetoss6-collab", + "additions": 62, + "author": "josmithiii", "author_association": "NONE", - "body_excerpt": "This PR enables the OpenClaw CLI to target specific gateways, which is essential for multi-agent or bot-to-bot communication setups (#53945). ### Changes: - Added `resolveGatewayTarget` logic to the CLI orchestration. - CLI now respects `g\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - **Problem:** Embedded-runner Google requests for `gemini-2.5-pro` with `thinkingBudget=0` fail with `Budget 0 is invalid. This model only works in thinking mode.` - **Why it matters:** Gemini 2.5 Pro is unusable through the em\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53981", - "created_at": "2026-03-24T21:32:21Z", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66384", + "created_at": "2026-04-14T06:34:16Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53981/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53981", + "files_url": "https://github.com/openclaw/openclaw/pull/66384/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66384", "labels": [ - "cli", - "size: XS", - "r: too-many-prs" + "agents", + "size: S" ], "merged": false, - "number": 53981, - "review_comments_count": 5, + "number": 66384, + "review_comments_count": 1, "state": "closed", - "title": "feat: implement gateway URL targeting for CLI client", - "updated_at": "2026-03-24T21:42:53Z" + "title": "fix(google): strip thinkingBudget=0 for gemini-2.5-pro thinking-required model", + "updated_at": "2026-04-14T07:05:42Z" }, { - "additions": 21, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR fixes a bug where third-party plugins installed in the user directory (~/.openclaw/extensions) could not find the core OpenClaw SDK when the main package was installed globally (#53946). ### Changes: - Added `resolveGlobalPluginSdk\u2026", - "changed_files": 1, + "additions": 454, + "author": "openperf", + "author_association": "MEMBER", + "body_excerpt": "### Summary - **Problem**: An agent with `tools.exec` capability can run arbitrary shell or Python commands that write directly to `~/.openclaw/openclaw.json`, bypassing every validated write path (`writeConfigFile`, `config.patch`, `confi\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53980", - "created_at": "2026-03-24T21:32:00Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66383", + "created_at": "2026-04-14T06:29:40Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53980/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53980", + "files_url": "https://github.com/openclaw/openclaw/pull/66383/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66383", "labels": [ - "size: XS", - "r: too-many-prs" + "maintainer", + "size: M" ], "merged": false, - "number": 53980, - "review_comments_count": 5, + "number": 66383, + "review_comments_count": 6, "state": "closed", - "title": "fix: resolve plugin-sdk path for global installations", - "updated_at": "2026-03-24T21:35:19Z" + "title": "fix(config): recover from schema-invalid config via backup rotation ring", + "updated_at": "2026-04-14T08:31:57Z" }, { - "additions": 24, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR introduces an `IndexJanitor` for the memory search system, specifically addressing the QMD index corruption reported in #53955. ### Changes: - Added `src/memory/remediation/index-janitor.ts`. - Support for detecting empty/corrupted\u2026", - "changed_files": 1, + "additions": 71, + "author": "100yenadmin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## GPT 5.4 Enhancement v3 \u2014 PR 6/6 **Tracking: #66345 | Issue: #66352** **Priority: P2 \u2014 LOW | Type: Provider Support** ## Problem Hermes Agent includes Gemini/Gemma-specific operational guidance that addresses known failure modes. OpenCla\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53979", - "created_at": "2026-03-24T21:31:35Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66379", + "created_at": "2026-04-14T06:04:11Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53979/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53979", + "files_url": "https://github.com/openclaw/openclaw/pull/66379/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66379", "labels": [ - "size: XS", - "r: too-many-prs" + "agents", + "size: S" ], "merged": false, - "number": 53979, - "review_comments_count": 7, - "state": "closed", - "title": "feat: implement memory index auto-repair for provider resilience", - "updated_at": "2026-03-24T21:36:58Z" + "number": 66379, + "review_comments_count": 19, + "state": "open", + "title": "feat(google): add Gemini execution guidance via prompt overlay [v3 6/6]", + "updated_at": "2026-04-14T09:58:55Z" }, { - "additions": 19, - "author": "jhawpetoss6-collab", + "additions": 41, + "author": "athletesofthereef", "author_association": "NONE", - "body_excerpt": "This PR introduces the `FailoverManager`, which provides automated, health-aware routing between primary and fallback model providers (#53959). ### Changes: - Added `src/agents/routing/failover-manager.ts`. - Support for automatic retry on\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - bypass the legacy outbound send dep path for WhatsApp media sends - keep text sends on the existing dep resolution path - add a regression test proving media sends ignore the legacy dep and use the runtime sender ## Why WhatsA\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53978", - "created_at": "2026-03-24T21:31:15Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66378", + "created_at": "2026-04-14T06:04:02Z", + "deletions": 6, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53978/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53978", + "files_url": "https://github.com/openclaw/openclaw/pull/66378/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66378", "labels": [ - "agents", - "size: XS", - "r: too-many-prs" + "channel: whatsapp-web", + "size: XS" ], "merged": false, - "number": 53978, - "review_comments_count": 6, - "state": "closed", - "title": "feat: implement Smart Model Failover for API resilience", - "updated_at": "2026-03-24T21:33:55Z" + "number": 66378, + "review_comments_count": 1, + "state": "open", + "title": "fix(whatsapp): bypass legacy send dep for media sends", + "updated_at": "2026-04-14T06:10:07Z" }, { - "additions": 550493, - "author": "Interstellar-code", - "author_association": "NONE", - "body_excerpt": "## Summary - Populates empty `src/providers/openai-defaults.ts` with `OPENAI_DEFAULT_IMAGE_MODEL` and related constants from upstream - Re-exports `logVerbose`, `logVerboseConsole`, and other globals from `src/plugin-sdk/runtime.ts` - Adds\u2026", - "changed_files": 5432, + "additions": 208, + "author": "yqli2420", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: Slack DMs show duplicate messages (one edited, one new) when an agent uses the `[[reply_to_current]]` tag with streaming enabled. - Why it matters: Duplicate messages clutt\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53977", - "created_at": "2026-03-24T21:29:31Z", - "deletions": 164334, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66376", + "created_at": "2026-04-14T06:03:04Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53977/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53977", + "files_url": "https://github.com/openclaw/openclaw/pull/66376/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66376", "labels": [ - "docs", - "channel: bluebubbles", - "channel: discord", - "channel: googlechat", - "channel: imessage", - "channel: line", - "channel: matrix", - "channel: mattermost", - "channel: msteams", - "channel: nextcloud-talk", - "channel: nostr", - "channel: signal", - "channel: slack", - "channel: telegram", - "channel: tlon", - "channel: voice-call", - "channel: whatsapp-web", - "channel: zalo", - "channel: zalouser", - "app: android", - "app: ios", - "app: macos", - "gateway", - "extensions: copilot-proxy", - "extensions: diagnostics-otel", - "extensions: llm-task", - "extensions: lobster", - "extensions: memory-core", - "extensions: memory-lancedb", - "extensions: open-prose", - "scripts", - "docker", - "agents", - "channel: feishu", - "channel: twitch", - "extensions: device-pair", - "extensions: minimax-portal-auth", - "extensions: phone-control", - "extensions: talk-voice", - "channel: irc", - "size: XL", - "extensions: acpx", - "extensions: openai", - "extensions: minimax", - "extensions: moonshot", - "extensions: venice", - "extensions: xiaomi", - "extensions: fal", - "extensions: tavily", - "extensions: duckduckgo" + "size: M" ], "merged": false, - "number": 53977, - "review_comments_count": 2, - "state": "closed", - "title": "fix(exports): add missing exports and ImageGeneration type fields", - "updated_at": "2026-03-24T21:38:06Z" + "number": 66376, + "review_comments_count": 7, + "state": "open", + "title": "fix(slack): prevent duplicate DM messages with [[reply_to_current]] tag", + "updated_at": "2026-04-14T06:07:11Z" }, { - "additions": 11, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR fixes a confusing and persistent warning where npm-installed plugins would report an ID mismatch even when correctly configured (#53954). ### Changes: - Improved ID hint derivation logic to be more flexible with npm package naming\u2026", + "additions": 8, + "author": "100yenadmin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## GPT 5.4 Enhancement v3 \u2014 PR 5/6 **Tracking: #66345 | Issue: #66351** **Priority: P2 \u2014 LOW | Type: Quality Polish** ## Problem OpenClaw's GPT-5 execution bias says \"Act first, then verify if needed\" but doesn't specify *what* to verify.\u2026", "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53976", - "created_at": "2026-03-24T21:28:04Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66375", + "created_at": "2026-04-14T06:02:39Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53976/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53976", + "files_url": "https://github.com/openclaw/openclaw/pull/66375/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66375", "labels": [ "size: XS", - "r: too-many-prs" + "extensions: openai" ], "merged": false, - "number": 53976, - "review_comments_count": 3, - "state": "closed", - "title": "fix: resolve persistent plugin id mismatch warnings", - "updated_at": "2026-03-24T21:30:53Z" + "number": 66375, + "review_comments_count": 9, + "state": "open", + "title": "feat(openai): add verification checklist to GPT-5 execution bias [v3 5/6]", + "updated_at": "2026-04-14T09:58:53Z" }, { - "additions": 13, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR introduces support for 24-hour time formatting in the Control UI, allowing users to toggle between 12h/24h displays or follow their browser locale (#53952). ### Changes: - Added `formatTimestamp` utility with configurable `hour12`\u2026", - "changed_files": 1, + "additions": 241, + "author": "100yenadmin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## GPT 5.4 Enhancement v3 \u2014 PR 4/6 **Tracking: #66345 | Issue: #66350** **Priority: P2 \u2014 SECURITY** ## Problem OpenClaw loads workspace context files (SOUL.md, AGENTS.md, identity.md, etc.) into the system prompt without scanning for injec\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53975", - "created_at": "2026-03-24T21:27:27Z", - "deletions": 0, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66374", + "created_at": "2026-04-14T06:01:55Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53975/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53975", + "files_url": "https://github.com/openclaw/openclaw/pull/66374/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66374", "labels": [ - "size: XS", - "r: too-many-prs" + "agents", + "size: M" ], "merged": false, - "number": 53975, - "review_comments_count": 4, - "state": "closed", - "title": "feat: support 24-hour time format in Control UI", - "updated_at": "2026-03-24T21:30:44Z" + "number": 66374, + "review_comments_count": 34, + "state": "open", + "title": "feat(agents): add context file prompt injection scanning [v3 4/6]", + "updated_at": "2026-04-14T11:17:52Z" }, { - "additions": 8, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR ensures that internal cross-channel reply tags like `[[reply_to_current]]` are stripped before being rendered in the Webchat (Control UI), preventing them from appearing as literal text (#53960). ### Changes: - Added `stripReplyTag\u2026", - "changed_files": 1, + "additions": 56, + "author": "100yenadmin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## GPT 5.4 Enhancement v3 \u2014 PR 3/6 **Tracking: #66345 | Issue: #66348** **Priority: P1 \u2014 MEDIUM | Type: Architecture** ## Problem PR 1 (#66371) adds mandatory tool-use categories for GPT-5 via `stablePrefix`. This works but conflates two c\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53974", - "created_at": "2026-03-24T21:27:07Z", - "deletions": 0, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66373", + "created_at": "2026-04-14T06:00:21Z", + "deletions": 8, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53974/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53974", + "files_url": "https://github.com/openclaw/openclaw/pull/66373/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66373", "labels": [ - "gateway", - "size: XS", - "r: too-many-prs" + "agents", + "size: S", + "extensions: openai" ], "merged": false, - "number": 53974, - "review_comments_count": 3, - "state": "closed", - "title": "fix: strip [[reply_to_current]] tags from Webchat messages", - "updated_at": "2026-03-24T21:32:30Z" + "number": 66373, + "review_comments_count": 19, + "state": "open", + "title": "feat(agents): add tool_enforcement as first-class provider prompt section [v3 3/6]", + "updated_at": "2026-04-14T11:16:48Z" }, { - "additions": 10, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR fixes a critical crash-loop in the MSTeams channel plugin caused by a module singleton mismatch and uncompiled TypeScript loading issues (#53953). ### Changes: - Unified MSTeams runtime store via `plugin-sdk` to ensure gateway and\u2026", + "additions": 14, + "author": "100yenadmin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## GPT 5.4 Enhancement v3 \u2014 PR 2/6 **Tracking: #66345 | Issue: #66347** **Priority: P0 \u2014 HIGH | Gap closure: ~25%** ## Problem GPT 5.4 on OpenClaw exhibits two failure modes Hermes avoids: ``` User: \"Is port 8080 open?\" Tool returns empty\u2026", "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53973", - "created_at": "2026-03-24T21:26:32Z", - "deletions": 0, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66372", + "created_at": "2026-04-14T05:58:56Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53973/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53973", + "files_url": "https://github.com/openclaw/openclaw/pull/66372/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66372", "labels": [ - "size: XS" + "size: XS", + "extensions: openai" ], "merged": false, - "number": 53973, - "review_comments_count": 4, + "number": 66372, + "review_comments_count": 12, "state": "open", - "title": "fix: resolve MSTeams runtime initialization and module singleton mismatch", - "updated_at": "2026-03-24T21:32:49Z" + "title": "feat(openai): add act-don't-ask and tool retry directives for GPT-5 [v3 2/6]", + "updated_at": "2026-04-14T11:15:10Z" }, { - "additions": 63, - "author": "fr00st", - "author_association": "NONE", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: - Why it matters: - What changed: - What did NOT change (scope boundary): ## Change Type (select all) - [ ] Bug fix - [ ] Feature - [ ] Refactor required for the fix - [ ]\u2026", - "changed_files": 1, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53972", - "created_at": "2026-03-24T21:26:12Z", - "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53972/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53972", - "labels": [ - "size: S" - ], - "merged": false, - "number": 53972, - "review_comments_count": 7, - "state": "open", - "title": "ci(android): add x86_64 GitHub Actions build for debug APKs", - "updated_at": "2026-03-24T21:44:05Z" - }, - { - "additions": 16, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR enhances Slack error logging by extracting and formatting structured data (like missing scopes or rate limits) that were previously hidden in generic error strings (#53966). ### Changes: - Added `formatSlackApiError` helper in the\u2026", - "changed_files": 1, + "additions": 44, + "author": "100yenadmin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## GPT 5.4 Enhancement v3 \u2014 PR 1/6 **Tracking: #66345 | Issue: #66346** **Priority: P0 \u2014 CRITICAL | Gap closure: ~35%** ## Problem GPT 5.4 on OpenClaw answers factual, computational, and system-state questions from training data instead of\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53971", - "created_at": "2026-03-24T21:25:06Z", - "deletions": 0, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66371", + "created_at": "2026-04-14T05:57:51Z", + "deletions": 8, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53971/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53971", + "files_url": "https://github.com/openclaw/openclaw/pull/66371/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66371", "labels": [ - "channel: slack", - "size: XS" + "size: S", + "extensions: openai" ], "merged": false, - "number": 53971, - "review_comments_count": 3, + "number": 66371, + "review_comments_count": 30, "state": "open", - "title": "fix: include Slack API error details in log messages", - "updated_at": "2026-03-24T21:27:28Z" + "title": "feat(openai): add mandatory tool-use categories for GPT-5 models [v3 1/6]", + "updated_at": "2026-04-14T11:28:40Z" }, { - "additions": 18, - "author": "jhawpetoss6-collab", + "additions": 38, + "author": "lilesjtu", "author_association": "NONE", - "body_excerpt": "This PR introduces a pinning mechanism for the channel registry, preventing \"Channel is unavailable\" errors that occur when the registry is swapped mid-operation (#53944). ### Changes: - Added `pinChannelRegistry` logic to the gateway star\u2026", - "changed_files": 1, + "body_excerpt": "## Summary This change removes OpenClaw-side filtering and suppression that hide `qwen3.6-plus` when the configured Qwen base URL points at Alibaba's Coding Plan endpoints. ## Why Alibaba Cloud Coding Plan now supports `qwen3.6-plus` for a\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53970", - "created_at": "2026-03-24T21:24:47Z", - "deletions": 0, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66367", + "created_at": "2026-04-14T05:38:14Z", + "deletions": 67, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53970/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53970", + "files_url": "https://github.com/openclaw/openclaw/pull/66367/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66367", "labels": [ - "gateway", - "size: XS" + "docs", + "size: S" ], "merged": false, - "number": 53970, - "review_comments_count": 3, + "number": 66367, + "review_comments_count": 1, "state": "open", - "title": "fix: pin channel registry at startup to survive registry swaps", - "updated_at": "2026-03-24T21:27:09Z" + "title": "fix: expose qwen3.6-plus on Coding Plan endpoints", + "updated_at": "2026-04-14T07:14:41Z" }, { - "additions": 12, - "author": "jhawpetoss6-collab", + "additions": 628, + "author": "rubencu", "author_association": "NONE", - "body_excerpt": "This PR implements strict namespace integrity checks for memory writes, ensuring that agents cannot pollute or corrupt memory across project boundaries (#53930). ### Changes: - Added `MemoryNamespaceValidator` to the write pipeline. - Expl\u2026", - "changed_files": 1, + "body_excerpt": "## Summary Fixes long quiet turns losing configured typing before the run actually finishes. This keeps typing alive through known long-quiet phases instead of letting the run-side typing TTL expire while the run is still healthy. Fixes #6\u2026", + "changed_files": 16, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53968", - "created_at": "2026-03-24T21:23:55Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66365", + "created_at": "2026-04-14T05:29:39Z", + "deletions": 80, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53968/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53968", + "files_url": "https://github.com/openclaw/openclaw/pull/66365/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66365", "labels": [ - "size: XS" + "agents", + "size: L" ], "merged": false, - "number": 53968, - "review_comments_count": 6, + "number": 66365, + "review_comments_count": 0, "state": "open", - "title": "feat: enforce project namespace integrity for memory writes", - "updated_at": "2026-03-24T21:26:24Z" + "title": "fix: keep typing alive through long quiet phases", + "updated_at": "2026-04-14T05:52:11Z" }, { - "additions": 24, - "author": "jhawpetoss6-collab", + "additions": 69, + "author": "Rohan5commit", "author_association": "NONE", - "body_excerpt": "This PR addresses the issue of plugin duplication and gateway restart timeouts (#53938). ### Changes: - Added `PluginDeduplicator` to normalize the plugin registry before loading. - Prefers explicitly installed plugins to resolve ID confli\u2026", - "changed_files": 1, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, + "body_excerpt": "## Summary - Problem: pure billing-cooldown fallback summaries are classified from message text only, so users get the generic failure text instead of billing guidance. - Why it matters: exhausted Anthropic OAuth/API-key users keep retryin\u2026", + "changed_files": 2, + "cluster_id": "cluster-66314-5", + "cluster_ids": [ + "cluster-66314-5" + ], + "cluster_role": "member", "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53967", - "created_at": "2026-03-24T21:23:28Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66363", + "created_at": "2026-04-14T05:29:16Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53967/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53967", + "files_url": "https://github.com/openclaw/openclaw/pull/66363/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66363", "labels": [ - "size: XS" + "size: S" ], "merged": false, - "number": 53967, - "review_comments_count": 4, + "number": 66363, + "review_comments_count": 0, "state": "open", - "title": "fix: implement plugin deduplication and improve gateway restart stability", - "updated_at": "2026-03-24T21:26:29Z" + "title": "fix(reply): classify billing cooldown summaries", + "updated_at": "2026-04-14T05:37:00Z" }, { - "additions": 117, - "author": "deucemask", + "additions": 5, + "author": "Rohan5commit", "author_association": "NONE", - "body_excerpt": "## Summary - Problem: Slack API errors carry structured fields (needed/provided scopes, error codes, rate-limit retry info) that were lost when logged via `String(err)`, making scope mismatches and auth failures hard to diagnose. - Why it\u2026", - "changed_files": 10, - "cluster_id": "cluster-53248-81", + "body_excerpt": "## Summary - Problem: npm/global builds ship chunks that import `dist/subagent-registry.runtime.js`, but that runtime sidecar is not emitted into `dist`. - Why it matters: subagent cleanup/session resume fails after successful subagent run\u2026", + "changed_files": 4, + "cluster_id": "cluster-66096-7", "cluster_ids": [ - "cluster-53248-81" + "cluster-66096-7" ], "cluster_role": "member", "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53966", - "created_at": "2026-03-24T21:21:28Z", - "deletions": 19, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66364", + "created_at": "2026-04-14T05:29:16Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53966/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53966", + "files_url": "https://github.com/openclaw/openclaw/pull/66364/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66364", "labels": [ - "channel: slack", - "size: S" + "scripts", + "size: XS" ], "merged": false, - "number": 53966, - "review_comments_count": 2, + "number": 66364, + "review_comments_count": 1, "state": "open", - "title": "fix(slack): include API error details in log messages", - "updated_at": "2026-03-24T21:25:57Z" + "title": "fix(build): ship subagent-registry runtime sidecar", + "updated_at": "2026-04-14T05:33:17Z" }, { - "additions": 19, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR fixes a crash when OpenClaw attempts to write config or auth files while running in Docker on a Windows host (#53947). ### Changes: - Wrapped `chmodSync` in a try/catch to handle `EPERM` on NTFS/CIFS mounts. - Aligns synchronous fi\u2026", - "changed_files": 1, + "additions": 54, + "author": "pgondhi987", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - **Problem:** The QA Lab Docker harness published both the QA Lab port (`43124`) and the Gateway port (`18789`) bound to all interfaces (`0.0.0.0`), and the `GET /api/bootstrap` response embedded the raw Gateway bearer token in\u2026", + "changed_files": 9, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53965", - "created_at": "2026-03-24T21:20:32Z", - "deletions": 0, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66355", + "created_at": "2026-04-14T04:59:45Z", + "deletions": 51, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53965/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53965", + "files_url": "https://github.com/openclaw/openclaw/pull/66355/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66355", "labels": [ - "size: XS" + "maintainer", + "size: S", + "extensions: qa-lab" ], "merged": false, - "number": 53965, - "review_comments_count": 4, + "number": 66355, + "review_comments_count": 0, "state": "open", - "title": "fix: atomic file writes on Windows-mounted Docker volumes", - "updated_at": "2026-03-24T21:23:13Z" + "title": "fix(qa-lab): remove token from bootstrap response and bind Docker ports to loopback [AI]", + "updated_at": "2026-04-14T07:39:58Z" }, { - "additions": 20, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR implements status tracking and diagnostic logging for the message delivery pipeline, eliminating the \"silent drop\" problem (#53961). ### Changes: - Added `DeliveryStatus` tracking. - Diagnostic warnings for undelivered messages. -\u2026", - "changed_files": 1, + "additions": 248, + "author": "hxy91819", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: managed loopback Chrome can come up healthy on 127.0.0.1, but OpenClaw still reports `Chrome CDP websocket for profile \"openclaw\" is not reachable after start` under strict default SSRF policy. - Why it matters: the b\u2026", + "changed_files": 8, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53964", - "created_at": "2026-03-24T21:20:11Z", - "deletions": 0, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66354", + "created_at": "2026-04-14T04:55:42Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53964/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53964", + "files_url": "https://github.com/openclaw/openclaw/pull/66354/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66354", "labels": [ - "size: XS" + "docs", + "maintainer", + "size: S" ], - "merged": false, - "number": 53964, - "review_comments_count": 3, - "state": "open", - "title": "fix: track and log silent delivery failures", - "updated_at": "2026-03-24T21:22:30Z" + "merged": true, + "number": 66354, + "review_comments_count": 1, + "state": "closed", + "title": "fix(browser): unblock loopback CDP readiness under strict SSRF defaults", + "updated_at": "2026-04-14T08:30:54Z" }, { - "additions": 28, - "author": "jhawpetoss6-collab", + "additions": 689, + "author": "Hchunjun", "author_association": "NONE", - "body_excerpt": "This PR introduces a standardized ReAct fallback mechanism for models that do not natively support JSON-schema tool calling (Ollama, local-first models) (#53948). ### Changes: - Added `ReActFallbackWrapper` in `src/agents/fallback/`. - Sup\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - **Problem**: When AI streams a reply containing a Markdown table, the `EmbeddedBlockChunker` may split the message in the middle of a table, producing broken/fragmented table rendering across chat messages. - **Why it matters*\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53963", - "created_at": "2026-03-24T21:19:45Z", - "deletions": 0, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66344", + "created_at": "2026-04-14T04:42:23Z", + "deletions": 32, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53963/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53963", + "files_url": "https://github.com/openclaw/openclaw/pull/66344/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66344", "labels": [ "agents", - "size: XS" + "size: L" ], "merged": false, - "number": 53963, - "review_comments_count": 5, + "number": 66344, + "review_comments_count": 4, "state": "open", - "title": "feat: implement ReAct tool-calling fallback for local models", - "updated_at": "2026-03-24T21:22:23Z" + "title": "feat(chunker): add table protection to streaming block chunker", + "updated_at": "2026-04-14T05:06:33Z" }, { - "additions": 30, - "author": "jhawpetoss6-collab", + "additions": 52, + "author": "Angfr95", "author_association": "NONE", - "body_excerpt": "This PR introduces the `BootstrapJanitor`, a core self-healing component that detects and repairs common runtime issues (like missing plugin builds or dependencies) during gateway startup (#53818). ### Changes: - Added `src/infra/remediati\u2026", - "changed_files": 1, + "body_excerpt": "fix(slack): stop provider gracefully on auth errors instead of crashing gateway Non-recoverable Slack auth errors (account_inactive, invalid_auth, etc.) were throwing out of monitorSlackProvider, propagating as unhandled promise rejections\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53962", - "created_at": "2026-03-24T21:19:19Z", - "deletions": 0, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66342", + "created_at": "2026-04-14T04:39:29Z", + "deletions": 6, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53962/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53962", + "files_url": "https://github.com/openclaw/openclaw/pull/66342/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66342", "labels": [ - "size: XS" + "channel: slack", + "size: S" ], "merged": false, - "number": 53962, - "review_comments_count": 6, + "number": 66342, + "review_comments_count": 2, "state": "open", - "title": "feat: implement Self-Healing Bootstrap Janitor for automated remediation", - "updated_at": "2026-03-24T21:22:32Z" + "title": "fix(slack): stop provider gracefully on auth errors instead of crashing gateway", + "updated_at": "2026-04-14T11:52:21Z" }, { - "additions": 771, - "author": "Kaspre", + "additions": 338, + "author": "TOMUIV", "author_association": "NONE", - "body_excerpt": "## Summary `deliverAgentCommandResult()` previously discarded the result of `deliverOutboundPayloads()` and had no try/catch around the call, making any delivery failure \u2014 whether from a thrown error, an empty result set, or a silently ski\u2026", - "changed_files": 21, + "body_excerpt": "## What Lowers `cron.add` from `operator.admin` to `operator.write`, and adds a scope ceiling filter at cron job execution time so write-scoped callers cannot elevate privileges through scheduled jobs. ## Why Users with `operator.write` sc\u2026", + "changed_files": 11, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53961", - "created_at": "2026-03-24T21:16:42Z", - "deletions": 19, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66341", + "created_at": "2026-04-14T04:32:33Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53961/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53961", + "files_url": "https://github.com/openclaw/openclaw/pull/66341/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66341", "labels": [ - "app: web-ui", "gateway", "agents", - "size: L" + "size: M" + ], + "merged": false, + "number": 66341, + "review_comments_count": 3, + "state": "open", + "title": "fix(cron): lower cron.add scope from admin to write with scope ceiling", + "updated_at": "2026-04-14T11:45:18Z" + }, + { + "additions": 3, + "author": "yqli2420", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: Billing cooldown skip messages (e.g., \"Provider X has billing issue\") were not recognized by `isBillingErrorMessage()`, causing the system to display a generic error instea\u2026", + "changed_files": 1, + "cluster_id": "cluster-66314-5", + "cluster_ids": [ + "cluster-66314-5" + ], + "cluster_role": "canonical", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66340", + "created_at": "2026-04-14T04:20:52Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66340/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66340", + "labels": [ + "agents", + "size: XS" ], "merged": false, - "number": 53961, + "number": 66340, "review_comments_count": 2, "state": "open", - "title": "fix(delivery): track and log silent delivery failures", - "updated_at": "2026-03-24T21:21:24Z" + "title": "fix(billing): recognize billing cooldown skip messages as billing errors", + "updated_at": "2026-04-14T04:23:35Z" }, { - "additions": 684, - "author": "vincentkoc", - "author_association": "MEMBER", - "body_excerpt": "## Summary - Problem: Slack DM turns had avoidable hot-path overhead, and embedded Codex/OpenAI sessions silently inherited upstream `transport: \"sse\"` even when OpenClaw intended `auto`. - Why it matters: local Slack debugging felt slower\u2026", - "changed_files": 15, - "cluster_id": "cluster-53248-81", + "additions": 6, + "author": "hclsys", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary \\`resolveAcpTargetSessionKey\\` returned an error immediately when the token was non-empty but didn't resolve as a session key \u2014 blocking the thread-binding fallback from ever being reached. This means \\`/acp close\\` inside a bou\u2026", + "changed_files": 1, + "cluster_id": "cluster-63329-8", "cluster_ids": [ - "cluster-53248-81" + "cluster-63329-8" ], "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53957", - "created_at": "2026-03-24T21:02:47Z", - "deletions": 87, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66338", + "created_at": "2026-04-14T04:18:12Z", + "deletions": 6, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53957/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53957", + "files_url": "https://github.com/openclaw/openclaw/pull/66338/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66338", "labels": [ - "channel: slack", - "agents", - "maintainer", - "size: L" + "size: XS" ], - "merged": true, - "number": 53957, - "review_comments_count": 4, - "state": "closed", - "title": "fix(slack): trim DM reply overhead and restore Codex auto transport", - "updated_at": "2026-03-24T22:08:13Z" + "merged": false, + "number": 66338, + "review_comments_count": 2, + "state": "open", + "title": "fix(acp): fall through to thread-binding when token doesn't resolve", + "updated_at": "2026-04-14T04:21:13Z" }, { - "additions": 293, - "author": "arjun-memfold", + "additions": 52, + "author": "yidianyiko", "author_association": "NONE", - "body_excerpt": "## Summary - Adds [Defuddle](https://github.com/kepano/defuddle) as the primary content extraction engine for `web_fetch` `text/html` responses, with `@mozilla/readability` retained as a fallback when Defuddle returns no content. - Refacto\u2026", - "changed_files": 17, + "body_excerpt": "## Summary - Problem: gateway startup warmup forced `resolveModel(..., { skipProviderRuntimeHooks: true })`, so provider-owned dynamic models such as `codex/gpt-5.4` were misreported as `Unknown model` during startup. - Why it matters: the\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53951", - "created_at": "2026-03-24T20:49:49Z", - "deletions": 31, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66337", + "created_at": "2026-04-14T04:16:32Z", + "deletions": 11, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53951/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53951", + "files_url": "https://github.com/openclaw/openclaw/pull/66337/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66337", "labels": [ - "docs", - "scripts", - "agents", - "size: M" + "gateway", + "size: S" ], "merged": false, - "number": 53951, - "review_comments_count": 6, + "number": 66337, + "review_comments_count": 0, "state": "open", - "title": "feat(web-fetch): add Defuddle as primary HTML content extractor", - "updated_at": "2026-03-24T20:56:06Z" + "title": "fix(gateway): use provider runtime hooks in startup warmup", + "updated_at": "2026-04-14T04:18:25Z" }, { - "additions": 65, - "author": "Owlock", + "additions": 3173, + "author": "acwilan", "author_association": "NONE", - "body_excerpt": "## Summary - Adds a troubleshooting section for a real-world failure mode after toggling Windows hypervisor mode (`bcdedit /set hypervisorlaunchtype off` -> `auto`) and rebooting. - Documents the symptom split where Chrome CDP works on Win\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - Problem: OpenClaw only supported global speech config, so all agents in one instance shared the same TTS voice/provider behavior and the same STT audio defaults. - Why it matters: multi-agent setups need different speech setti\u2026", + "changed_files": 19, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53950", - "created_at": "2026-03-24T20:44:24Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66331", + "created_at": "2026-04-14T04:06:24Z", + "deletions": 28, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53950/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53950", + "files_url": "https://github.com/openclaw/openclaw/pull/66331/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66331", "labels": [ - "docs", - "size: XS" + "channel: discord", + "agents", + "size: XL" ], "merged": false, - "number": 53950, - "review_comments_count": 5, + "number": 66331, + "review_comments_count": 1, "state": "open", - "title": "docs: add hypervisorlaunchtype toggle recovery to WSL2+Windows remote CDP guide", - "updated_at": "2026-03-24T22:22:58Z" + "title": "Agents: add per-agent TTS and STT overrides", + "updated_at": "2026-04-14T04:22:45Z" }, { - "additions": 962, - "author": "karpizin", + "additions": 338, + "author": "TOMUIV", "author_association": "NONE", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: Many open-source models (especially small or aggressively quantized ones) lack reliable native JSON tool-calling capabilities. Furthermore, reasoning models served via gene\u2026", - "changed_files": 21, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "body_excerpt": "## Changes 1. **Scope ceiling filter**: Prevents write-scoped cron jobs from escalating to admin-required gateway methods 2. **cron.add scope lowered**: From admin to write scope 3. **Tests**: Coverage for cron.add scope authorization ## S\u2026", + "changed_files": 11, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53948", - "created_at": "2026-03-24T20:36:54Z", - "deletions": 99, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66330", + "created_at": "2026-04-14T04:04:34Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53948/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53948", + "files_url": "https://github.com/openclaw/openclaw/pull/66330/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66330", "labels": [ - "docs", "gateway", "agents", - "size: L" + "size: M" ], "merged": false, - "number": 53948, - "review_comments_count": 7, - "state": "open", - "title": "feat(local-models): standardize tool calling with ReAct fallback & th\u2026", - "updated_at": "2026-03-24T20:44:27Z" + "number": 66330, + "review_comments_count": 3, + "state": "closed", + "title": "fix(cron): enforce creatorScopes privilege ceiling + lower cron.add scope", + "updated_at": "2026-04-14T04:12:21Z" }, { - "additions": 824, - "author": "affsantos", + "additions": 71, + "author": "xinmotlanthua", "author_association": "NONE", - "body_excerpt": "## Summary - **Problem:** `getChannelPlugin()` returns `undefined` after a runtime registry swap, causing `Channel is unavailable: ` errors on all outbound message delivery \u2014 the `message` tool, subagent completion announces, and\u2026", - "changed_files": 6, + "body_excerpt": "## Summary - Problem: `openclaw skills check` reports `channels.discord.token` as missing even when multi-account Discord config (`channels.discord.accounts.*.token`) is properly configured - Why it matters: Users with valid multi-account\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53944", - "created_at": "2026-03-24T20:23:44Z", - "deletions": 506, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66329", + "created_at": "2026-04-14T04:04:05Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53944/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53944", + "files_url": "https://github.com/openclaw/openclaw/pull/66329/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66329", "labels": [ - "gateway", + "agents", "size: S" ], - "merged": true, - "number": 53944, - "review_comments_count": 14, + "merged": false, + "number": 66329, + "review_comments_count": 2, "state": "open", - "title": "fix(gateway): pin channel registry at startup to survive registry swaps", - "updated_at": "2026-03-24T23:02:15Z" + "title": "fix: skills check recognises multi-account Discord config", + "updated_at": "2026-04-14T04:22:52Z" }, { - "additions": 587, - "author": "VACInc", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - Problem: restart sentinel could send a restart note without actually waking the interrupted session. - Why it matters: after restart, the in-progress session could stall instead of continuing. - What changed: startup restart-s\u2026", - "changed_files": 9, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "additions": 225, + "author": "johnturek", + "author_association": "NONE", + "body_excerpt": "## Summary Implements `sendPayload` for the MS Teams channel extension so approval prompts render as Adaptive Cards with clickable buttons instead of plain text with raw `/approve` commands. Closes #64690 ## Problem The Teams outbound adap\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53940", - "created_at": "2026-03-24T20:21:07Z", - "deletions": 31, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66327", + "created_at": "2026-04-14T04:00:18Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53940/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53940", + "files_url": "https://github.com/openclaw/openclaw/pull/66327/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66327", "labels": [ - "gateway", - "size: L" + "channel: msteams", + "size: M" ], - "merged": true, - "number": 53940, - "review_comments_count": 12, + "merged": false, + "number": 66327, + "review_comments_count": 7, "state": "open", - "title": "fix(gateway): restart sentinel wakes the session after restart and preserves thread routing", - "updated_at": "2026-03-24T21:18:35Z" + "title": "feat(msteams): implement sendPayload for interactive approval cards", + "updated_at": "2026-04-14T10:56:07Z" }, { - "additions": 255, - "author": "vincentkoc", - "author_association": "MEMBER", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: builtin SQLite memory still pays unnecessary open/search/sync cost after the first landed wins (`lazy provider init`, `empty-index early return`, `EXISTS/LIMIT 1`). - Why i\u2026", - "changed_files": 4, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "additions": 183, + "author": "RoLuoGan", + "author_association": "NONE", + "body_excerpt": "## Problem When a provider request fails with a billing error (e.g. `402 insufficient_balance`), the `handleAssistantFailover` function takes the `surface_error` path, which silently returns without throwing. This means: - The agent Promis\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53939", - "created_at": "2026-03-24T20:20:11Z", - "deletions": 80, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66326", + "created_at": "2026-04-14T03:58:53Z", + "deletions": 37, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53939/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53939", + "files_url": "https://github.com/openclaw/openclaw/pull/66326/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66326", "labels": [ - "maintainer", + "app: web-ui", + "gateway", "size: M" ], - "merged": true, - "number": 53939, - "review_comments_count": 1, + "merged": false, + "number": 66326, + "review_comments_count": 5, "state": "closed", - "title": "perf(memory): builtin sqlite hot-path follow-ups", - "updated_at": "2026-03-24T21:47:42Z" + "title": "Gateway: fix Web UI blocked indefinitely when billing/surface_error occurs", + "updated_at": "2026-04-14T05:52:34Z" }, { - "additions": 6652, - "author": "nefainl", + "additions": 25, + "author": "xinmotlanthua", "author_association": "NONE", - "body_excerpt": "## Depends on - [ ] #53149 (`pr/clean-research-replay`) \u2014 **merge first** or review this as a stacked follow-up. ## Summary - `RewardSignal` + optional fields on research events; `research.learningBridge` config - `src/learning-bridge/`: c\u2026", - "changed_files": 106, + "body_excerpt": "## Summary - Problem: Thinking lines in TUI output are missing whitespace \u2014 sentences from different thinking blocks are concatenated without proper paragraph separation - Why it matters: Users cannot read thinking output clearly, reducing\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 4, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53937", - "created_at": "2026-03-24T20:19:48Z", - "deletions": 77, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66322", + "created_at": "2026-04-14T03:56:20Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53937/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53937", + "files_url": "https://github.com/openclaw/openclaw/pull/66322/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66322", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 66322, + "review_comments_count": 4, + "state": "open", + "title": "fix: add paragraph spacing between thinking blocks", + "updated_at": "2026-04-14T04:11:20Z" + }, + { + "additions": 177, + "author": "xinmotlanthua", + "author_association": "NONE", + "body_excerpt": "## Summary - Problem: macOS app shows \"Health check pending\" even when the gateway is healthy, because `summaryLine` requires `resolveLinkChannel` to be non-nil \u2014 which fails when no channel has linking info - Why it matters: Users see a p\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66321", + "created_at": "2026-04-14T03:55:46Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66321/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66321", "labels": [ - "docs", "app: macos", - "app: web-ui", - "gateway", - "cli", - "scripts", - "agents", - "size: XL" + "size: S" ], "merged": false, - "number": 53937, + "number": 66321, "review_comments_count": 6, "state": "open", - "title": "feat(research): learning bridge + local rl-feed export (PR10A)", - "updated_at": "2026-03-24T22:00:12Z" + "title": "fix: macOS app stays on 'Health check pending' even when gateway is healthy", + "updated_at": "2026-04-14T04:44:29Z" }, { - "additions": 21, - "author": "SharoonSharif", + "additions": 338, + "author": "TOMUIV", "author_association": "NONE", - "body_excerpt": "## Summary Adds diagnostic logging to `web_search` tool when API key resolution fails, making it possible to diagnose issues like #53857 from gateway logs. **Problem**: When `web_search` cannot resolve an API key, it returns a generic JSON\u2026", - "changed_files": 1, + "body_excerpt": "This PR addresses martingarramon's blocking concern about privilege escalation via cron job execution. ## Changes 1. **Scope ceiling filter** (c00ecff199): Prevents write-scoped operators from escalating to admin-required gateway methods w\u2026", + "changed_files": 11, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53936", - "created_at": "2026-03-24T20:19:02Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66320", + "created_at": "2026-04-14T03:55:17Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53936/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53936", + "files_url": "https://github.com/openclaw/openclaw/pull/66320/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66320", "labels": [ + "gateway", "agents", - "size: XS" + "size: M" ], "merged": false, - "number": 53936, - "review_comments_count": 2, - "state": "open", - "title": "fix(web-search): add diagnostic logging for API key resolution failures", - "updated_at": "2026-03-24T20:21:49Z" + "number": 66320, + "review_comments_count": 5, + "state": "closed", + "title": "fix(cron): enforce creatorScopes as privilege ceiling + lower cron.add scope", + "updated_at": "2026-04-14T04:03:53Z" }, { - "additions": 86, - "author": "drobison00", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: the Feishu webhook handler still used the old 1MB/30s body guard before signature verification, so unauthenticated requests could hold server resources much longer than the\u2026", + "additions": 74, + "author": "huveewomg", + "author_association": "NONE", + "body_excerpt": "## Summary - Problem: When auth profiles enter billing cooldown, model-fallback skips all candidates with `\"Provider X has billing issue (skipping all models)\"`. This message does not match any pattern in `isBillingErrorMessage()`, so user\u2026", "changed_files": 2, - "cluster_id": "cluster-53248-81", + "cluster_id": "cluster-66314-5", "cluster_ids": [ - "cluster-53248-81" + "cluster-66314-5" ], "cluster_role": "member", "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53933", - "created_at": "2026-03-24T20:14:19Z", - "deletions": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66315", + "created_at": "2026-04-14T03:49:45Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53933/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53933", + "files_url": "https://github.com/openclaw/openclaw/pull/66315/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66315", "labels": [ - "maintainer", - "channel: feishu", "size: S" ], - "merged": true, - "number": 53933, + "merged": false, + "number": 66315, "review_comments_count": 0, - "state": "closed", - "title": "Adjust Feishu webhook request body limits", - "updated_at": "2026-03-24T21:02:05Z" + "state": "open", + "title": "fix(agents): detect billing from FallbackSummaryError structured reasons", + "updated_at": "2026-04-14T06:49:06Z" }, { - "additions": 6309, - "author": "SharoonSharif", + "additions": 42, + "author": "johnturek", "author_association": "NONE", - "body_excerpt": "## Summary - **Reactive Intelligence Pipeline** (`src/reactive/`): A complete event-driven system where the assistant monitors configurable data sources, evaluates conditions against user-defined rules, and takes autonomous actions with sa\u2026", - "changed_files": 33, + "body_excerpt": "## Summary Injects \\sessionKey\\ into the system prompt Runtime line so the agent can identify its own session and accurately retrieve its own conversation history. Closes #66292 ## Problem \\RuntimeInfoInput\\ did not include \\sessionKey\\, s\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53931", - "created_at": "2026-03-24T20:07:53Z", + "conversation_url": "https://github.com/openclaw/openclaw/pull/66312", + "created_at": "2026-04-14T03:38:04Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53931/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53931", - "labels": [], + "files_url": "https://github.com/openclaw/openclaw/pull/66312/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66312", + "labels": [ + "agents", + "size: XS" + ], "merged": false, - "number": 53931, - "review_comments_count": 4, - "state": "closed", - "title": "feat: reactive intelligence pipeline + observability + docs", - "updated_at": "2026-03-24T20:34:58Z" + "number": 66312, + "review_comments_count": 1, + "state": "open", + "title": "feat(system-prompt): inject sessionKey into Runtime line", + "updated_at": "2026-04-14T03:40:00Z" }, { - "additions": 1586, - "author": "yaqub0r", + "additions": 2, + "author": "xinmotlanthua", "author_association": "NONE", - "body_excerpt": "Implements issue #9 by adding a shared namespace integrity resolver, removing silent project defaults from write paths, enforcing explicit cross-project override policy, and adding sanitize+test coverage. Closes #9 ## Summary Describe the\u2026", - "changed_files": 10, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "body_excerpt": "## Summary - Problem: Web Chat tool-call blocks truncate tool arguments/parameters, making full invocation details invisible to users - Why it matters: Users cannot inspect what tools are being called with, reducing transparency and debugg\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53930", - "created_at": "2026-03-24T20:06:12Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66311", + "created_at": "2026-04-14T03:34:55Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53930/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53930", + "files_url": "https://github.com/openclaw/openclaw/pull/66311/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66311", "labels": [ - "size: XL" + "app: web-ui", + "size: XS" ], "merged": false, - "number": 53930, - "review_comments_count": 6, + "number": 66311, + "review_comments_count": 0, "state": "open", - "title": "feat: enforce project namespace integrity for memory writes", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix: remove max-height truncation on webchat tool-call cards", + "updated_at": "2026-04-14T04:12:44Z" }, { - "additions": 331, - "author": "jacobtomlinson", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - Replace raw `fetch()` with `fetchWithSsrFGuard` in BlueBubbles, Mattermost, Nextcloud Talk, and Thread Ownership extensions so outbound requests go through the shared DNS-pinning and network-policy layer - Thread `allowPrivate\u2026", - "changed_files": 19, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53929", - "created_at": "2026-03-24T20:04:02Z", - "deletions": 96, + "additions": 3, + "author": "xinmotlanthua", + "author_association": "NONE", + "body_excerpt": "## Summary - Problem: `planStartupCatchup()` in cron service crashes with `TypeError: Cannot read properties of undefined (reading 'runningAtMs')` when `job.state` is undefined - Why it matters: Cron service crashes on startup, breaking al\u2026", + "changed_files": 1, + "cluster_id": "cluster-65003-8", + "cluster_ids": [ + "cluster-65003-8" + ], + "cluster_role": "member", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66310", + "created_at": "2026-04-14T03:34:03Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53929/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53929", + "files_url": "https://github.com/openclaw/openclaw/pull/66310/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66310", "labels": [ - "channel: bluebubbles", - "channel: discord", - "channel: mattermost", - "channel: nextcloud-talk", - "maintainer", - "size: M" + "size: XS" ], "merged": false, - "number": 53929, - "review_comments_count": 0, + "number": 66310, + "review_comments_count": 2, "state": "open", - "title": "fix(extensions): route fetch calls through fetchWithSsrFGuard", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix: add defensive null guard for job.state in cron start()", + "updated_at": "2026-04-14T04:10:45Z" }, { - "additions": 1083, - "author": "JuniperTheDev", + "additions": 37, + "author": "xinmotlanthua", "author_association": "NONE", - "body_excerpt": "## Summary - Add a pulsing heart button to the webchat toolbar that appears when heartbeats are enabled or a task is actively running \u2014 clicking it aborts the active run and disables heartbeats via the `set-heartbeats` API - Fix the agent\u2026", - "changed_files": 32, + "body_excerpt": "## Summary - Problem: `openclaw doctor` hangs at 100% CPU during Plugins step because `resolveExternalCatalogPreferOver` reads 3 catalog files from disk on every call with no caching, creating O(N\u00b2) I/O with ~130 agents - Why it matters: U\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53922", - "created_at": "2026-03-24T19:45:56Z", - "deletions": 65, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66308", + "created_at": "2026-04-14T03:33:00Z", + "deletions": 15, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53922/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53922", - "labels": [], + "files_url": "https://github.com/openclaw/openclaw/pull/66308/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66308", + "labels": [ + "size: S" + ], "merged": false, - "number": 53922, - "review_comments_count": 3, + "number": 66308, + "review_comments_count": 8, "state": "open", - "title": "Web UI: add heartbeat stop button and fix progress updates", - "updated_at": "2026-03-24T21:04:30Z" + "title": "fix: cache catalog file reads to prevent doctor CPU hang", + "updated_at": "2026-04-14T04:55:33Z" }, { - "additions": 117, - "author": "drobison00", + "additions": 55, + "author": "EronFan", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: `runCliAgent()` in `src/agents/cli-runner.ts` merged `backend.env` directly into the child-process environment, so workspace-configured `cliBackends.*.env` values could inj\u2026", - "changed_files": 2, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53921", - "created_at": "2026-03-24T19:43:17Z", - "deletions": 2, + "body_excerpt": "## Summary Fixes a crash that occurs when a cron job with `kind=agentTurn` fires and `event.content` is undefined. ## Root Cause In `extensions/qqbot/src/gateway.ts`, the code path for processing a cron-triggered agentTurn event calls `par\u2026", + "changed_files": 9, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66307", + "created_at": "2026-04-14T03:32:14Z", + "deletions": 10, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53921/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53921", + "files_url": "https://github.com/openclaw/openclaw/pull/66307/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66307", "labels": [ "agents", - "maintainer", - "size: S" + "size: S", + "r: too-many-prs", + "channel: qqbot" ], - "merged": true, - "number": 53921, - "review_comments_count": 0, + "merged": false, + "number": 66307, + "review_comments_count": 2, "state": "closed", - "title": "Adjust CLI backend environment handling before spawn", - "updated_at": "2026-03-24T19:58:11Z" + "title": "fix(qqbot): guard against undefined event.content in cron agentTurn path", + "updated_at": "2026-04-14T03:37:49Z" }, { - "additions": 60, - "author": "JackWuGlobal", - "author_association": "NONE", - "body_excerpt": "## Summary - keep the tracked `openclaw-auth-monitor.service` template unchanged during setup - patch only the copied user unit file - render `ExecStart` to the current checkout\u2019s `scripts/auth-monitor.sh` ## Problem `scripts/setup-auth-sy\u2026", - "changed_files": 1, + "additions": 161, + "author": "GaosCode", + "author_association": "CONTRIBUTOR", + "body_excerpt": "Closes #66094 ## Summary - Problem: when model discovery returned an empty catalog, `loadModelCatalog()` cleared the in-flight cache immediately. - Why it matters: slow transient discovery failures could make every subsequent agent turn re\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53920", - "created_at": "2026-03-24T19:39:28Z", - "deletions": 11, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66305", + "created_at": "2026-04-14T03:24:11Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53920/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53920", + "files_url": "https://github.com/openclaw/openclaw/pull/66305/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66305", "labels": [ - "scripts", + "agents", "size: S" ], "merged": false, - "number": 53920, - "review_comments_count": 8, + "number": 66305, + "review_comments_count": 4, "state": "open", - "title": "fix(scripts): avoid mutating tracked auth-monitor template during setup", - "updated_at": "2026-03-24T21:00:52Z" + "title": "fix(model-catalog): cache empty catalog loads briefly", + "updated_at": "2026-04-14T03:33:14Z" }, { - "additions": 103, - "author": "yhyatt", + "additions": 80, + "author": "xinmotlanthua", "author_association": "NONE", - "body_excerpt": "# Title: fix(whatsapp): active-listener bundle fragmentation + single-arg overload always registers under \"default\" ## Summary Two related bugs in `extensions/whatsapp/src/active-listener.ts` combine to cause outbound WhatsApp delivery fai\u2026", - "changed_files": 2, + "body_excerpt": "> [!NOTE] > \ud83e\udd16 AI-assisted (Claude) \u2014 timeout fix, human-verified ## Summary - Problem: `openclaw approvals get --gateway` uses a 10s default timeout for the config.get RPC, which is too short on slow hosts, causing a false \"Config unavaila\u2026", + "changed_files": 6, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 4, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53918", - "created_at": "2026-03-24T19:30:29Z", - "deletions": 9, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66304", + "created_at": "2026-04-14T03:23:50Z", + "deletions": 19, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53918/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53918", + "files_url": "https://github.com/openclaw/openclaw/pull/66304/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66304", "labels": [ - "channel: whatsapp-web", - "size: S" + "docs", + "cli", + "size: S", + "channel: qqbot" ], "merged": false, - "number": 53918, - "review_comments_count": 5, + "number": 66304, + "review_comments_count": 2, "state": "open", - "title": "fix(whatsapp): resolve configured default account in single-arg setActiveWebListener overload", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix: approvals gateway default timeout too short, misleading error", + "updated_at": "2026-04-14T03:37:25Z" }, { - "additions": 2, - "author": "extrasmall0", + "additions": 0, + "author": "johnturek", "author_association": "NONE", - "body_excerpt": "The log viewer's scroll area was capped at `max-height: 500px`, leaving a bunch of unused space on taller screens. This swaps it for `calc(100vh - 280px)` (with a `min-height: 200px` floor) so the list fills the available vertical space wi\u2026", + "body_excerpt": "## Summary Removes the markdown code fences and doc-display heading from the \\HEARTBEAT.md\\ workspace template so that \\loadTemplate()\\ writes a clean file into user workspaces. Closes #66284 ## Problem Commit \\198de10\\ (\"docs: add missing\u2026", "changed_files": 1, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, + "cluster_id": "cluster-66284-4", + "cluster_ids": [ + "cluster-66284-4" + ], + "cluster_role": "member", "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53916", - "created_at": "2026-03-24T19:27:31Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66303", + "created_at": "2026-04-14T03:23:25Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53916/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53916", + "files_url": "https://github.com/openclaw/openclaw/pull/66303/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66303", "labels": [ - "app: web-ui", + "docs", "size: XS" ], "merged": false, - "number": 53916, - "review_comments_count": 1, + "number": 66303, + "review_comments_count": 0, "state": "open", - "title": "fix: make log stream height responsive to viewport", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix(heartbeat): remove doc-display fences from HEARTBEAT.md template", + "updated_at": "2026-04-14T03:24:11Z" }, { - "additions": 61, - "author": "MoerAI", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Fixes #52604 `repairToolUseResultPairing` failed to detect orphaned tool IDs from MiniMax and other OpenAI-compat models because the function compared raw JSONL IDs against raw tool call IDs, while the Anthropic serializer strip\u2026", + "additions": 16, + "author": "xinmotlanthua", + "author_association": "NONE", + "body_excerpt": "\ud83e\udd16 AI-assisted (Claude) \u2014 defensive null guard fix, human-verified ## Summary - Problem: Cron jobs with `agentTurn` payload crash with `TypeError: Cannot read properties of undefined (reading 'startsWith')` because `event.content` can be un\u2026", "changed_files": 2, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, + "cluster_id": "cluster-66283-4", + "cluster_ids": [ + "cluster-66283-4" + ], + "cluster_role": "canonical", "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53915", - "created_at": "2026-03-24T19:23:17Z", - "deletions": 7, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66302", + "created_at": "2026-04-14T03:19:11Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53915/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53915", + "files_url": "https://github.com/openclaw/openclaw/pull/66302/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66302", "labels": [ - "agents", - "size: S" + "size: XS", + "channel: qqbot" ], "merged": false, - "number": 53915, - "review_comments_count": 1, + "number": 66302, + "review_comments_count": 6, "state": "open", - "title": "fix(agents): sanitize tool IDs in repairToolUseResultPairing before pairing check (#52604)", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix: guard against undefined event.content in cron agentTurn payload", + "updated_at": "2026-04-14T03:38:23Z" }, { - "additions": 45, - "author": "dobbylorenzbot", - "author_association": "NONE", - "body_excerpt": "## Summary The Gateway server default handshake timeout on `main` is already 10s, but `GatewayClient.queueConnect()` still uses a hardcoded 2s default when `connectDelayMs` is not set. That mismatch makes local loopback clients fail under\u2026", - "changed_files": 2, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, + "additions": 0, + "author": "hclsys", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary The shipped \\`HEARTBEAT.md\\` template wrapped its content in \\`\\`\\`markdown fences. \\`isHeartbeatContentEffectivelyEmpty()\\` (\\`src/auto-reply/heartbeat.ts:30\\`) skips \\`#\\`-headers and empty lines but treats backtick fence line\u2026", + "changed_files": 1, + "cluster_id": "cluster-66284-4", + "cluster_ids": [ + "cluster-66284-4" + ], + "cluster_role": "canonical", "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53909", - "created_at": "2026-03-24T19:16:41Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66301", + "created_at": "2026-04-14T03:18:41Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53909/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53909", + "files_url": "https://github.com/openclaw/openclaw/pull/66301/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66301", "labels": [ - "gateway", + "docs", "size: XS" ], - "merged": true, - "number": 53909, + "merged": false, + "number": 66301, "review_comments_count": 0, "state": "open", - "title": "fix(gateway): raise default connect challenge timeout", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix(heartbeat): remove markdown fences from HEARTBEAT.md template", + "updated_at": "2026-04-14T03:20:03Z" }, { - "additions": 515610, - "author": "Interstellar-code", + "additions": 0, + "author": "xinmotlanthua", "author_association": "NONE", - "body_excerpt": "## Summary Fixes four categories of TypeScript errors introduced by the v2026.3.22 upstream sync. - **Duplicate exports** in `src/plugin-sdk/index.ts`: removed duplicate `export type` lines for `SecretInput/SecretRef`, `RuntimeEnv`, `HookE\u2026", - "changed_files": 5224, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, - "comments_count": 4, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53908", - "created_at": "2026-03-24T19:12:32Z", - "deletions": 156418, + "body_excerpt": "> \ud83e\udd16 AI-assisted (Claude) \u2014 fully tested template change, human-verified ## Summary - Problem: HEARTBEAT.md template in docs/reference/templates/ wraps content in markdown code fences for documentation display, but loadTemplate() only strip\u2026", + "changed_files": 1, + "cluster_id": "cluster-66284-4", + "cluster_ids": [ + "cluster-66284-4" + ], + "cluster_role": "member", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66300", + "created_at": "2026-04-14T03:17:52Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53908/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53908", + "files_url": "https://github.com/openclaw/openclaw/pull/66300/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66300", "labels": [ "docs", - "channel: bluebubbles", - "channel: discord", - "channel: googlechat", - "channel: imessage", - "channel: line", - "channel: matrix", - "channel: mattermost", - "channel: msteams", - "channel: nextcloud-talk", - "channel: nostr", - "channel: signal", - "channel: slack", - "channel: telegram", - "channel: tlon", - "channel: voice-call", - "channel: whatsapp-web", - "channel: zalo", - "channel: zalouser", - "app: android", - "app: ios", - "app: macos", - "gateway", - "extensions: copilot-proxy", - "extensions: diagnostics-otel", - "extensions: llm-task", - "extensions: lobster", - "extensions: memory-core", - "extensions: memory-lancedb", - "extensions: open-prose", - "scripts", - "docker", - "agents", - "channel: feishu", - "channel: twitch", - "extensions: device-pair", - "extensions: minimax-portal-auth", - "extensions: phone-control", - "extensions: talk-voice", - "channel: irc", - "size: XL", - "extensions: acpx", - "extensions: openai", - "extensions: minimax", - "extensions: venice", - "extensions: xiaomi", - "extensions: fal", - "extensions: tavily", - "extensions: duckduckgo" + "size: XS" ], "merged": false, - "number": 53908, - "review_comments_count": 2, - "state": "closed", - "title": "fix(post-sync): resolve TypeScript errors from v2026.3.22 upstream sync", - "updated_at": "2026-03-24T19:23:27Z" + "number": 66300, + "review_comments_count": 0, + "state": "open", + "title": "fix: remove documentation fences from HEARTBEAT.md template", + "updated_at": "2026-04-14T03:19:28Z" }, { - "additions": 4223, - "author": "tiagonix", - "author_association": "NONE", - "body_excerpt": "Implements the initial release of the OpenClaw Linux Companion App for Ubuntu GNOME environments, and includes the follow-up hardening/fix work required to make the v1 implementation production-ready. Architecture: - Multiprocess design is\u2026", - "changed_files": 21, + "additions": 433, + "author": "ly85206559", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: On Windows, CLI calls to a local loopback gateway can hit a startup/pre-auth WebSocket race where the gateway closes the socket during the connect handshake with no actionable close reason, surfacing as `gateway close\u2026", + "changed_files": 14, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53905", - "created_at": "2026-03-24T19:07:13Z", - "deletions": 0, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66297", + "created_at": "2026-04-14T03:11:04Z", + "deletions": 25, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53905/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53905", + "files_url": "https://github.com/openclaw/openclaw/pull/66297/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66297", "labels": [ - "size: XL" + "gateway", + "size: M" ], "merged": false, - "number": 53905, + "number": 66297, "review_comments_count": 6, "state": "open", - "title": "linux: Introduce native GTK4 companion app (v1) (#75)", - "updated_at": "2026-03-24T23:44:04Z" + "title": "Gateway: retry Windows loopback CLI WS handshakes (#50380 #52424)", + "updated_at": "2026-04-14T11:58:58Z" }, { - "additions": 11, - "author": "fezzick", - "author_association": "NONE", - "body_excerpt": "## Summary - Fixes a false `doctor` warning for local Ollama memory setups. - When memory provider is `ollama` and the gateway reports embeddings are ready, `doctor` should not warn about a missing CLI API key. - This keeps the warning foc\u2026", - "changed_files": 1, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, + "additions": 5, + "author": "hclsys", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary \\`assertSupportedJobSpec\\` and \\`resolveDeliveryPlan\\` both call \\`sessionTarget.startsWith(\\\"session:\\\")\\` without checking if \\`sessionTarget\\` is defined. When a cron job is created without \\`sessionTarget\\`, the gateway cras\u2026", + "changed_files": 2, + "cluster_id": "cluster-66283-4", + "cluster_ids": [ + "cluster-66283-4" + ], + "cluster_role": "member", "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53904", - "created_at": "2026-03-24T19:03:45Z", - "deletions": 6, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66296", + "created_at": "2026-04-14T03:10:24Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53904/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53904", + "files_url": "https://github.com/openclaw/openclaw/pull/66296/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66296", "labels": [ - "commands", "size: XS" ], "merged": false, - "number": 53904, + "number": 66296, "review_comments_count": 1, "state": "open", - "title": "doctor: suppress false Ollama memory API-key warning", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix(cron): guard against undefined sessionTarget in job validation", + "updated_at": "2026-04-14T03:13:39Z" }, { - "additions": 347, - "author": "livingghost", + "additions": 839, + "author": "solomonneas", "author_association": "NONE", - "body_excerpt": "## Summary - Fixes message-hook-mappers routing, channel-resolution, delivery logic ## Change Type - [x] Bug fix ## Scope - [x] Gateway / orchestration ## Security Impact All No. ## FAQ ### Q: inheritSharedRuntimeOptions is no-op? A: Type\u2026", - "changed_files": 8, + "body_excerpt": "## Summary - **Problem:** Every `openclaw update` regenerates `~/.config/systemd/user/openclaw-gateway.service` and silently drops user-added `EnvironmentFile=` or extra `Environment=` directives. The next gateway start then crash-loops on\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53903", - "created_at": "2026-03-24T19:03:25Z", - "deletions": 7, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66295", + "created_at": "2026-04-14T03:07:05Z", + "deletions": 60, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53903/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53903", + "files_url": "https://github.com/openclaw/openclaw/pull/66295/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66295", "labels": [ "gateway", - "size: M" + "size: L" ], "merged": false, - "number": 53903, - "review_comments_count": 0, + "number": 66295, + "review_comments_count": 4, "state": "closed", - "title": "fix(gateway): fix hook dispatch routing and delivery channel resolution", - "updated_at": "2026-03-24T23:00:08Z" + "title": "Systemd: keep managed env in drop-in so upgrades preserve user directives", + "updated_at": "2026-04-14T09:14:16Z" }, { - "additions": 440, - "author": "livingghost", + "additions": 194, + "author": "ZehanXu-Doncic", "author_association": "NONE", - "body_excerpt": "## Summary - Removed botUserId shadowing, added 5s drain delay, accountId guard requires match - Includes keyed-async-queue with waitForIdle, Telegram buttons Optional, WithTimeoutError class ## Change Type - [x] Bug fix ## Scope - [x] Int\u2026", - "changed_files": 12, + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: If this PR fixes a plugin beta-release blocker, title it `fix(): beta blocker - ` and link the matching `Beta blocker: - ` issue labeled `be\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53902", - "created_at": "2026-03-24T19:03:22Z", - "deletions": 19, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66294", + "created_at": "2026-04-14T03:03:23Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53902/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53902", + "files_url": "https://github.com/openclaw/openclaw/pull/66294/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66294", "labels": [ - "channel: discord", - "channel: telegram", - "size: M" + "app: web-ui", + "size: S" ], "merged": false, - "number": 53902, - "review_comments_count": 9, - "state": "closed", - "title": "fix(discord): fix botUserId shadowing and drain delay for managed identity teardown", - "updated_at": "2026-03-24T23:00:06Z" + "number": 66294, + "review_comments_count": 3, + "state": "open", + "title": "Control UI: keep WebChat composer above iOS keyboard (#36488)", + "updated_at": "2026-04-14T11:58:29Z" }, { - "additions": 217, - "author": "livingghost", + "additions": 124, + "author": "BananaAccurate", "author_association": "NONE", - "body_excerpt": "## Summary - Pre-sorts and limits before buildGatewaySessionRow when no search filter active - Guarded: only runs when limit or activeMinutes is set ## Change Type - [x] Feature ## Scope - [x] Gateway / orchestration ## Security Impact All\u2026", - "changed_files": 2, + "body_excerpt": "## Intent / Scope - Single intent: align openclaw with the shared Codex handoff contract as a consumer-only compatibility overlay. - Out of scope: any runtime enforcement engine, unrelat\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53901", - "created_at": "2026-03-24T19:03:20Z", - "deletions": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66293", + "created_at": "2026-04-14T02:59:08Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53901/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53901", + "files_url": "https://github.com/openclaw/openclaw/pull/66293/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66293", "labels": [ - "gateway", - "size: M" + "size: S" ], "merged": false, - "number": 53901, - "review_comments_count": 0, - "state": "closed", - "title": "perf: pre-apply sort and limit before transcript fallback in sessions.list", - "updated_at": "2026-03-24T23:00:04Z" + "number": 66293, + "review_comments_count": 3, + "state": "open", + "title": "[codex] Align openclaw with shared handoff contract", + "updated_at": "2026-04-14T03:32:27Z" }, { - "additions": 230, - "author": "livingghost", - "author_association": "NONE", - "body_excerpt": "## Summary - LRU cache with mtime/size invalidation, transient I/O errors not cached ## Change Type - [x] Feature ## Scope - [x] Gateway / orchestration ## Security Impact All No. ## FAQ ### Q: TOCTOU between statSync and file read? A: Doc\u2026", + "additions": 289, + "author": "JerrettDavis", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - **Root cause**: Two reentrancy sites in the channel plugin loader caused recursive calls during initial load before the cache/in-flight entry was populated. Only surfaced on Docker/Linux due to module resolution timing differe\u2026", "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53900", - "created_at": "2026-03-24T19:03:19Z", - "deletions": 5, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66291", + "created_at": "2026-04-14T02:52:28Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53900/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53900", + "files_url": "https://github.com/openclaw/openclaw/pull/66291/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66291", "labels": [ - "gateway", "size: M" ], "merged": false, - "number": 53900, - "review_comments_count": 0, + "number": 66291, + "review_comments_count": 7, "state": "closed", - "title": "perf: add in-memory usage cache for session transcript reads", - "updated_at": "2026-03-24T23:00:02Z" + "title": "fix(docker): resolve bundled channel stack overflow #66290", + "updated_at": "2026-04-14T04:22:45Z" }, { - "additions": 207, - "author": "livingghost", + "additions": 94, + "author": "zrt-ai-lab", "author_association": "NONE", - "body_excerpt": "## Summary - Adds providerOnly mode, included in buildCacheKey - Test mocks use importOriginal pattern - Restored scoped.commands assertion, added try/finally for globalThis cleanup ## Change Type - [x] Bug fix ## Scope - [x] Gateway / orc\u2026", - "changed_files": 8, + "body_excerpt": "## Problem Fixes #63189 The TUI streaming status indicator (`\u283c streaming \u2022 xxxm xxs | connected`) gets stuck forever after a response completes. The timer keeps counting indefinitely and the only workaround is Ctrl+C or sending another mes\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53899", - "created_at": "2026-03-24T19:03:16Z", - "deletions": 21, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66289", + "created_at": "2026-04-14T02:47:26Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53899/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53899", + "files_url": "https://github.com/openclaw/openclaw/pull/66289/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66289", "labels": [ - "size: M" + "size: S" ], "merged": false, - "number": 53899, - "review_comments_count": 0, - "state": "closed", - "title": "fix(plugins): skip non-provider registrations during snapshot loads", - "updated_at": "2026-03-24T23:00:00Z" + "number": 66289, + "review_comments_count": 3, + "state": "open", + "title": "fix(tui): resolve streaming status stuck indefinitely after run completes", + "updated_at": "2026-04-14T03:55:46Z" }, { - "additions": 215, - "author": "livingghost", + "additions": 65, + "author": "Lidang-Jiang", "author_association": "NONE", - "body_excerpt": "## Summary - Adds api.runtime.agent.abort with AgentAbortParams/AgentAbortResult types - Uses resolveGlobalSingleton pattern, caller sessionKey priority ## Change Type - [x] Feature ## Scope - [x] Gateway / orchestration ## Security Impact\u2026", - "changed_files": 9, + "body_excerpt": "## Summary - allow `allowedChatTypes` to accept `\"explicit\"` in the active-memory plugin schema and runtime config normalization - treat `agent:...:explicit:...` sessions as an explicit chat type during gating - add regression coverage for\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53898", - "created_at": "2026-03-24T19:03:14Z", - "deletions": 11, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66285", + "created_at": "2026-04-14T02:24:39Z", + "deletions": 6, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53898/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53898", + "files_url": "https://github.com/openclaw/openclaw/pull/66285/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66285", "labels": [ - "docs", - "gateway", - "size: M" + "size: S" ], "merged": false, - "number": 53898, - "review_comments_count": 8, - "state": "closed", - "title": "feat(plugins): add api.runtime.agent.abort for aborting agent runs", - "updated_at": "2026-03-24T22:59:58Z" + "number": 66285, + "review_comments_count": 1, + "state": "open", + "title": "fix: support explicit active-memory chat types", + "updated_at": "2026-04-14T02:29:43Z" }, { - "additions": 28, - "author": "livingghost", + "additions": 685, + "author": "Lidang-Jiang", "author_association": "NONE", - "body_excerpt": "## Summary - Adds runId to agent hook context for run identification in multi-agent orchestration ## Change Type - [x] Feature ## Scope - [x] Gateway / orchestration ## Security Impact All No.", - "changed_files": 5, + "body_excerpt": "## Summary - extract upstream request ids from OpenAI and Anthropic transport responses - thread the id through failover metadata, embedded agent metadata, and `model.usage` diagnostic events - record `openclaw.upstream_request_id` on diag\u2026", + "changed_files": 18, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53897", - "created_at": "2026-03-24T19:03:10Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66286", + "created_at": "2026-04-14T02:24:39Z", + "deletions": 14, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53897/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53897", + "files_url": "https://github.com/openclaw/openclaw/pull/66286/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66286", "labels": [ + "extensions: diagnostics-otel", "agents", - "size: XS" + "size: L" ], "merged": false, - "number": 53897, - "review_comments_count": 0, - "state": "closed", - "title": "feat(plugins): expose runId in agent hook context", - "updated_at": "2026-03-24T22:59:57Z" + "number": 66286, + "review_comments_count": 1, + "state": "open", + "title": "feat: surface upstream request ids in diagnostics", + "updated_at": "2026-04-14T02:28:56Z" }, { - "additions": 170, - "author": "jrusz", - "author_association": "NONE", - "body_excerpt": "## Summary - The Ollama stream function requested `stream: true` from the API but accumulated all content chunks internally, emitting only a single `done` event at the end - This prevented downstream consumers (`onPartialReply`, block stre\u2026", + "additions": 848, + "author": "Lellansin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: `/v1/chat/completions` did not align with OpenResponses tool-calling behavior. It ignored client-provided `tools` / `tool_choice`, did not return OpenAI-compatible `tool_calls`, and did not support the chat-completion\u2026", "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53891", - "created_at": "2026-03-24T18:59:59Z", - "deletions": 6, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66278", + "created_at": "2026-04-14T02:02:25Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53891/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53891", + "files_url": "https://github.com/openclaw/openclaw/pull/66278/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66278", "labels": [ - "agents", - "size: S" + "gateway", + "size: L" ], "merged": false, - "number": 53891, - "review_comments_count": 4, + "number": 66278, + "review_comments_count": 2, "state": "open", - "title": "fix(ollama): emit streaming events for text content during generation", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix(gateway): align OpenAI chat completions tool protocol", + "updated_at": "2026-04-14T02:17:48Z" }, { - "additions": 333, - "author": "livingghost", - "author_association": "NONE", - "body_excerpt": "## Summary - What changed: prewarmSessionUsageCache function, prewarmUsageCache/prewarmConcurrency config, fire-and-forget startup - What did NOT change: Default behavior (prewarm disabled) ## Change Type - [x] Feature ## Scope - [x] Gatew\u2026", + "additions": 250, + "author": "neeravmakwana", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: partially present bundled channel artifacts can throw out of `loadChannelPlugin()` and take down `channels.status` / gateway auth-bypass path discovery instead of degrading gracefully. - Why it matters: issue #66129 s\u2026", "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53886", - "created_at": "2026-03-24T18:40:42Z", - "deletions": 2, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66277", + "created_at": "2026-04-14T02:00:08Z", + "deletions": 20, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53886/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53886", + "files_url": "https://github.com/openclaw/openclaw/pull/66277/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66277", "labels": [ - "gateway", "size: M" ], "merged": false, - "number": 53886, - "review_comments_count": 4, - "state": "closed", - "title": "perf: add startup prewarm for session usage cache", - "updated_at": "2026-03-24T18:48:11Z" + "number": 66277, + "review_comments_count": 0, + "state": "open", + "title": "fix(channels): guard broken bundled channel loads", + "updated_at": "2026-04-14T02:16:33Z" }, { - "additions": 3719, - "author": "davidelaverga", - "author_association": "NONE", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: - Why it matters: - What changed: - What did NOT change (scope boundary): ## Change Type (select all) - [ ] Bug fix - [ ] Feature - [ ] Refactor required for the fix - [ ]\u2026", - "changed_files": 50, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53885", - "created_at": "2026-03-24T18:39:01Z", - "deletions": 119, + "additions": 131, + "author": "lml2468", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Fixes #66227 \u2014 CLI commands (`cron list`, `agents list`, etc.) hang indefinitely after printing their result. **Root cause:** `executeGatewayRequestWithScopes` calls `client.stop()` (fire-and-forget) after the RPC response arriv\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66276", + "created_at": "2026-04-14T01:59:49Z", + "deletions": 70, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53885/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53885", + "files_url": "https://github.com/openclaw/openclaw/pull/66276/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66276", "labels": [ - "docs", - "channel: matrix", - "docker", - "agents", - "size: XL" + "gateway", + "size: M" ], "merged": false, - "number": 53885, + "number": 66276, "review_comments_count": 5, "state": "open", - "title": "Claude/remove tts deny rule b q8 co", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix(cli): prevent process hang after gateway RPC commands (#66227)", + "updated_at": "2026-04-14T07:12:11Z" }, { - "additions": 597, - "author": "yanmwisa", - "author_association": "NONE", - "body_excerpt": "## Summary Redesigns the Control UI chat interface and replaces the full-width update banner with a polished centered modal. ### Chat layout improvements - **Centered content area** with refined max-width and spacing for better readability\u2026", - "changed_files": 9, + "additions": 147, + "author": "neeravmakwana", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: gateway attachment capability checks only consulted the runtime model catalog, and that catalog could omit config-defined custom provider models even when `models.json` preserved them. - Why it matters: multimodal Ope\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53884", - "created_at": "2026-03-24T18:38:38Z", - "deletions": 152, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66275", + "created_at": "2026-04-14T01:58:51Z", + "deletions": 13, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53884/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53884", + "files_url": "https://github.com/openclaw/openclaw/pull/66275/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66275", "labels": [ - "app: web-ui", - "size: L" + "agents", + "size: S" ], "merged": false, - "number": 53884, - "review_comments_count": 8, + "number": 66275, + "review_comments_count": 2, "state": "open", - "title": "feat(ui): redesign chat layout and update modal", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix(gateway): include configured custom provider models", + "updated_at": "2026-04-14T02:11:08Z" }, { - "additions": 218, - "author": "drobison00", + "additions": 21, + "author": "steipete", "author_association": "CONTRIBUTOR", - "body_excerpt": "# IDENTITY.md workspace-boundary fix PR tracking ## Status - State: complete - Focus: `IDENTITY.md` append path in `agents.create` / `agents.update` ## Scope - Patch `src/gateway/server-methods/agents.ts` - Add focused regression coverage\u2026", - "changed_files": 2, + "body_excerpt": "## Summary - prune type-only or test/report cargo from staged bundled plugin runtime deps - drop @cloudflare/workers-types from bundled Discord runtime deps - drop gifwrap test fixtures, Jimp image snapshots, and Playwright report/type ass\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53882", - "created_at": "2026-03-24T18:33:52Z", - "deletions": 19, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66273", + "created_at": "2026-04-14T01:57:28Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53882/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53882", + "files_url": "https://github.com/openclaw/openclaw/pull/66273/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66273", "labels": [ - "gateway", + "scripts", "maintainer", - "size: M" + "size: XS" ], - "merged": true, - "number": 53882, - "review_comments_count": 2, - "state": "closed", - "title": "fix: validate agent workspace paths before writing identity files", - "updated_at": "2026-03-24T19:15:12Z" + "merged": false, + "number": 66273, + "review_comments_count": 1, + "state": "open", + "title": "build: prune non-runtime bundled dependency cargo", + "updated_at": "2026-04-14T01:59:57Z" }, { - "additions": 245, - "author": "graciegould", + "additions": 19, + "author": "njiangk", "author_association": "NONE", - "body_excerpt": "## Summary - **Problem:** No event hook exists for `sessions.patch` calls, preventing integrations from reacting to session property changes - **Why it matters:** Enables users to create custom hooks to stream session property changes such\u2026", - "changed_files": 5, + "body_excerpt": "## Problem When `gateway.bind` is set to `\"loopback\"`, the security audit emits a `warn`-level finding `gateway.trusted_proxies_missing`: ``` WARN Reverse proxy headers are not trusted gateway.bind is loopback and gateway.trustedProxies is\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53880", - "created_at": "2026-03-24T18:29:57Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66272", + "created_at": "2026-04-14T01:54:00Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53880/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53880", + "files_url": "https://github.com/openclaw/openclaw/pull/66272/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66272", "labels": [ - "docs", - "channel: discord", - "gateway", - "size: S" + "size: XS" ], "merged": false, - "number": 53880, - "review_comments_count": 4, + "number": 66272, + "review_comments_count": 3, "state": "open", - "title": "gateway: add session:patch internal hook event", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix(security): remove false-positive trustedProxies warning on loopback bind", + "updated_at": "2026-04-14T02:23:57Z" }, { - "additions": 51, - "author": "scoootscooob", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - only start the `/compact` cooldown after `sessions.compact` succeeds - allow immediate retry after transient compact failures - add a regression test for retry-after-failure in `ChatViewModelTests` ## Root cause `OpenClawChatV\u2026", + "additions": 116, + "author": "Schnitzel", + "author_association": "NONE", + "body_excerpt": "## Summary - Problem: Control UI user messages can disappear briefly after send in 2026.4.12. - Why it matters: the chat transcript visibly flickers on every send, which makes the UI feel unreliable. - What changed: skip the `session.messa\u2026", "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53875", - "created_at": "2026-03-24T18:18:13Z", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66271", + "created_at": "2026-04-14T01:50:09Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66271/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66271", + "labels": [ + "app: web-ui", + "size: S" + ], + "merged": false, + "number": 66271, + "review_comments_count": 3, + "state": "open", + "title": "Control UI: avoid chat flicker on session reload", + "updated_at": "2026-04-14T02:17:24Z" + }, + { + "additions": 47, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: explicit `memorySearch.provider: \"ollama\"` regressed because memory-core no longer registers a built-in `ollama` embedding adapter. - Why it matters: `openclaw memory status`, memory search bootstrap, and related expl\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66269", + "created_at": "2026-04-14T01:49:20Z", "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53875/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53875", + "files_url": "https://github.com/openclaw/openclaw/pull/66269/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66269", "labels": [ + "extensions: memory-core", "maintainer", - "size: S" + "size: XS" ], "merged": true, - "number": 53875, - "review_comments_count": 1, + "number": 66269, + "review_comments_count": 0, "state": "closed", - "title": "fix: allow compact retry after failed session compaction", - "updated_at": "2026-03-24T18:23:42Z" + "title": "fix(memory): restore ollama embedding adapter", + "updated_at": "2026-04-14T08:04:17Z" }, { - "additions": 519, - "author": "joe2643", - "author_association": "NONE", - "body_excerpt": "## Summary Adds native WhatsApp @mention support in outbound group messages, downloads media from reply targets (WhatsApp + Signal), and fixes reply-to-bot E164 comparison using LID resolution. ### Outbound @mentions (13 commits) - Extract\u2026", - "changed_files": 14, + "additions": 3, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: npm installs can ship `dist/subagent-registry-*.js` without the stable `dist/agents/subagent-registry.runtime.js` sidecar that `src/agents/subagent-registry.ts` imports at runtime. - Why it matters: subagent runs can\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53874", - "created_at": "2026-03-24T18:17:29Z", - "deletions": 24, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53874/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53874", + "comments_count": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66266", + "created_at": "2026-04-14T01:46:53Z", + "deletions": 0, + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/66266/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66266", "labels": [ - "channel: signal", - "channel: whatsapp-web", - "size: L" + "maintainer", + "size: XS" ], "merged": false, - "number": 53874, - "review_comments_count": 7, - "state": "open", - "title": "feat(whatsapp): outbound @mentions, reply media injection, and LID reply-to-bot E164 fix", - "updated_at": "2026-03-24T20:15:28Z" + "number": 66266, + "review_comments_count": 0, + "state": "closed", + "title": "fix(build): ship subagent registry runtime sidecar", + "updated_at": "2026-04-14T08:00:23Z" }, { - "additions": 286, - "author": "VACInc", + "additions": 1, + "author": "suboss87", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - emit the typed `before_reset` plugin hook from the gateway session reset path - pass transcript messages and session context through to the hook runner - add a regression test covering `sessions.reset` -> `before_reset` emissi\u2026", - "changed_files": 4, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53872", - "created_at": "2026-03-24T18:14:05Z", - "deletions": 7, + "body_excerpt": "## Summary - Adds `subagent-registry.runtime` as a named entry in `buildCoreDistEntries()` so the bundler emits `dist/subagent-registry.runtime.js` - Without this entry, the opaque URL construction in `importRuntimeModule` (via `new URL(pa\u2026", + "changed_files": 1, + "cluster_id": "cluster-66096-7", + "cluster_ids": [ + "cluster-66096-7" + ], + "cluster_role": "canonical", + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66265", + "created_at": "2026-04-14T01:46:14Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53872/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53872", + "files_url": "https://github.com/openclaw/openclaw/pull/66265/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66265", "labels": [ - "gateway", - "size: M" + "size: XS" ], "merged": false, - "number": 53872, - "review_comments_count": 5, + "number": 66265, + "review_comments_count": 1, "state": "open", - "title": "fix(gateway): emit before_reset on session reset", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix(build): add subagent-registry.runtime to stable dist entries", + "updated_at": "2026-04-14T12:27:32Z" }, { - "additions": 517, - "author": "joe2643", - "author_association": "NONE", - "body_excerpt": "## Summary - When context pruning removes image/media blocks, save them to disk instead of replacing with `[image removed during context pruning]` - Agent system prompt hints that `[media cached: path]` markers can be read back on demand -\u2026", - "changed_files": 10, + "additions": 152, + "author": "hxy91819", + "author_association": "MEMBER", + "body_excerpt": "## Summary - fix setup-mode plugin loading so `resolveSetupChannelRegistration` recognizes bundled setup-entry contracts (`kind: \\\"bundled-channel-setup-entry\\\"`) and resolves channel plugins via `loadSetupPlugin` - keep backward compatibi\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53869", - "created_at": "2026-03-24T18:07:39Z", - "deletions": 6, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66261", + "created_at": "2026-04-14T01:39:23Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53869/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53869", + "files_url": "https://github.com/openclaw/openclaw/pull/66261/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66261", "labels": [ - "agents", - "size: M" + "maintainer", + "size: S" ], "merged": false, - "number": 53869, - "review_comments_count": 16, + "number": 66261, + "review_comments_count": 4, "state": "open", - "title": "feat(context-pruning): cache media to disk during pruning instead of stripping", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix(plugins): support bundled setup-entry contract in loader", + "updated_at": "2026-04-14T11:58:21Z" }, { - "additions": 62, - "author": "joe2643", + "additions": 10, + "author": "seank-com", "author_association": "NONE", - "body_excerpt": "## Summary - Add `transcribe_audio` agent tool for on-demand audio transcription via the configured audio provider - Fix `openai-whisper-api` skill script to use `OPENAI_BASE_URL` env var instead of hardcoded `api.openai.com`, enabling sel\u2026", + "body_excerpt": "## Summary - Problem: QMD-backed memory collection initialization failed on OpenClaw `2026.4.11` with QMD `2.1.0` due to a CLI compatibility mismatch. - Why it matters: This issue broke semantic memory search functionality on fresh deploym\u2026", "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53868", - "created_at": "2026-03-24T18:06:37Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66259", + "created_at": "2026-04-14T01:38:34Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53868/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53868", + "files_url": "https://github.com/openclaw/openclaw/pull/66259/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66259", "labels": [ - "agents", - "size: S" + "extensions: memory-core", + "size: XS" ], "merged": false, - "number": 53868, - "review_comments_count": 8, + "number": 66259, + "review_comments_count": 0, "state": "open", - "title": "feat: add transcribe_audio tool and respect OPENAI_BASE_URL in whisper script", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix(memory): prefer --mask for qmd collection add compatibility", + "updated_at": "2026-04-14T01:46:20Z" }, { - "additions": 70, - "author": "joe2643", - "author_association": "NONE", - "body_excerpt": "## Summary Fixes the long-standing issue where replying to the bot's message in a WhatsApp group did not trigger a response. **Root cause:** WhatsApp's LID (Linked Identity) system uses `xxxxx@lid` identifiers instead of phone-based JIDs (\u2026", - "changed_files": 4, + "additions": 0, + "author": "BunsDev", + "author_association": "MEMBER", + "body_excerpt": null, + "changed_files": 0, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53867", - "created_at": "2026-03-24T18:05:58Z", - "deletions": 8, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66258", + "created_at": "2026-04-14T01:37:30Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53867/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53867", + "files_url": "https://github.com/openclaw/openclaw/pull/66258/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66258", "labels": [ - "channel: whatsapp-web", - "size: S" + "maintainer", + "size: XS" ], "merged": false, - "number": 53867, - "review_comments_count": 2, - "state": "open", - "title": "fix(whatsapp): reply-to-bot detection with WhatsApp LID identifiers", - "updated_at": "2026-03-24T20:15:28Z" + "number": 66258, + "review_comments_count": 0, + "state": "closed", + "title": "fix: resolve CI type errors, test expectation mismatches, and lint ba\u2026", + "updated_at": "2026-04-14T01:39:01Z" }, { - "additions": 285, - "author": "developersdigest", + "additions": 56, + "author": "SrJackCM", "author_association": "NONE", - "body_excerpt": "## Summary Firecrawl browser sign-in during **web search** onboarding: shared PKCE `cli-auth` helper with `source=openclaw` (matches firecrawl.dev OpenClaw plan picker), `setupSearch` integration, and tests. ## Commit map (review in order)\u2026", - "changed_files": 4, + "body_excerpt": "## Summary - approve local loopback device pairing requests directly before calling the gateway - avoid local pairing fallback when explicit gateway/auth flags are provided - cover direct local approve and unknown local request fallback be\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53866", - "created_at": "2026-03-24T18:00:17Z", - "deletions": 15, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53866/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53866", + "comments_count": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66257", + "created_at": "2026-04-14T01:36:06Z", + "deletions": 18, + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/66257/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66257", "labels": [ - "commands", - "size: M" + "cli", + "size: S" ], "merged": false, - "number": 53866, - "review_comments_count": 4, + "number": 66257, + "review_comments_count": 0, "state": "open", - "title": "feat(onboard): Firecrawl browser auth in web search setup", - "updated_at": "2026-03-24T20:15:28Z" + "title": "[codex] fix devices approve local fallback", + "updated_at": "2026-04-14T01:36:18Z" }, { - "additions": 376, - "author": "danielholanda", - "author_association": "NONE", - "body_excerpt": "## Summary - **Problem:** OpenClaw has first-class support for local inference servers like Ollama, vLLM, and SGLang, but no support for Lemonade Server. Lemonade is a popular local AI server with GPU/NPU acceleration that exposes an OpenA\u2026", - "changed_files": 17, + "additions": 222, + "author": "tmimmanuel", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Fixes #66219. `openclaw doctor --repair` / gateway service rewrites could keep reintroducing inline `Environment=...` secret values (for example `OPENCLAW_GATEWAY_TOKEN`) when those values came from state-dir `.env`. This caused\u2026", + "changed_files": 7, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53865", - "created_at": "2026-03-24T17:59:14Z", - "deletions": 0, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66249", + "created_at": "2026-04-14T01:17:36Z", + "deletions": 19, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53865/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53865", + "files_url": "https://github.com/openclaw/openclaw/pull/66249/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66249", "labels": [ - "docs", - "agents", + "gateway", "size: M" ], - "merged": false, - "number": 53865, - "review_comments_count": 12, - "state": "open", - "title": "Providers: add Lemonade Server plugin", - "updated_at": "2026-03-24T20:15:28Z" + "merged": true, + "number": 66249, + "review_comments_count": 10, + "state": "closed", + "title": "fix(daemon): avoid inline dotenv secrets in systemd unit during service repair", + "updated_at": "2026-04-14T03:36:23Z" }, { - "additions": 49, - "author": "livingghost", - "author_association": "NONE", - "body_excerpt": "## Summary - What changed: readLatestSessionUsageFromTranscriptAsync, listSessionsFromStoreAsync, sessions handler uses async variant - Depends on: sessions-list-config-refactor PR for normalizeSessionsListOptions/filterSessionListEntries/\u2026", - "changed_files": 3, - "cluster_id": "cluster-53837-6", - "cluster_ids": [ - "cluster-53837-6" - ], - "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53861", - "created_at": "2026-03-24T17:55:56Z", + "additions": 331, + "author": "VACInc", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary This fixes a Telegram-specific queueing bug where immediate queue modes could not take effect while a topic already had an in-flight turn. ## Root Cause Telegram sequentializes inbound updates per chat/topic before they reach co\u2026", + "changed_files": 8, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66247", + "created_at": "2026-04-14T01:17:18Z", "deletions": 3, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53861/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53861", + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/66247/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66247", "labels": [ - "gateway", - "size: S" + "channel: telegram", + "size: M" ], "merged": false, - "number": 53861, - "review_comments_count": 3, - "state": "closed", - "title": "perf(gateway): add async transcript reader and concurrent fallback", - "updated_at": "2026-03-24T18:07:51Z" + "number": 66247, + "review_comments_count": 0, + "state": "open", + "title": "[codex] Telegram: let immediate queue modes bypass busy topic lanes", + "updated_at": "2026-04-14T01:17:34Z" }, { - "additions": 326, - "author": "livingghost", - "author_association": "NONE", - "body_excerpt": "## Summary - What changed: gateway.sessionsList.usageCacheMaxEntries config, set/get exports, immediate trim on limit change - What did NOT change: Cache invalidation logic, default (5000) ## Change Type - [x] Feature ## Scope - [x] Gatewa\u2026", - "changed_files": 6, - "cluster_id": "cluster-53837-6", - "cluster_ids": [ - "cluster-53837-6" - ], - "cluster_role": "canonical", + "additions": 99, + "author": "yfge", + "author_association": "CONTRIBUTOR", + "body_excerpt": "Summary - Cache external `preferOver` metadata lookups across a single plugin auto-enable/materialization pass. - Avoid repeated synchronous catalog file reads when many channel candidates are compared. Changes - Threaded a shared `preferO\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53860", - "created_at": "2026-03-24T17:55:54Z", - "deletions": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66246", + "created_at": "2026-04-14T01:16:02Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53860/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53860", + "files_url": "https://github.com/openclaw/openclaw/pull/66246/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66246", "labels": [ - "gateway", - "size: M" + "size: S" ], - "merged": false, - "number": 53860, - "review_comments_count": 5, + "merged": true, + "number": 66246, + "review_comments_count": 2, "state": "closed", - "title": "perf: add configurable session usage cache max entries", - "updated_at": "2026-03-24T18:48:09Z" + "title": "fix: cache external plugin catalog lookups in auto-enable", + "updated_at": "2026-04-14T04:11:15Z" }, { - "additions": 606, - "author": "livingghost", - "author_association": "NONE", - "body_excerpt": "## Summary - What changed: GatewaySessionsListConfig type with fallbackConcurrency, extracted normalizeSessionsListOptions/filterSessionListEntries/finalizeSessionListRows, config validation tests - What did NOT change: Default behavior (c\u2026", + "additions": 279, + "author": "yfge", + "author_association": "CONTRIBUTOR", + "body_excerpt": "Summary - Cache `preferOver` metadata lookups during a single plugin auto-enable pass. - Prevent repeated external channel catalog loads when many configured candidates are compared. Changes - Added a per-run memoized resolver for `resolve\u2026", "changed_files": 10, - "cluster_id": "cluster-53837-6", - "cluster_ids": [ - "cluster-53837-6" - ], - "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53859", - "created_at": "2026-03-24T17:55:52Z", - "deletions": 116, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66244", + "created_at": "2026-04-14T01:08:47Z", + "deletions": 54, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53859/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53859", + "files_url": "https://github.com/openclaw/openclaw/pull/66244/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66244", "labels": [ "gateway", - "size: L" + "commands", + "size: M" ], "merged": false, - "number": 53859, - "review_comments_count": 4, + "number": 66244, + "review_comments_count": 2, "state": "closed", - "title": "perf(gateway): add sessionsList config and refactor filter/sort/limit", - "updated_at": "2026-03-24T18:41:48Z" + "title": "fix: cache external plugin catalog lookups in auto-enable", + "updated_at": "2026-04-14T01:16:11Z" }, { - "additions": 164, - "author": "xujingchen1996", - "author_association": "NONE", - "body_excerpt": "## Summary - Problem: In recent builds, OpenAI WS/Responses output could carry reasoning data without being mapped into `thinking` blocks/callbacks, so streamed reasoning was not rendered in downstream channels. - Why it matters: Users saw\u2026", - "changed_files": 3, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53856", - "created_at": "2026-03-24T17:45:00Z", - "deletions": 8, + "additions": 200, + "author": "geekhuashan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Two related fixes in `src/infra/net/proxy-fetch.ts` so requests sent through `makeProxyFetch` and `resolveProxyFetchFromEnv` work correctly when the caller passes either a `Request` object or a body built with the global `FormDa\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66243", + "created_at": "2026-04-14T01:04:12Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53856/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53856", + "files_url": "https://github.com/openclaw/openclaw/pull/66243/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66243", "labels": [ - "agents", - "size: S" + "size: M" ], "merged": false, - "number": 53856, + "number": 66243, "review_comments_count": 1, "state": "open", - "title": "OpenAI WS: map reasoning output to thinking blocks", - "updated_at": "2026-03-24T22:36:42Z" - }, - { - "additions": 192, - "author": "vincentkoc", - "author_association": "MEMBER", - "body_excerpt": "AI-assisted: yes ## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: long-lived lazy runtime seams in `dist/` were emitted behind content-hashed filenames, so a rebuilt tree could strand already-running processes on missing\u2026", - "changed_files": 5, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53855", - "created_at": "2026-03-24T17:42:20Z", - "deletions": 23, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53855/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53855", - "labels": [ - "scripts", - "maintainer", - "size: M" - ], - "merged": true, - "number": 53855, - "review_comments_count": 1, - "state": "closed", - "title": "fix(runtime): stabilize dist runtime artifacts", - "updated_at": "2026-03-24T18:46:03Z" + "title": "infra: normalize proxy fetch input and convert global FormData to undici", + "updated_at": "2026-04-14T01:09:56Z" }, { - "additions": 162, - "author": "joelnishanth", + "additions": 269, + "author": "geekhuashan", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary When the Discord WebSocket drops with code 1006 (abnormal closure), the internal `@buape/carbon` GatewayPlugin **throws** an exception (`Max reconnect attempts (0) reached after code 1006`) instead of emitting it as an error eve\u2026", - "changed_files": 2, + "body_excerpt": "## Summary Persist the in-memory Discord component/modal registry to `~/.openclaw/cache/discord-component-registry.json` (override with `OPENCLAW_DISCORD_COMPONENT_REGISTRY_FILE`) so interactive components stay resolvable after a gateway r\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53854", - "created_at": "2026-03-24T17:37:34Z", - "deletions": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66241", + "created_at": "2026-04-14T01:01:29Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53854/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53854", + "files_url": "https://github.com/openclaw/openclaw/pull/66241/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66241", "labels": [ "channel: discord", - "size: S" + "size: M" ], "merged": false, - "number": 53854, - "review_comments_count": 5, + "number": 66241, + "review_comments_count": 7, "state": "open", - "title": "fix(discord): catch thrown errors from gateway WebSocket close handler", - "updated_at": "2026-03-24T20:15:28Z" + "title": "Discord: persist component registry to disk across gateway restarts", + "updated_at": "2026-04-14T12:27:30Z" }, { - "additions": 6, - "author": "ysfbsf", - "author_association": "NONE", - "body_excerpt": "## Summary - `/status` command and `session_status` tool now respect per-agent `thinkingDefault`, `verboseDefault`, and `elevatedDefault` from `agents.list[]` entries - Previously these values were only read from `agents.defaults`, causing\u2026", - "changed_files": 2, + "additions": 103, + "author": "neeravmakwana", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: generated media saves and volatile outbound reply-media persistence still fell back to the media store's hardcoded 5 MB default before configured agent media limits could apply. - Why it matters: video, audio, and ima\u2026", + "changed_files": 12, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53850", - "created_at": "2026-03-24T17:33:59Z", - "deletions": 2, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66240", + "created_at": "2026-04-14T00:59:33Z", + "deletions": 30, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53850/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53850", + "files_url": "https://github.com/openclaw/openclaw/pull/66240/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66240", "labels": [ "agents", - "size: XS" + "size: S" ], - "merged": false, - "number": 53850, - "review_comments_count": 2, - "state": "open", - "title": "fix(status): merge per-agent thinkingDefault into status display", - "updated_at": "2026-03-24T20:15:28Z" + "merged": true, + "number": 66240, + "review_comments_count": 1, + "state": "closed", + "title": "fix(media): honor configured store limits", + "updated_at": "2026-04-14T06:23:31Z" }, { - "additions": 208, - "author": "davidluzsilva", - "author_association": "NONE", - "body_excerpt": "## Summary - **Problem:** `before_tool_call` hook merge uses nullish coalescing (`next.block ?? acc?.block`), allowing any lower-priority plugin returning `{ block: false }` to silently override a higher-priority plugin's `{ block: true }`\u2026", + "additions": 88, + "author": "neeravmakwana", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: `openclaw approvals get --gateway` inherited a 10s CLI timeout and could silently downgrade a `config.get` timeout into `Config unavailable.` even when the approvals snapshot itself succeeded. - Why it matters: on slo\u2026", "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53848", - "created_at": "2026-03-24T17:30:00Z", - "deletions": 5, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66239", + "created_at": "2026-04-14T00:54:03Z", + "deletions": 22, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53848/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53848", + "files_url": "https://github.com/openclaw/openclaw/pull/66239/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66239", "labels": [ - "size: M" + "cli", + "size: S" ], - "merged": false, - "number": 53848, - "review_comments_count": 1, - "state": "open", - "title": "fix(security): make block/cancel sticky in hook merge to prevent silent override", - "updated_at": "2026-03-24T20:15:28Z" + "merged": true, + "number": 66239, + "review_comments_count": 0, + "state": "closed", + "title": "fix(cli): harden approvals get timeout handling", + "updated_at": "2026-04-14T06:00:32Z" }, { - "additions": 104, - "author": "jalehman", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## What Refactors the subsystem logger's local helper closures into top-level helpers and object methods so `src/logging/subsystem.ts` loads cleanly under `node --import tsx` on current `main`. ## Why Current `main` fails `pnpm check:base-\u2026", - "changed_files": 1, + "additions": 249, + "author": "ImLukeF", + "author_association": "MEMBER", + "body_excerpt": "## Summary - clarify local-model context-window preflight messages - surface plain-English hints when a run is using a genuinely local endpoint with a small context window - document the 32k warning / 16k block thresholds in local model tr\u2026", + "changed_files": 13, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53847", - "created_at": "2026-03-24T17:25:58Z", - "deletions": 75, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66236", + "created_at": "2026-04-14T00:37:26Z", + "deletions": 42, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53847/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53847", + "files_url": "https://github.com/openclaw/openclaw/pull/66236/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66236", "labels": [ + "docs", + "channel: telegram", + "gateway", + "agents", "maintainer", - "size: S" + "size: M", + "channel: qqbot" ], - "merged": false, - "number": 53847, - "review_comments_count": 0, + "merged": true, + "number": 66236, + "review_comments_count": 6, "state": "closed", - "title": "fix: avoid tsx helper crash in subsystem logger", - "updated_at": "2026-03-24T19:19:13Z" + "title": "Agents: clarify local model context preflight", + "updated_at": "2026-04-14T05:38:17Z" }, { - "additions": 186, - "author": "chinar-amrutkar", - "author_association": "NONE", - "body_excerpt": "Mistral's OpenAI-compatible `/chat/completions` endpoint is stricter than native OpenAI backends. It rejects request flags like `store`, `reasoning_effort`, and `max_completion_tokens`, causing `422 status code (no body)` errors on all cha\u2026", - "changed_files": 2, + "additions": 349, + "author": "jalehman", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: reasoning-only and empty-response continuation recovery from #66167 lived directly in `pi-embedded-runner`, gated by an OpenAI-specific helper instead of the provider plugin boundary. - Why it matters: other providers\u2026", + "changed_files": 18, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53846", - "created_at": "2026-03-24T17:25:52Z", - "deletions": 19, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66233", + "created_at": "2026-04-14T00:24:09Z", + "deletions": 65, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53846/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53846", + "files_url": "https://github.com/openclaw/openclaw/pull/66233/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66233", "labels": [ + "docs", "agents", - "size: M" + "maintainer", + "size: M", + "extensions: anthropic", + "extensions: openai" ], "merged": false, - "number": 53846, - "review_comments_count": 4, + "number": 66233, + "review_comments_count": 3, "state": "open", - "title": "fix(agents): normalize Mistral openai-compat request flags", - "updated_at": "2026-03-24T20:15:28Z" + "title": "refactor: move incomplete-turn recovery behind provider hooks", + "updated_at": "2026-04-14T00:33:58Z" }, { - "additions": 34, - "author": "jhawpetoss6-collab", - "author_association": "NONE", - "body_excerpt": "This PR addresses critical stability and UX issues: 1. **Self-Healing Plugins (#53818)**: Adds pre-flight integrity check for missing runtime files. 2. **Telegram Message Optimization**: Implements summary-and-button pattern for long outpu\u2026", - "changed_files": 2, + "additions": 559, + "author": "jalehman", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: Some provider-specific assistant turns acknowledge the task and promise action, but still end the turn without taking any concrete step. - Why it matters: The existing embedded-runner recovery only handled planning-on\u2026", + "changed_files": 15, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53845", - "created_at": "2026-03-24T17:24:22Z", + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66231", + "created_at": "2026-04-14T00:19:57Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53845/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53845", + "files_url": "https://github.com/openclaw/openclaw/pull/66231/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66231", "labels": [ - "channel: telegram", - "size: XS" + "agents", + "maintainer", + "size: L", + "extensions: openai" ], "merged": false, - "number": 53845, - "review_comments_count": 7, - "state": "open", - "title": "feat: implement Self-Healing for plugins and Long-Message Optimization for Telegram", - "updated_at": "2026-03-24T20:15:28Z" + "number": 66231, + "review_comments_count": 11, + "state": "closed", + "title": "fix: continue provider-owned acknowledgement turns", + "updated_at": "2026-04-14T07:46:55Z" }, { - "additions": 150, - "author": "vincentkoc", - "author_association": "MEMBER", - "body_excerpt": "## Summary - split CI preflight into a fast `scope` job and a parallel `security-fast` job - start `check` and `check-additional` immediately instead of waiting on scope/build fan-in - split the `checks` matrix so artifact-free lanes start\u2026", - "changed_files": 7, + "additions": 319, + "author": "omarshahine", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary BlueBubbles \\`MessagePoller\\` keeps a ~1-week lookback and re-fires \\`new-message\\` webhooks after **BB Server restart or reconnection**. With no sequence number or ack in the BB webhook protocol, the gateway previously had no w\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53844", - "created_at": "2026-03-24T17:24:19Z", - "deletions": 52, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66230", + "created_at": "2026-04-14T00:18:23Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53844/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53844", + "files_url": "https://github.com/openclaw/openclaw/pull/66230/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66230", "labels": [ + "channel: bluebubbles", "maintainer", "size: M" ], - "merged": true, - "number": 53844, - "review_comments_count": 2, - "state": "closed", - "title": "ci: start required checks earlier", - "updated_at": "2026-03-24T18:40:54Z" + "merged": false, + "number": 66230, + "review_comments_count": 9, + "state": "open", + "title": "fix(bluebubbles): dedupe inbound webhooks across restarts (#19176, #12053)", + "updated_at": "2026-04-14T04:09:56Z" }, { - "additions": 185, - "author": "scoootscooob", + "additions": 58, + "author": "SARAMALI15792", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - intercept bare `/compact` in the shared chat UI view model instead of sending it as a normal chat turn - add transport support for `sessions.compact` in the macOS Control UI transport - cover the new behavior in `ChatViewModel\u2026", - "changed_files": 5, + "body_excerpt": "## Summary Fixes #66171 Passwordless token-auth Matrix bots fail to complete E2EE bootstrap when the homeserver has existing SSSS data but the bot has no local recovery key. ## Problem Statement Two independent bugs in `extensions/matrix/s\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53843", - "created_at": "2026-03-24T17:23:56Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66228", + "created_at": "2026-04-14T00:17:15Z", + "deletions": 13, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53843/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53843", + "files_url": "https://github.com/openclaw/openclaw/pull/66228/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66228", "labels": [ - "app: ios", - "app: macos", - "maintainer", + "channel: matrix", "size: S" ], - "merged": true, - "number": 53843, - "review_comments_count": 3, - "state": "closed", - "title": "Webchat: handle bare /compact as session compaction", - "updated_at": "2026-03-24T17:59:36Z" - }, - { - "additions": 22, - "author": "eulicesl", - "author_association": "NONE", - "body_excerpt": "## Summary - Problem: `openclaw doctor --fix` could migrate legacy `skills.entries.nano-banana-pro` config into an invalid `models.providers.google` object. - Why it matters: the migration wrote `apiKey` only, then config validation failed\u2026", - "changed_files": 2, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53841", - "created_at": "2026-03-24T17:22:42Z", - "deletions": 3, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53841/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53841", - "labels": [ - "commands", - "size: XS" - ], "merged": false, - "number": 53841, - "review_comments_count": 0, + "number": 66228, + "review_comments_count": 1, "state": "open", - "title": "fix(doctor): preserve valid google provider shape in nano-banana migration", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix(matrix): fix E2EE SSSS bootstrap for passwordless token-auth bots", + "updated_at": "2026-04-14T00:22:52Z" }, { - "additions": 333, - "author": "livingghost", - "author_association": "NONE", - "body_excerpt": "## Summary - What changed: prewarmSessionUsageCache, prewarmUsageCache/prewarmConcurrency config, fire-and-forget startup - What did NOT change: Default behavior (prewarm disabled) ## Change Type - [x] Feature ## Scope - [x] Gateway / orch\u2026", - "changed_files": 3, + "additions": 299, + "author": "VACInc", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - route Telegram status-category slash commands (`/status`, `/help`, `/commands`, and similar read-only status commands) onto the existing control sequentializer lane - keep ordinary Telegram messages on the existing per-chat/pe\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53840", - "created_at": "2026-03-24T17:22:40Z", - "deletions": 2, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53840/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53840", - "labels": [ - "gateway", - "size: M", - "r: too-many-prs" - ], - "merged": false, - "number": 53840, - "review_comments_count": 4, - "state": "closed", - "title": "perf: add startup prewarm for session usage cache", - "updated_at": "2026-03-24T17:29:46Z" - }, - { - "additions": 326, - "author": "livingghost", - "author_association": "NONE", - "body_excerpt": "## Summary - What changed: gateway.sessionsList.usageCacheMaxEntries config, set/get exports, immediate trim - What did NOT change: Cache invalidation, default behavior (5000) ## Change Type - [x] Feature ## Scope - [x] Gateway / orchestra\u2026", - "changed_files": 6, - "cluster_id": "cluster-53837-6", - "cluster_ids": [ - "cluster-53837-6" - ], - "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53839", - "created_at": "2026-03-24T17:22:38Z", - "deletions": 5, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66226", + "created_at": "2026-04-14T00:13:05Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53839/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53839", + "files_url": "https://github.com/openclaw/openclaw/pull/66226/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66226", "labels": [ - "gateway", - "size: M", - "r: too-many-prs" + "channel: telegram", + "size: M" ], - "merged": false, - "number": 53839, - "review_comments_count": 4, + "merged": true, + "number": 66226, + "review_comments_count": 2, "state": "closed", - "title": "perf: add configurable session usage cache max entries", - "updated_at": "2026-03-24T17:28:53Z" + "title": "[codex] Telegram: unblock status commands behind busy turns", + "updated_at": "2026-04-14T07:57:08Z" }, { - "additions": 49, - "author": "livingghost", - "author_association": "NONE", - "body_excerpt": "## Summary - What changed: Async readLatestSessionUsageFromTranscriptAsync, listSessionsFromStoreAsync, handler - What did NOT change: Sync path, config (separate PR) ## Change Type - [x] Feature ## Scope - [x] Gateway / orchestration ## S\u2026", - "changed_files": 3, - "cluster_id": "cluster-53837-6", + "additions": 53, + "author": "suboss87", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Aligns `FINAL_TAG_SCAN_RE` (streaming subscriber) and `FINAL_TAG_RE` (user-facing text sanitizer) with the broader pattern already used by `reasoning-tags.ts` - The narrower regex `/<\\s*\\/?\\s*final\\s*>/gi` matched `` an\u2026", + "changed_files": 4, + "cluster_id": "cluster-65182-4", "cluster_ids": [ - "cluster-53837-6" + "cluster-65182-4" ], - "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53838", - "created_at": "2026-03-24T17:22:35Z", - "deletions": 3, + "cluster_role": "canonical", + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66225", + "created_at": "2026-04-14T00:12:26Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53838/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53838", + "files_url": "https://github.com/openclaw/openclaw/pull/66225/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66225", "labels": [ - "gateway", - "size: S", - "r: too-many-prs" + "agents", + "size: S" ], "merged": false, - "number": 53838, - "review_comments_count": 2, - "state": "closed", - "title": "perf(gateway): add async transcript reader and concurrent fallback", - "updated_at": "2026-03-24T17:26:13Z" + "number": 66225, + "review_comments_count": 3, + "state": "open", + "title": "fix(agents): align final tag regexes to handle self-closing variant", + "updated_at": "2026-04-14T00:22:33Z" }, { - "additions": 2499, - "author": "livingghost", + "additions": 3796, + "author": "thomasquintana", "author_association": "NONE", - "body_excerpt": "## Summary - What changed: GatewaySessionsListConfig type, filter/sort/limit extraction, config validation - What did NOT change: Default behavior, API contract ## Change Type - [x] Feature - [x] Refactor ## Scope - [x] Gateway / orchestra\u2026", - "changed_files": 9, - "cluster_id": "cluster-53837-6", - "cluster_ids": [ - "cluster-53837-6" - ], - "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53837", - "created_at": "2026-03-24T17:22:33Z", - "deletions": 27475, + "body_excerpt": null, + "changed_files": 53, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66224", + "created_at": "2026-04-14T00:10:29Z", + "deletions": 78, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53837/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53837", + "files_url": "https://github.com/openclaw/openclaw/pull/66224/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66224", "labels": [ - "docs", + "channel: whatsapp-web", "gateway", - "size: L", - "r: too-many-prs" + "scripts", + "commands", + "agents", + "size: XL" ], "merged": false, - "number": 53837, - "review_comments_count": 2, - "state": "closed", - "title": "perf(gateway): add sessionsList config and refactor filter/sort/limit", - "updated_at": "2026-03-24T17:26:46Z" + "number": 66224, + "review_comments_count": 5, + "state": "open", + "title": "Release sync/v2026.4.12", + "updated_at": "2026-04-14T01:08:10Z" }, { - "additions": 66, - "author": "livingghost", - "author_association": "NONE", - "body_excerpt": "## Summary - What changed: Added keyed-async-queue, Telegram buttons Type.Optional, minor loader/types fixes - What did NOT change: Plugin registration, channel behavior ## Change Type - [x] Bug fix - [x] Chore/infra ## Scope - [x] Integra\u2026", - "changed_files": 7, + "additions": 1593, + "author": "amittell", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Adds `openclaw models auth clean` command that identifies and removes stale auth profiles no longer referenced by provider config - Supports `--dry-run`, `--json`, and `--agent` flags - Uses file locking to prevent concurrent\u2026", + "changed_files": 12, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53836", - "created_at": "2026-03-24T17:22:31Z", - "deletions": 12, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66223", + "created_at": "2026-04-14T00:07:40Z", + "deletions": 21, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53836/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53836", + "files_url": "https://github.com/openclaw/openclaw/pull/66223/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66223", "labels": [ - "channel: discord", - "channel: telegram", - "size: S" + "cli", + "commands", + "agents", + "size: XL", + "r: too-many-prs" ], "merged": false, - "number": 53836, - "review_comments_count": 4, + "number": 66223, + "review_comments_count": 3, "state": "closed", - "title": "fix: add keyed-async-queue utility and minor plugin infrastructure fixes", - "updated_at": "2026-03-24T17:40:25Z" + "title": "feat(auth): add models auth clean command to prune stale auth profiles", + "updated_at": "2026-04-14T00:13:38Z" }, { - "additions": 347, - "author": "livingghost", - "author_association": "NONE", - "body_excerpt": "## Summary - Problem: Hook dispatch routes incorrectly in multi-channel setups - What changed: Fixed message-hook-mappers routing, channel-resolution, delivery logic - What did NOT change: Hook registration, channel creation ## Change Type\u2026", - "changed_files": 8, + "additions": 745, + "author": "mcaxtr", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: the WhatsApp plugin still spread runtime, setup, entry, and packaged-surface assembly across multiple thin entrypoints and barrels, so startup/setup/package behavior could drift independently. - Why it matters: entry\u2026", + "changed_files": 24, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53835", - "created_at": "2026-03-24T17:22:28Z", - "deletions": 7, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66221", + "created_at": "2026-04-13T23:49:03Z", + "deletions": 248, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53835/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53835", + "files_url": "https://github.com/openclaw/openclaw/pull/66221/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66221", "labels": [ - "gateway", - "size: M" + "channel: whatsapp-web", + "maintainer", + "size: L" ], "merged": false, - "number": 53835, + "number": 66221, "review_comments_count": 2, - "state": "closed", - "title": "fix(gateway): fix hook dispatch routing and delivery channel resolution", - "updated_at": "2026-03-24T18:56:03Z" + "state": "open", + "title": "refactor(whatsapp): centralize plugin assembly surface", + "updated_at": "2026-04-14T00:52:21Z" }, { - "additions": 93, - "author": "scoootscooob", + "additions": 2, + "author": "omarshahine", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - let plugin-sdk alias resolution use the running openclaw CLI path as a package-root hint for user-installed plugins outside the package tree - thread that argv hint through the loader alias map so `openclaw/plugin-sdk/*` subpa\u2026", - "changed_files": 2, + "body_excerpt": "## Summary Two recently-merged fixes shipped without `CHANGELOG.md` updates. Backfilling before the next release cut so the user-visible release notes reflect both fixes. ### Entries added (under `## Unreleased` > `### Fixes`) - **#65461**\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53834", - "created_at": "2026-03-24T17:22:23Z", - "deletions": 13, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66220", + "created_at": "2026-04-13T23:48:53Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53834/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53834", + "files_url": "https://github.com/openclaw/openclaw/pull/66220/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66220", "labels": [ "maintainer", - "size: S" + "size: XS" ], "merged": true, - "number": 53834, - "review_comments_count": 0, + "number": 66220, + "review_comments_count": 1, "state": "closed", - "title": "Plugins: resolve sdk aliases from the running CLI", - "updated_at": "2026-03-24T17:59:05Z" + "title": "docs(changelog): backfill #65447 and #65461 entries", + "updated_at": "2026-04-13T23:51:10Z" }, { - "additions": 452, - "author": "livingghost", + "additions": 674, + "author": "jinalex", "author_association": "NONE", - "body_excerpt": "## Summary - Problem: Inner let botUserId shadowed outer declaration, losing fetched value on teardown - What changed: Removed shadowing, added 5s drain delay, accountId guard requires match - What did NOT change: Discord connection lifecy\u2026", - "changed_files": 13, + "body_excerpt": "Ports replay quality harness baseline from voice-call-custom into extensions/voice-call.\\n\\nIncludes:\\n- scripts/replay-regression.ts\\n- scripts/replay-regression.test.ts\\n- src/response-quality.ts\\n- src/response-quality.test.ts\\n\\nSource\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53833", - "created_at": "2026-03-24T17:22:06Z", - "deletions": 29, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53833/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53833", - "labels": [ - "channel: discord", - "channel: telegram", - "size: M" - ], - "merged": false, - "number": 53833, - "review_comments_count": 10, - "state": "closed", - "title": "fix(discord): fix botUserId shadowing and drain delay for managed identity teardown", - "updated_at": "2026-03-24T18:56:01Z" - }, - { - "additions": 111, - "author": "deucemask", - "author_association": "NONE", - "body_excerpt": "## Summary - Problem: Slack API errors carry structured fields (needed/provided scopes, error codes, rate-limit retry info) that were lost when logged via `String(err)`, making scope mismatches and auth failures hard to diagnose. - Why it\u2026", - "changed_files": 10, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53832", - "created_at": "2026-03-24T17:20:16Z", - "deletions": 19, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66216", + "created_at": "2026-04-13T23:33:25Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53832/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53832", + "files_url": "https://github.com/openclaw/openclaw/pull/66216/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66216", "labels": [ - "channel: slack", - "size: S" + "channel: voice-call", + "size: L" ], "merged": false, - "number": 53832, - "review_comments_count": 2, + "number": 66216, + "review_comments_count": 3, "state": "closed", - "title": "fix(slack): include API error details in log messages", - "updated_at": "2026-03-24T21:15:57Z" + "title": "test(voice-call): add replay quality harness baseline", + "updated_at": "2026-04-13T23:42:42Z" }, { - "additions": 12, - "author": "scoootscooob", + "additions": 1, + "author": "yqli2420", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - teach the bundled Kimi provider to use the same moonshot thinking payload normalization as the Moonshot provider - keep the fallback capability table aligned for non-plugin resolution paths - add regression coverage for the ki\u2026", - "changed_files": 3, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53830", - "created_at": "2026-03-24T17:19:23Z", - "deletions": 1, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53830/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53830", - "labels": [ - "agents", - "maintainer", - "size: XS", - "extensions: kimi-coding" - ], - "merged": true, - "number": 53830, - "review_comments_count": 2, - "state": "closed", - "title": "Providers: fix kimi-coding thinking normalization", - "updated_at": "2026-03-24T17:58:03Z" - }, - { - "additions": 4, - "author": "albertxos", - "author_association": "NONE", - "body_excerpt": "## Summary - fix Podman setup failure when loading exported image as openclaw rootless user - grant read and traverse permissions on the temporary image tar path before podman load ## Root cause The setup script created IMAGE_TAR_DIR with\u2026", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: Plugins importing `stringEnum` from `openclaw/plugin-sdk` encounter a runtime TypeError in OpenClaw 2026.4.12 because the export was removed from the main entry point. - Wh\u2026", "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53828", - "created_at": "2026-03-24T17:16:54Z", + "conversation_url": "https://github.com/openclaw/openclaw/pull/66214", + "created_at": "2026-04-13T23:30:04Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53828/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53828", + "files_url": "https://github.com/openclaw/openclaw/pull/66214/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66214", "labels": [ - "scripts", - "docker", "size: XS" ], "merged": false, - "number": 53828, - "review_comments_count": 1, + "number": 66214, + "review_comments_count": 3, "state": "open", - "title": "podman: fix image tar permissions before rootless load", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix(plugin-sdk): restore stringEnum export for backward compatibility", + "updated_at": "2026-04-13T23:34:12Z" }, { - "additions": 283, - "author": "pober-life", - "author_association": "NONE", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: OpenAI Codex OAuth can return credentials without a top-level `creds.email`, which makes the provider-owned auth path fall back to `openai-codex:default` even when the retu\u2026", + "additions": 79, + "author": "soumikbhatta", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - add `verify-release-assets.yml` \u2014 polls for macOS binaries after a stable GitHub release is published - add CODEOWNERS entry for `appcast.xml` requiring maintainer review ## Why v2026.4.12 stable was published at 2026-04-13T12\u2026", "changed_files": 2, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53825", - "created_at": "2026-03-24T17:09:40Z", - "deletions": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66213", + "created_at": "2026-04-13T23:28:11Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53825/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53825", + "files_url": "https://github.com/openclaw/openclaw/pull/66213/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66213", "labels": [ - "size: M", - "extensions: openai" + "size: S" ], - "merged": true, - "number": 53825, + "merged": false, + "number": 66213, "review_comments_count": 4, "state": "open", - "title": "fix(auth): derive OpenAI Codex OAuth profile ids from JWT claims", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix(ci): add post-publish asset verification for macOS stable releases", + "updated_at": "2026-04-13T23:36:30Z" }, { - "additions": 374, - "author": "dutifulbob", + "additions": 956, + "author": "omarshahine", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - port #40819 onto current `main` after the Discord code moved into `extensions/discord` - send a visible Discord timeout reply when the inbound worker times out before a final reply has started - route that fallback through the\u2026", - "changed_files": 6, + "body_excerpt": "## Summary Adds a new **Model Auth** card to the Overview dashboard that surfaces OAuth token health and rate limits for model providers at a glance. ![Example: OpenAI Codex: 97% left, expires 10d] ## Motivation When OAuth-authenticated mo\u2026", + "changed_files": 16, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53823", - "created_at": "2026-03-24T17:05:03Z", - "deletions": 10, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53823/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53823", - "labels": [ - "channel: discord", - "size: M" - ], - "merged": true, - "number": 53823, - "review_comments_count": 2, - "state": "closed", - "title": "fix(discord): notify user on discord when inbound worker times out", - "updated_at": "2026-03-24T18:01:43Z" - }, - { - "additions": 242, - "author": "sasan1200", - "author_association": "NONE", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: Sandbox mount config is currently bind-string oriented (`sandbox.docker.binds`), which makes Docker-managed volume workflows awkward. - Why it matters: In containerized env\u2026", - "changed_files": 8, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53822", - "created_at": "2026-03-24T17:04:24Z", - "deletions": 2, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53822/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53822", + "conversation_url": "https://github.com/openclaw/openclaw/pull/66211", + "created_at": "2026-04-13T23:25:21Z", + "deletions": 6, + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/66211/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66211", "labels": [ - "docs", - "docker", - "agents", - "size: M" + "app: web-ui", + "gateway", + "maintainer", + "size: L" ], "merged": false, - "number": 53822, - "review_comments_count": 3, + "number": 66211, + "review_comments_count": 2, "state": "open", - "title": "Feat/sandbox docker volumes strategies", - "updated_at": "2026-03-24T20:15:28Z" + "title": "feat(ui): add Model Auth status card to Overview dashboard", + "updated_at": "2026-04-14T01:25:29Z" }, { - "additions": 210, - "author": "sasan1200", - "author_association": "NONE", - "body_excerpt": "## Summary - Problem: `agents.defaults.sandbox.sessionToolsVisibility` is global \u2014 all sandboxed agents share the same visibility clamp with no per-agent override - Why it matters: Operators running multiple agents (e.g. a local assistant\u2026", - "changed_files": 7, + "additions": 9535, + "author": "sudie-codes", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## What this changes This adds a helper for long Teams channel threads so someone can quickly get the summary, decisions, and next steps from a conversation. It can also prepare follow-up actions like posting a summary, creating a poll, pi\u2026", + "changed_files": 50, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53821", - "created_at": "2026-03-24T17:04:19Z", - "deletions": 10, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66210", + "created_at": "2026-04-13T23:23:39Z", + "deletions": 927, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53821/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53821", + "files_url": "https://github.com/openclaw/openclaw/pull/66210/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66210", "labels": [ + "docs", + "channel: msteams", + "scripts", "agents", - "size: M" + "size: XL" ], "merged": false, - "number": 53821, - "review_comments_count": 3, + "number": 66210, + "review_comments_count": 7, "state": "open", - "title": "Add per-agent sandbox session visibility override feature", - "updated_at": "2026-03-24T20:15:28Z" + "title": "feat(msteams): add thread copilot approvals", + "updated_at": "2026-04-13T23:30:52Z" }, { - "additions": 84, - "author": "sasan1200", - "author_association": "NONE", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: Ollama memory indexing fanned out `/api/embeddings` calls with unbounded `Promise.all` over chunks. - Why it matters: Large session backfills can burst many concurrent requ\u2026", - "changed_files": 2, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "additions": 7635, + "author": "sudie-codes", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## What this changes This adds an assistant for the inbox that can sort incoming mail into what needs a reply, what needs action, and what is simply for awareness. It can prepare a response so a person can review it first, but it does not\u2026", + "changed_files": 39, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53820", - "created_at": "2026-03-24T17:04:14Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66209", + "created_at": "2026-04-13T23:23:38Z", + "deletions": 605, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53820/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53820", + "files_url": "https://github.com/openclaw/openclaw/pull/66209/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66209", "labels": [ - "size: S" + "docs", + "channel: msteams", + "scripts", + "agents", + "size: XL" ], "merged": false, - "number": 53820, - "review_comments_count": 1, + "number": 66209, + "review_comments_count": 6, "state": "open", - "title": "Memory: cap Ollama embed batch fan-out to prevent index fetch failures", - "updated_at": "2026-03-24T20:15:29Z" + "title": "feat(m365): add Outlook triage approvals", + "updated_at": "2026-04-13T23:30:26Z" }, { - "additions": 118, - "author": "sasan1200", - "author_association": "NONE", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: `src/agents/pi-embedded-runner/extra-params.ts` applied `parallel_tool_calls` to `openai-completions` and `openai-responses`, but not `openai-codex-responses`. - Why it mat\u2026", - "changed_files": 3, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "additions": 10353, + "author": "sudie-codes", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## What this changes This adds a calendar helper that can assemble an agenda, check availability, and prepare meeting changes before anything is put on the calendar. It helps with the scheduling work while keeping final control with people\u2026", + "changed_files": 47, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53819", - "created_at": "2026-03-24T17:04:06Z", - "deletions": 9, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66208", + "created_at": "2026-04-13T23:23:37Z", + "deletions": 605, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53819/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53819", + "files_url": "https://github.com/openclaw/openclaw/pull/66208/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66208", "labels": [ + "docs", + "channel: msteams", + "scripts", "agents", - "size: S" + "size: XL" ], "merged": false, - "number": 53819, - "review_comments_count": 1, + "number": 66208, + "review_comments_count": 5, "state": "open", - "title": "Agents: enable Codex parallel tool calls", - "updated_at": "2026-03-24T20:15:28Z" + "title": "feat(m365): add calendar copilot approvals", + "updated_at": "2026-04-13T23:29:37Z" }, { "additions": 3, - "author": "w-sss", + "author": "yqli2420", "author_association": "CONTRIBUTOR", - "body_excerpt": "Fixes #53656 ## Problem Feishu message tool schema marks `card` as required, but the handler supports three mutually exclusive message types: card, media, or text. This causes schema validation to reject pure media/text messages. ## Soluti\u2026", - "changed_files": 1, - "cluster_id": "cluster-53318-6", - "cluster_ids": [ - "cluster-53318-6" - ], - "cluster_role": "member", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: The build configuration failed to generate `subagent-registry.runtime.js` in the `dist` folder, causing a module resolution error at runtime. - Why it matters: This prevent\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53814", - "created_at": "2026-03-24T16:54:03Z", - "deletions": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66205", + "created_at": "2026-04-13T23:16:06Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53814/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53814", + "files_url": "https://github.com/openclaw/openclaw/pull/66205/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66205", "labels": [ - "channel: feishu", - "size: XS", - "r: too-many-prs" + "size: XS" ], - "merged": false, - "number": 53814, - "review_comments_count": 0, + "merged": true, + "number": 66205, + "review_comments_count": 2, "state": "closed", - "title": "fix(feishu): make card field optional in message tool schema", - "updated_at": "2026-03-24T16:55:03Z" + "title": "fix(build): include subagent-registry.runtime.js in dist output", + "updated_at": "2026-04-14T08:00:41Z" }, { - "additions": 149, - "author": "luzhidong", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Implements cursor-based pagination for webchat history to fix UI freezing on long sessions. Fixes #48514 ## Changes **Backend** (src/gateway/server-methods/chat.ts): - Added `before` cursor parameter to `chat.history` method - M\u2026", - "changed_files": 11, + "additions": 5, + "author": "defonota3box", + "author_association": "NONE", + "body_excerpt": "## Summary The `BlueBubbles` extension passes raw inbound DM body content directly to `formatInboundEnvelope(...)`, bypassing the `wrapExternalContent()` untrusted-content pipeline. The Discord extension already wraps its inbound bodies (`\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 4, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53812", - "created_at": "2026-03-24T16:51:26Z", - "deletions": 15, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66200", + "created_at": "2026-04-13T22:56:24Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53812/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53812", + "files_url": "https://github.com/openclaw/openclaw/pull/66200/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66200", "labels": [ - "app: macos", - "app: web-ui", - "gateway", - "size: S" + "channel: bluebubbles", + "size: XS" ], "merged": false, - "number": 53812, - "review_comments_count": 6, + "number": 66200, + "review_comments_count": 2, "state": "open", - "title": "feat(webchat): implement cursor-based pagination for chat history", - "updated_at": "2026-03-24T23:13:40Z" + "title": "security: wrap BlueBubbles inbound DM body via wrapExternalContent", + "updated_at": "2026-04-13T23:00:36Z" }, { - "additions": 110, - "author": "gautamtayal1", + "additions": 9, + "author": "defonota3box", "author_association": "NONE", - "body_excerpt": "## Summary - Fixes agent deletion when multiple agents share the same workspace. - Before this change, deleting one agent could also trash the shared workspace, breaking the remaining agent(s). - The delete flow now preserves the workspace\u2026", - "changed_files": 6, + "body_excerpt": "## Summary The `iMessage` extension passes raw inbound DM body content directly to `formatInboundEnvelope(...)`, bypassing the `wrapExternalContent()` untrusted-content pipeline. The Discord extension already wraps its inbound bodies (`ext\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53809", - "created_at": "2026-03-24T16:48:03Z", - "deletions": 26, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66199", + "created_at": "2026-04-13T22:55:55Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53809/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53809", + "files_url": "https://github.com/openclaw/openclaw/pull/66199/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66199", "labels": [ - "gateway", - "commands", - "agents", - "size: S" + "channel: imessage", + "size: XS" ], "merged": false, - "number": 53809, + "number": 66199, "review_comments_count": 2, "state": "open", - "title": "fix(agents): protect shared workspace from deletion", - "updated_at": "2026-03-24T20:15:28Z" + "title": "security: wrap iMessage inbound DM body via wrapExternalContent", + "updated_at": "2026-04-13T23:01:20Z" }, { - "additions": 22, - "author": "jalehman", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## What Stabilizes the preaction process-title test by observing `process.title` through a temporary local property wrapper instead of relying on the host runtime to expose the title change directly during Vitest execution. ## Why Current\u2026", + "additions": 9, + "author": "defonota3box", + "author_association": "NONE", + "body_excerpt": "## Summary The `Signal` extension passes raw inbound DM body content directly to `formatInboundEnvelope(...)`, bypassing the `wrapExternalContent()` untrusted-content pipeline. The Discord extension already wraps its inbound bodies (`exten\u2026", "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53808", - "created_at": "2026-03-24T16:40:57Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66198", + "created_at": "2026-04-13T22:55:21Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53808/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53808", + "files_url": "https://github.com/openclaw/openclaw/pull/66198/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66198", "labels": [ - "cli", - "maintainer", + "channel: signal", "size: XS" ], - "merged": true, - "number": 53808, - "review_comments_count": 0, - "state": "closed", - "title": "test: stabilize preaction process title assertion", - "updated_at": "2026-03-24T17:10:00Z" + "merged": false, + "number": 66198, + "review_comments_count": 3, + "state": "open", + "title": "security: wrap Signal inbound DM body via wrapExternalContent", + "updated_at": "2026-04-13T23:05:49Z" }, { - "additions": 440, - "author": "densmirnov", + "additions": 9, + "author": "defonota3box", "author_association": "NONE", - "body_excerpt": "## Summary - add first-class `EnvironmentFile` rendering support to generated systemd units - load the gateway state-dir `.env` during Linux systemd install and stop inlining gateway/bot auth vars when the same keys are already present the\u2026", - "changed_files": 5, + "body_excerpt": "## Summary The `Telegram` extension passes raw inbound DM body content directly to `formatInboundEnvelope(...)`, bypassing the `wrapExternalContent()` untrusted-content pipeline. The Discord extension already wraps its inbound bodies (`ext\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53807", - "created_at": "2026-03-24T16:30:35Z", - "deletions": 19, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66197", + "created_at": "2026-04-13T22:54:48Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53807/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53807", + "files_url": "https://github.com/openclaw/openclaw/pull/66197/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66197", "labels": [ - "gateway", - "size: M" + "channel: telegram", + "size: XS" ], "merged": false, - "number": 53807, - "review_comments_count": 4, + "number": 66197, + "review_comments_count": 1, "state": "open", - "title": "fix: avoid inlining daemon secrets in generated systemd units", - "updated_at": "2026-03-24T20:15:28Z" + "title": "security: wrap Telegram inbound DM body via wrapExternalContent", + "updated_at": "2026-04-13T23:01:15Z" }, { - "additions": 220, - "author": "wangshu94", + "additions": 10, + "author": "defonota3box", "author_association": "NONE", - "body_excerpt": "## Summary `openclaw channels add` can fail to resolve already-installed external channel plugins Describe the problem and fix in 2\u20135 bullets: - **Problem:** `channels add` resolves channels purely from the active in-process registry and c\u2026", - "changed_files": 4, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "body_excerpt": "## Summary The `WhatsApp` extension passes raw inbound DM body content directly to `formatInboundEnvelope(...)`, bypassing the `wrapExternalContent()` untrusted-content pipeline. The Discord extension already wraps its inbound bodies (`ext\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53806", - "created_at": "2026-03-24T16:29:43Z", - "deletions": 117, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66196", + "created_at": "2026-04-13T22:54:16Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53806/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53806", + "files_url": "https://github.com/openclaw/openclaw/pull/66196/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66196", "labels": [ - "cli", - "commands", - "size: M" + "channel: whatsapp-web", + "size: XS" ], "merged": false, - "number": 53806, - "review_comments_count": 5, + "number": 66196, + "review_comments_count": 3, "state": "open", - "title": "Channels: resolve installed channel plugins in add", - "updated_at": "2026-03-24T20:15:29Z" + "title": "security: wrap WhatsApp inbound DM body via wrapExternalContent", + "updated_at": "2026-04-13T22:58:51Z" }, { - "additions": 931, - "author": "ats3v", - "author_association": "NONE", - "body_excerpt": "## Summary - **Problem:** OpenClaw has no native integration for DeepInfra, which provides a unified OpenAI-compatible API covering hundreds of popular open-source and frontier models under a single key. - **Why it matters:** **DeepInfra i\u2026", - "changed_files": 22, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53805", - "created_at": "2026-03-24T16:27:34Z", - "deletions": 3, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53805/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53805", - "labels": [ - "docs", - "commands", - "agents", - "size: L" - ], - "merged": false, - "number": 53805, - "review_comments_count": 4, - "state": "open", - "title": "[Feature]: Support DeepInfra as an LLM provider ", - "updated_at": "2026-03-24T20:15:28Z" - }, - { - "additions": 49, - "author": "realRoosterWho", - "author_association": "NONE", - "body_excerpt": "## Summary When Discord slash sessions reach the elevated permission resolution path, `ctx.Provider` / `sessionCtx.Provider` can be empty. This causes the `allowFrom` lookup to fail even when `tools.elevated.allowFrom.discord` is correctly\u2026", - "changed_files": 3, + "additions": 164, + "author": "ly85206559", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - **Problem:** On hosts where `path.isAbsolute` follows POSIX rules, Windows-style absolute paths such as `C:\\...` or `C:/...` were treated as relative and joined to the workspace root, producing invalid doubled paths (e.g. read\u2026", + "changed_files": 7, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53804", - "created_at": "2026-03-24T16:26:39Z", - "deletions": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66193", + "created_at": "2026-04-13T22:49:34Z", + "deletions": 11, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53804/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53804", + "files_url": "https://github.com/openclaw/openclaw/pull/66193/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66193", "labels": [ - "commands", "docker", + "agents", "size: S" ], - "merged": false, - "number": 53804, - "review_comments_count": 8, - "state": "open", - "title": "fix(elevated): fall back to session key channel for Discord slash elevated resolution", - "updated_at": "2026-03-24T20:15:29Z" - }, - { - "additions": 791, - "author": "livingghost", - "author_association": "NONE", - "body_excerpt": "## Summary - Problem: Hook dispatch routes incorrectly in multi-channel setups; Discord teardown races on managed identity cleanup - Why it matters: Missed hooks and leaked bot identities in production gateway - What changed: Fixed hook di\u2026", - "changed_files": 21, - "cluster_id": "cluster-53795-5", - "cluster_ids": [ - "cluster-53795-5" - ], - "cluster_role": "member", - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53802", - "created_at": "2026-03-24T16:24:30Z", - "deletions": 36, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53802/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53802", - "labels": [ - "channel: discord", - "channel: telegram", - "gateway", - "size: L" - ], - "merged": false, - "number": 53802, - "review_comments_count": 6, - "state": "closed", - "title": "fix(gateway): fix hook dispatch and Discord provider teardown", - "updated_at": "2026-03-24T17:24:37Z" - }, - { - "additions": 659, - "author": "livingghost", - "author_association": "NONE", - "body_excerpt": "## Summary - Problem: First `sessions.list` call after gateway startup is slow due to cold cache - Why it matters: Users see delayed session listings on gateway restart - What changed: Added `gateway.sessionsList.usageCacheMaxEntries` (con\u2026", - "changed_files": 9, - "cluster_id": "cluster-53795-5", - "cluster_ids": [ - "cluster-53795-5" - ], - "cluster_role": "canonical", - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53801", - "created_at": "2026-03-24T16:23:37Z", - "deletions": 7, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53801/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53801", - "labels": [ - "gateway", - "size: L" - ], - "merged": false, - "number": 53801, - "review_comments_count": 9, + "merged": true, + "number": 66193, + "review_comments_count": 3, "state": "closed", - "title": "perf: add configurable usage cache and startup prewarm for sessions.list", - "updated_at": "2026-03-24T17:24:39Z" + "title": "Agents: fix Windows drive path join for read/sandbox tools (#54039)", + "updated_at": "2026-04-14T01:20:27Z" }, { - "additions": 8, - "author": "huangxiao2008", + "additions": 34, + "author": "jason-zimmer", "author_association": "NONE", - "body_excerpt": "## Summary Channel plugin schema contributions (e.g. Feishu's `card` field) were merged into the message tool schema via `extraProperties` without wrapping in `Type.Optional()`, making them **required by default** in the Typebox `Object` s\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - reset the TUI activity status when a terminal chat event arrives after `activeChatRunId` has already been cleared - apply the same safeguard to both `finalizeRun` and `terminateRun` - add regression coverage for late `final` a\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53800", - "created_at": "2026-03-24T16:23:34Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66192", + "created_at": "2026-04-13T22:47:59Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53800/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53800", + "files_url": "https://github.com/openclaw/openclaw/pull/66192/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66192", "labels": [ - "agents", "size: XS" ], "merged": false, - "number": 53800, - "review_comments_count": 0, + "number": 66192, + "review_comments_count": 3, "state": "open", - "title": "fix(message-tool): make channel plugin schema properties optional", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(tui): reset activity after late terminal events", + "updated_at": "2026-04-13T22:52:31Z" }, { - "additions": 217, - "author": "livingghost", - "author_association": "NONE", - "body_excerpt": "## Summary - Problem: `sessions.list` reads transcripts for all sessions before applying sort/limit, wasting I/O - Why it matters: With limit=10 and 500 sessions, 490 transcript reads are unnecessary - What changed: When no search filter i\u2026", + "additions": 33, + "author": "jlapenna", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Description Currently, sends config strings directly to the adapter without utilizing OpenClaw's native Model Parser (`parseStaticModelRef`). As a result, the `openai` proxy adapter defaults to a regex that only matches `openai/`, faili\u2026", "changed_files": 2, - "cluster_id": "cluster-53795-5", - "cluster_ids": [ - "cluster-53795-5" - ], - "cluster_role": "member", - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53799", - "created_at": "2026-03-24T16:23:12Z", - "deletions": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66190", + "created_at": "2026-04-13T22:46:45Z", + "deletions": 6, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53799/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53799", + "files_url": "https://github.com/openclaw/openclaw/pull/66190/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66190", "labels": [ - "gateway", - "size: M" + "size: XS" ], "merged": false, - "number": 53799, - "review_comments_count": 2, + "number": 66190, + "review_comments_count": 5, "state": "closed", - "title": "perf: pre-apply sort and limit before transcript fallback in sessions.list", - "updated_at": "2026-03-24T18:55:59Z" + "title": "fix(memory): use native parser for openai embeddings proxy", + "updated_at": "2026-04-14T09:22:00Z" }, { - "additions": 606, - "author": "livingghost", - "author_association": "NONE", - "body_excerpt": "## Summary - Problem: `sessions.list` transcript usage fallback reads are serial, causing timeouts on large inventories - Why it matters: Gateway deployments with many sessions experience slow/timed-out sessions.list responses - What chang\u2026", - "changed_files": 10, - "cluster_id": "cluster-53795-5", - "cluster_ids": [ - "cluster-53795-5" - ], - "cluster_role": "member", - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53796", - "created_at": "2026-03-24T16:22:53Z", - "deletions": 116, + "additions": 181, + "author": "yqli2420", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: The Telegram integration was treating all assistant messages as user-facing, causing internal scratch/commentary text to leak into the user chat. - Why it matters: Leaking\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66188", + "created_at": "2026-04-13T22:39:59Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53796/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53796", + "files_url": "https://github.com/openclaw/openclaw/pull/66188/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66188", "labels": [ - "gateway", - "size: L" + "size: S" ], "merged": false, - "number": 53796, - "review_comments_count": 0, - "state": "closed", - "title": "perf(gateway): add configurable sessions.list fallback concurrency", - "updated_at": "2026-03-24T17:24:38Z" + "number": 66188, + "review_comments_count": 4, + "state": "open", + "title": "fix(channels): prevent internal assistant scratch messages from leaking to Telegram", + "updated_at": "2026-04-13T22:42:56Z" }, { - "additions": 230, - "author": "livingghost", + "additions": 97, + "author": "yozu", "author_association": "NONE", - "body_excerpt": "## Summary - Problem: `sessions.list` re-reads transcript files on every call for usage metadata - Why it matters: Large session inventories cause slow `sessions.list` responses - What changed: Added LRU in-memory cache for `readLatestSess\u2026", - "changed_files": 2, - "cluster_id": "cluster-53795-5", - "cluster_ids": [ - "cluster-53795-5" - ], - "cluster_role": "member", - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53795", - "created_at": "2026-03-24T16:22:18Z", - "deletions": 5, + "body_excerpt": "## Summary - Problem: Conversational replies could still drift into explanation-first, confirmation-heavy phrasing even after the user clearly wanted autonomous forward progress. - Why it matters: That flattening makes GPT-5 turns feel hes\u2026", + "changed_files": 11, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 8, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66184", + "created_at": "2026-04-13T22:23:28Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53795/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53795", + "files_url": "https://github.com/openclaw/openclaw/pull/66184/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66184", "labels": [ - "gateway", - "size: M" + "agents", + "size: S" ], "merged": false, - "number": 53795, - "review_comments_count": 2, - "state": "closed", - "title": "perf: add in-memory usage cache for session transcript reads", - "updated_at": "2026-03-24T18:55:57Z" + "number": 66184, + "review_comments_count": 5, + "state": "open", + "title": "fix(chat): reduce confirmation-heavy flattening in conversational replies", + "updated_at": "2026-04-14T12:01:46Z" }, { - "additions": 207, - "author": "livingghost", + "additions": 507, + "author": "yozu", "author_association": "NONE", - "body_excerpt": "## Summary - Problem: Snapshot/onboarding plugin loads register commands, tools, hooks, and channels unnecessarily - Why it matters: These registrations cause side effects during provider-only discovery paths - What changed: Added `provide\u2026", - "changed_files": 8, + "body_excerpt": "## Summary - Problem: Conversational replies could still drift into explanation-first, confirmation-heavy phrasing even after the user clearly wanted autonomous forward progress. - Why it matters: That flattening makes GPT-5 turns feel hes\u2026", + "changed_files": 30, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53793", - "created_at": "2026-03-24T16:21:58Z", - "deletions": 21, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66183", + "created_at": "2026-04-13T22:19:13Z", + "deletions": 42, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53793/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53793", + "files_url": "https://github.com/openclaw/openclaw/pull/66183/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66183", "labels": [ - "size: M" + "app: macos", + "app: web-ui", + "gateway", + "cli", + "agents", + "size: L", + "extensions: openai" ], "merged": false, - "number": 53793, - "review_comments_count": 8, + "number": 66183, + "review_comments_count": 3, "state": "closed", - "title": "fix(plugins): skip non-provider registrations during snapshot loads", - "updated_at": "2026-03-24T18:55:55Z" + "title": "fix(chat): reduce confirmation-heavy flattening in conversational replies", + "updated_at": "2026-04-13T22:31:10Z" }, { - "additions": 208, - "author": "livingghost", + "additions": 507, + "author": "yozu", "author_association": "NONE", - "body_excerpt": "## Summary - Problem: No plugin API to programmatically abort a running agent execution - Why it matters: Multi-agent orchestration plugins need to cancel stale or superseded runs - What changed: Added `api.runtime.agent.abort` with `Agent\u2026", - "changed_files": 9, + "body_excerpt": "## Summary - Problem: Conversational replies could still drift into explanation-first, confirmation-heavy phrasing even after the user clearly wanted autonomous forward progress. - Why it matters: That flattening makes GPT-5 turns feel hes\u2026", + "changed_files": 30, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53792", - "created_at": "2026-03-24T16:21:21Z", - "deletions": 15, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66181", + "created_at": "2026-04-13T22:16:16Z", + "deletions": 42, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53792/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53792", + "files_url": "https://github.com/openclaw/openclaw/pull/66181/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66181", "labels": [ - "docs", + "app: macos", + "app: web-ui", "gateway", - "size: S" + "cli", + "agents", + "size: L", + "r: too-many-prs", + "extensions: openai" ], "merged": false, - "number": 53792, - "review_comments_count": 10, + "number": 66181, + "review_comments_count": 3, "state": "closed", - "title": "feat(plugins): add api.runtime.agent.abort for aborting agent runs", - "updated_at": "2026-03-24T18:55:53Z" + "title": "fix(chat): reduce confirmation-heavy flattening in conversational replies", + "updated_at": "2026-04-13T22:22:20Z" }, { - "additions": 28, - "author": "livingghost", - "author_association": "NONE", - "body_excerpt": "## Summary - Problem: Plugins cannot identify which agent run triggered a hook event - Why it matters: Correlation between hook events and specific agent executions is needed for multi-agent orchestration - What changed: Added `runId` to `\u2026", - "changed_files": 5, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "additions": 3, + "author": "hoyyeva", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: The codex extension's buildCodexProviderCatalog() writes a provider entry to models.json with auth: \"token\" but no apiKey. The Pi ModelRegistry.validateConfig() requires apiKey when a provider defines custom models \u2014\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53791", - "created_at": "2026-03-24T16:20:39Z", + "conversation_url": "https://github.com/openclaw/openclaw/pull/66180", + "created_at": "2026-04-13T22:14:20Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53791/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53791", + "files_url": "https://github.com/openclaw/openclaw/pull/66180/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66180", "labels": [ - "agents", - "size: XS" + "size: XS", + "extensions: codex" ], - "merged": false, - "number": 53791, + "merged": true, + "number": 66180, "review_comments_count": 0, "state": "closed", - "title": "feat(plugins): expose runId in agent hook context", - "updated_at": "2026-03-24T18:55:51Z" + "title": "fix: include apiKey in codex provider catalog to unblock models.json loading", + "updated_at": "2026-04-14T02:22:17Z" }, { - "additions": 546, - "author": "scottgl9", + "additions": 102, + "author": "alex-latitude", "author_association": "NONE", - "body_excerpt": "Reopening #49415 with a clean rebase onto main (previous branch was closed by the bot due to unrelated commits picked up during merge). Closes #49370 --- ## Summary Operators running OpenClaw on resource-constrained hosts (Raspberry Pi, sh\u2026", - "changed_files": 19, + "body_excerpt": "## Summary Talk Mode is fully implemented in `TalkModeManager` \u2014 STT, `chat.send`, `talk.speak` TTS, silence-based finalization, interrupt-on-speech, wake-word routing, playback control \u2014 but the `talkMode` instance in `NodeRuntime` was ne\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53789", - "created_at": "2026-03-24T16:18:32Z", - "deletions": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66179", + "created_at": "2026-04-13T22:11:34Z", + "deletions": 8, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53789/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53789", + "files_url": "https://github.com/openclaw/openclaw/pull/66179/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66179", "labels": [ - "docs", - "app: macos", - "app: web-ui", - "gateway", - "agents", - "size: M" + "app: android", + "size: S" ], "merged": false, - "number": 53789, - "review_comments_count": 3, + "number": 66179, + "review_comments_count": 4, "state": "open", - "title": "Cron/Heartbeat: add preHook gate for pre-run script checks", - "updated_at": "2026-03-24T20:15:29Z" + "title": "Android: expose Talk Mode in UI + foreground microphone permission", + "updated_at": "2026-04-14T01:25:34Z" }, { - "additions": 29, - "author": "Tianworld", + "additions": 64, + "author": "kvnkho", "author_association": "NONE", - "body_excerpt": "## Summary - Fix awkward, duplicated wording in the Windows companion app section. - Add a short \"Git and GitHub connectivity (contributors)\" section for Windows: unstable HTTPS to GitHub, failed `gh auth login` device flow, and authentica\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - Send `KILOCODE_API_KEY` as a Bearer token in the **extension** kilocode model discovery fetch so the gateway can resolve the user and include their BYOK models in the response. ## Problem When OpenClaw discovers models via `fe\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53788", - "created_at": "2026-03-24T16:13:35Z", + "conversation_url": "https://github.com/openclaw/openclaw/pull/66175", + "created_at": "2026-04-13T21:57:52Z", "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53788/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53788", + "files_url": "https://github.com/openclaw/openclaw/pull/66175/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66175", "labels": [ - "docs", - "size: XS" + "size: S", + "extensions: kilocode" ], "merged": false, - "number": 53788, + "number": 66175, "review_comments_count": 2, "state": "open", - "title": "docs(windows): companion app copy and GitHub auth notes", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(kilocode): send auth header in model discovery to include BYOK models", + "updated_at": "2026-04-14T08:18:02Z" }, { - "additions": 21, - "author": "rottenpen", + "additions": 86, + "author": "rocklobster-ai", "author_association": "NONE", - "body_excerpt": "## What resolveReceiveIdType() previously fell back to \"user_id\" for any unrecognized ID format, silently sending the wrong ID type to the Feishu API and causing 400 \"receive_id_type is required\" errors on newer Lark SDK versions (which si\u2026", + "body_excerpt": "# OpenClaw session-store path fix, 2026-04-12 ## Status Applied live to installed runtime. Also ported carefully into a fresh source clone of the matching `v2026.4.11` upstream tag, but not yet merged upstream or installed from that source\u2026", "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53787", - "created_at": "2026-03-24T16:11:29Z", - "deletions": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66174", + "created_at": "2026-04-13T21:52:33Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53787/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53787", + "files_url": "https://github.com/openclaw/openclaw/pull/66174/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66174", "labels": [ - "channel: feishu", - "size: XS" + "size: S" ], "merged": false, - "number": 53787, - "review_comments_count": 2, + "number": 66174, + "review_comments_count": 3, "state": "open", - "title": "fix(feishu): guard against undefined receiveIdType in resolveFeishuSendTarget", - "updated_at": "2026-03-24T20:15:29Z" + "title": "Fix session transcript path canonicalization on save", + "updated_at": "2026-04-13T21:59:13Z" }, { - "additions": 104, - "author": "oolong-tea-2026", - "author_association": "NONE", - "body_excerpt": "## Summary The Feishu outbound media router (`resolveFeishuOutboundMediaKind`) only recognizes `.opus` and `.ogg` as audio \u2014 common formats like `.mp3`, `.wav`, `.m4a`, `.flac`, and `.aac` are sent as `msg_type: \"file\"` (downloadable attac\u2026", - "changed_files": 3, + "additions": 10, + "author": "jalehman", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## What This PR fixes the plugin SDK boundary artifact preparation path so the standalone prep command actually runs under Node and treats `agent-harness` declarations as required outputs. It also narrows the Codex approval bridge to the d\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53784", - "created_at": "2026-03-24T16:05:41Z", - "deletions": 10, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66172", + "created_at": "2026-04-13T21:44:11Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53784/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53784", + "files_url": "https://github.com/openclaw/openclaw/pull/66172/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66172", "labels": [ - "channel: feishu", - "size: S" + "scripts", + "maintainer", + "size: XS", + "extensions: codex" ], "merged": false, - "number": 53784, + "number": 66172, "review_comments_count": 1, - "state": "open", - "title": "fix(feishu): recognize common audio formats (mp3/wav/m4a/flac/aac) as playable audio messages", - "updated_at": "2026-03-24T20:15:29Z" + "state": "closed", + "title": "fix: repair plugin-sdk boundary artifact prep", + "updated_at": "2026-04-13T23:07:02Z" }, { - "additions": 85, - "author": "ernestodeoliveira", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary When a Discord bot account is added to OpenClaw without enabling the \"Message Content Intent\" in the Discord Developer Portal, the `monitorDiscordProvider` call throws an unhandled error that crashes the **entire Gateway** \u251c\u00f6\u251c\u00e7\u251c\u2026", - "changed_files": 2, + "additions": 116, + "author": "coder999999999", + "author_association": "NONE", + "body_excerpt": "## Summary - Problem: iMessage reflected replies can carry short attributed-text prefix bytes like `\\x93b\\x02`, which makes echo-cache text fallback miss the agent's own outbound text. - Why it matters: when the reflected text misses echo\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53782", - "created_at": "2026-03-24T16:05:18Z", - "deletions": 10, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53782/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53782", + "comments_count": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66169", + "created_at": "2026-04-13T20:57:58Z", + "deletions": 1, + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/66169/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66169", "labels": [ - "channel: discord", + "channel: imessage", "size: S" ], "merged": false, - "number": 53782, - "review_comments_count": 4, + "number": 66169, + "review_comments_count": 0, "state": "open", - "title": "fix(discord): graceful degradation when account missing Message Content Intent", - "updated_at": "2026-03-24T20:15:29Z" + "title": "[codex] fix(imessage): normalize attributed echo prefixes", + "updated_at": "2026-04-13T22:49:00Z" }, { - "additions": 176, - "author": "ernestodeoliveira", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary When a media fetch operation fails, the raw error message \u251c\u00f6\u251c\u00e7\u251c\u00c2 which may contain serialized JSON with private group IDs, phone numbers, user names, and internal system paths \u251c\u00f6\u251c\u00e7\u251c\u00c2 was posted to the configured channel as if it\u2026", - "changed_files": 6, + "additions": 3144, + "author": "radicalgeek", + "author_association": "NONE", + "body_excerpt": "## Summary - **Problem:** Gateway clients that want to build MCP-powered app experiences (tool palettes, embedded HTML panels, resource browsers) have no typed WebSocket RPC surface for discovering, invoking, and reading MCP tools and reso\u2026", + "changed_files": 23, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53780", - "created_at": "2026-03-24T16:03:03Z", - "deletions": 6, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53780/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53780", - "labels": [ - "size: S" - ], - "merged": false, - "number": 53780, - "review_comments_count": 2, - "state": "open", - "title": "fix(media): sanitize fetch errors before posting to channels", - "updated_at": "2026-03-24T20:19:51Z" - }, - { - "additions": 138, - "author": "ernestodeoliveira", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary When `models.providers` contains a validation error in any single provider (e.g., a custom `models` array with a missing `apiKey`), the entire `models.json` config was silently rejected. This caused all custom `baseUrl` override\u2026", - "changed_files": 2, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53779", - "created_at": "2026-03-24T16:01:26Z", - "deletions": 1, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66168", + "created_at": "2026-04-13T20:55:39Z", + "deletions": 44, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53779/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53779", + "files_url": "https://github.com/openclaw/openclaw/pull/66168/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66168", "labels": [ - "size: S" + "docs", + "app: web-ui", + "gateway", + "agents", + "size: XL" ], "merged": false, - "number": 53779, - "review_comments_count": 3, + "number": 66168, + "review_comments_count": 6, "state": "open", - "title": "fix(models): log warning and continue when one provider fails validation", - "updated_at": "2026-03-24T20:21:21Z" + "title": "feat(gateway): add MCP Apps protocol extension (tools, resources, UI meta)", + "updated_at": "2026-04-14T07:36:41Z" }, { - "additions": 376, - "author": "Lanfei", + "additions": 709, + "author": "jalehman", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - Add `tools.web.search.grok.baseUrl` and `tools.web.search.gemini.baseUrl` config fields, allowing users to point either provider at a compatible proxy or custom endpoint - Grok defaults to `https://api.x.ai/v1`; Gemini default\u2026", - "changed_files": 14, + "body_excerpt": "## Summary - Problem: some OpenAI reasoning-capable turns could end with replayable reasoning state but no user-visible answer, and the embedded runner treated them like terminal empty/incomplete turns. - Why it matters: GPT-style runs cou\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53778", - "created_at": "2026-03-24T15:59:53Z", - "deletions": 530, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66167", + "created_at": "2026-04-13T20:49:34Z", + "deletions": 11, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53778/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53778", + "files_url": "https://github.com/openclaw/openclaw/pull/66167/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66167", "labels": [ - "docs", + "agents", + "maintainer", "size: L" ], - "merged": false, - "number": 53778, - "review_comments_count": 0, - "state": "open", - "title": "feat(web-search): add baseUrl config support for Grok and Gemini providers", - "updated_at": "2026-03-24T20:15:29Z" + "merged": true, + "number": 66167, + "review_comments_count": 16, + "state": "closed", + "title": "fix: recover reasoning-only OpenAI turns", + "updated_at": "2026-04-14T00:04:01Z" }, { - "additions": 4, - "author": "w-sss", + "additions": 11, + "author": "yqli2420", "author_association": "CONTRIBUTOR", - "body_excerpt": "Fixes part of #46146 ## Problem Chat area goes blank during AI response generation due to length check discarding valid content. ## Solution Remove defensive length check that was dropping valid stream updates. ## Verification - \u2705 Only 1 f\u2026", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: The `image` and `pdf` tools failed with \"Unknown model\" errors for configured Ollama models because they performed registry lookups using raw, non-normalized model referenc\u2026", "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53777", - "created_at": "2026-03-24T15:59:00Z", - "deletions": 15, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66165", + "created_at": "2026-04-13T20:46:35Z", + "deletions": 13, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53777/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53777", + "files_url": "https://github.com/openclaw/openclaw/pull/66165/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66165", "labels": [ - "app: web-ui", - "size: XS", - "r: too-many-prs" + "agents", + "size: XS" ], "merged": false, - "number": 53777, + "number": 66165, "review_comments_count": 2, "state": "closed", - "title": "fix(ui): prevent blank chat during streaming replies", - "updated_at": "2026-03-24T16:02:08Z" + "title": "fix(tools): normalize model reference before registry lookup", + "updated_at": "2026-04-14T08:17:46Z" }, { - "additions": 308, - "author": "fuller-stack-dev", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary ### Problem The `/steer` slash command was defined in the control UI command list but had no executor \u2014 it silently returned \"Unknown command.\" Additionally, the control UI had no way to softly inject messages into an active run\u2026", - "changed_files": 5, + "additions": 285, + "author": "trentcharlton", + "author_association": "NONE", + "body_excerpt": "## Summary - add first-class `operator.mesh` scope support for gateway methods and plugin-registered mesh RPCs - allow Tailscale-authenticated backend `gateway-client` operator sessions that request only mesh scope to connect without devic\u2026", + "changed_files": 14, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53776", - "created_at": "2026-03-24T15:57:25Z", - "deletions": 3, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53776/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53776", + "comments_count": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66164", + "created_at": "2026-04-13T20:42:30Z", + "deletions": 33, + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/66164/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66164", "labels": [ - "app: web-ui", + "gateway", "size: M" ], "merged": false, - "number": 53776, - "review_comments_count": 11, - "state": "open", - "title": "feat(ui): wire /steer slash command to sessions.steer RPC", - "updated_at": "2026-03-24T20:29:52Z" + "number": 66164, + "review_comments_count": 0, + "state": "closed", + "title": "Gateway: add mesh backend auth seam", + "updated_at": "2026-04-13T20:44:42Z" }, { - "additions": 20, - "author": "huangxiao2008", + "additions": 304, + "author": "dongs0104", "author_association": "NONE", - "body_excerpt": "## Summary When running `openclaw agents delete --force` on an agent configured with a shared workspace (e.g., the default `~/.openclaw/workspace`), the entire shared workspace was moved to Trash, wiping SOUL.md, USER.md, MEMORY\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - Problem: LiteLLM provider's non-interactive onboard silently ignores `--custom-base-url` and always defaults to `http://localhost:4000` - Why it matters: Users running a LiteLLM proxy on a custom address cannot configure it vi\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53775", - "created_at": "2026-03-24T15:56:30Z", - "deletions": 1, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66160", + "created_at": "2026-04-13T20:27:35Z", + "deletions": 28, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53775/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53775", + "files_url": "https://github.com/openclaw/openclaw/pull/66160/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66160", "labels": [ - "commands", - "size: XS" + "size: M" ], "merged": false, - "number": 53775, - "review_comments_count": 2, + "number": 66160, + "review_comments_count": 10, "state": "open", - "title": "fix(agents): protect shared workspace from accidental deletion in agents delete --force", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(litellm): honor --custom-base-url in non-interactive onboard", + "updated_at": "2026-04-14T08:46:19Z" }, { - "additions": 4, - "author": "w-sss", - "author_association": "CONTRIBUTOR", - "body_excerpt": "Fixes part of #46146 ## Problem `stripMarkdown()` was too aggressive with underscore italic stripping, removing underscores inside words like `here_is_a_test`. ## Solution Use word boundary regex to only strip italic underscores at proper\u2026", - "changed_files": 1, + "additions": 329, + "author": "coder999999999", + "author_association": "NONE", + "body_excerpt": "## Summary - Problem: background exec completion events could leak into webchat and session-history user messages as leading `System (untrusted)` text. - Why it matters: Control UI history could show internal system-event noise as if the u\u2026", + "changed_files": 12, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53773", - "created_at": "2026-03-24T15:54:02Z", - "deletions": 1, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53773/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53773", + "comments_count": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66156", + "created_at": "2026-04-13T20:04:39Z", + "deletions": 23, + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/66156/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66156", "labels": [ - "size: XS", - "r: too-many-prs" + "app: web-ui", + "gateway", + "size: M" ], "merged": false, - "number": 53773, - "review_comments_count": 2, - "state": "closed", - "title": "fix(markdown): preserve intra-word underscores in stripMarkdown", - "updated_at": "2026-03-24T15:57:11Z" + "number": 66156, + "review_comments_count": 0, + "state": "open", + "title": "[codex] fix exec completion system-event history leak", + "updated_at": "2026-04-13T20:04:54Z" }, { - "additions": 42, - "author": "w-sss", + "additions": 157, + "author": "yqli2420", "author_association": "CONTRIBUTOR", - "body_excerpt": "Fixes part of #46146 ## Problem Underscore italic stripping regex was too aggressive, removing intra-word underscores. ## Solution - Allow punctuation, brackets, slashes, angle brackets as boundaries - Protect intra-word underscores like '\u2026", + "body_excerpt": "## Summary - Problem: The runtime rejected `plugins.entries.memory-core.config.dreaming` because the schema did not define it, causing validation errors when the Control UI wrote this config. - Why it matters: This blocked users from enabl\u2026", "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53770", - "created_at": "2026-03-24T15:41:53Z", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66152", + "created_at": "2026-04-13T19:52:23Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53770/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53770", + "files_url": "https://github.com/openclaw/openclaw/pull/66152/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66152", "labels": [ - "channel: line", - "size: XS", - "r: too-many-prs" + "size: S" ], "merged": false, - "number": 53770, - "review_comments_count": 3, - "state": "closed", - "title": "fix(markdown): improve underscore italic regex boundaries", - "updated_at": "2026-03-24T15:44:48Z" + "number": 66152, + "review_comments_count": 4, + "state": "open", + "title": "fix(memory-core): add dreaming config to plugin schema", + "updated_at": "2026-04-13T20:01:18Z" }, { - "additions": 1964, - "author": "vaclavbelak", + "additions": 52, + "author": "ismael-81", "author_association": "NONE", - "body_excerpt": "## Summary Add async human-in-the-loop approval for plugin-controlled tool calls via the `before_tool_call` hook. - Plugins return `requireApproval` from their `before_tool_call` handler to pause execution and prompt the user for an explic\u2026", - "changed_files": 37, + "body_excerpt": "## Summary - filter operational alert text out of `resolveMirroredTranscriptText` - add regression coverage so stale backup/conflict alerts do not pollute session transcripts - keep normal delivery-mirror text unchanged ## Problem There is\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53768", - "created_at": "2026-03-24T15:28:04Z", - "deletions": 65, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66150", + "created_at": "2026-04-13T19:52:08Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53768/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53768", + "files_url": "https://github.com/openclaw/openclaw/pull/66150/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66150", "labels": [ - "docs", - "app: web-ui", - "gateway", - "agents", - "size: XL" + "size: S" ], "merged": false, - "number": 53768, - "review_comments_count": 4, + "number": 66150, + "review_comments_count": 2, "state": "open", - "title": "feat(hooks): add async requireApproval to before_tool_call", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix: drop stale operational alerts from transcript mirror", + "updated_at": "2026-04-14T11:07:41Z" }, { - "additions": 59, - "author": "amitgaur", + "additions": 156, + "author": "yoanndefay", "author_association": "NONE", - "body_excerpt": "## Summary - **Problem:** When `streaming: \"partial\"` is enabled for Telegram and the model produces a turn with both a thinking block and a text block after a tool call, OpenClaw silently drops the text block (fixes #53384). - **Why it ma\u2026", - "changed_files": 3, + "body_excerpt": "## Summary - **Problem:** `vault.path` is resolved once at `register(api)` time, so a single plugin instance cannot serve agents living in different workspaces \u2014 they all share one vault. There is no way to derive the vault location from t\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53762", - "created_at": "2026-03-24T15:16:57Z", - "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53762/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53762", + "comments_count": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66149", + "created_at": "2026-04-13T19:51:54Z", + "deletions": 6, + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/66149/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66149", "labels": [ - "channel: telegram", - "size: S" + "docs", + "size: S", + "extensions: memory-wiki" ], "merged": false, - "number": 53762, + "number": 66149, "review_comments_count": 0, "state": "open", - "title": "fix(telegram): flush buffered final answer when reasoning delivery is skipped [AI-assisted]", - "updated_at": "2026-03-24T20:15:29Z" + "title": "feat(memory-wiki): add ctx-aware templating for vault.path", + "updated_at": "2026-04-13T19:52:10Z" }, { - "additions": 14, - "author": "mahopan", + "additions": 1, + "author": "SARAMALI15792", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Fixes #53756 The legacy nano-banana-pro skill migration moves the Gemini API key to `models.providers.google.apiKey` but does not populate the required `baseUrl` and `models` fields on the provider entry. When the google provide\u2026", - "changed_files": 2, + "body_excerpt": "## What does this PR do? Removes artificial 100ms throttling from Feishu streaming card updates to eliminate duplicate and truncated messages when handling long replies. Fixes #65993 ## Problem Statement Feishu streaming cards produce dupl\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53757", - "created_at": "2026-03-24T14:58:43Z", - "deletions": 0, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66148", + "created_at": "2026-04-13T19:50:45Z", + "deletions": 10, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53757/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53757", + "files_url": "https://github.com/openclaw/openclaw/pull/66148/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66148", "labels": [ - "commands", + "channel: feishu", "size: XS" ], - "merged": true, - "number": 53757, - "review_comments_count": 0, - "state": "closed", - "title": "fix(doctor): add missing baseUrl and models when migrating nano-banana apiKey to google provider", - "updated_at": "2026-03-24T16:48:18Z" + "merged": false, + "number": 66148, + "review_comments_count": 5, + "state": "open", + "title": "fix(feishu): remove streaming card update throttle to prevent duplicates", + "updated_at": "2026-04-14T02:33:20Z" }, { - "additions": 312, - "author": "luoxiao6645", + "additions": 494, + "author": "Hakibbumbus", "author_association": "NONE", - "body_excerpt": "## Summary **Problem**: Gateway overwrites fresh OAuth tokens with stale cached state on startup, burning single-use refresh tokens and blocking all Codex requests. **Why it matters**: 100% reproducible regression that completely breaks op\u2026", - "changed_files": 3, - "cluster_id": "cluster-53317-5", - "cluster_ids": [ - "cluster-53317-5" - ], - "cluster_role": "member", - "comments_count": 5, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53754", - "created_at": "2026-03-24T14:57:27Z", - "deletions": 2, + "body_excerpt": "## Summary - Adds `model.tool` config alongside `model.primary` so tool-call turns route to a different model than chat turns - Enables cost-efficient setups like local Ollama for chat + Claude API for tool execution - Wraps the session `S\u2026", + "changed_files": 11, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66147", + "created_at": "2026-04-13T19:50:05Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53754/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53754", + "files_url": "https://github.com/openclaw/openclaw/pull/66147/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66147", "labels": [ "agents", "size: M" ], "merged": false, - "number": 53754, - "review_comments_count": 11, + "number": 66147, + "review_comments_count": 5, "state": "open", - "title": "fix/53317-gateway-overwrites-oauth-token", - "updated_at": "2026-03-24T21:15:15Z" + "title": "feat: split model routing for tool-call turns", + "updated_at": "2026-04-13T19:56:52Z" }, { - "additions": 36, - "author": "lixuankai", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary My family have ``two Android Device`` connected to the ``same gateway``. Due to the same session ``agent:main:main``, we can see everyone 's chat history. Like this, 1. I can see ``Find X7 Ultra`` chat history on ``OnePlus 13T``\u2026", - "changed_files": 2, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "additions": 253, + "author": "joeyfrasier", + "author_association": "NONE", + "body_excerpt": "## Summary When `options.maxTokens` is not explicitly provided, the OpenAI-compatible transport functions (`buildOpenAIResponsesParams` and `buildOpenAICompletionsParams`) now fall back to `model.maxTokens` instead of omitting the `max_tok\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53752", - "created_at": "2026-03-24T14:55:52Z", - "deletions": 8, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66146", + "created_at": "2026-04-13T19:49:43Z", + "deletions": 77, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53752/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53752", + "files_url": "https://github.com/openclaw/openclaw/pull/66146/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66146", "labels": [ - "app: android", - "size: XS" + "agents", + "size: M" ], "merged": false, - "number": 53752, - "review_comments_count": 8, + "number": 66146, + "review_comments_count": 3, "state": "open", - "title": "feat(android): Multiple nodes session context isolated from each other", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(agents): forward model maxTokens as default stream option", + "updated_at": "2026-04-13T19:57:34Z" }, { - "additions": 283, - "author": "cgdusek", + "additions": 285, + "author": "dutifulbob", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Fixes #53734. `toNormalizedUsage()` was returning only the **last API call's** `input`/`cacheRead`/`cacheWrite` instead of accumulated totals from the `UsageAccumulator`. This caused cost tracking to severely underreport actual\u2026", + "body_excerpt": "## Summary - only mark a streamed attempt as already counted when the streamed `event.message` actually counts as an unknown-tool retry - avoid resetting the unknown-tool streak on non-final streamed messages whose tool name is still missi\u2026", "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 4, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53748", - "created_at": "2026-03-24T14:52:54Z", - "deletions": 84, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66145", + "created_at": "2026-04-13T19:49:29Z", + "deletions": 28, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53748/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53748", + "files_url": "https://github.com/openclaw/openclaw/pull/66145/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66145", "labels": [ "agents", "size: M" ], - "merged": false, - "number": 53748, + "merged": true, + "number": 66145, "review_comments_count": 4, "state": "closed", - "title": "fix(usage): return accumulated input/cache tokens from toNormalizedUsage", - "updated_at": "2026-03-24T19:43:03Z" + "title": "fix: count unknown-tool retries only when streamed", + "updated_at": "2026-04-13T20:54:01Z" }, { - "additions": 48, - "author": "w-sss", + "additions": 494, + "author": "Takhoffman", "author_association": "CONTRIBUTOR", - "body_excerpt": "Fixes #46146 ## Problem CDP and Chrome MCP errors were silently swallowed, making debugging difficult. ## Solution - Add logWarn for CDP Runtime.enable and Accessibility.enable failures - Add logWarn for Chrome MCP client close, cleanup, a\u2026", - "changed_files": 2, + "body_excerpt": "## Summary - move Active Memory recall from system prompt injection to the hidden user prompt prefix - label the visible Active Memory status line fields and include the resolved recall provider/model in gateway logs - document the new pro\u2026", + "changed_files": 8, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53743", - "created_at": "2026-03-24T14:38:23Z", - "deletions": 8, + "comments_count": 7, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66144", + "created_at": "2026-04-13T19:44:34Z", + "deletions": 89, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53743/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53743", + "files_url": "https://github.com/openclaw/openclaw/pull/66144/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66144", "labels": [ - "size: S" + "docs", + "maintainer", + "size: L" ], - "merged": false, - "number": 53743, - "review_comments_count": 1, - "state": "open", - "title": "fix(browser): add logging for silent CDP/MCP errors", - "updated_at": "2026-03-24T20:15:29Z" + "merged": true, + "number": 66144, + "review_comments_count": 13, + "state": "closed", + "title": "fix(active-memory): Move active memory recall into the hidden prompt prefix", + "updated_at": "2026-04-13T21:07:39Z" }, { - "additions": 58, - "author": "byungsker", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Add an optional `sessionChannelId` field to `autoJoin` entries. When set, the voice session is routed to that text channel \u2014 both the user's STT transcript and the AI reply appear as message bubbles, while audio playback continu\u2026", - "changed_files": 5, + "additions": 6, + "author": "IshanDaga", + "author_association": "NONE", + "body_excerpt": "## Summary - clarify that Tailscale/public mobile pairing must use `wss://` or Tailscale Serve/Funnel - document that `pairing required` means transport is working and approval is the next step - note that repeated fresh pending requests i\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53741", - "created_at": "2026-03-24T14:37:20Z", - "deletions": 7, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66143", + "created_at": "2026-04-13T19:44:20Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53741/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53741", + "files_url": "https://github.com/openclaw/openclaw/pull/66143/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66143", "labels": [ "docs", - "channel: discord", "size: XS" ], "merged": false, - "number": 53741, - "review_comments_count": 6, - "state": "open", - "title": "feat(discord/voice): add sessionChannelId to autoJoin for text-channel transcript routing", - "updated_at": "2026-03-24T23:32:21Z" + "number": 66143, + "review_comments_count": 1, + "state": "closed", + "title": "docs: clarify mobile pairing routing and approval flow", + "updated_at": "2026-04-13T19:46:04Z" }, { - "additions": 104, - "author": "nxmxbbd", - "author_association": "NONE", - "body_excerpt": "## Problem When `heartbeat.session` targets a shared session (e.g. `whatsapp:direct:+1234`), the heartbeat run and normal user turns share the same session. On each run, `drainFormattedSystemEvents()` calls `drainSystemEventEntries()` whic\u2026", - "changed_files": 8, + "additions": 406, + "author": "mbelinky", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - treat workspace root memory as a single slot instead of separate `MEMORY.md` and `memory.md` default QMD collections - make QMD prefer exact `MEMORY.md`, fall back to legacy lowercase `memory.md` only when the canonical file i\u2026", + "changed_files": 7, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 6, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53740", - "created_at": "2026-03-24T14:29:43Z", - "deletions": 5, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66141", + "created_at": "2026-04-13T19:42:01Z", + "deletions": 14, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53740/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53740", + "files_url": "https://github.com/openclaw/openclaw/pull/66141/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66141", "labels": [ - "docs", - "size: S" + "extensions: memory-core", + "maintainer", + "size: M" ], - "merged": false, - "number": 53740, - "review_comments_count": 10, - "state": "open", - "title": "fix: skip system event drain for periodic heartbeat runs", - "updated_at": "2026-03-24T20:15:29Z" + "merged": true, + "number": 66141, + "review_comments_count": 2, + "state": "closed", + "title": "fix(memory): unify default root memory handling", + "updated_at": "2026-04-13T22:00:00Z" }, { - "additions": 44, - "author": "Lanfei", + "additions": 253, + "author": "mbelinky", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - **Problem:** `image-tool` and `pdf-tool` resolved models by calling `resolveModelFromRegistry()`, a thin wrapper around `modelRegistry.find()` that accepts no `cfg` parameter. Any overrides configured under `models.providers[p\u2026", - "changed_files": 7, + "body_excerpt": "## Summary - stop the Dreaming UI from calling `wiki.importInsights` and `wiki.palace` when the optional `memory-wiki` plugin is not actually enabled - share a small Control UI helper for interpreting plugin activation from the config snap\u2026", + "changed_files": 6, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53738", - "created_at": "2026-03-24T14:21:16Z", - "deletions": 20, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66140", + "created_at": "2026-04-13T19:38:17Z", + "deletions": 36, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53738/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53738", + "files_url": "https://github.com/openclaw/openclaw/pull/66140/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66140", "labels": [ - "docs", - "agents", - "size: S" + "app: web-ui", + "maintainer", + "size: M" ], - "merged": false, - "number": 53738, - "review_comments_count": 6, - "state": "open", - "title": "fix(media-tools): apply models.providers baseUrl override in image and pdf tools", - "updated_at": "2026-03-24T20:15:29Z" + "merged": true, + "number": 66140, + "review_comments_count": 1, + "state": "closed", + "title": "[codex] fix(ui): guard dreaming wiki plugin calls", + "updated_at": "2026-04-13T20:06:56Z" }, { - "additions": 13, - "author": "JimmyWangJimmy", - "author_association": "NONE", - "body_excerpt": "## Summary Add Team Ops to the community plugins list. ## What It Does Team Ops turns raw working conversations into execution artifacts that teams can immediately use. It supports workflows such as: - chat thread to status update - meetin\u2026", - "changed_files": 1, + "additions": 170, + "author": "mbelinky", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: managed Dreaming could re-trigger on later heartbeat turns even after the cron event had already been consumed. - Why it matters: this creates repeated empty Dreaming-related sessions and extra sweep churn instead of\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53737", - "created_at": "2026-03-24T14:19:32Z", - "deletions": 0, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66139", + "created_at": "2026-04-13T19:37:50Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53737/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53737", + "files_url": "https://github.com/openclaw/openclaw/pull/66139/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66139", "labels": [ - "docs", - "size: XS" + "extensions: memory-core", + "maintainer", + "size: S" ], - "merged": false, - "number": 53737, + "merged": true, + "number": 66139, "review_comments_count": 0, - "state": "open", - "title": "docs: add Team Ops community plugin", - "updated_at": "2026-03-24T20:15:29Z" + "state": "closed", + "title": "fix(memory-core): run Dreaming once per cron schedule", + "updated_at": "2026-04-13T20:16:46Z" }, { - "additions": 2104, - "author": "TechFath3r", + "additions": 223, + "author": "secondfry", "author_association": "NONE", - "body_excerpt": "## What Adds a `tools.exec.denyPatterns` config field \u2014 an array of regex patterns that block matching exec commands before they reach any execution path. Designed so operators can prevent agents from shelling out to long-running CLI tools\u2026", - "changed_files": 10, + "body_excerpt": "## Summary Fixes the `no schema with key or ref \"https://json-schema.org/draft/2020-12/schema\"` family of errors reported across browser tools and external MCP servers. There are **four** Ajv compile sites that need draft/2020-12 support;\u2026", + "changed_files": 7, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53736", - "created_at": "2026-03-24T14:19:23Z", - "deletions": 27362, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66137", + "created_at": "2026-04-13T19:30:49Z", + "deletions": 11, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53736/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53736", + "files_url": "https://github.com/openclaw/openclaw/pull/66137/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66137", "labels": [ - "docs", - "agents", - "size: S" + "app: web-ui", + "gateway", + "extensions: llm-task", + "scripts", + "size: M" ], "merged": false, - "number": 53736, - "review_comments_count": 8, + "number": 66137, + "review_comments_count": 11, "state": "open", - "title": "feat: add tools.exec.denyPatterns config for blocking commands by regex", - "updated_at": "2026-03-24T22:18:38Z" + "title": "fix(ajv): validate MCP tool schemas against draft/2020-12 [AI-assisted]", + "updated_at": "2026-04-13T21:05:51Z" }, { - "additions": 11, - "author": "xi7ang", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Fix #53592: `/btw` fails with aws-sdk auth mode (Bedrock instance role) ### Problem `/btw` side questions fail when using Amazon Bedrock with `auth: aws-sdk` (EC2 instance role credentials), throwing: No API key resolved for provider \"a\u2026", + "additions": 3, + "author": "yoanndefay", + "author_association": "NONE", + "body_excerpt": "## Summary - **Problem:** `wiki_apply`, `wiki_status`, and `wiki_lint` are registered with the static `api.registerTool(createX(config, api.config))` form, while their read-side siblings `wiki_search` and `wiki_get` use the factory form `a\u2026", "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53730", - "created_at": "2026-03-24T14:07:59Z", - "deletions": 2, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66134", + "created_at": "2026-04-13T19:26:02Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53730/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53730", + "files_url": "https://github.com/openclaw/openclaw/pull/66134/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66134", "labels": [ - "agents", - "size: XS" + "size: XS", + "extensions: memory-wiki" ], "merged": false, - "number": 53730, - "review_comments_count": 2, + "number": 66134, + "review_comments_count": 0, "state": "open", - "title": "Fix #53592: allow aws-sdk auth mode in /btw side question", - "updated_at": "2026-03-24T20:15:29Z" + "title": "refactor(memory-wiki): use factory registration for wiki_apply/status/lint", + "updated_at": "2026-04-14T03:44:39Z" }, { - "additions": 215, - "author": "MatrixAdventurer", - "author_association": "NONE", - "body_excerpt": "## Summary Add a startup memory source report to the agent system prompt so each session can see which memory layers are currently available. ## What this changes This adds a lightweight memory source report that is injected into `workspac\u2026", - "changed_files": 5, + "additions": 10, + "author": "yqli2420", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: Cron-spawned tasks trigger `inconsistent_timestamps` warnings because `startedAt` is captured before `createdAt` due to a race condition in the scheduler. - Why it matters:\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53728", - "created_at": "2026-03-24T14:06:57Z", - "deletions": 9, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66133", + "created_at": "2026-04-13T19:18:12Z", + "deletions": 267, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53728/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53728", + "files_url": "https://github.com/openclaw/openclaw/pull/66133/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66133", "labels": [ - "agents", - "channel: feishu", "size: M" ], "merged": false, - "number": 53728, - "review_comments_count": 4, + "number": 66133, + "review_comments_count": 1, "state": "open", - "title": "feat(memory): report startup memory sources", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(tasks): prevent inconsistent_timestamps warnings for cron-spawned tasks", + "updated_at": "2026-04-13T19:21:58Z" }, { - "additions": 69, - "author": "HPluseven", + "additions": 110, + "author": "IshanDaga", "author_association": "NONE", - "body_excerpt": "## Summary - Problem: pre-compaction memory flush runs could overwrite an existing `memory/YYYY-MM-DD.md` file instead of appending to it. - Why it matters: this breaks the append-only durability guard and can destroy earlier daily-memory\u2026", - "changed_files": 2, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53725", - "created_at": "2026-03-24T14:00:12Z", - "deletions": 0, + "body_excerpt": "## Summary This PR started as the Android transport fix for gateway setup codes and manual gateway URLs that carried `wss://` / `ws://`, but were still being normalized into HTTP-facing URLs in actual transport flows. Live testing over Tai\u2026", + "changed_files": 8, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66123", + "created_at": "2026-04-13T19:01:38Z", + "deletions": 17, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53725/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53725", + "files_url": "https://github.com/openclaw/openclaw/pull/66123/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66123", "labels": [ - "agents", + "docs", + "app: android", "size: S" ], "merged": false, - "number": 53725, - "review_comments_count": 0, + "number": 66123, + "review_comments_count": 5, "state": "open", - "title": "Agents: keep memory flush daily files append-only", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(android): preserve websocket transport and reduce pairing churn", + "updated_at": "2026-04-13T19:55:00Z" }, { - "additions": 507, - "author": "nabbilkhan", + "additions": 1, + "author": "mbelinky", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - Add optional `enabled?: boolean` field to `agents.list[]` entries. When `false`, the agent is fully suspended: no routing, cron, heartbeat, or channel polling. - Add `openclaw agents disable ` and `openclaw agents enable <\u2026", - "changed_files": 19, + "body_excerpt": "## Summary - make the #66019 regression test force maintenance to repair `nextRunAtMs` - keep the PR scoped to the existing test only ## Why The previous mock sequence let `applyJobResult` consume the second `computeNextRunAtMs` result dur\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53720", - "created_at": "2026-03-24T13:51:20Z", - "deletions": 28, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66122", + "created_at": "2026-04-13T19:00:50Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53720/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53720", + "files_url": "https://github.com/openclaw/openclaw/pull/66122/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66122", "labels": [ - "docs", - "cli", - "commands", - "agents", - "size: L" + "maintainer", + "size: XS" ], - "merged": false, - "number": 53720, - "review_comments_count": 5, - "state": "open", - "title": "feat(agents): add per-agent enabled/disabled flag for non-destructive suspension", - "updated_at": "2026-03-24T20:15:29Z" + "merged": true, + "number": 66122, + "review_comments_count": 0, + "state": "closed", + "title": "test(cron): fix #66019 maintenance regression coverage", + "updated_at": "2026-04-13T19:09:27Z" }, { - "additions": 67, - "author": "BlocksecPHD", + "additions": 11, + "author": "coletebou", "author_association": "NONE", - "body_excerpt": "## Summary Fix path resolution so environment placeholders are expanded before filesystem resolution. This addresses issue #53628 where `${XDG_CONFIG_HOME}` in configured path strings was treated as a literal directory name. ## Changes - A\u2026", - "changed_files": 2, + "body_excerpt": "## Summary BlueBubbles fires `new-message` first (text only), then `updated-message` ~2-3s later once attachment data is ready. The webhook filter unconditionally discards `updated-message` events that are not reactions, silently dropping\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53718", - "created_at": "2026-03-24T13:49:55Z", - "deletions": 10, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66120", + "created_at": "2026-04-13T18:55:52Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53718/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53718", + "files_url": "https://github.com/openclaw/openclaw/pull/66120/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66120", "labels": [ - "size: S" + "channel: bluebubbles", + "size: XS" ], "merged": false, - "number": 53718, - "review_comments_count": 3, + "number": 66120, + "review_comments_count": 2, "state": "open", - "title": "fix(paths): expand env placeholders in resolveUserPath", - "updated_at": "2026-03-24T23:02:16Z" + "title": "fix(bluebubbles): accept updated-message events carrying attachments", + "updated_at": "2026-04-13T18:59:58Z" }, { - "additions": 72, - "author": "stayrascal", - "author_association": "NONE", - "body_excerpt": "## Summary Regarding issue https://github.com/openclaw/openclaw/issues/43018 Describe the problem and fix in 2\u20135 bullets: - Problem: Custom providers configured with api: \"openai-responses\" cannot use the Responses API because transport wr\u2026", - "changed_files": 4, - "cluster_id": "cluster-53248-81", + "additions": 47, + "author": "yqli2420", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: The `--media` flag in the CLI `message send` command was ignored, causing media attachments to fail (regression from 3.8 to 4.9). - Why it matters: Users cannot send images\u2026", + "changed_files": 1, + "cluster_id": "cluster-62826-13", "cluster_ids": [ - "cluster-53248-81" + "cluster-62826-13" ], - "cluster_role": "member", + "cluster_role": "canonical", "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53717", - "created_at": "2026-03-24T13:43:31Z", - "deletions": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66117", + "created_at": "2026-04-13T18:44:19Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53717/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53717", + "files_url": "https://github.com/openclaw/openclaw/pull/66117/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66117", "labels": [ - "agents", - "size: S" + "cli", + "size: XS" ], "merged": false, - "number": 53717, - "review_comments_count": 2, + "number": 66117, + "review_comments_count": 5, "state": "open", - "title": "feat: support OpenAI Responses API for non-openai providers", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(cli): restore media attachment support for WhatsApp messages", + "updated_at": "2026-04-13T18:49:07Z" }, { - "additions": 378, - "author": "rin259", - "author_association": "NONE", - "body_excerpt": "## Summary Implements **#53684 - Gateway failure recovery and notification mechanism**. The PR adds three complementary layers to ensure the OpenClaw Gateway can recover from crashes and notify operators: ### 1. Startup error diagnostics (\u2026", - "changed_files": 6, + "additions": 97, + "author": "mbelinky", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - preserve the active error-backoff floor when cron maintenance repair recomputes a missing next run - share the cron backoff schedule between runtime scheduling and maintenance recompute - add a regression proving maintenance r\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53716", - "created_at": "2026-03-24T13:40:54Z", - "deletions": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66113", + "created_at": "2026-04-13T18:31:48Z", + "deletions": 22, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53716/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53716", + "files_url": "https://github.com/openclaw/openclaw/pull/66113/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66113", "labels": [ - "cli", - "scripts", - "size: M" + "maintainer", + "size: S" ], - "merged": false, - "number": 53716, - "review_comments_count": 10, - "state": "open", - "title": "feat(gateway): add watchdog + startup error diagnostics (closes #53684)", - "updated_at": "2026-03-24T20:15:29Z" + "merged": true, + "number": 66113, + "review_comments_count": 3, + "state": "closed", + "title": "fix(cron): preserve unresolved next-run backoff", + "updated_at": "2026-04-13T18:51:59Z" }, { - "additions": 84, - "author": "lndyzwdxhs", + "additions": 45, + "author": "nnish16", "author_association": "NONE", - "body_excerpt": "Fixes #53697. The `createMessageToolCardSchema()` helper returned a bare `Type.Object()` which TypeBox marks as required when merged into the parent message tool schema. This blocked media-only sends on Feishu (and MSTeams) with a \"must ha\u2026", - "changed_files": 4, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "canonical", - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53715", - "created_at": "2026-03-24T13:40:13Z", - "deletions": 7, + "body_excerpt": "## Summary - restore builtin `ollama` memory embedding adapter registration in memory-core - make explicit `memorySearch.provider: ollama` resolve again - add a regression test covering builtin ollama registration ## Root cause `extensions\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66112", + "created_at": "2026-04-13T18:30:10Z", + "deletions": 6, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53715/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53715", + "files_url": "https://github.com/openclaw/openclaw/pull/66112/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66112", "labels": [ - "channel: feishu", + "extensions: memory-core", "size: S" ], - "merged": true, - "number": 53715, - "review_comments_count": 0, - "state": "open", - "title": "fix: mark card field as optional in message tool schema", - "updated_at": "2026-03-24T20:15:29Z" + "merged": false, + "number": 66112, + "review_comments_count": 4, + "state": "closed", + "title": "Fix ollama memory embedding provider registration", + "updated_at": "2026-04-14T08:05:54Z" }, { - "additions": 41, - "author": "BryanTegomoh", + "additions": 119, + "author": "MonkeyLeeT", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary After upgrading to v2026.3.23-2, `/reset` creates sessions with `thinkingLevel: \"off\"` for models not present in the catalog (e.g. `openai-codex/gpt-5.3-codex`). This silently breaks tool calling: the model generates text-only r\u2026", - "changed_files": 6, + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: bare `/trace` and trace-only turns were parsed but never entered shared directive handling in the normal chat reply path. - Why it matters: channel users, including Feishu,\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53713", - "created_at": "2026-03-24T13:36:46Z", - "deletions": 15, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66111", + "created_at": "2026-04-13T18:29:46Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53713/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53713", + "files_url": "https://github.com/openclaw/openclaw/pull/66111/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66111", "labels": [ - "app: web-ui", - "gateway", - "agents", "size: S" ], "merged": false, - "number": 53713, + "number": 66111, "review_comments_count": 0, "state": "open", - "title": "fix(gateway): resolve thinkingLevel from model config after /reset", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(reply): recognize /trace directives", + "updated_at": "2026-04-14T02:40:51Z" }, { - "additions": 63, - "author": "chensylz", + "additions": 146, + "author": "Rohan5commit", "author_association": "NONE", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: - Why it matters: - What changed: - What did NOT change (scope boundary): ## Change Type (select all) - [x] Bug fix - [ ] Feature - [ ] Refactor required for the fix - [ ]\u2026", - "changed_files": 2, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "body_excerpt": "## Summary - Problem: OpenClaw had a root `--log-level` override, but no matching root `--log-file` override, and the logger/status helpers did not honor `OPENCLAW_LOG_FILE` - Why it matters: multi-instance or service deployments need per-\u2026", + "changed_files": 17, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53711", - "created_at": "2026-03-24T13:34:38Z", - "deletions": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66110", + "created_at": "2026-04-13T18:29:18Z", + "deletions": 11, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53711/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53711", + "files_url": "https://github.com/openclaw/openclaw/pull/66110/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66110", "labels": [ - "channel: discord", + "docs", + "gateway", + "cli", "size: S" ], "merged": false, - "number": 53711, + "number": 66110, "review_comments_count": 4, "state": "open", - "title": "fix(discord): route outbound rest through proxy fetch", - "updated_at": "2026-03-24T20:15:29Z" - }, - { - "additions": 136, - "author": "keerlums", - "author_association": "NONE", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: OpenClaw currently uses a static model selection strategy, unable to dynamically route to different models based on message complexity. Simple queries may unnecessarily con\u2026", - "changed_files": 3, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53710", - "created_at": "2026-03-24T13:31:35Z", - "deletions": 13, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53710/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53710", - "labels": [ - "size: S" - ], - "merged": false, - "number": 53710, - "review_comments_count": 11, - "state": "open", - "title": "feat: add auto model routing based on message complexity", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(logging): support root log file overrides", + "updated_at": "2026-04-13T18:33:54Z" }, { - "additions": 1128, - "author": "Alex-wuhu", + "additions": 18, + "author": "coletebou", "author_association": "NONE", - "body_excerpt": "## Summary Add Novita AI as a bundled provider plugin for OpenClaw. [Novita AI](https://novita.ai) is an AI model aggregator offering 200+ models (DeepSeek, Qwen, MiniMax, Kimi, GLM, Llama, and more) through a single API key and OpenAI-com\u2026", - "changed_files": 19, + "body_excerpt": "## Summary BlueBubbles attachment downloads fail on Node 24+ because the SSRF guard's pinned-DNS dispatcher is an undici 8.x `Agent`, but Node 24's built-in `globalThis.fetch` uses undici 7.x internally. Passing the 8.x dispatcher causes `\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53707", - "created_at": "2026-03-24T13:24:58Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66108", + "created_at": "2026-04-13T18:25:44Z", + "deletions": 7, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53707/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53707", + "files_url": "https://github.com/openclaw/openclaw/pull/66108/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66108", "labels": [ - "docs", - "agents", - "size: L" + "channel: bluebubbles", + "size: XS" ], "merged": false, - "number": 53707, - "review_comments_count": 3, + "number": 66108, + "review_comments_count": 1, "state": "open", - "title": "feat(novita): add Novita AI as bundled provider with dynamic 200+ model catalog", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(bluebubbles): route fetchImpl through bundled undici fetch on Node 24+", + "updated_at": "2026-04-13T18:30:29Z" }, { - "additions": 9, - "author": "VACInc", + "additions": 397, + "author": "obviyus", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary This is the intentionally small prompt-only version of #53083. - `/new` and `/reset` now tell the agent to use bootstrap/reference files already in context before rereading files. - Post-compaction guidance now tells the agent t\u2026", - "changed_files": 4, + "body_excerpt": "## Summary - persist learned Telegram forum topic names to a session-sidecar JSON cache - reload the cache on demand after restart while keeping the bounded in-memory path - add cache reload tests and note the user-visible fix in the chang\u2026", + "changed_files": 7, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53706", - "created_at": "2026-03-24T13:22:38Z", - "deletions": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66107", + "created_at": "2026-04-13T18:20:42Z", + "deletions": 66, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53706/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53706", + "files_url": "https://github.com/openclaw/openclaw/pull/66107/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66107", "labels": [ - "size: XS" + "channel: telegram", + "maintainer", + "size: M" ], - "merged": false, - "number": 53706, - "review_comments_count": 0, - "state": "open", - "title": "Prompt: reuse injected startup context by default", - "updated_at": "2026-03-24T20:15:29Z" + "merged": true, + "number": 66107, + "review_comments_count": 4, + "state": "closed", + "title": "fix(telegram): persist topic-name cache", + "updated_at": "2026-04-14T03:09:08Z" }, { - "additions": 22, - "author": "WMSmile", + "additions": 106, + "author": "damselem", "author_association": "NONE", - "body_excerpt": "--- ### **PR Title:** `fix(ui): correct \"Set as default\" logic to align with agents configuration schema` ### **PR Description:** #### **The Problem:** Clicking **\"Set as default\"** in the UI triggered a `GatewayRequestError: invalid confi\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - **Bug**: `tools.media.audio.request.allowPrivateNetwork` is silently rejected at gateway startup with `Unrecognized key: allowPrivateNetwork`, making it impossible to use self-hosted OpenAI-compatible STT backends on private/i\u2026", + "changed_files": 13, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53704", - "created_at": "2026-03-24T13:16:39Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66106", + "created_at": "2026-04-13T18:19:41Z", + "deletions": 21, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53704/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53704", + "files_url": "https://github.com/openclaw/openclaw/pull/66106/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66106", "labels": [ - "app: web-ui", - "size: XS" + "agents", + "size: S", + "extensions: moonshot" ], "merged": false, - "number": 53704, - "review_comments_count": 10, + "number": 66106, + "review_comments_count": 4, "state": "open", - "title": "fix: remove unrecognized key defaultId in agents config", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(media-understanding): support allowPrivateNetwork in tools.media.audio.request", + "updated_at": "2026-04-13T19:36:15Z" }, { - "additions": 112, - "author": "Nanako0129", + "additions": 19, + "author": "coletebou", "author_association": "NONE", - "body_excerpt": "## Summary This patch addresses two Codex/OpenClaw compatibility issues observed in direct agent runs: 1. Route `openai-codex-responses` through the same OpenAI websocket transport path used by `openai-responses` 2. Suppress misleading bui\u2026", - "changed_files": 4, + "body_excerpt": "## Summary BlueBubbles fires `new-message` first (text only), then `updated-message` ~2-3s later once attachment data is ready. The webhook filter unconditionally discards `updated-message` events that are not reactions, silently dropping\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53702", - "created_at": "2026-03-24T13:13:57Z", - "deletions": 11, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66105", + "created_at": "2026-04-13T18:17:16Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53702/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53702", + "files_url": "https://github.com/openclaw/openclaw/pull/66105/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66105", "labels": [ - "agents", - "size: S" + "channel: bluebubbles", + "size: XS" ], "merged": false, - "number": 53702, - "review_comments_count": 0, - "state": "open", - "title": "fix: route codex responses over websocket and suppress gated core tool warnings", - "updated_at": "2026-03-24T20:15:29Z" - }, - { - "additions": 375, - "author": "huntharo", - "author_association": "MEMBER", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: Telegram forum supergroup `#General` updates can arrive without `is_forum` and without `message_thread_id`, so `/cas_resume` and follow-up traffic were normalized to the ch\u2026", - "changed_files": 12, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53699", - "created_at": "2026-03-24T13:07:33Z", - "deletions": 32, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53699/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53699", - "labels": [ - "channel: telegram", - "maintainer", - "size: M" - ], - "merged": true, - "number": 53699, - "review_comments_count": 5, + "number": 66105, + "review_comments_count": 4, "state": "closed", - "title": "Telegram: recover General topic bindings", - "updated_at": "2026-03-24T16:19:49Z" + "title": "fix(bluebubbles): accept updated-message events carrying attachments", + "updated_at": "2026-04-13T18:54:06Z" }, { - "additions": 4, - "author": "w-sss", + "additions": 227, + "author": "obviyus", "author_association": "CONTRIBUTOR", - "body_excerpt": "Fixes part of #46146 ## Problem Chat area goes blank during AI response generation, resolves after refresh. ## Root cause extractText() may return shorter strings due to thinking tag stripping and metadata removal. The length check (next.l\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - persist learned Telegram forum topic names to a session-sidecar JSON cache - reload the cache on demand after process restart and keep the existing bounded in-memory path - cover disk reload behavior in the cache unit test and\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53695", - "created_at": "2026-03-24T13:03:16Z", - "deletions": 15, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66104", + "created_at": "2026-04-13T18:17:03Z", + "deletions": 35, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53695/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53695", + "files_url": "https://github.com/openclaw/openclaw/pull/66104/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66104", "labels": [ - "app: web-ui", - "size: XS", - "r: too-many-prs" + "channel: telegram", + "maintainer", + "size: M" ], "merged": false, - "number": 53695, + "number": 66104, "review_comments_count": 3, "state": "closed", - "title": "fix(ui): prevent blank chat during streaming replies", - "updated_at": "2026-03-24T13:07:10Z" + "title": "fix(telegram): persist topic-name cache", + "updated_at": "2026-04-14T03:03:03Z" }, { - "additions": 42, - "author": "w-sss", - "author_association": "CONTRIBUTOR", - "body_excerpt": "Fixes part of #46146 ## Changes - Allow punctuation, brackets, slashes, angle brackets as boundaries - Protect intra-word underscores like 'here_is_a_test' ## Verification - \u2705 Only 1 file modified (markdown-to-line.ts) - \u2705 Only 1 commit -\u2026", + "additions": 8, + "author": "coletebou", + "author_association": "NONE", + "body_excerpt": "## Summary BlueBubbles attachment downloads fail on Node 24+ because the SSRF guard's pinned-DNS dispatcher is an undici 8.x `Agent`, but Node 24's built-in `globalThis.fetch` uses undici 7.x internally. Passing the 8.x dispatcher causes `\u2026", "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53694", - "created_at": "2026-03-24T13:02:40Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66103", + "created_at": "2026-04-13T18:16:26Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53694/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53694", + "files_url": "https://github.com/openclaw/openclaw/pull/66103/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66103", "labels": [ - "channel: line", - "size: XS", - "r: too-many-prs" + "channel: bluebubbles", + "size: XS" ], "merged": false, - "number": 53694, - "review_comments_count": 2, + "number": 66103, + "review_comments_count": 3, "state": "closed", - "title": "fix(markdown): improve underscore italic regex boundaries", - "updated_at": "2026-03-24T13:05:59Z" + "title": "fix(bluebubbles): route fetchImpl through bundled undici fetch on Node 24+", + "updated_at": "2026-04-13T18:24:40Z" }, { - "additions": 5, - "author": "w-sss", + "additions": 1, + "author": "WuKongAI-CMU", "author_association": "CONTRIBUTOR", - "body_excerpt": "Fixes part of #46146 ## Changes - Add common.theme translations - Localize WebSocket URL label - Add scheduled task list translations ## Verification - \u2705 Only 1 file modified (zh-CN.ts) - \u2705 Only 1 commit - \u2705 Branch created from clean main", + "body_excerpt": "## Summary \\`openclaw@2026.4.12\\` ships without \\`dist/subagent-registry.runtime.js\\`, but the built \\`src/agents/subagent-registry.ts\\` still does \\`import(\"./subagent-registry.runtime.js\")\\` at runtime. Subagent cleanup then fails with \\\u2026", "changed_files": 1, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, + "cluster_id": "cluster-66096-7", + "cluster_ids": [ + "cluster-66096-7" + ], + "cluster_role": "member", "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53693", - "created_at": "2026-03-24T13:02:01Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66102", + "created_at": "2026-04-13T18:14:38Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53693/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53693", + "files_url": "https://github.com/openclaw/openclaw/pull/66102/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66102", "labels": [ - "app: web-ui", - "size: XS", - "r: too-many-prs" + "size: XS" ], "merged": false, - "number": 53693, + "number": 66102, "review_comments_count": 0, - "state": "closed", - "title": "fix(i18n): add missing zh-CN translations", - "updated_at": "2026-03-24T13:03:13Z" + "state": "open", + "title": "fix(build): pin subagent-registry.runtime as stable entry (#66096)", + "updated_at": "2026-04-14T00:57:40Z" }, { - "additions": 132, - "author": "w-sss", - "author_association": "CONTRIBUTOR", - "body_excerpt": "Fixes part of #46146, Fixes #46814 ## Problem ACP child run results were not delivered when TTS synthesis failed or was not configured. ## Solution - Check routedCounts.final to detect prior delivery - Skip fallback for ttsMode='all' to av\u2026", - "changed_files": 3, + "additions": 196, + "author": "bobgee00001-beep", + "author_association": "NONE", + "body_excerpt": "## Summary - allow `main` to run a narrow set of host-level OpenClaw self-inspection commands when unsandboxed with `tools.exec.security=full` - keep mutating and mixed shell commands blocked - add focused coverage for the new boundary beh\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53692", - "created_at": "2026-03-24T13:00:47Z", - "deletions": 9, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66101", + "created_at": "2026-04-13T18:14:21Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53692/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53692", + "files_url": "https://github.com/openclaw/openclaw/pull/66101/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66101", "labels": [ + "agents", "size: S" ], - "merged": true, - "number": 53692, - "review_comments_count": 3, - "state": "closed", - "title": "fix(acp): deliver final result text as fallback when no blocks routed", - "updated_at": "2026-03-24T17:30:08Z" + "merged": false, + "number": 66101, + "review_comments_count": 5, + "state": "open", + "title": "Allow main host-level OpenClaw self-inspection", + "updated_at": "2026-04-13T18:21:56Z" }, { - "additions": 71, - "author": "w-sss", - "author_association": "CONTRIBUTOR", - "body_excerpt": "Fixes part of #46146 ## Problem CDP and Chrome MCP errors were silently swallowed, making debugging difficult. ## Solution - Add logWarn for CDP Runtime.enable and Accessibility.enable failures - Add logWarn for Chrome MCP client close and\u2026", - "changed_files": 2, + "additions": 169, + "author": "Rohan5commit", + "author_association": "NONE", + "body_excerpt": "## Summary - Problem: the Web UI only looked at persisted session overrides, so a new session could already be running with effective thinking/reasoning defaults while the chat header still rendered the fallback model label or hid reasonin\u2026", + "changed_files": 12, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53688", - "created_at": "2026-03-24T12:59:41Z", - "deletions": 4, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66098", + "created_at": "2026-04-13T18:08:49Z", + "deletions": 19, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53688/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53688", + "files_url": "https://github.com/openclaw/openclaw/pull/66098/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66098", "labels": [ + "app: web-ui", + "gateway", "size: S" ], "merged": false, - "number": 53688, - "review_comments_count": 5, - "state": "closed", - "title": "fix(browser): add logging for silent CDP/MCP errors", - "updated_at": "2026-03-24T13:50:11Z" + "number": 66098, + "review_comments_count": 4, + "state": "open", + "title": "fix(web-ui): respect effective chat defaults", + "updated_at": "2026-04-13T18:17:56Z" }, { - "additions": 121, - "author": "neeravmakwana", + "additions": 2081, + "author": "Takhoffman", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - Remove the lightweight QMD status-only shim that always returned `files=0` / `chunks=0`. - Reuse `QmdMemoryManager` in `mode: \\\"status\\\"` so `openclaw memory status` reads real index counts while still avoiding boot/update sid\u2026", - "changed_files": 2, + "body_excerpt": "## Summary - extend `/trace` so it supports `on`, `off`, and `raw`, with owner or delegated-admin gating and a sensitive-information warning on enable - make `/trace raw` append a plugin-agnostic diagnostics payload that explains what the\u2026", + "changed_files": 32, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 6, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53683", - "created_at": "2026-03-24T12:55:55Z", - "deletions": 84, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66089", + "created_at": "2026-04-13T17:38:45Z", + "deletions": 101, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53683/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53683", + "files_url": "https://github.com/openclaw/openclaw/pull/66089/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66089", "labels": [ - "size: M" + "agents", + "maintainer", + "size: XL" ], "merged": true, - "number": 53683, - "review_comments_count": 1, + "number": 66089, + "review_comments_count": 14, "state": "closed", - "title": "fix(memory): report qmd status counts from real qmd manager", - "updated_at": "2026-03-24T16:16:55Z" + "title": "fix:(trace command): Improve trace raw diagnostics and trace command UX", + "updated_at": "2026-04-13T19:27:06Z" }, { - "additions": 2, - "author": "jarvisgebbie79-prog", + "additions": 5566, + "author": "manhhai999", "author_association": "NONE", - "body_excerpt": "## Summary\\n- preserve approved heredoc commands as-authored in the gateway exec approval flow\\n- avoid routing approved heredoc commands through the rebuilt allowlist wrapper command\\n- fixes approval-gated multiline commands like `osascr\u2026", - "changed_files": 1, + "body_excerpt": "## Summary This branch consolidates the changes used to harden the `v2026.4.10-safe` release line for the `2026-04-12` safe integration snapshot. It focuses on reconnect and approval-flow stability, safer chat output handling, Plans suppor\u2026", + "changed_files": 111, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53682", - "created_at": "2026-03-24T12:53:35Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66087", + "created_at": "2026-04-13T17:31:44Z", + "deletions": 225, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53682/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53682", + "files_url": "https://github.com/openclaw/openclaw/pull/66087/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66087", "labels": [ + "docs", + "channel: telegram", + "app: macos", + "app: web-ui", + "gateway", + "cli", + "commands", "agents", - "size: XS" + "size: XL" ], "merged": false, - "number": 53682, - "review_comments_count": 1, + "number": 66087, + "review_comments_count": 2, "state": "open", - "title": "fix: preserve approved heredoc commands on gateway exec", - "updated_at": "2026-03-24T20:15:29Z" + "title": "Integrate/release v2026.4.10 safe 20260412", + "updated_at": "2026-04-13T17:41:54Z" }, { - "additions": 1380, - "author": "xieyongliang", + "additions": 168, + "author": "coder999999999", "author_association": "NONE", - "body_excerpt": "## Summary - Problem: OpenClaw has no video generation capability, and image generation lacks advanced parameters (seed, watermark, guidance scale, etc.) - Why it matters: Video generation is a growing AI capability; the Seedance/Seedream\u2026", - "changed_files": 37, + "body_excerpt": "## Summary - Problem: TTS-generated voice replies under the managed OpenClaw tmp root can be dropped by normal reply-media validation before channel delivery. - Why it matters: synthesis succeeds, but the actual voice note never reaches th\u2026", + "changed_files": 3, + "cluster_id": "cluster-63896-6", + "cluster_ids": [ + "cluster-63896-6" + ], + "cluster_role": "canonical", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66085", + "created_at": "2026-04-13T17:29:12Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66085/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66085", + "labels": [ + "size: S" + ], + "merged": false, + "number": 66085, + "review_comments_count": 5, + "state": "open", + "title": "fix(reply): allow managed TTS temp media in normal replies", + "updated_at": "2026-04-13T23:05:01Z" + }, + { + "additions": 19346, + "author": "manhhai999", + "author_association": "NONE", + "body_excerpt": "## Summary This branch consolidates the changes used to finalize the `v2026.4.11` live release, with a focus on gateway/control UI stability, coding orchestration completion, expanded Plans support, and final UI localization work. It is in\u2026", + "changed_files": 243, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53681", - "created_at": "2026-03-24T12:53:11Z", - "deletions": 241, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66084", + "created_at": "2026-04-13T17:26:26Z", + "deletions": 1283, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53681/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53681", + "files_url": "https://github.com/openclaw/openclaw/pull/66084/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66084", "labels": [ "docs", + "channel: telegram", + "app: macos", + "app: web-ui", "gateway", - "extensions: lobster", + "cli", "scripts", "commands", "agents", "size: XL" ], "merged": false, - "number": 53681, - "review_comments_count": 8, + "number": 66084, + "review_comments_count": 19, "state": "open", - "title": "feat: add video generation core infrastructure and extend image generation parameters", - "updated_at": "2026-03-24T23:07:10Z" + "title": "Integrate/release v2026.4.11 live 20260413", + "updated_at": "2026-04-13T20:12:07Z" }, { - "additions": 44, - "author": "hun9008", - "author_association": "NONE", - "body_excerpt": "## Summary - avoid reading the full markdown file into memory when `memory_get` requests only a line window - stream the file line-by-line for `from` / `lines` reads and stop once the requested range is collected - add a focused test that\u2026", - "changed_files": 2, + "additions": 285, + "author": "mbelinky", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - fix the cron scheduler path where `computeJobNextRunAtMs` returning `undefined` was treated as a short retry instead of an unresolved schedule - keep the `#17821` lower-bound guard for same-second refires, but stop inventing s\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53677", - "created_at": "2026-03-24T12:44:29Z", - "deletions": 12, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66083", + "created_at": "2026-04-13T17:20:01Z", + "deletions": 6, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53677/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53677", + "files_url": "https://github.com/openclaw/openclaw/pull/66083/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66083", "labels": [ - "size: S" + "maintainer", + "size: M" ], - "merged": false, - "number": 53677, - "review_comments_count": 0, - "state": "open", - "title": "perf(memory): stream line-window reads for memory files", - "updated_at": "2026-03-24T20:15:29Z" + "merged": true, + "number": 66083, + "review_comments_count": 2, + "state": "closed", + "title": "fix(cron): stop unresolved next-run refire loops", + "updated_at": "2026-04-13T18:24:23Z" }, { - "additions": 145, - "author": "MaxJinju", + "additions": 158, + "author": "Rohan5commit", "author_association": "NONE", - "body_excerpt": "## Summary - accept Google Chat app-url JWTs when `iss` is the Chat issuer even when `email` is absent - allow add-on issuer matching via either `iss` or `email` while preserving principal binding checks - include explicit per-account auth\u2026", - "changed_files": 5, + "body_excerpt": "## Summary - Problem: direct `codex-cli` runs still finalize the user-visible reply from stdout even though Codex can write a dedicated final-message artifact - Why it matters: stdout is useful for transport and telemetry, but it is a weak\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53676", - "created_at": "2026-03-24T12:43:11Z", - "deletions": 6, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66081", + "created_at": "2026-04-13T17:17:10Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53676/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53676", + "files_url": "https://github.com/openclaw/openclaw/pull/66081/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66081", "labels": [ - "channel: googlechat", + "agents", "size: S" ], "merged": false, - "number": 53676, - "review_comments_count": 1, + "number": 66081, + "review_comments_count": 4, "state": "open", - "title": "fix(googlechat): harden webhook auth matching and diagnostics", - "updated_at": "2026-03-24T20:15:29Z" + "title": "feat(codex-cli): prefer output-last-message artifacts", + "updated_at": "2026-04-13T17:22:42Z" }, { - "additions": 34, - "author": "hpt", + "additions": 192, + "author": "mbelinky", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - avoid throwing during Feishu account resolution when `channels.feishu.*` still contains unresolved `SecretRef` values during CLI startup/plugin registration - treat unresolved SecretRef credentials as \"not configured\" for that\u2026", - "changed_files": 2, + "body_excerpt": "## Summary Fixes #65611. Manual local `attachOnly` CDP profiles on loopback could be falsely treated as unavailable even when Chrome was already running and `/json/list` contained a real page target. ## Root cause Two shared assumptions we\u2026", + "changed_files": 8, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53675", - "created_at": "2026-03-24T12:42:41Z", - "deletions": 18, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66080", + "created_at": "2026-04-13T17:15:30Z", + "deletions": 8, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53675/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53675", + "files_url": "https://github.com/openclaw/openclaw/pull/66080/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66080", "labels": [ - "channel: feishu", - "size: S" + "maintainer", + "size: M" ], "merged": true, - "number": 53675, - "review_comments_count": 0, + "number": 66080, + "review_comments_count": 2, "state": "closed", - "title": "Feishu: avoid CLI startup failure on unresolved SecretRef", - "updated_at": "2026-03-24T16:48:51Z" + "title": "fix(browser): detect local attachOnly loopback CDP sessions", + "updated_at": "2026-04-13T17:48:54Z" }, { - "additions": 139, - "author": "hun9008", - "author_association": "NONE", - "body_excerpt": "## Summary - parallelize per-account channel health probing within a channel instead of probing each configured account serially - preserve existing summary-building behavior while reducing wall-clock time for multi-account channels - add\u2026", - "changed_files": 3, + "additions": 514, + "author": "eleqtrizit", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Routes `agents.files.get`, `agents.files.set`, and workspace file listing through the existing root-scoped `fs-safe` helpers - Removes the separate path-resolution layer for allowlisted workspace files so the gateway uses the\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53670", - "created_at": "2026-03-24T12:35:48Z", - "deletions": 82, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66079", + "created_at": "2026-04-13T17:13:45Z", + "deletions": 438, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53670/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53670", + "files_url": "https://github.com/openclaw/openclaw/pull/66079/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66079", "labels": [ - "commands", - "agents", - "size: M" + "gateway", + "maintainer", + "size: L" ], "merged": false, - "number": 53670, - "review_comments_count": 2, + "number": 66079, + "review_comments_count": 11, "state": "open", - "title": "perf(health): probe channel accounts in parallel", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(agents): tighten workspace file opens", + "updated_at": "2026-04-13T20:33:45Z" }, { - "additions": 166, - "author": "lndyzwdxhs", - "author_association": "NONE", - "body_excerpt": "Fixes #53482. Since v2026.3.22 removed all CLAWDBOT_* and MOLTBOT_* env var compatibility, users with those vars in their .env see silent failures or misleading errors. Add a process.emitWarning() that lists each detected legacy key and it\u2026", - "changed_files": 4, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "additions": 52, + "author": "WuKongAI-CMU", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary \\`applyJobResult\\` in \\`src/cron/service/timer.ts\\` conflated two semantics on \\`MIN_REFIRE_GAP_MS\\`: 1. **Lower bound** for the next cron fire (the #17821 fix \u2014 protects against \"next run lands in the same second as the run tha\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53667", - "created_at": "2026-03-24T12:31:20Z", - "deletions": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66076", + "created_at": "2026-04-13T17:05:12Z", + "deletions": 14, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53667/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53667", - "labels": [ - "gateway", - "size: S" - ], + "files_url": "https://github.com/openclaw/openclaw/pull/66076/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66076", + "labels": [], "merged": false, - "number": 53667, - "review_comments_count": 1, + "number": 66076, + "review_comments_count": 2, "state": "open", - "title": "fix: warn when legacy CLAWDBOT_*/MOLTBOT_* env vars are detected", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(cron): promote silent-undefined schedule to error, break spin loop (#66019)", + "updated_at": "2026-04-13T17:09:32Z" }, { - "additions": 143, - "author": "hun9008", - "author_association": "NONE", - "body_excerpt": "## Summary - replace the full sort in the non-sqlite-vec vector fallback path with a bounded top-k accumulation - keep only the strongest `limit` candidates while scanning fallback chunks instead of sorting the full scored list - add a foc\u2026", - "changed_files": 2, + "additions": 124, + "author": "mbelinky", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - add focused Telegram regressions for failed inbound update replay behavior - cover native-command retry after a bubbled handler failure - cover group-migration retry after a bubbled handler failure ## Testing - pnpm test -- ex\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53665", - "created_at": "2026-03-24T12:29:38Z", - "deletions": 18, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66075", + "created_at": "2026-04-13T17:03:52Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53665/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53665", + "files_url": "https://github.com/openclaw/openclaw/pull/66075/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66075", "labels": [ + "channel: telegram", + "maintainer", "size: S" ], - "merged": false, - "number": 53665, - "review_comments_count": 1, - "state": "open", - "title": "perf(memory): avoid full sort in vector fallback search", - "updated_at": "2026-03-24T20:15:29Z" + "merged": true, + "number": 66075, + "review_comments_count": 0, + "state": "closed", + "title": "test(telegram): add inbound retry regressions", + "updated_at": "2026-04-13T18:09:14Z" }, { - "additions": 486, - "author": "Heber-Hu", - "author_association": "NONE", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: - Why it matters: - What changed: - What did NOT change (scope boundary): ## Change Type (select all) - [ ] Bug fix - [ ] Feature - [ ] Refactor required for the fix - [ ]\u2026", - "changed_files": 12, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53664", - "created_at": "2026-03-24T12:22:31Z", - "deletions": 41, + "additions": 154, + "author": "mbelinky", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - stop `heartbeat`, `cron-event`, and `exec-event` turns from overwriting shared-session route fields - preserve existing session origin metadata for those synthetic turns instead of persisting synthetic provider/target values -\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66073", + "created_at": "2026-04-13T17:02:37Z", + "deletions": 33, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53664/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53664", + "files_url": "https://github.com/openclaw/openclaw/pull/66073/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66073", "labels": [ - "scripts", - "size: L" + "maintainer", + "size: S" ], - "merged": false, - "number": 53664, - "review_comments_count": 4, - "state": "open", - "title": "Improve Windows source-dev support and make scripts cross-platform", - "updated_at": "2026-03-24T20:15:29Z" + "merged": true, + "number": 66073, + "review_comments_count": 1, + "state": "closed", + "title": "Gateway/sessions: preserve shared session route on system events", + "updated_at": "2026-04-13T17:23:14Z" }, { - "additions": 116, - "author": "BlocksecPHD", + "additions": 96, + "author": "CharlesMcquade", "author_association": "NONE", - "body_excerpt": "## Summary - mark both skills search fields as `type=\"search\"` and disable browser text helpers that can repopulate saved gateway values - add browser tests for the global Skills tab and per-agent Skills panel to lock the input attributes\u2026", - "changed_files": 4, + "body_excerpt": "## Summary - **Bug**: When `models.mode` is set to `\"replace\"` in the OpenClaw config, the gateway runtime correctly restricts inference to user-configured providers only. However, the Control UI model-selector dropdown still displayed the\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53663", - "created_at": "2026-03-24T12:22:08Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66072", + "created_at": "2026-04-13T16:56:59Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53663/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53663", + "files_url": "https://github.com/openclaw/openclaw/pull/66072/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66072", "labels": [ - "app: web-ui", + "agents", "size: S" ], "merged": false, - "number": 53663, - "review_comments_count": 0, + "number": 66072, + "review_comments_count": 3, "state": "open", - "title": "fix(ui): prevent skills search autofill", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix: respect models.mode 'replace' in UI model catalog", + "updated_at": "2026-04-13T17:45:45Z" }, { - "additions": 3, - "author": "YTjungle666", + "additions": 161, + "author": "cwmine", "author_association": "NONE", - "body_excerpt": "Summary Problem: grouped chat bubbles in Control UI expanded to the full message column width instead of sizing to their content. Why it matters: this made user and assistant bubbles look inconsistent and caused overly wide message bubbles\u2026", - "changed_files": 1, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "body_excerpt": "## Summary - stop streaming assistant commentary deltas to OpenResponses HTTP clients before the phase is known - keep completed OpenResponses output items tagged with the right phase so commentary + tool-call turns still preserve structur\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53662", - "created_at": "2026-03-24T12:21:25Z", - "deletions": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66071", + "created_at": "2026-04-13T16:55:36Z", + "deletions": 23, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53662/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53662", + "files_url": "https://github.com/openclaw/openclaw/pull/66071/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66071", "labels": [ - "app: web-ui", - "size: XS" + "gateway", + "size: S" ], "merged": false, - "number": 53662, - "review_comments_count": 0, + "number": 66071, + "review_comments_count": 2, "state": "open", - "title": "fix(control-ui): size grouped chat bubbles by content", - "updated_at": "2026-03-24T20:15:29Z" + "title": "Fix commentary leaks in OpenResponses HTTP streaming", + "updated_at": "2026-04-13T17:01:58Z" }, { - "additions": 120, - "author": "hun9008", + "additions": 2, + "author": "stanleeyY", "author_association": "NONE", - "body_excerpt": "## Summary - add an append-only fast path to `buildSessionEntry(...)` so session transcript sync can reuse the previously parsed entry instead of reparsing the entire JSONL file on every append - cache the last parsed session entry during\u2026", - "changed_files": 3, + "body_excerpt": "## Summary - widen the mocked MCP server `connect` signature to accept the transport argument used by the test subject - widen the mocked bridge permission handler signature to accept the payload argument passed by the server - keep shutdo\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53660", - "created_at": "2026-03-24T12:20:22Z", - "deletions": 44, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66069", + "created_at": "2026-04-13T16:49:13Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53660/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53660", + "files_url": "https://github.com/openclaw/openclaw/pull/66069/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66069", "labels": [ - "size: S" + "size: XS" ], "merged": false, - "number": 53660, - "review_comments_count": 11, + "number": 66069, + "review_comments_count": 0, "state": "open", - "title": "perf(memory): reuse parsed session entries for append-only sync", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(mcp): widen shutdown test mock signatures", + "updated_at": "2026-04-13T16:50:39Z" }, { - "additions": 35, - "author": "hpt", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - avoid throwing during Feishu account resolution when `channels.feishu.*` still contains unresolved `SecretRef` values during CLI startup/plugin registration - treat unresolved SecretRef credentials as \"not configured\" for that\u2026", + "additions": 48, + "author": "Rohan5commit", + "author_association": "NONE", + "body_excerpt": "## Summary - Problem: streamed thinking fragments were joined with single newlines, and the TUI markdown renderer collapsed those boundaries so adjacent sentences appeared smushed together - Why it matters: reasoning output in the terminal\u2026", "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53657", - "created_at": "2026-03-24T12:15:45Z", - "deletions": 19, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66067", + "created_at": "2026-04-13T16:47:45Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53657/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53657", + "files_url": "https://github.com/openclaw/openclaw/pull/66067/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66067", "labels": [ - "channel: feishu", "size: S" ], "merged": false, - "number": 53657, - "review_comments_count": 1, - "state": "closed", - "title": "Feishu: avoid CLI startup failure on unresolved SecretRef", - "updated_at": "2026-03-24T12:42:51Z" + "number": 66067, + "review_comments_count": 2, + "state": "open", + "title": "fix(tui): preserve spaces between thinking fragments", + "updated_at": "2026-04-13T16:50:19Z" }, { - "additions": 57, - "author": "liyuan97", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - Problem: MiniMax provider catalog contained stale legacy models (M2, M2.1, M2.5, VL-01) that are no longer relevant. - Why it matters: Keeps the model list clean and avoids user confusion from deprecated model choices. - What\u2026", - "changed_files": 14, + "additions": 3, + "author": "stanleeyY", + "author_association": "NONE", + "body_excerpt": "## Summary - make the replay-test helper explicitly return `Promise` - await `processNextcloudTalkReplayGuardedMessage(...)` and discard its internal status string in the test wrapper - keep the replay assertions unchanged while matc\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53655", - "created_at": "2026-03-24T12:12:04Z", - "deletions": 171, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66066", + "created_at": "2026-04-13T16:47:15Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53655/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53655", + "files_url": "https://github.com/openclaw/openclaw/pull/66066/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66066", "labels": [ - "docs", - "commands", - "agents", - "size: S", - "extensions: minimax" + "channel: nextcloud-talk", + "size: XS" ], "merged": false, - "number": 53655, - "review_comments_count": 1, + "number": 66066, + "review_comments_count": 0, "state": "open", - "title": "feat(minimax): trim legacy model catalog to M2.7 only", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(nextcloud-talk): align replay test callback contract", + "updated_at": "2026-04-13T16:48:34Z" }, { - "additions": 13, - "author": "joeldickson", + "additions": 18, + "author": "stanleeyY", "author_association": "NONE", - "body_excerpt": "## Summary Update the `skill-creator` guidance to explicitly support RFC 2119 normative keywords for standards/policy-oriented skills. ## Changes - Added a new section under SKILL authoring guidance that maps: - MUST/SHALL - MUST NOT/SHALL\u2026", + "body_excerpt": "## Summary - add optional `waitTimeoutMs` support to the Feishu post-send-failure lifecycle helper - use the same `vi.waitFor(..., { timeout })` pattern already used by the replay helper - keep lifecycle assertions stable for slower enviro\u2026", "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53653", - "created_at": "2026-03-24T12:02:18Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66064", + "created_at": "2026-04-13T16:43:59Z", + "deletions": 8, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53653/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53653", + "files_url": "https://github.com/openclaw/openclaw/pull/66064/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66064", "labels": [ + "channel: feishu", "size: XS" ], "merged": false, - "number": 53653, - "review_comments_count": 2, - "state": "closed", - "title": "Skill Creator: add RFC 2119 requirement-level language guidance", - "updated_at": "2026-03-24T12:07:22Z" + "number": 66064, + "review_comments_count": 1, + "state": "open", + "title": "fix(feishu): add wait-timeout support to lifecycle helper", + "updated_at": "2026-04-13T16:46:34Z" }, { - "additions": 190, - "author": "Thatgfsj", + "additions": 39, + "author": "Rohan5commit", "author_association": "NONE", - "body_excerpt": "Fixes #51549 - WebChat loses message queue, conversation history, and draft on browser refresh - Add chat tab loading in refreshActiveTab() to load history on reconnect - Add persistence functions for chat queue, draft, and attachments - U\u2026", - "changed_files": 4, - "cluster_id": "cluster-53248-81", + "body_excerpt": "## Summary - Problem: cron startup assumed every persisted job already had a state object and crashed on legacy or damaged entries missing that field - Why it matters: gateway startup could fail before cron recovery logic ran, which blocks\u2026", + "changed_files": 2, + "cluster_id": "cluster-65003-8", "cluster_ids": [ - "cluster-53248-81" + "cluster-65003-8" ], "cluster_role": "member", "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53651", - "created_at": "2026-03-24T11:53:29Z", - "deletions": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66063", + "created_at": "2026-04-13T16:42:27Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53651/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53651", + "files_url": "https://github.com/openclaw/openclaw/pull/66063/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66063", "labels": [ - "app: web-ui", - "size: S" + "size: XS" ], "merged": false, - "number": 53651, - "review_comments_count": 9, + "number": 66063, + "review_comments_count": 1, "state": "open", - "title": "fix(webchat): restore chat history, queue, and draft on page refresh", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(cron): guard legacy jobs without state on startup", + "updated_at": "2026-04-13T16:45:39Z" }, { - "additions": 475, - "author": "ordiy", - "author_association": "NONE", - "body_excerpt": "## Summary Adds support for indexing **source code files** placed in the `memory/` directory, using **declaration-boundary chunking** instead of the generic sliding-window used for Markdown. ### Problem `chunkMarkdown()` splits text at a f\u2026", - "changed_files": 3, + "additions": 320, + "author": "ly85206559", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: `openclaw gateway status` on Windows could flag a healthy Scheduled Task as missing the `gateway` subcommand when the generated task script contained batch prologue directives like `setlocal` before the real command.\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53650", - "created_at": "2026-03-24T11:47:42Z", - "deletions": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66062", + "created_at": "2026-04-13T16:40:32Z", + "deletions": 21, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53650/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53650", + "files_url": "https://github.com/openclaw/openclaw/pull/66062/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66062", "labels": [ + "gateway", "size: M" ], "merged": false, - "number": 53650, - "review_comments_count": 3, + "number": 66062, + "review_comments_count": 10, "state": "open", - "title": "feat(memory): AST-heuristic code file chunking for memory sources", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(daemon): ignore setlocal in Windows task parsing", + "updated_at": "2026-04-14T01:59:38Z" }, { - "additions": 13, - "author": "yuting0624", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Fixes #49803 \u2014 LINE, Google Chat, and other webhook-based channels return 404 for POST requests even though the provider starts successfully. ## Root Cause When the bundler splits `src/plugins/runtime.ts` across multiple output\u2026", + "additions": 8, + "author": "stanleeyY", + "author_association": "NONE", + "body_excerpt": "## Summary - narrow inbound dedupe keys to concrete strings before commit/release operations - stop relying on `filter(Boolean)` for TypeScript narrowing in the inbound monitor - preserve existing dedupe behavior by trimming, dropping empt\u2026", "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53642", - "created_at": "2026-03-24T11:23:22Z", - "deletions": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66061", + "created_at": "2026-04-13T16:40:17Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53642/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53642", + "files_url": "https://github.com/openclaw/openclaw/pull/66061/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66061", "labels": [ + "channel: whatsapp-web", "size: XS" ], "merged": false, - "number": 53642, + "number": 66061, "review_comments_count": 0, "state": "open", - "title": "fix(plugins): ensure httpRouteRegistry fields exist across bundle chunks", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(whatsapp): narrow inbound dedupe keys", + "updated_at": "2026-04-13T16:42:16Z" }, { - "additions": 253, - "author": "w-sss", - "author_association": "CONTRIBUTOR", - "body_excerpt": "Restored PR #46146", - "changed_files": 8, + "additions": 19, + "author": "stanleeyY", + "author_association": "NONE", + "body_excerpt": "## Summary - narrow replay key batching to concrete strings before passing them into the inbound job and replay guard - narrow synthesized message text and batched message ids without relying on `filter(Boolean)` casts - keep the existing\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53637", - "created_at": "2026-03-24T11:07:06Z", - "deletions": 18, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66059", + "created_at": "2026-04-13T16:38:19Z", + "deletions": 7, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53637/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53637", + "files_url": "https://github.com/openclaw/openclaw/pull/66059/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66059", "labels": [ - "channel: line", - "app: web-ui", - "size: M" + "channel: discord", + "size: XS" ], "merged": false, - "number": 53637, - "review_comments_count": 6, - "state": "closed", - "title": "fix(browser): add logging for silent CDP/MCP errors", - "updated_at": "2026-03-24T12:55:09Z" + "number": 66059, + "review_comments_count": 0, + "state": "open", + "title": "fix(discord): narrow batched replay and message ids", + "updated_at": "2026-04-13T16:41:14Z" }, { - "additions": 17, - "author": "w-sss", - "author_association": "CONTRIBUTOR", - "body_excerpt": "Restored PR #48952", + "additions": 42, + "author": "asakir44", + "author_association": "NONE", + "body_excerpt": "## Summary - Add locale support to pairing approval messages (Turkish translation included) - Warn when WhatsApp credential files are older than 30 days ## Changes | File | Change | |------|--------| | `src/pairing/pairing-messages.ts` | A\u2026", "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53636", - "created_at": "2026-03-24T11:06:57Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66055", + "created_at": "2026-04-13T16:28:05Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53636/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53636", + "files_url": "https://github.com/openclaw/openclaw/pull/66055/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66055", "labels": [ - "app: web-ui", + "channel: whatsapp-web", "size: XS" ], "merged": false, - "number": 53636, - "review_comments_count": 0, + "number": 66055, + "review_comments_count": 3, "state": "open", - "title": "fix(ui): display error message when channel config save fails", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(whatsapp): add pairing message locale and credential age warning", + "updated_at": "2026-04-13T16:31:38Z" }, { - "additions": 82, - "author": "w-sss", + "additions": 9, + "author": "WuKongAI-CMU", "author_association": "CONTRIBUTOR", - "body_excerpt": "Restored PR #48650", - "changed_files": 7, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, + "body_excerpt": "## Summary The cron \\`start()\\` routine in \\`src/cron/service/ops.ts\\` scans \\`state.store.jobs\\` directly and reads \\`job.state.runningAtMs\\` without first checking whether \\`job.state\\` is defined. Jobs loaded from older store formats ca\u2026", + "changed_files": 1, + "cluster_id": "cluster-65003-8", + "cluster_ids": [ + "cluster-65003-8" + ], + "cluster_role": "member", "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53635", - "created_at": "2026-03-24T11:06:49Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66054", + "created_at": "2026-04-13T16:27:41Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53635/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53635", + "files_url": "https://github.com/openclaw/openclaw/pull/66054/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66054", "labels": [ - "channel: telegram", "size: XS" ], - "merged": true, - "number": 53635, - "review_comments_count": 4, + "merged": false, + "number": 66054, + "review_comments_count": 0, "state": "open", - "title": "fix(telegram): improve error messages for 403 bot not member errors", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(cron): guard against missing job.state in start() (#66016)", + "updated_at": "2026-04-13T16:29:47Z" }, { - "additions": 46, - "author": "w-sss", - "author_association": "CONTRIBUTOR", - "body_excerpt": "Restored PR #48649", - "changed_files": 1, + "additions": 83, + "author": "asakir44", + "author_association": "NONE", + "body_excerpt": "## Summary - Add client-side Turkish text normalization before ElevenLabs TTS synthesis - Replaces circumflex vowels (\u00e2\u2192a, \u00ee\u2192i, \u00fb\u2192u) that cause mispronunciation - Only applied when `languageCode` is `\"tr\"` \u2014 zero overhead for other languag\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53634", - "created_at": "2026-03-24T11:06:40Z", + "conversation_url": "https://github.com/openclaw/openclaw/pull/66052", + "created_at": "2026-04-13T16:25:32Z", "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53634/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53634", + "files_url": "https://github.com/openclaw/openclaw/pull/66052/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66052", "labels": [ - "scripts", - "size: XS" + "size: S" ], "merged": false, - "number": 53634, + "number": 66052, "review_comments_count": 2, "state": "open", - "title": "fix: update fast-xml-parser to 5.5.8", - "updated_at": "2026-03-24T20:15:29Z" + "title": "feat(elevenlabs): add Turkish text normalization for TTS synthesis", + "updated_at": "2026-04-13T16:28:56Z" }, { - "additions": 24, - "author": "w-sss", + "additions": 5, + "author": "WuKongAI-CMU", "author_association": "CONTRIBUTOR", - "body_excerpt": "Restored PR #46863", - "changed_files": 3, + "body_excerpt": "## Summary Telegram's BotFather command registration only accepts command names matching \\`^[a-z0-9_]+$\\`, so the canonical \\`/active-memory\\` slash command cannot be registered in BotFather as-is (#65985). Users end up with a mismatch: ch\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53633", - "created_at": "2026-03-24T11:06:30Z", - "deletions": 7, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66051", + "created_at": "2026-04-13T16:24:51Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53633/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53633", + "files_url": "https://github.com/openclaw/openclaw/pull/66051/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66051", "labels": [ - "app: web-ui", "size: XS" ], "merged": false, - "number": 53633, + "number": 66051, "review_comments_count": 0, "state": "open", - "title": "fix: remove unnecessary escape in markdown-to-line.ts regex", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(active-memory): expose /active_memory Telegram alias (#65985)", + "updated_at": "2026-04-13T16:26:48Z" }, { - "additions": 36, - "author": "w-sss", - "author_association": "CONTRIBUTOR", - "body_excerpt": "Restored PR #51535", - "changed_files": 5, + "additions": 23, + "author": "asakir44", + "author_association": "NONE", + "body_excerpt": "## Summary - Add optional `tts` config block to per-agent schema for voice identity overrides - Enables multi-agent setups where each agent has a distinct TTS voice Addresses #61858 #56701 #11483 ## Changes | File | Change | |------|------\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53632", - "created_at": "2026-03-24T11:06:07Z", - "deletions": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66049", + "created_at": "2026-04-13T16:22:27Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53632/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53632", + "files_url": "https://github.com/openclaw/openclaw/pull/66049/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66049", "labels": [ "agents", "size: XS" ], "merged": false, - "number": 53632, - "review_comments_count": 2, + "number": 66049, + "review_comments_count": 4, "state": "open", - "title": "fix(browser): add missing logWarn imports", - "updated_at": "2026-03-24T20:15:29Z" + "title": "feat(agents): add per-agent TTS voice configuration", + "updated_at": "2026-04-13T16:26:54Z" }, { - "additions": 50, - "author": "w-sss", - "author_association": "CONTRIBUTOR", - "body_excerpt": "Restored PR #51537", - "changed_files": 6, + "additions": 166, + "author": "asakir44", + "author_association": "NONE", + "body_excerpt": "## Summary - Detect twitter.com / x.com tweet URLs in `web_fetch` and route them through the public FxTwitter JSON API (`api.fxtwitter.com`) - Twitter returns login walls to non-browser user agents, making `web_fetch` useless for tweet URL\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53631", - "created_at": "2026-03-24T11:05:59Z", - "deletions": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66047", + "created_at": "2026-04-13T16:19:31Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53631/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53631", + "files_url": "https://github.com/openclaw/openclaw/pull/66047/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66047", "labels": [ - "channel: telegram", "agents", "size: S" ], "merged": false, - "number": 53631, - "review_comments_count": 2, - "state": "open", - "title": "fix(telegram): improve 403 bot not member/blocked error messages", - "updated_at": "2026-03-24T20:15:30Z" - }, - { - "additions": 1, - "author": "w-sss", - "author_association": "CONTRIBUTOR", - "body_excerpt": "Restored PR #47939 - accidentally closed when cleaning up branches", - "changed_files": 1, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53630", - "created_at": "2026-03-24T11:05:51Z", - "deletions": 1, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53630/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53630", - "labels": [ - "app: web-ui", - "size: XS" - ], - "merged": true, - "number": 53630, - "review_comments_count": 0, + "number": 66047, + "review_comments_count": 4, "state": "open", - "title": "Fix/UI context notice icon overflow", - "updated_at": "2026-03-24T20:15:29Z" + "title": "feat(web-fetch): add FxTwitter API fallback for Twitter/X URLs", + "updated_at": "2026-04-13T16:23:14Z" }, { - "additions": 362, - "author": "crowneglobal", + "additions": 54, + "author": "stanleeyY", "author_association": "NONE", - "body_excerpt": "## Summary Adds support for Telegram Business Chat messages, allowing bots with Business Mode enabled to receive and respond to messages in users' personal DM conversations. Closes #20786 Related: #51916 ## Changes ### 1. `allowed-updates.\u2026", - "changed_files": 4, + "body_excerpt": "## Summary - treat `dist/entry.js` and `dist/index.js` as equivalent when they resolve to the same `dist/` directory - keep repair prompts for actual install-root changes - add regression coverage for the alias case ## Why The packaged CLI\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 0, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53629", - "created_at": "2026-03-24T11:03:07Z", - "deletions": 0, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66045", + "created_at": "2026-04-13T16:15:57Z", + "deletions": 6, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53629/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53629", + "files_url": "https://github.com/openclaw/openclaw/pull/66045/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66045", "labels": [ - "channel: telegram", - "size: M" + "gateway", + "commands", + "size: S" ], "merged": false, - "number": 53629, - "review_comments_count": 2, + "number": 66045, + "review_comments_count": 0, "state": "open", - "title": "feat(telegram): add Telegram Business Chat support (business_message, business_connection)", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(doctor): avoid false gateway entrypoint mismatches for dist aliases", + "updated_at": "2026-04-13T16:50:27Z" }, { - "additions": 21, - "author": "jlin53882", + "additions": 82652, + "author": "Dykij", "author_association": "NONE", - "body_excerpt": "## Summary Fix for [Issue #33978](https://github.com/openclaw/openclaw/issues/33978): Discord DM media/file sending fails with \"Unknown Channel\" error. ## Root Cause When using `message` tool with `--channel discord --target user:): beta blocker - ` and link the matching `Beta blocker: - ` issue labeled `be\u2026", + "changed_files": 1749, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53627", - "created_at": "2026-03-24T10:56:13Z", - "deletions": 1, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66044", + "created_at": "2026-04-13T16:13:21Z", + "deletions": 181800, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53627/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53627", + "files_url": "https://github.com/openclaw/openclaw/pull/66044/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66044", "labels": [ - "size: XS" - ], - "merged": false, - "number": 53627, - "review_comments_count": 5, - "state": "open", - "title": "fix(discord): allow user: DM targets in message tool", - "updated_at": "2026-03-24T20:15:30Z" + "docs", + "channel: bluebubbles", + "channel: discord", + "channel: googlechat", + "channel: imessage", + "channel: line", + "channel: matrix", + "channel: mattermost", + "channel: msteams", + "channel: nextcloud-talk", + "channel: nostr", + "channel: signal", + "channel: slack", + "channel: telegram", + "channel: tlon", + "channel: voice-call", + "channel: whatsapp-web", + "channel: zalo", + "channel: zalouser", + "app: android", + "app: ios", + "app: macos", + "app: web-ui", + "gateway", + "extensions: copilot-proxy", + "extensions: diagnostics-otel", + "extensions: llm-task", + "extensions: lobster", + "extensions: memory-lancedb", + "extensions: open-prose", + "scripts", + "commands", + "docker", + "agents", + "channel: feishu", + "channel: twitch", + "channel: irc", + "size: XL", + "extensions: acpx" + ], + "merged": false, + "number": 66044, + "review_comments_count": 9, + "state": "closed", + "title": "Fork OpenClaw", + "updated_at": "2026-04-13T16:20:18Z" }, { - "additions": 12, - "author": "HCYT", - "author_association": "NONE", - "body_excerpt": "after the CLAWDBOT_ -> OPENCLAW_ migration, gateway silently ignores old env vars with no warning. users end up with channels not connecting and no idea why. adds a preflight check in startGatewayServer that scans process.env for CLAWDBOT_\u2026", - "changed_files": 1, + "additions": 154, + "author": "mbelinky", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - bypass browser SSRF policy for the managed local Chrome loopback CDP control plane only - apply that policy consistently to readiness, status, tab listing, and tab control - keep normal navigation URL SSRF checks intact, while\u2026", + "changed_files": 11, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53626", - "created_at": "2026-03-24T10:49:39Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66043", + "created_at": "2026-04-13T16:12:09Z", + "deletions": 33, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53626/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53626", + "files_url": "https://github.com/openclaw/openclaw/pull/66043/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66043", "labels": [ - "gateway", - "size: XS" + "maintainer", + "size: S" ], - "merged": false, - "number": 53626, - "review_comments_count": 1, - "state": "open", - "title": "warn on startup when legacy CLAWDBOT_* env vars are present", - "updated_at": "2026-03-24T20:15:30Z" + "merged": true, + "number": 66043, + "review_comments_count": 2, + "state": "closed", + "title": "fix(browser): unblock managed loopback CDP startup and control", + "updated_at": "2026-04-13T16:56:01Z" }, { - "additions": 20, - "author": "kevinWangSheng", + "additions": 36, + "author": "Rohan5commit", "author_association": "NONE", - "body_excerpt": "## Summary - **Problem:** `computeNextRunAtMs()` returns the current boundary time (not a future time) when `nowMs` falls exactly on a schedule boundary for \"every\" interval schedules. - **Why it matters:** Unlike cron schedules which have\u2026", - "changed_files": 2, + "body_excerpt": "## Summary - Problem: Telegram ack reactions stop when group `requireMention` is disabled, even though those group messages still trigger runs. - Why it matters: always-on Telegram groups look ignored while the agent is actually working. -\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53625", - "created_at": "2026-03-24T10:47:50Z", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66041", + "created_at": "2026-04-13T16:10:41Z", "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53625/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53625", + "files_url": "https://github.com/openclaw/openclaw/pull/66041/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66041", "labels": [ - "size: XS", - "r: too-many-prs" + "docs", + "channel: telegram", + "size: XS" ], "merged": false, - "number": 53625, + "number": 66041, "review_comments_count": 0, - "state": "closed", - "title": "fix(cron): return strictly future timestamp for every-interval schedules on exact boundaries", - "updated_at": "2026-03-24T10:49:25Z" + "state": "open", + "title": "fix(telegram): keep ack reactions without mentions", + "updated_at": "2026-04-13T16:14:05Z" }, { - "additions": 173, - "author": "w-sss", + "additions": 585, + "author": "pgondhi987", "author_association": "CONTRIBUTOR", - "body_excerpt": "Fixes #53386 ## Problem When an agent sends a message to a WhatsApp group, the WhatsApp gateway does not filter the fromMe echo message, causing the agent to receive its own message with was_mentioned=true due to implicit reply-to-bot dete\u2026", - "changed_files": 4, - "cluster_id": "cluster-53386-6", - "cluster_ids": [ - "cluster-53386-6" - ], - "cluster_role": "canonical", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53624", - "created_at": "2026-03-24T10:45:22Z", - "deletions": 5, + "body_excerpt": "## Summary - **Problem:** The Chrome MCP snapshot, screenshot, tab-list, and tab-focus routes returned page content and tab URLs without validating them against the configured SSRF policy. A newly-opened internal tab (via `target=\\\"_blank\\\u2026", + "changed_files": 8, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66040", + "created_at": "2026-04-13T16:09:13Z", + "deletions": 19, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53624/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53624", + "files_url": "https://github.com/openclaw/openclaw/pull/66040/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66040", "labels": [ - "channel: whatsapp-web", - "size: S" + "maintainer", + "size: L" ], "merged": true, - "number": 53624, - "review_comments_count": 1, + "number": 66040, + "review_comments_count": 12, "state": "closed", - "title": "fix(whatsapp): filter fromMe messages in groups to prevent infinite loop", - "updated_at": "2026-03-24T17:11:13Z" + "title": "fix(browser): enforce SSRF policy on snapshot, screenshot, and tab routes [AI]", + "updated_at": "2026-04-13T18:26:48Z" }, { - "additions": 194, - "author": "jsingh01", + "additions": 1042, + "author": "rommanali-spec", "author_association": "NONE", - "body_excerpt": "## Summary - preserve canonical child agent ids in usage discovery instead of restamping with the scan agent - add schema support for `agentId` in sessions.patch - persist and validate canonical `agentId` safely - add targeted regression t\u2026", - "changed_files": 8, + "body_excerpt": "## Summary - Problem: Different models fail in different, predictable ways (hallucination, tool-call fabrication, verbosity, empty responses). A one-size-fits-all system prompt cannot address model-specific defects. - Why it matters: OpenC\u2026", + "changed_files": 11, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53622", - "created_at": "2026-03-24T10:43:37Z", - "deletions": 11, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66039", + "created_at": "2026-04-13T16:08:39Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53622/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53622", + "files_url": "https://github.com/openclaw/openclaw/pull/66039/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66039", "labels": [ - "app: web-ui", - "gateway", - "agents", - "size: M" + "size: XL" ], "merged": false, - "number": 53622, - "review_comments_count": 3, + "number": 66039, + "review_comments_count": 8, "state": "open", - "title": "fix: preserve canonical subagent agent ids in usage", - "updated_at": "2026-03-24T20:15:30Z" + "title": "feat(extensions): add model-rules \u2014 per-model corrective instructions plugin", + "updated_at": "2026-04-13T17:13:33Z" }, { - "additions": 42, - "author": "lupuletic", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - Problem: Docker agent crashes with `ENOENT: no such file or directory, mkdir '/home/node'` when sending a message via Control UI, because the `node` user's home directory may not exist in certain base image variants or layer c\u2026", - "changed_files": 4, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53620", - "created_at": "2026-03-24T10:41:27Z", - "deletions": 3, + "additions": 35, + "author": "BillyBunn", + "author_association": "NONE", + "body_excerpt": "## Summary - When a second local OpenClaw run overlaps an already-running Blueprint session, the session-file write lock times out. Previously, `runWithModelFallback` treated this as a model candidate failure and cycled through every fallb\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66037", + "created_at": "2026-04-13T16:03:08Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53620/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53620", + "files_url": "https://github.com/openclaw/openclaw/pull/66037/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66037", "labels": [ - "app: macos", - "docker", "agents", "size: XS" ], "merged": false, - "number": 53620, + "number": 66037, "review_comments_count": 0, - "state": "open", - "title": "fix(docker): ensure /home/node exists before USER switch", - "updated_at": "2026-03-24T20:15:29Z" + "state": "closed", + "title": "fix(agent): stop model fallback on session lock contention", + "updated_at": "2026-04-13T16:05:45Z" }, { - "additions": 11, - "author": "kevinWangSheng", - "author_association": "NONE", - "body_excerpt": "## Summary - **Problem:** `readConfigFileSnapshotInternal()` applies an incomplete default chain when a config file exists, omitting `applyCompactionDefaults` and `applyContextPruningDefaults`. The no-file path also omits `applyLoggingDefa\u2026", - "changed_files": 1, + "additions": 532, + "author": "pgondhi987", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - **Problem:** `skills-install-download.ts` validated `targetDir` against `safeRoot` using path-containment checks only, leaving a TOCTOU window. Between validation and file write, a subdirectory could be atomically replaced (re\u2026", + "changed_files": 7, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53617", - "created_at": "2026-03-24T10:33:07Z", - "deletions": 3, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66036", + "created_at": "2026-04-13T15:59:43Z", + "deletions": 32, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53617/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53617", + "files_url": "https://github.com/openclaw/openclaw/pull/66036/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66036", "labels": [ - "size: XS", - "r: too-many-prs" + "agents", + "maintainer", + "size: L" ], "merged": false, - "number": 53617, - "review_comments_count": 0, + "number": 66036, + "review_comments_count": 14, "state": "closed", - "title": "fix(config): apply missing compaction and context pruning defaults in config snapshot", - "updated_at": "2026-03-24T10:34:22Z" + "title": "fix(skills): pin targetDir by inode identity to close TOCTOU window during download and extraction [AI-assisted]", + "updated_at": "2026-04-13T18:50:28Z" }, { - "additions": 78, - "author": "w-sss", + "additions": 176, + "author": "mbelinky", "author_association": "CONTRIBUTOR", - "body_excerpt": "Fixes #53386 ## Problem When an agent sends a message to a WhatsApp group, the WhatsApp gateway does not filter the fromMe echo message, causing the agent to receive its own message with was_mentioned=true due to implicit reply-to-bot dete\u2026", - "changed_files": 2, - "cluster_id": "cluster-53386-6", - "cluster_ids": [ - "cluster-53386-6" - ], - "cluster_role": "member", + "body_excerpt": "## Summary - Problem: isolated Telegram heartbeats using `target=last` could drop the bound forum-topic `threadId` and send into the group root chat instead. - Why it matters: topic-bound sessions would leak scheduled heartbeat replies int\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53616", - "created_at": "2026-03-24T10:29:43Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66035", + "created_at": "2026-04-13T15:57:11Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53616/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53616", - "labels": [ - "channel: whatsapp-web", - "size: S", - "r: too-many-prs" - ], - "merged": false, - "number": 53616, - "review_comments_count": 1, - "state": "closed", - "title": "fix(whatsapp): filter fromMe messages in groups to prevent infinite loop", - "updated_at": "2026-03-24T10:33:04Z" - }, - { - "additions": 734, - "author": "HDYA", - "author_association": "NONE", - "body_excerpt": "Add alternative authentication methods for Microsoft Teams beyond client secrets. Users can now authenticate using: - Certificate-based auth (PEM file + thumbprint) - Azure Managed Identity (system- or user-assigned) Changes: - MSTeamsCred\u2026", - "changed_files": 8, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 0, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53615", - "created_at": "2026-03-24T10:23:05Z", - "deletions": 147, - "draft": true, - "files_url": "https://github.com/openclaw/openclaw/pull/53615/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53615", + "files_url": "https://github.com/openclaw/openclaw/pull/66035/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66035", "labels": [ - "channel: msteams", - "size: L" + "maintainer", + "size: S" ], - "merged": false, - "number": 53615, + "merged": true, + "number": 66035, "review_comments_count": 0, - "state": "open", - "title": "feat(msteams): add federated credential support (certificate + managed identity)", - "updated_at": "2026-03-24T20:15:29Z" + "state": "closed", + "title": "fix(heartbeat): preserve Telegram topic routing for isolated heartbeats", + "updated_at": "2026-04-13T16:27:47Z" }, { - "additions": 78, - "author": "w-sss", + "additions": 203, + "author": "pgondhi987", "author_association": "CONTRIBUTOR", - "body_excerpt": "Fixes #53386 ## Problem When an agent sends a message to a WhatsApp group, the WhatsApp gateway does not filter the fromMe echo message, causing the agent to receive its own message with was_mentioned=true due to implicit reply-to-bot dete\u2026", - "changed_files": 2, - "cluster_id": "cluster-53386-6", - "cluster_ids": [ - "cluster-53386-6" - ], - "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53612", - "created_at": "2026-03-24T10:17:01Z", - "deletions": 0, + "body_excerpt": "## Summary - **Problem:** The `signin/tokenExchange` and `signin/verifyState` invoke handler in `extensions/msteams/src/monitor-handler.ts` processed SSO token exchange without calling `resolveMSTeamsSenderAccess()`. Senders blocked by DM\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66033", + "created_at": "2026-04-13T15:52:20Z", + "deletions": 11, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53612/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53612", + "files_url": "https://github.com/openclaw/openclaw/pull/66033/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66033", "labels": [ - "channel: whatsapp-web", - "size: S", - "r: too-many-prs" + "channel: msteams", + "maintainer", + "size: M" ], - "merged": false, - "number": 53612, - "review_comments_count": 1, + "merged": true, + "number": 66033, + "review_comments_count": 2, "state": "closed", - "title": "fix(whatsapp): filter fromMe messages in groups to prevent infinite loop", - "updated_at": "2026-03-24T10:24:54Z" + "title": "fix(msteams): enforce sender allowlist checks on SSO signin invokes [AI]", + "updated_at": "2026-04-13T18:22:41Z" }, { - "additions": 145, - "author": "giulio-leone", + "additions": 269, + "author": "pgondhi987", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - invalidate cached Codex CLI credentials as soon as `~/.codex/auth.json` changes, even inside the normal TTL window - skip external CLI sync when the stored `openai-codex:default` OAuth credential is already newer than the impo\u2026", - "changed_files": 4, - "cluster_id": "cluster-53317-5", - "cluster_ids": [ - "cluster-53317-5" - ], - "cluster_role": "canonical", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53611", - "created_at": "2026-03-24T10:16:42Z", - "deletions": 3, + "body_excerpt": "## Summary - **Problem:** `ForceSenderIsOwnerFalse` was keyed solely on `hasExecCompletion` (exec-completion text patterns). For `hook:wake` heartbeat triggers, `shouldInspectPendingEvents` did not include wake/hook reasons, so pending eve\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 8, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66031", + "created_at": "2026-04-13T15:50:42Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53611/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53611", + "files_url": "https://github.com/openclaw/openclaw/pull/66031/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66031", "labels": [ - "agents", - "size: S" + "maintainer", + "size: M" ], "merged": true, - "number": 53611, - "review_comments_count": 2, + "number": 66031, + "review_comments_count": 16, "state": "closed", - "title": "fix(auth): keep fresher Codex re-auth state", - "updated_at": "2026-03-24T16:53:27Z" + "title": "fix(heartbeat): force owner downgrade for untrusted hook:wake system events [AI-assisted]", + "updated_at": "2026-04-13T18:44:27Z" }, { - "additions": 30, - "author": "byungsker", + "additions": 25, + "author": "pgondhi987", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Add an optional `sessionChannelId` field to `autoJoin` entries. When set, the voice session is routed to that text channel \u2014 both the user's STT transcript and the AI reply appear as message bubbles, while audio playback continu\u2026", + "body_excerpt": "## Summary - **Problem:** `redactConfigSnapshot()` spread `...snapshot` then only overwrote `config` and `resolved` with redacted copies, leaving `sourceConfig` and `runtimeConfig` (the canonical alias fields) pointing to the original unre\u2026", "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53609", - "created_at": "2026-03-24T10:14:04Z", - "deletions": 5, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66030", + "created_at": "2026-04-13T15:49:23Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53609/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53609", + "files_url": "https://github.com/openclaw/openclaw/pull/66030/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66030", "labels": [ - "size: XS", - "r: too-many-prs" + "maintainer", + "size: XS" ], - "merged": false, - "number": 53609, - "review_comments_count": 1, + "merged": true, + "number": 66030, + "review_comments_count": 0, "state": "closed", - "title": "feat(discord/voice): add sessionChannelId to autoJoin for text-channel transcript routing", - "updated_at": "2026-03-24T12:16:29Z" + "title": "fix(config): redact sourceConfig and runtimeConfig alias fields in redactConfigSnapshot [AI]", + "updated_at": "2026-04-13T18:17:41Z" }, { - "additions": 78, - "author": "w-sss", + "additions": 9, + "author": "WuKongAI-CMU", "author_association": "CONTRIBUTOR", - "body_excerpt": "Fixes #53386 ## Problem When an agent sends a message to a WhatsApp group, the WhatsApp gateway does not filter the fromMe echo message, causing the agent to receive its own message with was_mentioned=true due to implicit reply-to-bot dete\u2026", + "body_excerpt": "## Summary When a model call fails and OpenClaw triggers a fallback retry, \\`resolveFallbackRetryPrompt()\\` replaced the entire original user body with the fixed string \\`\"Continue where you left off. The previous model attempt failed or t\u2026", "changed_files": 2, - "cluster_id": "cluster-53386-6", + "cluster_id": "cluster-65760-4", "cluster_ids": [ - "cluster-53386-6" + "cluster-65760-4" ], "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53608", - "created_at": "2026-03-24T10:06:29Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66029", + "created_at": "2026-04-13T15:48:30Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53608/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53608", + "files_url": "https://github.com/openclaw/openclaw/pull/66029/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66029", "labels": [ - "channel: whatsapp-web", - "size: S", - "r: too-many-prs" + "agents", + "size: XS" ], "merged": false, - "number": 53608, + "number": 66029, "review_comments_count": 0, - "state": "closed", - "title": "fix(whatsapp): filter fromMe messages in groups to prevent infinite loop", - "updated_at": "2026-03-24T10:08:40Z" + "state": "open", + "title": "fix(agents): preserve original prompt on model fallback retry (#65760)", + "updated_at": "2026-04-13T15:50:00Z" }, { - "additions": 270, - "author": "lupuletic", + "additions": 770, + "author": "eleqtrizit", "author_association": "CONTRIBUTOR", - "body_excerpt": "sendDiscordComponentMessage sends components via Discord REST API and registers component entries but never appends the outbound message to the session transcript, so the agent loses context when a user clicks a button. Closes #21649 Chang\u2026", - "changed_files": 8, + "body_excerpt": "## Summary - Aligns Slack interactive sender authorization with configured allowlists in channel contexts - Preserves the current open-by-default behavior when no global or channel allowlists are configured ## Changes - Applies the configu\u2026", + "changed_files": 7, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53607", - "created_at": "2026-03-24T10:06:09Z", - "deletions": 3, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66028", + "created_at": "2026-04-13T15:44:30Z", + "deletions": 39, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53607/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53607", + "files_url": "https://github.com/openclaw/openclaw/pull/66028/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66028", "labels": [ - "channel: discord", + "channel: slack", + "agents", + "maintainer", + "size: L" + ], + "merged": true, + "number": 66028, + "review_comments_count": 21, + "state": "closed", + "title": "fix(slack): align interaction auth with allowlists", + "updated_at": "2026-04-14T02:38:11Z" + }, + { + "additions": 426, + "author": "eleqtrizit", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Tighten voice-call media stream ingress accounting for trusted proxy deployments and concurrent upgrades ## Changes - Use trusted forwarding headers for pending-connection IP tracking when voice-call proxy trust is explicitly\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66027", + "created_at": "2026-04-13T15:44:16Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66027/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66027", + "labels": [ + "channel: voice-call", + "maintainer", "size: M" ], - "merged": false, - "number": 53607, - "review_comments_count": 8, - "state": "open", - "title": "fix(discord): mirror Components v2 outbound messages to session transcript", - "updated_at": "2026-03-24T20:15:30Z" + "merged": true, + "number": 66027, + "review_comments_count": 10, + "state": "closed", + "title": "fix(stream): tighten voice stream ingress guards", + "updated_at": "2026-04-13T22:51:16Z" }, { - "additions": 188, - "author": "Qinsam", - "author_association": "NONE", - "body_excerpt": "## Problem When a Mattermost bot account is disabled and then re-enabled, the existing WebSocket connection silently stops delivering events (posted, reaction, etc.) even though: - The TCP connection remains alive - WebSocket-level ping/po\u2026", - "changed_files": 4, + "additions": 111, + "author": "eleqtrizit", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Aligns QMD-backed `memory_get` reads with the canonical memory-file contract - Keeps `qmd//...` reads unchanged while rejecting plain workspace markdown paths outside the default memory set unless they are exact ac\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53604", - "created_at": "2026-03-24T10:04:00Z", - "deletions": 2, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66026", + "created_at": "2026-04-13T15:43:04Z", + "deletions": 21, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53604/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53604", + "files_url": "https://github.com/openclaw/openclaw/pull/66026/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66026", "labels": [ - "channel: mattermost", + "extensions: memory-core", + "maintainer", "size: S" ], "merged": false, - "number": 53604, + "number": 66026, "review_comments_count": 4, "state": "open", - "title": "fix(mattermost): detect stale websocket after bot disable/enable cycle", - "updated_at": "2026-03-24T20:15:30Z" + "title": "Align QMD memory reads with canonical memory paths", + "updated_at": "2026-04-13T16:45:02Z" }, { - "additions": 28, - "author": "yangcongcong-coding", - "author_association": "NONE", - "body_excerpt": "\u2026 context loops ## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: - Why it matters: - What changed: - What did NOT change (scope boundary): ## Change Type (select all) - [x] Bug fix - [ ] Feature - [ ] Refactor required fo\u2026", - "changed_files": 2, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53603", - "created_at": "2026-03-24T10:00:48Z", - "deletions": 12, + "additions": 68, + "author": "eleqtrizit", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Preserve outbound session context when write-ahead queue entries are replayed after restart - Keep queued outbound media policy evaluation aligned with the original delivery context ## Changes - Persist the optional outbound `\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66025", + "created_at": "2026-04-13T15:42:35Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53603/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53603", + "files_url": "https://github.com/openclaw/openclaw/pull/66025/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66025", "labels": [ - "agents", - "size: XS" + "maintainer", + "size: S" ], - "merged": false, - "number": 53603, - "review_comments_count": 4, - "state": "open", - "title": "fix(agents): drop thinking blocks uniformly for all models to prevent\u2026", - "updated_at": "2026-03-24T20:15:30Z" + "merged": true, + "number": 66025, + "review_comments_count": 1, + "state": "closed", + "title": "fix(outbound): replay queued session context", + "updated_at": "2026-04-13T19:30:43Z" }, { - "additions": 60, - "author": "wd041216-bit", - "author_association": "NONE", - "body_excerpt": "## Summary - stop claiming model directives immediately switched the active runtime - report model selections as saved selections in chat acknowledgements and system events - annotate `session_status` mutations so agents know the new selec\u2026", - "changed_files": 7, + "additions": 853, + "author": "eleqtrizit", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Split collect-mode followup drains when queued items cross authorization context boundaries - Keep same-context batches collected while preserving queue order ## Changes - Added an authorization-context key for queued followup\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53601", - "created_at": "2026-03-24T09:59:55Z", - "deletions": 16, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66024", + "created_at": "2026-04-13T15:42:14Z", + "deletions": 19, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53601/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53601", + "files_url": "https://github.com/openclaw/openclaw/pull/66024/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66024", "labels": [ - "agents", - "size: S", - "r: too-many-prs" + "maintainer", + "size: L" ], - "merged": false, - "number": 53601, - "review_comments_count": 0, + "merged": true, + "number": 66024, + "review_comments_count": 12, "state": "closed", - "title": "fix: confirm saved model selections conservatively", - "updated_at": "2026-03-24T10:02:34Z" + "title": "fix(queue): split collect batches by auth context", + "updated_at": "2026-04-13T19:35:40Z" }, { - "additions": 453, - "author": "SnowSky1", + "additions": 146, + "author": "Rohan5commit", "author_association": "NONE", - "body_excerpt": "## Summary - allow `/btw` side questions to proceed when the resolved provider auth mode is `aws-sdk` and no static api key is present - keep the existing `requireApiKey(...)` guard for providers that still require a concrete key - add a B\u2026", - "changed_files": 2, + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: `openclaw cron add` always generated a UUID and had no supported way to create a stable human-readable job id. - Why it matters: operators then had to look up opaque ids be\u2026", + "changed_files": 10, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53598", - "created_at": "2026-03-24T09:59:07Z", - "deletions": 112, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66023", + "created_at": "2026-04-13T15:40:30Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53598/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53598", + "files_url": "https://github.com/openclaw/openclaw/pull/66023/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66023", "labels": [ - "agents", + "app: web-ui", + "gateway", + "cli", "size: S" ], "merged": false, - "number": 53598, - "review_comments_count": 1, + "number": 66023, + "review_comments_count": 3, "state": "open", - "title": "fix(btw): allow aws-sdk auth for Bedrock side questions", - "updated_at": "2026-03-24T20:15:30Z" + "title": "feat(cron): support custom job ids on add", + "updated_at": "2026-04-13T15:46:04Z" }, { - "additions": 187, - "author": "Qinsam", - "author_association": "NONE", - "body_excerpt": "## Problem When a Mattermost bot account is disabled and then re-enabled, the existing WebSocket connection silently stops delivering events (posted, reaction, etc.) even though: - The TCP connection remains alive - WebSocket-level ping/po\u2026", - "changed_files": 4, + "additions": 240, + "author": "eleqtrizit", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Tightens local attachment canonicalization in `MediaAttachmentCache` - Rejects attachment reads when canonical path resolution fails instead of falling back to the original path ## Changes - Added a shared helper in `src/media\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53597", - "created_at": "2026-03-24T09:56:07Z", - "deletions": 2, + "comments_count": 7, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66022", + "created_at": "2026-04-13T15:40:20Z", + "deletions": 47, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53597/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53597", + "files_url": "https://github.com/openclaw/openclaw/pull/66022/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66022", "labels": [ - "channel: mattermost", - "size: S" + "maintainer", + "size: M" ], - "merged": false, - "number": 53597, - "review_comments_count": 4, + "merged": true, + "number": 66022, + "review_comments_count": 9, "state": "closed", - "title": "fix(mattermost): detect stale websocket after bot disable/enable cycle", - "updated_at": "2026-03-24T10:00:44Z" + "title": "fix(media): fail closed on attachment canonicalization", + "updated_at": "2026-04-14T02:46:21Z" }, { - "additions": 30405, - "author": "Iuriak", - "author_association": "NONE", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - **Problem**: Users lacked a high-quality web search provider specifically optimized for Chinese content and structured results within the OpenClaw ecosystem. - **Why it matters**: A\u2026", - "changed_files": 946, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53595", - "created_at": "2026-03-24T09:47:48Z", - "deletions": 40667, + "additions": 167, + "author": "eleqtrizit", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Tightens Feishu allowlist target canonicalization so user and chat identifiers are compared in their intended namespace - Preserves legacy provider-prefixed allowlist entries while keeping opaque IDs exact ## Changes - Canonic\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66021", + "created_at": "2026-04-13T15:39:08Z", + "deletions": 22, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53595/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53595", + "files_url": "https://github.com/openclaw/openclaw/pull/66021/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66021", "labels": [ - "docs", - "agents", - "size: L" + "maintainer", + "channel: feishu", + "size: S" ], - "merged": false, - "number": 53595, - "review_comments_count": 12, - "state": "open", - "title": "feat: Add Bocha Web Search provider", - "updated_at": "2026-03-24T20:15:30Z" + "merged": true, + "number": 66021, + "review_comments_count": 4, + "state": "closed", + "title": "Feishu: tighten allowlist target canonicalization", + "updated_at": "2026-04-13T22:59:07Z" }, { - "additions": 187, - "author": "Qinsam", + "additions": 22, + "author": "sqsge", "author_association": "NONE", - "body_excerpt": "## Problem When a Mattermost bot account is disabled and then re-enabled, the existing WebSocket connection silently stops delivering events (posted, reaction, etc.) even though: - The TCP connection remains alive - WebSocket-level ping/po\u2026", - "changed_files": 4, + "body_excerpt": "## Summary This PR addresses a small set of existing TypeScript type errors currently surfacing in CI on `main`. The changes are limited to: - `extensions/nextcloud-talk/src/monitor.replay.test.ts` - `extensions/whatsapp/src/inbound/monito\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53594", - "created_at": "2026-03-24T09:46:46Z", - "deletions": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66018", + "created_at": "2026-04-13T15:30:56Z", + "deletions": 13, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53594/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53594", + "files_url": "https://github.com/openclaw/openclaw/pull/66018/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66018", "labels": [ - "channel: mattermost", - "size: S" + "channel: nextcloud-talk", + "channel: whatsapp-web", + "size: XS" ], "merged": false, - "number": 53594, - "review_comments_count": 4, + "number": 66018, + "review_comments_count": 1, "state": "closed", - "title": "fix(mattermost): detect stale websocket after bot disable/enable cycle", - "updated_at": "2026-03-24T09:50:47Z" + "title": "fix(ci): resolve existing tsgo type errors", + "updated_at": "2026-04-13T15:54:06Z" }, { - "additions": 74, - "author": "RichardCao", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Image-generation provider lookup could get stuck on an active plugin registry snapshot that already had a cache key but no image-generation providers. In that state, `image_generate` would skip the config-backed plugin reload pa\u2026", - "changed_files": 2, - "cluster_id": "cluster-53450-4", - "cluster_ids": [ - "cluster-53450-4" - ], - "cluster_role": "canonical", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53593", - "created_at": "2026-03-24T09:43:22Z", - "deletions": 4, + "additions": 49, + "author": "Rohan5commit", + "author_association": "NONE", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: Exa already supports `plugins.entries.exa.config.webSearch.apiKey` at runtime, but the secret target registry and bundled public contract did not expose that path. - Why it\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66007", + "created_at": "2026-04-13T15:15:55Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53593/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53593", + "files_url": "https://github.com/openclaw/openclaw/pull/66007/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66007", "labels": [ - "size: S" + "docs", + "cli", + "size: XS" ], "merged": false, - "number": 53593, - "review_comments_count": 4, + "number": 66007, + "review_comments_count": 1, "state": "open", - "title": "fix(image-generation): reload providers when active registry is empty", - "updated_at": "2026-03-24T20:15:29Z" + "title": "feat(exa): add secretRef support for web search API key", + "updated_at": "2026-04-13T15:19:25Z" }, { - "additions": 16, - "author": "w-sss", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Fixes #53448 - llama-cpp and Ollama providers return incorrect context usage due to field name mismatch ## Root Cause OpenClaw expected only OpenAI-style field names but different providers use different formats: | Provider | In\u2026", + "additions": 10, + "author": "devsehyeon", + "author_association": "NONE", + "body_excerpt": "## Problem ACP sessions spawned with `thread=true` from a Discord guild text channel fail with `thread_binding_invalid: Session binding adapter failed to bind target conversation`. Reproduced on OpenClaw 2026.4.11 and 2026.4.12. Related: #\u2026", "changed_files": 1, - "cluster_id": "cluster-53448-5", - "cluster_ids": [ - "cluster-53448-5" - ], - "cluster_role": "member", + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53589", - "created_at": "2026-03-24T09:41:40Z", - "deletions": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66005", + "created_at": "2026-04-13T15:13:44Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53589/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53589", + "files_url": "https://github.com/openclaw/openclaw/pull/66005/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66005", "labels": [ - "agents", - "size: XS", - "r: too-many-prs" + "channel: discord", + "size: XS" ], "merged": false, - "number": 53589, + "number": 66005, "review_comments_count": 1, - "state": "closed", - "title": "fix: support llama-cpp and Ollama usage field names (#53448)", - "updated_at": "2026-03-24T11:05:24Z" + "state": "open", + "title": "fix(discord): resolve channelId for ACP thread binding from guild channels", + "updated_at": "2026-04-14T00:59:48Z" }, { - "additions": 4, - "author": "hijzy", + "additions": 72, + "author": "johnstarks03", "author_association": "NONE", - "body_excerpt": "## Summary Plugins (such as memory plugins) inject context wrapped in `` tags via `prependContext`, which gets stored as part of the user message in the session history. Currently, `processMessageText` in the WebChat UI\u2026", + "body_excerpt": "## Summary - fall back from thread-scoped ACP session aliases to the base ACP session entry when the alias record has no `acp` metadata - preserve the original thread-scoped session key in the returned metadata lookup result while reusing\u2026", "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53588", - "created_at": "2026-03-24T09:41:21Z", - "deletions": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66002", + "created_at": "2026-04-13T15:10:00Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53588/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53588", + "files_url": "https://github.com/openclaw/openclaw/pull/66002/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66002", "labels": [ - "app: web-ui", - "size: XS" + "size: S" ], "merged": false, - "number": 53588, - "review_comments_count": 0, - "state": "open", - "title": "fix: strip tags from user messages in WebChat UI", - "updated_at": "2026-03-24T20:15:30Z" + "number": 66002, + "review_comments_count": 3, + "state": "closed", + "title": "Fallback ACP metadata lookup for thread aliases", + "updated_at": "2026-04-13T15:19:31Z" }, { - "additions": 168, - "author": "FaiChou", + "additions": 119, + "author": "andydoucet", "author_association": "NONE", - "body_excerpt": "## Summary - Problem: The built-in `coding-agent` skill mixed foreground and background execution patterns, and its completion guidance depended on system-event / heartbeat delivery. - Why it matters: For background coding-agent tasks, a s\u2026", - "changed_files": 1, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "body_excerpt": "## Summary - add a real `reconcileOrphans(...)` contract to the process supervisor - reconcile active managed runs against bash session ownership - invoke reconciliation before serving process-tool requests and after registering new exec s\u2026", + "changed_files": 8, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53585", - "created_at": "2026-03-24T09:35:58Z", - "deletions": 142, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66001", + "created_at": "2026-04-13T15:08:45Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53585/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53585", + "files_url": "https://github.com/openclaw/openclaw/pull/66001/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66001", "labels": [ - "size: M" + "agents", + "size: S" ], "merged": false, - "number": 53585, - "review_comments_count": 8, + "number": 66001, + "review_comments_count": 2, "state": "open", - "title": "Skills: make coding-agent background-first with direct completion notifications", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(process): reconcile orphaned bash exec runs", + "updated_at": "2026-04-13T15:14:37Z" }, { - "additions": 1135, - "author": "yaonyan", + "additions": 56, + "author": "mushuiyu886", "author_association": "NONE", - "body_excerpt": "use acp agent as llm providers ## changes - \\`extensions/acp-provider/\\` \u2014 new plugin w/ stream bridging, provider catalog, onboard helpers, and tests - \\`src/plugins/contracts/registry.ts\\` \u2014 register the new plugin - \\`src/plugins/manife\u2026", - "changed_files": 12, + "body_excerpt": "## Summary Fixes #65643 When running CLI commands from within a gateway process that has `OPENCLAW_LAUNCHD_LABEL` set (e.g. `ai.openclaw.batch`), using `--profile interactive gateway status` would still resolve the wrong plist because `res\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53580", - "created_at": "2026-03-24T09:24:41Z", - "deletions": 9, + "conversation_url": "https://github.com/openclaw/openclaw/pull/66000", + "created_at": "2026-04-13T15:06:57Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53580/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53580", + "files_url": "https://github.com/openclaw/openclaw/pull/66000/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66000", "labels": [ - "size: L" + "cli", + "size: S" ], "merged": false, - "number": 53580, - "review_comments_count": 5, + "number": 66000, + "review_comments_count": 2, "state": "open", - "title": "WIP: feat: add acp provider plugin \u2014 use acp agent as llm providers", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(cli): clear conflicting OPENCLAW_LAUNCHD_LABEL when --profile is provided", + "updated_at": "2026-04-14T02:25:45Z" }, { "additions": 144, - "author": "Lukavyi", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Before \"CleanShot ## After \"CleanShot entry.js` order - keep `doctor --fix` aligned by reusing the install-plan path rather than adding a separa\u2026", "changed_files": 8, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53569", - "created_at": "2026-03-24T09:12:23Z", - "deletions": 22, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65984", + "created_at": "2026-04-13T14:28:50Z", + "deletions": 32, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53569/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53569", + "files_url": "https://github.com/openclaw/openclaw/pull/65984/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65984", "labels": [ + "channel: whatsapp-web", + "gateway", + "cli", + "maintainer", "size: M" ], - "merged": false, - "number": 53569, - "review_comments_count": 4, + "merged": true, + "number": 65984, + "review_comments_count": 2, "state": "closed", - "title": "fix(plugins): skip non-provider registrations during snapshot loads", - "updated_at": "2026-03-24T16:24:54Z" + "title": "fix(gateway): harden service entrypoint resolution", + "updated_at": "2026-04-13T15:19:41Z" }, { - "additions": 214, - "author": "livingghost", + "additions": 216, + "author": "yangxiyucs", "author_association": "NONE", - "body_excerpt": "## Summary - Adds `api.runtime.agent.abort` for plugins to abort running agent executions - Introduces `AgentAbortParams`/`AgentAbortResult` types in plugin SDK - Gateway implementation uses `abortChatRunById` with caller-provided sessionK\u2026", - "changed_files": 9, + "body_excerpt": "## Summary This fixes Slack inbound message normalization so user mention tokens like `<@U123>` no longer leak into `RawBody` / `BodyForAgent` when a readable name can be resolved. Changes: - normalize inbound Slack user mentions during me\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53568", - "created_at": "2026-03-24T09:11:41Z", - "deletions": 11, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65980", + "created_at": "2026-04-13T14:23:50Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53568/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53568", + "files_url": "https://github.com/openclaw/openclaw/pull/65980/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65980", "labels": [ - "docs", - "gateway", + "channel: slack", "size: M" ], "merged": false, - "number": 53568, - "review_comments_count": 8, - "state": "closed", - "title": "feat(plugins): add api.runtime.agent.abort for aborting agent runs", - "updated_at": "2026-03-24T16:24:52Z" + "number": 65980, + "review_comments_count": 1, + "state": "open", + "title": "fix(slack): render inbound user mentions in message bodies", + "updated_at": "2026-04-14T11:45:14Z" }, { - "additions": 28, - "author": "livingghost", - "author_association": "NONE", - "body_excerpt": "## Summary - Adds `runId` to agent hook context so plugins can identify the current run - Enables correlation between hook events and specific agent executions ## Test plan - [ ] Existing agent hook tests pass - [ ] runId is present in hoo\u2026", - "changed_files": 5, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53567", - "created_at": "2026-03-24T09:11:27Z", - "deletions": 0, + "additions": 114, + "author": "GaosCode", + "author_association": "CONTRIBUTOR", + "body_excerpt": "Closes #65916 ## Summary - Problem: persisted cron jobs with missing `state` or `state: null` crash `cron.start()` while reading `job.state.runningAtMs`. - Why it matters: one malformed restored/programmatic job can prevent the entire cron\u2026", + "changed_files": 7, + "cluster_id": "cluster-65003-8", + "cluster_ids": [ + "cluster-65003-8" + ], + "cluster_role": "member", + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65979", + "created_at": "2026-04-13T14:23:41Z", + "deletions": 34, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53567/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53567", + "files_url": "https://github.com/openclaw/openclaw/pull/65979/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65979", "labels": [ - "agents", - "size: XS" + "cli", + "size: S" ], "merged": false, - "number": 53567, + "number": 65979, "review_comments_count": 0, - "state": "closed", - "title": "feat(plugins): expose runId in agent hook context", - "updated_at": "2026-03-24T16:24:50Z" + "state": "open", + "title": "fix(cron): normalize missing persisted job state", + "updated_at": "2026-04-14T11:45:16Z" }, { - "additions": 28, - "author": "lupuletic", + "additions": 19, + "author": "Linux2010", "author_association": "CONTRIBUTOR", - "body_excerpt": "The cron tool is in DEFAULT_TOOL_DENY for sandbox mode, so when sandbox.mode='all' it is stripped from the agent's tool list in conversation \u2014 causing the model to hallucinate fake tool calls instead of invoking the real cron tool, which i\u2026", - "changed_files": 3, + "body_excerpt": "## Summary Fix npm security audit warnings by adding npm overrides to package.json. ## Problem Installing OpenClaw via npm shows security warnings for deprecated packages with known vulnerabilities (issue #65079). ## Root Cause The project\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53565", - "created_at": "2026-03-24T09:10:44Z", - "deletions": 8, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65977", + "created_at": "2026-04-13T14:16:01Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53565/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53565", + "files_url": "https://github.com/openclaw/openclaw/pull/65977/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65977", "labels": [ - "agents", "size: XS" ], "merged": false, - "number": 53565, - "review_comments_count": 4, + "number": 65977, + "review_comments_count": 1, "state": "open", - "title": "fix(sandbox): allow cron tool in sandbox mode (gateway-routed, not containerized)", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(security): add npm overrides for vulnerable dependencies", + "updated_at": "2026-04-14T01:54:52Z" }, { - "additions": 5, - "author": "haroldfabla2-hue", + "additions": 314, + "author": "ptahdunbar", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary\\nFixes typo in IRC docs where fenced code blocks used instead of , which breaks syntax highlighting.\\n\\n## Changes\\n- Replace 5 occurrences of ```json55` with ```json5` in \\n\\n## Issue\\nCloses #50831", - "changed_files": 1, + "body_excerpt": "## Summary - **Problem:** Telegram Bot API doesn't expose a method to look up forum topic names by `message_thread_id`. Agents only see a numeric `topic_id` (e.g. `563`) with no way to know the human-readable name. - **Why it matters:** Ag\u2026", + "changed_files": 11, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53563", - "created_at": "2026-03-24T09:10:11Z", - "deletions": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65973", + "created_at": "2026-04-13T14:04:46Z", + "deletions": 43, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53563/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53563", + "files_url": "https://github.com/openclaw/openclaw/pull/65973/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65973", "labels": [ - "docs", - "channel: irc", - "size: XS" + "channel: telegram", + "size: M" ], - "merged": false, - "number": 53563, - "review_comments_count": 0, - "state": "open", - "title": "docs(irc): fix json55 typo to json5 in fenced code blocks", - "updated_at": "2026-03-24T20:15:30Z" + "merged": true, + "number": 65973, + "review_comments_count": 4, + "state": "closed", + "title": "feat(telegram): expose forum topic names in agent context", + "updated_at": "2026-04-13T18:08:29Z" }, { - "additions": 244, - "author": "VirtueeeS", + "additions": 1886, + "author": "davynci58-byte", "author_association": "NONE", - "body_excerpt": "Keep the gateway connect handshake from tripping the generic request watchdog so callGateway retains ownership of the overall timeout budget. Update gateway tests and mocks to cover the handshake path reliably. ## Summary Describe the prob\u2026", - "changed_files": 4, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53561", - "created_at": "2026-03-24T09:07:24Z", - "deletions": 119, + "body_excerpt": "## Summary This PR adds a comprehensive Bluesky skill to OpenClaw, providing both a CLI tool for human users and an MCP (Model Context Protocol) server for AI agents. ## Features ### CLI Tool - Post creation with or without images - Post i\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65972", + "created_at": "2026-04-13T14:03:07Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53561/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53561", + "files_url": "https://github.com/openclaw/openclaw/pull/65972/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65972", "labels": [ - "gateway", - "size: M" + "size: XL" ], "merged": false, - "number": 53561, - "review_comments_count": 1, + "number": 65972, + "review_comments_count": 9, "state": "open", - "title": "fix gateway connect handshake timeout", - "updated_at": "2026-03-24T20:15:30Z" + "title": "Add Bluesky skill: CLI tool and MCP server for Bluesky social media", + "updated_at": "2026-04-14T00:10:01Z" }, { - "additions": 17, - "author": "hun9008", - "author_association": "NONE", - "body_excerpt": "## Summary - surface memory search mode in `openclaw memory status` - show fallback reason and provider-unavailable reason in CLI status output - include `providerUnavailableReason` in the `memory_search` tool response so agents can unders\u2026", - "changed_files": 2, + "additions": 273, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - AI-assisted: yes (Codex); locally verified with the commands listed below. - Problem: OpenClaw still depended on `qrcode-terminal` directly in the CLI and bundled plugins, and the shared PNG QR path deep-imported `qrcode-termi\u2026", + "changed_files": 24, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53557", - "created_at": "2026-03-24T09:00:27Z", - "deletions": 1, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65969", + "created_at": "2026-04-13T13:59:26Z", + "deletions": 160, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53557/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53557", + "files_url": "https://github.com/openclaw/openclaw/pull/65969/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65969", "labels": [ + "docs", + "channel: whatsapp-web", "cli", - "agents", - "size: XS" + "scripts", + "docker", + "maintainer", + "channel: feishu", + "size: M" ], "merged": false, - "number": 53557, + "number": 65969, "review_comments_count": 1, "state": "open", - "title": "improve memory search status visibility", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(qr): replace qrcode-terminal with qrcode-tui", + "updated_at": "2026-04-13T18:41:33Z" }, { - "additions": 4, - "author": "HCYT", + "additions": 340, + "author": "hendricius", "author_association": "NONE", - "body_excerpt": "replaces .trim() with .replace(/\\s+/g, \"\") when handling anthropic setup-token values. tokens shouldn't contain whitespace, but pasting from terminals that wrap long lines can introduce newline characters that silently truncate the token.\u2026", + "body_excerpt": "> Hi! First-time contributor here \u2014 this is my first PR into this repo, so please feel absolutely free to tear this code apart, rewrite it, or tell me the whole approach is wrong. I'm happy to rework anything, and I won't take it personall\u2026", "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53555", - "created_at": "2026-03-24T08:49:17Z", - "deletions": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65968", + "created_at": "2026-04-13T13:53:53Z", + "deletions": 35, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53555/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53555", + "files_url": "https://github.com/openclaw/openclaw/pull/65968/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65968", "labels": [ - "size: XS", - "extensions: anthropic" + "agents", + "size: M" ], "merged": false, - "number": 53555, - "review_comments_count": 0, + "number": 65968, + "review_comments_count": 3, "state": "open", - "title": "strip whitespace from setup-token input", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(agents): surface terminal assistant errors via FailoverError", + "updated_at": "2026-04-13T14:03:55Z" }, { - "additions": 207, - "author": "hongsw", - "author_association": "NONE", - "body_excerpt": "> **Depends on #53511** \u2014 the first two bug fix commits here are shared with that PR. Please merge #53511 first, then this PR can be rebased to include only the feature commits. ## Summary A collection of Talk Mode improvements focused on\u2026", - "changed_files": 8, - "cluster_id": "cluster-53510-3", - "cluster_ids": [ - "cluster-53510-3" - ], - "cluster_role": "canonical", - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53553", - "created_at": "2026-03-24T08:48:51Z", - "deletions": 16, + "additions": 891, + "author": "frankekn", + "author_association": "MEMBER", + "body_excerpt": "## What changed This PR adds a Baileys dependency patch for WhatsApp media sends. - wait for `encryptedStream()` output streams to finish before returning the encrypted temp file path - make the Baileys media upload path compatible with ge\u2026", + "changed_files": 10, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 17, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65966", + "created_at": "2026-04-13T13:45:28Z", + "deletions": 87, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53553/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53553", + "files_url": "https://github.com/openclaw/openclaw/pull/65966/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65966", "labels": [ - "app: macos", - "size: M" + "channel: whatsapp-web", + "scripts", + "maintainer", + "size: L" ], "merged": false, - "number": 53553, - "review_comments_count": 6, + "number": 65966, + "review_comments_count": 13, "state": "open", - "title": "fix(talk): Talk Mode TTS improvements for CJK languages", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(whatsapp): harden Baileys media upload hotfix", + "updated_at": "2026-04-14T09:32:19Z" }, { - "additions": 180, - "author": "letianpailove", + "additions": 10, + "author": "JQRobert", "author_association": "NONE", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: Some internal links inside docs/zh-CN/** still point to non-locale-prefixed paths (for example /channels/..., /gateway/configuration), which can lead to incorrect redirects\u2026", - "changed_files": 34, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53552", - "created_at": "2026-03-24T08:44:22Z", - "deletions": 173, + "body_excerpt": "## Problem Runtime error when session-override loads the session store: ``` Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/path/to/dist/store.runtime-eZQ7KuiZ.js' ``` ## When This Bug Is Triggered This bug is triggered when users confi\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65962", + "created_at": "2026-04-13T13:34:47Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53552/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53552", + "files_url": "https://github.com/openclaw/openclaw/pull/65962/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65962", "labels": [ - "docs", "size: XS" ], "merged": false, - "number": 53552, - "review_comments_count": 8, + "number": 65962, + "review_comments_count": 1, "state": "open", - "title": "docs(zh-CN): fix zh-CN doc redirection links", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(build): add missing config/sessions/store.runtime entry", + "updated_at": "2026-04-13T13:55:47Z" }, { - "additions": 1, - "author": "dependabot[bot]", - "author_association": "CONTRIBUTOR", - "body_excerpt": "Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7.
Release notes

Sourced from actions/upload-artifact's\u2026", - "changed_files": 1, + "additions": 54, + "author": "Zelus7", + "author_association": "NONE", + "body_excerpt": "## Summary Fix managed local browser profiles that can fail CDP readiness after launch even when Chrome is already listening on the configured DevTools port. This patch focuses on the managed `openclaw` browser lane on host Chrome/CDP. ##\u2026", + "changed_files": 6, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53551", - "created_at": "2026-03-24T08:40:23Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65960", + "created_at": "2026-04-13T13:31:36Z", + "deletions": 8, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53551/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53551", + "files_url": "https://github.com/openclaw/openclaw/pull/65960/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65960", "labels": [ - "dependencies", - "size: XS", - "github_actions" + "size: S" ], "merged": false, - "number": 53551, - "review_comments_count": 0, - "state": "open", - "title": "build(deps): bump actions/upload-artifact from 4 to 7", - "updated_at": "2026-03-24T20:15:30Z" + "number": 65960, + "review_comments_count": 2, + "state": "closed", + "title": "fix(browser): stabilize managed loopback CDP readiness", + "updated_at": "2026-04-13T16:51:23Z" }, { - "additions": 30, - "author": "Bartok9", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary MCP and LSP tools were bypassing the `tools.subagents.tools.allow/deny` policy filtering because they were added to `effectiveTools` after the `applyToolPolicyPipeline` had already run. ## Problem When spawning a sub-agent with:\u2026", - "changed_files": 2, + "additions": 346, + "author": "Robertmonkey", + "author_association": "NONE", + "body_excerpt": "## Summary AI-assisted: yes (implemented with Codex assistance, then manually reviewed and validated locally). Testing level: fully tested for the touched surface (`pnpm build`, `pnpm check`, targeted regression tests, and `codex review --\u2026", + "changed_files": 6, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53549", - "created_at": "2026-03-24T08:35:25Z", - "deletions": 10, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65957", + "created_at": "2026-04-13T13:25:37Z", + "deletions": 59, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53549/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53549", + "files_url": "https://github.com/openclaw/openclaw/pull/65957/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65957", "labels": [ - "agents", - "size: S" + "size: M" ], "merged": false, - "number": 53549, - "review_comments_count": 2, + "number": 65957, + "review_comments_count": 8, "state": "open", - "title": "fix(tools): filter MCP/LSP tools through subagent policy", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(heartbeat): preserve direct webchat relay context when target is none", + "updated_at": "2026-04-13T15:36:08Z" }, { - "additions": 17, - "author": "robinspt", - "author_association": "NONE", - "body_excerpt": "## Plugin Submission - **Plugin name**: TickFlow Assist - **npm package name**: `tickflow-assist` - **GitHub repository URL**: https://github.com/robinspt/tickflow-assist - **One-line description**: A-share watchlist analysis, monitoring,\u2026", - "changed_files": 1, + "additions": 139, + "author": "Takhoffman", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - include source provider/model fields in embedded failover decision logs - format console failover messages with `from=...` and `to=...` when the source differs from the selected target - add focused coverage for the formatter\u2026", + "changed_files": 6, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53545", - "created_at": "2026-03-24T08:27:45Z", - "deletions": 0, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65955", + "created_at": "2026-04-13T13:23:22Z", + "deletions": 6, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53545/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53545", + "files_url": "https://github.com/openclaw/openclaw/pull/65955/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65955", "labels": [ - "docs", - "size: XS" + "agents", + "maintainer", + "size: S" ], - "merged": false, - "number": 53545, - "review_comments_count": 1, - "state": "open", - "title": "docs: add tickflow-assist to community plugins", - "updated_at": "2026-03-24T20:15:30Z" + "merged": true, + "number": 65955, + "review_comments_count": 2, + "state": "closed", + "title": "Clarify failover log source and target", + "updated_at": "2026-04-13T13:56:13Z" }, { - "additions": 138, - "author": "cds-1993", - "author_association": "NONE", - "body_excerpt": "## Summary - **Problem:** When an async exec-approval command completes in webchat-only mode (`OPENCLAW_SKIP_CHANNELS=1`), `sendExecApprovalFollowup` calls the gateway `agent` method with `deliver: true, bestEffortDeliver: true` but no `ch\u2026", - "changed_files": 3, - "cluster_id": null, - "cluster_ids": [], - "cluster_role": null, + "additions": 67, + "author": "wirjo", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Problem Bedrock's `ListFoundationModels` API does not expose token limits. Discovery hardcodes `contextWindow: 32000` for every model \u2014 including Claude (1M), Nova (300K), and Llama (128K). This causes: - **Premature \"Context limit exce\u2026", + "changed_files": 1, + "cluster_id": "cluster-64901-4", + "cluster_ids": [ + "cluster-64901-4" + ], + "cluster_role": "member", "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53538", - "created_at": "2026-03-24T08:04:29Z", - "deletions": 11, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65952", + "created_at": "2026-04-13T13:16:28Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53538/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53538", + "files_url": "https://github.com/openclaw/openclaw/pull/65952/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65952", "labels": [ - "gateway", "size: S" ], "merged": false, - "number": 53538, - "review_comments_count": 3, + "number": 65952, + "review_comments_count": 4, "state": "open", - "title": "fix(gateway): skip delivery error for bestEffortDeliver when no external channels configured", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(amazon-bedrock): add known model context windows to discovery", + "updated_at": "2026-04-13T13:20:45Z" }, { - "additions": 500, - "author": "allan0509", + "additions": 32, + "author": "rogery-coder", "author_association": "NONE", - "body_excerpt": "## Summary - expand `feishu_perm` beyond basic member listing and membership changes - add owner transfer and public-sharing actions with stricter schema validation and tool config coverage - add targeted tests for the new permission-manag\u2026", - "changed_files": 6, + "body_excerpt": "## Summary - Problem: the `codex` provider catalog returned a provider with `auth: \"token\"` and `models`, but without materializing the synthetic auth marker into `apiKey`. - Why it matters: when that provider is serialized into the PI-fac\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53535", - "created_at": "2026-03-24T08:04:04Z", - "deletions": 50, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65947", + "created_at": "2026-04-13T12:33:35Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53535/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53535", + "files_url": "https://github.com/openclaw/openclaw/pull/65947/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65947", "labels": [ - "channel: feishu", - "size: L" + "size: XS", + "extensions: codex" ], "merged": false, - "number": 53535, - "review_comments_count": 8, + "number": 65947, + "review_comments_count": 1, "state": "open", - "title": "feat(feishu): expand permission management tools", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(codex): materialize synthetic auth in catalog", + "updated_at": "2026-04-14T05:01:28Z" }, { - "additions": 68, - "author": "allan0509", + "additions": 2, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Summary - throttle tiny intermediate streaming-card edits so Feishu cards update on meaningful deltas or natural text boundaries - prefer a single markdown card for long structured final replies when live streaming is unavailable - fall\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - fixes #65870 - switch Brave web-search provider docs URL to canonical tools path ## Why Metadata pointed at a legacy redirect path instead of the canonical docs location. ## Changes - `extensions/brave/src/brave-web-search-pro\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53534", - "created_at": "2026-03-24T08:04:03Z", - "deletions": 38, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65941", + "created_at": "2026-04-13T12:19:57Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53534/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53534", + "files_url": "https://github.com/openclaw/openclaw/pull/65941/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65941", "labels": [ - "channel: feishu", - "size: S" + "size: XS", + "r: too-many-prs" ], "merged": false, - "number": 53534, - "review_comments_count": 11, - "state": "open", - "title": "fix(feishu): refine streaming card delivery", - "updated_at": "2026-03-24T20:15:30Z" + "number": 65941, + "review_comments_count": 0, + "state": "closed", + "title": "fix(brave): use canonical tools docs URL in provider metadata", + "updated_at": "2026-04-14T03:33:08Z" }, { - "additions": 438, - "author": "allan0509", + "additions": 9, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Summary - surface websocket and webhook lifecycle changes through the Feishu channel health state - record connection status, reconnect attempts, last connected timestamp, last disconnect, and last error for status snapshots - add targe\u2026", - "changed_files": 7, + "body_excerpt": "## Summary - fixes #65864 - document `ZALOUSER_PROFILE` and `ZCA_PROFILE` for Zalouser profile resolution ## Why Runtime supports these env overrides, but docs did not expose them. ## Changes - `docs/channels/zalouser.md` - add profile env\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53533", - "created_at": "2026-03-24T08:04:02Z", - "deletions": 5, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65942", + "created_at": "2026-04-13T12:19:57Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53533/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53533", + "files_url": "https://github.com/openclaw/openclaw/pull/65942/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65942", "labels": [ - "channel: feishu", - "size: M" + "docs", + "channel: zalouser", + "size: XS", + "r: too-many-prs" ], "merged": false, - "number": 53533, - "review_comments_count": 9, - "state": "open", - "title": "feat(feishu): surface connection health state", - "updated_at": "2026-03-24T20:15:30Z" + "number": 65942, + "review_comments_count": 0, + "state": "closed", + "title": "docs(zalouser): document profile environment overrides", + "updated_at": "2026-04-13T12:43:08Z" }, { - "additions": 1112, - "author": "leemgs", + "additions": 32, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Summary This PR introduces support for private network access in OpenClaw's web tools and gateway, specifically enabling use cases for self-hosted tools like SearXNG. ### Key Changes - **Gateway Mode Awareness**: Added `gatewayMode` (\"l\u2026", - "changed_files": 111, + "body_excerpt": "## Summary - fixes #65868 - improve QQBot user-facing setup and network error guidance - centralize shared error guidance constants to prevent message drift ## Why Several high-frequency errors were too generic for operator troubleshooting\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 46, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53532", - "created_at": "2026-03-24T08:03:56Z", - "deletions": 205, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65943", + "created_at": "2026-04-13T12:19:57Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53532/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53532", + "files_url": "https://github.com/openclaw/openclaw/pull/65943/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65943", "labels": [ - "docs", - "channel: bluebubbles", - "channel: discord", - "channel: googlechat", - "channel: imessage", - "channel: line", - "channel: matrix", - "channel: mattermost", - "channel: msteams", - "channel: nextcloud-talk", - "channel: nostr", - "channel: signal", - "channel: slack", - "channel: telegram", - "channel: tlon", - "channel: voice-call", - "channel: whatsapp-web", - "channel: zalo", - "channel: zalouser", - "gateway", - "extensions: copilot-proxy", - "extensions: diagnostics-otel", - "extensions: llm-task", - "extensions: lobster", - "extensions: memory-core", - "extensions: memory-lancedb", - "extensions: open-prose", - "agents", - "channel: feishu", - "channel: twitch", - "channel: irc", - "size: XL", - "extensions: acpx", - "extensions: anthropic", - "extensions: openai", - "extensions: minimax", - "extensions: modelstudio", - "extensions: cloudflare-ai-gateway", - "extensions: byteplus", - "extensions: huggingface", - "extensions: kimi-coding", - "extensions: moonshot", - "extensions: synthetic", - "extensions: together", - "extensions: venice", - "extensions: volcengine", - "extensions: xiaomi", - "extensions: kilocode", - "extensions: nvidia", - "extensions: qianfan", - "extensions: vercel-ai-gateway", - "extensions: fal", - "extensions: tavily", - "extensions: duckduckgo", - "extensions: deepseek" + "size: XS", + "r: too-many-prs", + "channel: qqbot" ], "merged": false, - "number": 53532, - "review_comments_count": 6, + "number": 65943, + "review_comments_count": 1, "state": "closed", - "title": "feat: add support for private network access and SearXNG search tool", - "updated_at": "2026-03-24T08:33:18Z" + "title": "fix(qqbot): add actionable setup guidance to common errors", + "updated_at": "2026-04-13T12:43:08Z" }, { - "additions": 1567, - "author": "chunyuforka", + "additions": 13, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Summary - honor `channels..dms.*.tools` and `toolsBySender` when agent tool policy is resolved from direct-session keys - add Feishu DM schema support for `tools` and `toolsBySender` - ignore empty sender-scoped overrides and\u2026", - "changed_files": 8, + "body_excerpt": "## Summary - fixes #65866 - document MiniMax speech environment overrides used by runtime ## Why Speech runtime already reads these env values, but provider docs were missing this guidance. ## Changes - `docs/providers/minimax.md` - add `S\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 5, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53530", - "created_at": "2026-03-24T08:00:35Z", - "deletions": 47, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65944", + "created_at": "2026-04-13T12:19:57Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53530/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53530", + "files_url": "https://github.com/openclaw/openclaw/pull/65944/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65944", "labels": [ "docs", - "agents", - "channel: feishu", - "size: XL" + "size: XS", + "r: too-many-prs" ], "merged": false, - "number": 53530, - "review_comments_count": 7, - "state": "open", - "title": "fix(agents): honor direct-session tool policies", - "updated_at": "2026-03-24T20:15:30Z" + "number": 65944, + "review_comments_count": 1, + "state": "closed", + "title": "docs(minimax): add speech environment override guidance", + "updated_at": "2026-04-13T12:43:08Z" }, { - "additions": 31, - "author": "Lanfei", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - Problem: `TELEGRAM_OUTPUT` and `VOICE_BUBBLE_CHANNELS` used Telegram-centric / informal names that didn't reflect their actual purpose (selecting Opus audio format for a set of channels). - Why it matters: The set already cove\u2026", - "changed_files": 7, + "additions": 2, + "author": "Jah-yee", + "author_association": "NONE", + "body_excerpt": "## Summary - fixes #65862 - add `onboardingScopes: [\\\"text-inference\\\"]` for DuckDuckGo web-search metadata in runtime and contract layers ## Why Without onboarding scope metadata, DuckDuckGo is registered but omitted by setup flow filteri\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53529", - "created_at": "2026-03-24T07:59:22Z", - "deletions": 31, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65940", + "created_at": "2026-04-13T12:19:42Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53529/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53529", + "files_url": "https://github.com/openclaw/openclaw/pull/65940/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65940", "labels": [ - "docs", - "channel: matrix", - "channel: telegram", - "size: XS" + "size: XS", + "extensions: duckduckgo" ], - "merged": true, - "number": 53529, + "merged": false, + "number": 65940, "review_comments_count": 0, "state": "open", - "title": "chore(tts): rename VOICE_BUBBLE identifiers to OPUS and update docs", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(onboarding): include DuckDuckGo web search in setup wizard", + "updated_at": "2026-04-13T12:43:08Z" }, { - "additions": 47, - "author": "mossae", + "additions": 0, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Summary \u2022 Problem: The cron scheduler never picks up jobs written directly to jobs.json after startup \u2014 the in-memory store is only reloaded on timer ticks (up to 60s later), so external writes are silently ignored. \u2022 Why it matters: Di\u2026", - "changed_files": 4, + "body_excerpt": "## Summary - fixes #65861 - remove stale `extensions: minimax-portal-auth` entry from labeler config ## Why The rule points to a non-existent directory and can never match changed files. ## Changes - `.github/labeler.yml` - delete the `ext\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53528", - "created_at": "2026-03-24T07:55:42Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65937", + "created_at": "2026-04-13T12:19:41Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53528/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53528", + "files_url": "https://github.com/openclaw/openclaw/pull/65937/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65937", "labels": [ "size: XS" ], "merged": false, - "number": 53528, - "review_comments_count": 7, + "number": 65937, + "review_comments_count": 0, "state": "open", - "title": "feat: watch jobs.json for external changes to invalidate store cache", - "updated_at": "2026-03-24T20:15:30Z" + "title": "chore(labeler): remove dead minimax-portal-auth rule", + "updated_at": "2026-04-13T12:43:08Z" }, { - "additions": 25, - "author": "ttfnrob", + "additions": 2, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Problem OpenClaw resets all session types on a **daily** schedule by default. For DMs this makes sense \u2014 a fresh start each morning is reasonable. But for group channels and forum topics/threads, daily resets are actively harmful: - A T\u2026", + "body_excerpt": "## Summary - fixes #65863 - add missing Bedrock Mantle links to provider index pages ## Why `docs/providers/bedrock-mantle.md` exists but was not discoverable from provider index lists. ## Changes - `docs/providers/index.md` - `docs/provid\u2026", "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53526", - "created_at": "2026-03-24T07:50:55Z", - "deletions": 3, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65938", + "created_at": "2026-04-13T12:19:41Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53526/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53526", + "files_url": "https://github.com/openclaw/openclaw/pull/65938/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65938", "labels": [ + "docs", "size: XS" ], "merged": false, - "number": 53526, - "review_comments_count": 3, + "number": 65938, + "review_comments_count": 0, "state": "open", - "title": "fix: group and thread sessions default to idle reset instead of daily", - "updated_at": "2026-03-24T20:15:30Z" + "title": "docs(providers): add Bedrock Mantle to provider index pages", + "updated_at": "2026-04-13T12:43:08Z" }, { - "additions": 111, - "author": "marcustseng-agent", + "additions": 2, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Summary Extends the post-rotation startup window mechanism (from open PR #49001) to cover Discord **channel** resets in addition to Discord **thread** resets. ## Root cause After /new on a Discord channel, the session shell and reset ba\u2026", - "changed_files": 3, + "body_excerpt": "## Summary - fixes #65860 - update fallback override authorization guidance in gateway error text to point to a valid docs section - keep assertion text aligned in the corresponding unit test ## Why The previous docs guidance pointed to a\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53524", - "created_at": "2026-03-24T07:49:36Z", - "deletions": 3, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65939", + "created_at": "2026-04-13T12:19:41Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53524/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53524", + "files_url": "https://github.com/openclaw/openclaw/pull/65939/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65939", "labels": [ - "size: S" + "gateway", + "size: XS" ], "merged": false, - "number": 53524, - "review_comments_count": 6, + "number": 65939, + "review_comments_count": 0, "state": "open", - "title": "fix(session): add postRotationStartupUntilMs for Discord channel and thread resets", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(gateway): point fallback override guidance to valid docs page", + "updated_at": "2026-04-13T12:43:08Z" }, { - "additions": 303, - "author": "08820048", + "additions": 1, + "author": "finallylly", "author_association": "NONE", - "body_excerpt": "## Summary - Problem: `tools.web.fetch.maxResponseBytes` was documented and consumed at runtime, but missing from the config schema; `status --all` warned on benign loopback dual-stack gateway listeners; Synology Chat webhook probes/ACKs w\u2026", - "changed_files": 16, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "body_excerpt": "## Summary - Adds \\`Asia/Shanghai\\` to the \\`CRON_TIMEZONE_SUGGESTIONS\\` list in ui/src/ui/app-render.ts - Useful for users in the Asia region who want to use their local timezone in cron schedules ## Test plan - [x] Lint passes - [x] Type\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53522", - "created_at": "2026-03-24T07:48:22Z", - "deletions": 27, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65936", + "created_at": "2026-04-13T12:15:44Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53522/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53522", + "files_url": "https://github.com/openclaw/openclaw/pull/65936/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65936", "labels": [ - "docs", - "commands", - "size: M" + "app: web-ui", + "size: XS" ], "merged": false, - "number": 53522, - "review_comments_count": 1, + "number": 65936, + "review_comments_count": 0, "state": "open", - "title": "[codex] Fix web fetch schema, dual-stack status diagnosis, and Synology webhook ACKs", - "updated_at": "2026-03-24T20:15:30Z" + "title": "feat: add Asia/Shanghai to cron timezone suggestions", + "updated_at": "2026-04-14T09:46:22Z" }, { - "additions": 5, - "author": "ttfnrob", + "additions": 127, + "author": "bryanpearson", "author_association": "NONE", - "body_excerpt": "## Problem The `channels.telegram.groups.allowFrom.missing` CRITICAL finding shows this remediation: > Approve yourself via pairing (recommended), or set channels.telegram.groupAllowFrom (or per-group groups..allowFrom). This is unclea\u2026", - "changed_files": 1, + "body_excerpt": "## Problem When `tools.exec.security` is configured as `\"full\"` for an agent, a model-supplied `security` argument in the exec tool call was able to silently downgrade it to `\"allowlist\"`. Codex models (`gpt-5.4-mini`, `gpt-5.4`, etc.) rou\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53521", - "created_at": "2026-03-24T07:47:58Z", + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65933", + "created_at": "2026-04-13T12:11:34Z", "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53521/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53521", + "files_url": "https://github.com/openclaw/openclaw/pull/65933/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65933", "labels": [ - "size: XS" + "agents", + "size: S" ], "merged": false, - "number": 53521, + "number": 65933, "review_comments_count": 2, "state": "open", - "title": "fix: improve remediation message for Telegram group allowlist finding", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(exec): respect configured security=full as floor; model args cannot downgrade", + "updated_at": "2026-04-14T00:09:34Z" }, { - "additions": 2284, - "author": "shenli", + "additions": 2, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Summary Adds `openclaw migrate export` and `openclaw migrate import` subcommands for portable migration of OpenClaw state between devices and platforms. - **Selective export**: choose components (`--include config,credentials,workspace,\u2026", - "changed_files": 12, + "body_excerpt": "## Summary - fixes #65863 - add missing Bedrock Mantle entry in provider index docs ## Changes - `docs/providers/index.md` - `docs/providers/models.md` - add `Amazon Bedrock Mantle` links ## Validation - `pnpm check:no-conflict-markers` ##\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53520", - "created_at": "2026-03-24T07:45:19Z", - "deletions": 1, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65925", + "created_at": "2026-04-13T12:11:27Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53520/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53520", + "files_url": "https://github.com/openclaw/openclaw/pull/65925/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65925", "labels": [ - "cli", - "commands", - "agents", - "size: XL" + "docs", + "size: XS", + "r: too-many-prs" ], "merged": false, - "number": 53520, - "review_comments_count": 49, - "state": "open", - "title": "feat(cli): add migrate export/import for cross-device migration", - "updated_at": "2026-03-24T23:40:12Z" + "number": 65925, + "review_comments_count": 2, + "state": "closed", + "title": "docs(providers): add Bedrock Mantle to provider index pages", + "updated_at": "2026-04-13T12:14:35Z" }, { - "additions": 7, - "author": "kevinWangSheng", + "additions": 2, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Summary - **Problem:** When Gemini session corruption is detected, the transcript cleanup calls `resolveSessionTranscriptPath(corruptedSessionId)` without `agentId` or `topicId`, producing a wrong path for non-default agents and Telegra\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - fixes #65860 - update fallback override error guidance to point to an existing and specific runtime docs section - keep test assertion aligned with the runtime message ## Changes - `src/gateway/server-plugins.ts` - docs URL no\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53519", - "created_at": "2026-03-24T07:44:02Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65926", + "created_at": "2026-04-13T12:11:27Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53519/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53519", + "files_url": "https://github.com/openclaw/openclaw/pull/65926/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65926", "labels": [ + "gateway", "size: XS", "r: too-many-prs" ], "merged": false, - "number": 53519, + "number": 65926, "review_comments_count": 0, "state": "closed", - "title": "fix(auto-reply): pass agentId and topicId in Gemini corruption transcript cleanup", - "updated_at": "2026-03-24T07:45:29Z" + "title": "fix(gateway): point fallback override guidance to valid docs section", + "updated_at": "2026-04-13T12:12:23Z" }, { - "additions": 1, - "author": "lupuletic", - "author_association": "CONTRIBUTOR", - "body_excerpt": "Agents misread \"then restart\" in the system prompt actions list as requiring a manual restart step, leading them to brick the gateway by running exec-based restart commands. Closes #17189 Changes: - `src/agents/system-prompt.ts`: Change \"t\u2026", - "changed_files": 1, + "additions": 2, + "author": "Jah-yee", + "author_association": "NONE", + "body_excerpt": "## Summary - fixes #65870 - switch Brave provider metadata docs URL from legacy path to canonical tools path ## Changes - `extensions/brave/src/brave-web-search-provider.ts` - `extensions/brave/web-search-contract-api.ts` - set `docsUrl` t\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53518", - "created_at": "2026-03-24T07:40:20Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65927", + "created_at": "2026-04-13T12:11:27Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53518/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53518", + "files_url": "https://github.com/openclaw/openclaw/pull/65927/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65927", "labels": [ - "agents", - "size: XS" + "size: XS", + "r: too-many-prs" ], "merged": false, - "number": 53518, + "number": 65927, "review_comments_count": 0, - "state": "open", - "title": "fix(agents): clarify config.apply/patch/update auto-restarts in system prompt (#17189)", - "updated_at": "2026-03-24T20:15:30Z" + "state": "closed", + "title": "fix(brave): use canonical tools docs URL in provider metadata", + "updated_at": "2026-04-13T12:12:15Z" }, { - "additions": 28, - "author": "jbn7660-hash", + "additions": 32, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Problem Thread history/starter context was injected into the **user message body** on the first turn of a thread session. Since user messages persist in the session transcript (JSONL), this ~4K token block was re-sent to the LLM on **ev\u2026", - "changed_files": 2, + "body_excerpt": "## Summary - fixes #65868 - improve common QQBot setup/network errors with actionable guidance - centralize shared setup guidance text to avoid message drift ## Changes - `extensions/qqbot/src/errors.ts` (new) - `extensions/qqbot/src/api.t\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53515", - "created_at": "2026-03-24T07:37:12Z", - "deletions": 15, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65928", + "created_at": "2026-04-13T12:11:27Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53515/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53515", + "files_url": "https://github.com/openclaw/openclaw/pull/65928/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65928", "labels": [ - "size: XS" + "size: XS", + "r: too-many-prs", + "channel: qqbot" ], "merged": false, - "number": 53515, - "review_comments_count": 2, - "state": "open", - "title": "fix: move thread context from user message to system prompt", - "updated_at": "2026-03-24T20:15:30Z" + "number": 65928, + "review_comments_count": 1, + "state": "closed", + "title": "fix(qqbot): add actionable setup guidance to common errors", + "updated_at": "2026-04-13T12:14:30Z" }, { - "additions": 47, - "author": "hongsw", + "additions": 0, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Summary - Fix Talk Mode playing every assistant reply **twice** when using a non-ElevenLabs TTS provider - Fix CJK (Korean, Japanese, Chinese) system voice watchdog cutting off speech mid-sentence ## Changes ### 1. Prevent double TTS pl\u2026", - "changed_files": 2, - "cluster_id": "cluster-53510-3", - "cluster_ids": [ - "cluster-53510-3" - ], - "cluster_role": "member", + "body_excerpt": "## Summary - fixes #65861 - remove stale labeler rule targeting a non-existent extension path ## Changes - `.github/labeler.yml` - remove `extensions: minimax-portal-auth` block ## Validation - `pnpm check:no-conflict-markers` ## Notes - c\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53511", - "created_at": "2026-03-24T07:32:06Z", - "deletions": 13, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65929", + "created_at": "2026-04-13T12:11:27Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53511/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53511", + "files_url": "https://github.com/openclaw/openclaw/pull/65929/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65929", "labels": [ - "app: macos", - "size: S" + "size: XS", + "r: too-many-prs" ], "merged": false, - "number": 53511, - "review_comments_count": 4, - "state": "open", - "title": "fix(talk): prevent double TTS playback when system voice times out", - "updated_at": "2026-03-24T20:15:30Z" + "number": 65929, + "review_comments_count": 0, + "state": "closed", + "title": "chore(labeler): remove dead minimax-portal-auth rule", + "updated_at": "2026-04-13T12:12:41Z" }, { - "additions": 944, - "author": "Housetan218", + "additions": 2, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Summary Add a mem0 long-term memory PoC+ that is default-off and gated by feature flags. - Recall before model generation and inject a bounded memory block. - Capture after assistant response with lightweight filtering and dedupe. - Add\u2026", - "changed_files": 6, + "body_excerpt": "## Summary - fixes #65862 - include DuckDuckGo in setup by adding `onboardingScopes: [\\\"text-inference\\\"]` ## Changes - `extensions/duckduckgo/src/ddg-search-provider.ts` - `extensions/duckduckgo/web-search-contract-api.ts` - add onboardin\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53509", - "created_at": "2026-03-24T07:30:02Z", + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65930", + "created_at": "2026-04-13T12:11:27Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53509/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53509", + "files_url": "https://github.com/openclaw/openclaw/pull/65930/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65930", "labels": [ - "size: L" + "size: XS", + "r: too-many-prs", + "extensions: duckduckgo" ], "merged": false, - "number": 53509, - "review_comments_count": 5, + "number": 65930, + "review_comments_count": 0, "state": "closed", - "title": "Memory: add mem0 PoC+ behind feature flags", - "updated_at": "2026-03-24T08:09:27Z" + "title": "fix(onboarding): include DuckDuckGo web search in setup wizard", + "updated_at": "2026-04-13T12:12:34Z" }, { - "additions": 8, - "author": "wd041216-bit", + "additions": 13, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Summary - update the Ollama provider docs to reflect the broader reasoning-model heuristic families already used in code - add a note that explicit `models.providers.ollama` entries override heuristic reasoning detection - mirror the sa\u2026", - "changed_files": 2, + "body_excerpt": "## Summary - fixes #65866 - add MiniMax speech environment override docs (`MINIMAX_API_HOST`, `MINIMAX_TTS_MODEL`, `MINIMAX_TTS_VOICE_ID`) ## Changes - `docs/providers/minimax.md` - add `Speech environment overrides` section - clarify reso\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53508", - "created_at": "2026-03-24T07:29:54Z", - "deletions": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65931", + "created_at": "2026-04-13T12:11:27Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53508/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53508", + "files_url": "https://github.com/openclaw/openclaw/pull/65931/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65931", "labels": [ "docs", - "size: XS" + "size: XS", + "r: too-many-prs" ], "merged": false, - "number": 53508, - "review_comments_count": 2, - "state": "open", - "title": "docs: update ollama reasoning heuristic guidance", - "updated_at": "2026-03-24T20:15:30Z" + "number": 65931, + "review_comments_count": 0, + "state": "closed", + "title": "docs(minimax): add speech environment override guidance", + "updated_at": "2026-04-13T12:12:35Z" }, { - "additions": 12, - "author": "lupuletic", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - **Problem:** System prompt teaches agents CLI commands for gateway management and implies manual restart is needed after config changes - **Why it matters:** Agents use `exec openclaw gateway restart` (full process kill, no se\u2026", - "changed_files": 2, + "additions": 9, + "author": "Jah-yee", + "author_association": "NONE", + "body_excerpt": "## Summary - fixes #65864 - document `ZALOUSER_PROFILE` and `ZCA_PROFILE` plus resolution order ## Changes - `docs/channels/zalouser.md` - add profile environment override section under multi-account ## Validation - `pnpm check:no-conflict\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53507", - "created_at": "2026-03-24T07:29:12Z", + "conversation_url": "https://github.com/openclaw/openclaw/pull/65932", + "created_at": "2026-04-13T12:11:27Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53507/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53507", + "files_url": "https://github.com/openclaw/openclaw/pull/65932/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65932", "labels": [ - "agents", - "size: XS" + "docs", + "channel: zalouser", + "size: XS", + "r: too-many-prs" ], "merged": false, - "number": 53507, - "review_comments_count": 2, + "number": 65932, + "review_comments_count": 0, "state": "closed", - "title": "fix(agents): prevent agents from using exec for gateway management", - "updated_at": "2026-03-24T07:36:33Z" + "title": "docs(zalouser): document profile environment overrides", + "updated_at": "2026-04-13T12:12:44Z" }, { - "additions": 257, - "author": "elkimek", - "author_association": "NONE", - "body_excerpt": "## Summary - Adds client-side end-to-end encryption for Venice AI `e2ee-` prefixed models using ECDH (secp256k1) key exchange and AES-256-GCM - Wraps the stream pipeline so the agent runtime always sees plaintext while wire traffic is full\u2026", - "changed_files": 5, + "additions": 529, + "author": "dutifulbob", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - add `tools.loopDetection.unknownToolThreshold` with a default of `10` - detect repeated unavailable-tool retries even when the model changes arguments - stop the live loop by rewriting over-threshold unknown tool calls into a\u2026", + "changed_files": 14, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53505", - "created_at": "2026-03-24T07:28:39Z", - "deletions": 1, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65922", + "created_at": "2026-04-13T11:59:09Z", + "deletions": 38, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53505/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53505", + "files_url": "https://github.com/openclaw/openclaw/pull/65922/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65922", "labels": [ "agents", - "size: M", - "extensions: venice" + "size: L" ], - "merged": false, - "number": 53505, - "review_comments_count": 3, - "state": "open", - "title": "feat(venice): add E2EE support for Venice AI models", - "updated_at": "2026-03-24T20:15:30Z" + "merged": true, + "number": 65922, + "review_comments_count": 7, + "state": "closed", + "title": "fix: stop repeated unknown-tool loops", + "updated_at": "2026-04-13T15:49:39Z" }, { - "additions": 166, - "author": "wd041216-bit", + "additions": 75, + "author": "shawnduggan", "author_association": "NONE", - "body_excerpt": "## Summary - add explicit guidance for security-sensitive community plugins in the community plugins page - add a zh-CN version of the community plugins page - localize the zh-CN tools/plugin link label for the community plugins page ## Wh\u2026", - "changed_files": 4, + "body_excerpt": "## Summary This PR fixes two concrete QMD recall issues in `extensions/memory-core/src/memory/qmd-manager.ts`: 1. `probeVectorAvailability()` now respects the configured `memory.qmd.limits.timeoutMs` 2. QMD session export now excludes `.ch\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53503", - "created_at": "2026-03-24T07:28:11Z", - "deletions": 1, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65914", + "created_at": "2026-04-13T11:36:13Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53503/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53503", + "files_url": "https://github.com/openclaw/openclaw/pull/65914/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65914", "labels": [ - "docs", - "size: XS" + "extensions: memory-core", + "size: S" ], "merged": false, - "number": 53503, + "number": 65914, "review_comments_count": 1, "state": "open", - "title": "docs: clarify community plugin review guidance", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(memory): respect qmd status timeout and skip checkpoint exports", + "updated_at": "2026-04-13T11:40:55Z" }, { - "additions": 88, - "author": "wd041216-bit", - "author_association": "NONE", - "body_excerpt": "## Summary - add a concrete native plugin manifest example that bundles `skills`, exposes `version`, and uses `uiHints` - explain how these optional fields interact with `configSchema` - mirror the same guidance in the zh-CN manifest page\u2026", + "additions": 122, + "author": "tars90percent", + "author_association": "CONTRIBUTOR", + "body_excerpt": "Summary Instead of dropping attachments when the model lacks native image support, save them to disk and inject filesystem-path markers so the model can invoke the image tool. media:// URIs are replaced with real paths (the image tool reje\u2026", "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53502", - "created_at": "2026-03-24T07:25:19Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65911", + "created_at": "2026-04-13T11:28:23Z", + "deletions": 21, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53502/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53502", + "files_url": "https://github.com/openclaw/openclaw/pull/65911/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65911", "labels": [ - "docs", - "size: XS" + "gateway", + "size: S" ], "merged": false, - "number": 53502, + "number": 65911, "review_comments_count": 2, "state": "open", - "title": "docs: add plugin manifest example for bundled skills", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(gateway): save web UI images to disk for non-vision models", + "updated_at": "2026-04-13T11:36:19Z" }, { - "additions": 243, - "author": "sparkyrider", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary ### **tldr:** Cron job outputs delivered to channels were never saved in the agent's session history, so the agent couldn't recall what it sent. This fix writes delivered cron output back into the Correct transcript with proper\u2026", + "additions": 73, + "author": "fengjing1009", + "author_association": "NONE", + "body_excerpt": "## Problem When configuring a custom provider with `api: \"openai-completions\"` pointing to any non-OpenAI endpoint (DashScope Coding Plan, vLLM, local llama.cpp, etc.), the UI shows **\"0 / contextWindow tokens\"** even after chatting, becau\u2026", "changed_files": 3, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53501", - "created_at": "2026-03-24T07:22:47Z", - "deletions": 1, - "draft": true, - "files_url": "https://github.com/openclaw/openclaw/pull/53501/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53501", - "labels": [ - "size: XL" - ], - "merged": false, - "number": 53501, - "review_comments_count": 6, - "state": "open", - "title": "fix(cron): write delivered cron output into main session transcript", - "updated_at": "2026-03-24T23:46:53Z" - }, - { - "additions": 149, - "author": "webzol", - "author_association": "NONE", - "body_excerpt": "\ud83d\udcdd README \u4e2d\u6587\u7248 \u6dfb\u52a0 README_CN.md ## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: - Why it matters: - What changed: - What did NOT change (scope boundary): ## Change Type (select all) - [ ] Bug fix - [ ] Feature - [ ] Refacto\u2026", - "changed_files": 1, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53499", - "created_at": "2026-03-24T07:19:28Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65907", + "created_at": "2026-04-13T11:22:35Z", + "deletions": 26, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53499/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53499", + "files_url": "https://github.com/openclaw/openclaw/pull/65907/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65907", "labels": [ + "agents", "size: S" ], "merged": false, - "number": 53499, - "review_comments_count": 9, - "state": "open", - "title": "Create README_CN.md", - "updated_at": "2026-03-24T20:15:30Z" + "number": 65907, + "review_comments_count": 2, + "state": "closed", + "title": "fix(openai-completions): always send include_usage for streaming responses", + "updated_at": "2026-04-14T08:53:16Z" }, { - "additions": 322, - "author": "chunyuforka", + "additions": 20, + "author": "JASSBR", "author_association": "NONE", - "body_excerpt": "## Summary - add `channels.feishu.groups.*.toolsBySender` support so Feishu groups match the per-sender group tool policy capability already used by other channels - switch Feishu group tool resolution to the shared `resolveChannelGroupToo\u2026", - "changed_files": 6, + "body_excerpt": "Fixes #1920 This PR adds support for two new template variables in response prefix templates: - `{context}`: Shows context window usage in tokens (e.g., \"15k\" or \"15000\") - `{contextPercent}`: Shows context usage as a percentage (e.g., \"75\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53496", - "created_at": "2026-03-24T07:12:01Z", - "deletions": 17, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65906", + "created_at": "2026-04-13T11:18:07Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53496/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53496", + "files_url": "https://github.com/openclaw/openclaw/pull/65906/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65906", "labels": [ - "docs", - "channel: feishu", - "size: S" + "size: XS" ], "merged": false, - "number": 53496, - "review_comments_count": 0, + "number": 65906, + "review_comments_count": 2, "state": "open", - "title": "feat(feishu): support toolsBySender for group policies", - "updated_at": "2026-03-24T20:15:30Z" + "title": "feat: Add {context} and {contextPercent} template variables for response prefix", + "updated_at": "2026-04-14T11:35:06Z" }, { - "additions": 1, - "author": "litzh", - "author_association": "NONE", - "body_excerpt": "\u2026for curl|bash installer ## Summary Describe the problem and fix in 2\u20135 bullets: - Problem:docs/install/node.md only told users to initialize their version manager (fnm/nvm/mise) in ~/.zshrc or ~/.bashrc, without explaining which one matte\u2026", - "changed_files": 1, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "additions": 96, + "author": "Minijus-Sa", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: No installation guide exists for Hostinger, despite it being a supported hosting provider with both managed and VPS deployment options. - Why it matters: Users choosing Hostinger have no official docs to follow, and t\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53495", - "created_at": "2026-03-24T07:11:39Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65904", + "created_at": "2026-04-13T11:17:01Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53495/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53495", + "files_url": "https://github.com/openclaw/openclaw/pull/65904/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65904", "labels": [ "docs", "size: XS" ], - "merged": false, - "number": 53495, - "review_comments_count": 2, + "merged": true, + "number": 65904, + "review_comments_count": 3, "state": "closed", - "title": "docs(node): clarify version manager must be initialized in ~/.bashrc \u2026", - "updated_at": "2026-03-24T07:19:28Z" + "title": "feat(docs): add Hostinger installation guide and link in VPS document\u2026", + "updated_at": "2026-04-13T13:12:45Z" }, { - "additions": 16, - "author": "w-sss", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Fixes #53448 - llama-cpp and Ollama providers return incorrect context usage due to field name mismatch ## Root Cause OpenClaw expected only OpenAI-style field names (`input_tokens`, `output_tokens`) but different providers use\u2026", - "changed_files": 1, - "cluster_id": "cluster-53448-5", - "cluster_ids": [ - "cluster-53448-5" - ], - "cluster_role": "member", + "additions": 50, + "author": "yozu", + "author_association": "NONE", + "body_excerpt": "## Summary - forward `job.payload.execPolicy` from cron `agentTurn` payloads into embedded agent `execOverrides` - let isolated cron agent runs honor per-job exec security/ask overrides for exec-capable tools - add regression coverage for\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53492", - "created_at": "2026-03-24T07:08:00Z", - "deletions": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65901", + "created_at": "2026-04-13T11:02:28Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53492/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53492", + "files_url": "https://github.com/openclaw/openclaw/pull/65901/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65901", "labels": [ - "agents", - "size: XS", - "r: too-many-prs" + "size: S" ], "merged": false, - "number": 53492, - "review_comments_count": 0, - "state": "closed", - "title": "fix: support llama-cpp and Ollama usage field names (#53448)", - "updated_at": "2026-03-24T11:05:25Z" + "number": 65901, + "review_comments_count": 4, + "state": "open", + "title": "fix(cron): forward agentTurn exec policy to embedded tools", + "updated_at": "2026-04-14T11:22:47Z" }, { - "additions": 1, - "author": "QuinnH496", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary When a session is reset via `/reset`, the old session's `thinkingLevel` was copied to the new session entry. This caused models that previously had `thinkingLevel=off` to keep that stale value after reset, even when the model's\u2026", - "changed_files": 1, + "additions": 71, + "author": "ZehanXu-Doncic", + "author_association": "NONE", + "body_excerpt": "chore(labeler): remove dead rule for minimax-portal-auth The directory extensions/minimax-portal-auth does not exist in the repository, so the labeler rule can never match. Removing it keeps the labeler config clean and avoids confusion. F\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53490", - "created_at": "2026-03-24T07:07:45Z", - "deletions": 1, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65900", + "created_at": "2026-04-13T10:58:09Z", + "deletions": 443, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53490/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53490", + "files_url": "https://github.com/openclaw/openclaw/pull/65900/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65900", "labels": [ - "gateway", - "size: XS", - "r: too-many-prs" + "extensions: memory-core", + "size: L" ], "merged": false, - "number": 53490, - "review_comments_count": 1, + "number": 65900, + "review_comments_count": 2, "state": "closed", - "title": "fix(session-reset): resolve thinkingLevel from model config after /reset", - "updated_at": "2026-03-24T07:11:57Z" + "title": "Fix/labeler cleanup", + "updated_at": "2026-04-14T01:04:21Z" }, { - "additions": 10, - "author": "ttfnrob", + "additions": 427, + "author": "kryptt", "author_association": "NONE", - "body_excerpt": "## Problem Thread and topic sessions (Telegram forum topics, Slack threads, Discord threads) were inheriting the full parent group session context via `createBranchedSession()`. This caused new threads to see orphaned assistant messages an\u2026", - "changed_files": 1, + "body_excerpt": "## Summary Adds a second, longer timeout window that covers the wait for the **first token** separately from mid-stream **idle** gaps. This lets operators set a tight idle timeout for responsive fault detection without killing cold-loading\u2026", + "changed_files": 15, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53489", - "created_at": "2026-03-24T07:06:31Z", - "deletions": 8, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65898", + "created_at": "2026-04-13T10:56:24Z", + "deletions": 46, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53489/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53489", + "files_url": "https://github.com/openclaw/openclaw/pull/65898/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65898", "labels": [ - "size: XS" + "agents", + "size: M", + "extensions: codex" ], "merged": false, - "number": 53489, - "review_comments_count": 0, + "number": 65898, + "review_comments_count": 10, "state": "open", - "title": "fix: prevent context bleed in thread/topic sessions", - "updated_at": "2026-03-24T20:15:30Z" + "title": "feat(agents): split LLM timeout into first-token and idle phases", + "updated_at": "2026-04-13T17:57:08Z" }, { - "additions": 162, - "author": "emoubarak", - "author_association": "NONE", - "body_excerpt": "## Summary Fixes #53172 When serving the Control UI with a `basePath` (e.g., `/openclaw`), the gateway now injects `window.__OPENCLAW_CONTROL_UI_BASE_PATH__` into the HTML. This ensures the frontend knows the correct basePath immediately,\u2026", + "additions": 408, + "author": "frankekn", + "author_association": "MEMBER", + "body_excerpt": "## Summary - **Root cause**: `encryptedStream()` in `@whiskeysockets/baileys` calls `encFileWriteStream.end()` (non-blocking) then immediately returns `encFilePath`. The caller opens a `createReadStream` on the same path before the OS has\u2026", "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53487", - "created_at": "2026-03-24T07:04:55Z", - "deletions": 5, + "comments_count": 6, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65896", + "created_at": "2026-04-13T10:50:48Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53487/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53487", + "files_url": "https://github.com/openclaw/openclaw/pull/65896/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65896", "labels": [ - "app: web-ui", - "gateway", - "size: S" + "scripts", + "maintainer", + "size: M" ], - "merged": false, - "number": 53487, - "review_comments_count": 7, - "state": "open", - "title": "fix: inject basePath into Control UI HTML to fix logo loading", - "updated_at": "2026-03-24T20:15:30Z" + "merged": true, + "number": 65896, + "review_comments_count": 3, + "state": "closed", + "title": "fix(whatsapp): await write stream finish before returning encFilePath", + "updated_at": "2026-04-13T15:11:55Z" }, { - "additions": 46, - "author": "huangxiao2008", + "additions": 2, + "author": "Magicray1217", "author_association": "NONE", - "body_excerpt": "## Summary When a single OpenClaw gateway process binds to both IPv4 (`127.0.0.1`) and IPv6 (`::1`) loopback addresses on the same port (normal dual-stack behavior), the `openclaw status --all` command shows: ``` ! Port 18789 Port 18789 is\u2026", + "body_excerpt": "## Problem `docs/providers/index.md` and `docs/providers/models.md` list all supported providers but omit the existing `docs/providers/bedrock-mantle.md` page (Amazon Bedrock Mantle \u2014 a distinct provider from standard Bedrock Converse). ##\u2026", "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 4, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53479", - "created_at": "2026-03-24T06:58:33Z", - "deletions": 2, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65895", + "created_at": "2026-04-13T10:50:37Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53479/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53479", + "files_url": "https://github.com/openclaw/openclaw/pull/65895/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65895", "labels": [ + "docs", "size: XS" ], "merged": false, - "number": 53479, - "review_comments_count": 4, + "number": 65895, + "review_comments_count": 1, "state": "open", - "title": "fix(ports): improve dual-stack loopback detection \u2014 downgrades misleading warning to info message", - "updated_at": "2026-03-24T20:15:30Z" + "title": "docs: add Bedrock Mantle provider to index and models pages", + "updated_at": "2026-04-13T10:52:09Z" }, { - "additions": 25, - "author": "MISAKIGA", + "additions": 1, + "author": "imanewstudent", "author_association": "NONE", - "body_excerpt": "# Summary Add missing re-exports to the plugin-sdk root entry point (`openclaw/plugin-sdk`) so that external plugins can import `normalizeAccountId` and `resolvePreferredOpenClawTmpDir` without needing to know internal subpath structure. #\u2026", - "changed_files": 4, + "body_excerpt": "Added \\build: .` to the openclaw-gateway service in docker-compose.yml. This resolves the \"pull access denied\" error for users attempting a pure local deployment (e.g., using `docker compose up --build`), as it currently fails when attempt\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53478", - "created_at": "2026-03-24T06:48:01Z", + "conversation_url": "https://github.com/openclaw/openclaw/pull/65894", + "created_at": "2026-04-13T10:48:11Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53478/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53478", + "files_url": "https://github.com/openclaw/openclaw/pull/65894/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65894", "labels": [ - "docs", + "docker", "size: XS" ], "merged": false, - "number": 53478, + "number": 65894, "review_comments_count": 0, "state": "open", - "title": "fix(plugin-sdk): re-export normalizeAccountId and resolvePreferredOpenClawTmpDir", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix: add local build context to docker-compose", + "updated_at": "2026-04-13T10:49:45Z" }, { - "additions": 328, - "author": "lupuletic", - "author_association": "CONTRIBUTOR", - "body_excerpt": "Matrix upgrades can leave config in a state that blocks reinstall/repair, and plugin runtime version reporting can disagree with the actual OpenClaw version. Closes #52899 Changes: - Change plugin runtime version exposure to use the shared\u2026", - "changed_files": 10, + "additions": 10, + "author": "SimbaKingjoe", + "author_association": "NONE", + "body_excerpt": "## Summary - **Problem**: `readCodexCliAuthFile` used an empty catch block that swallowed all errors, making debugging impossible when auth file reading failed for non-ENOENT reasons. - **Why it matters**: Silent failures hide real issues\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53477", - "created_at": "2026-03-24T06:47:52Z", - "deletions": 24, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65893", + "created_at": "2026-04-13T10:48:04Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53477/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53477", + "files_url": "https://github.com/openclaw/openclaw/pull/65893/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65893", "labels": [ - "cli", - "commands", - "size: M" + "size: XS", + "extensions: openai" ], "merged": false, - "number": 53477, - "review_comments_count": 4, + "number": 65893, + "review_comments_count": 2, "state": "closed", - "title": "fix(cli): make Matrix recovery paths tolerate stale plugin config during install/doctor (#52899)", - "updated_at": "2026-03-24T07:24:10Z" + "title": "fix(openai): improve debuggability of codex cli auth file reading", + "updated_at": "2026-04-14T09:21:58Z" }, { - "additions": 44, - "author": "hun9008", + "additions": 2, + "author": "Magicray1217", "author_association": "NONE", - "body_excerpt": "## Summary - clarify that OpenClaw local memory embeddings use `node-llama-cpp` + GGUF models rather than torch / sentence-transformers - make `openclaw doctor` guidance more actionable when a configured local GGUF path is missing - explic\u2026", - "changed_files": 4, + "body_excerpt": "## Problem The `docsUrl` field in both Brave Search provider files points to the legacy path `/brave-search` instead of the canonical `/tools/brave-search`. While a redirect exists in `docs.json`, the code should reference the canonical UR\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53473", - "created_at": "2026-03-24T06:42:00Z", - "deletions": 19, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65892", + "created_at": "2026-04-13T10:47:52Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53473/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53473", + "files_url": "https://github.com/openclaw/openclaw/pull/65892/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65892", "labels": [ - "docs", - "commands", - "agents", - "size: S" + "size: XS" ], "merged": false, - "number": 53473, - "review_comments_count": 2, + "number": 65892, + "review_comments_count": 0, "state": "open", - "title": "improve local embeddings doctor guidance", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix: update Brave Search docsUrl to canonical /tools/brave-search path", + "updated_at": "2026-04-13T10:48:33Z" }, { - "additions": 91, - "author": "BunsDev", - "author_association": "MEMBER", - "body_excerpt": "## Summary Resolves the 5 remaining security findings from the [Aisle scan on PR #53411](https://github.com/openclaw/openclaw/pull/53411#issuecomment-4115479974). Finding #5 (SwiftUI homepage validation) was already fixed in #53411 via com\u2026", - "changed_files": 6, + "additions": 44, + "author": "yozu", + "author_association": "NONE", + "body_excerpt": "## Summary - ignore generated A2UI bundle adjunct files when checking run-node dirty watched trees - keep real source/config dirt triggering the existing dirty_watched_tree behavior - add a regression test covering generated A2UI bundle di\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53471", - "created_at": "2026-03-24T06:37:50Z", - "deletions": 25, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65891", + "created_at": "2026-04-13T10:43:34Z", + "deletions": 8, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53471/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53471", + "files_url": "https://github.com/openclaw/openclaw/pull/65891/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65891", "labels": [ - "app: web-ui", - "cli", + "scripts", "agents", - "maintainer", "size: S" ], "merged": false, - "number": 53471, - "review_comments_count": 10, - "state": "closed", - "title": "fix(security): resolve 5 Aisle findings from #53411", - "updated_at": "2026-03-24T07:11:14Z" + "number": 65891, + "review_comments_count": 0, + "state": "open", + "title": "fix(ci): ignore generated a2ui watch dirt", + "updated_at": "2026-04-14T09:54:11Z" }, { - "additions": 19, - "author": "w-sss", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Fixes #53448 - llama-cpp and Ollama providers return incorrect context usage due to field name mismatch ## Root Cause OpenClaw expected only OpenAI-style field names (`input_tokens`, `output_tokens`) but different providers use\u2026", + "additions": 193, + "author": "kerwin612", + "author_association": "NONE", + "body_excerpt": "## Summary - OAuth/built-in providers (e.g. `codex`) may contribute models through plugin discovery but don't carry an `apiKey` in the serialized config - The pi SDK model registry requires `apiKey` when a `models` array is present (`Provi\u2026", "changed_files": 2, - "cluster_id": "cluster-53448-5", - "cluster_ids": [ - "cluster-53448-5" - ], - "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53470", - "created_at": "2026-03-24T06:35:04Z", - "deletions": 2, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53470/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53470", - "labels": [ - "channel: whatsapp-web", - "agents", - "size: XS", - "r: too-many-prs" - ], - "merged": false, - "number": 53470, - "review_comments_count": 1, - "state": "closed", - "title": "fix: support llama-cpp and Ollama usage field names (#53448)", - "updated_at": "2026-03-24T11:05:25Z" - }, - { - "additions": 74, - "author": "Protocol-zero-0", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - carry the original embedded-run trigger into overflow compaction rebuilds - suppress heartbeat prompt reinjection when a cron-origin session compacts - add regression coverage for the compaction heartbeat policy ## Test plan -\u2026", - "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53468", - "created_at": "2026-03-24T06:32:55Z", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65889", + "created_at": "2026-04-13T10:41:48Z", "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53468/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53468", + "files_url": "https://github.com/openclaw/openclaw/pull/65889/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65889", "labels": [ "agents", "size: S" ], "merged": false, - "number": 53468, - "review_comments_count": 2, + "number": 65889, + "review_comments_count": 4, "state": "open", - "title": "fix(agents): preserve cron heartbeat suppression during compaction", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix: strip custom models from providers without apiKey in models.json", + "updated_at": "2026-04-13T11:45:04Z" }, { - "additions": 118, - "author": "hanamizuki", + "additions": 177, + "author": "nanami-he", "author_association": "NONE", - "body_excerpt": "## Summary - Add `ignoreOtherMentions` option for Slack channel config, mirroring the existing Discord guild/channel feature - When enabled, messages that mention another user (`<@U...>`) but do not explicitly mention the bot are dropped \u2014\u2026", - "changed_files": 7, + "body_excerpt": "## Summary This PR adds a small, configurable status line area to the OpenClaw TUI. When `ui.statusLine.command` is set, the TUI periodically executes the configured command, captures its ANSI stdout, and renders the result in a dedicated\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53467", - "created_at": "2026-03-24T06:32:38Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65886", + "created_at": "2026-04-13T10:35:58Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53467/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53467", + "files_url": "https://github.com/openclaw/openclaw/pull/65886/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65886", "labels": [ "docs", - "channel: slack", "size: S" ], "merged": false, - "number": 53467, - "review_comments_count": 4, + "number": 65886, + "review_comments_count": 6, "state": "open", - "title": "feat(slack): add ignoreOtherMentions channel config", - "updated_at": "2026-03-24T20:15:30Z" + "title": "feat(tui): add configurable status line command rendering", + "updated_at": "2026-04-13T12:42:43Z" }, { - "additions": 198, - "author": "lml2468", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - Fixes #53162: WhatsApp cron delivery fails with \"No active WhatsApp Web listener\" despite the channel being connected - The WhatsApp send path through `runtime-whatsapp-boundary.ts` uses Jiti to dynamically load the extension\u2026", + "additions": 3, + "author": "mushuiyu886", + "author_association": "NONE", + "body_excerpt": "## Summary Fixes #65760 ## Changes - Fix `resolveFallbackRetryPrompt()` to preserve the original user prompt instead of discarding it on model fallback retry - Prepend a retry notice `[Retry after previous model attempt failed or timed out\u2026", "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53465", - "created_at": "2026-03-24T06:31:31Z", - "deletions": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65885", + "created_at": "2026-04-13T10:34:32Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53465/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53465", + "files_url": "https://github.com/openclaw/openclaw/pull/65885/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65885", "labels": [ - "size: M" + "agents", + "size: XS" ], "merged": false, - "number": 53465, - "review_comments_count": 3, - "state": "open", - "title": "fix(whatsapp): resolve active listener in cron delivery path", - "updated_at": "2026-03-24T20:15:30Z" + "number": 65885, + "review_comments_count": 0, + "state": "closed", + "title": "fix: preserve original prompt in resolveFallbackRetryPrompt", + "updated_at": "2026-04-13T14:08:01Z" }, { - "additions": 63, - "author": "SnowSky1", + "additions": 469, + "author": "markjferguson", "author_association": "NONE", - "body_excerpt": "## Summary - Problem: openclaw gateway install snapshots user-managed config/auth env values into supervised service metadata, so editing ~/.openclaw/.env and restarting can keep using stale install-time values. - Why it matters: .env beco\u2026", - "changed_files": 2, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53462", - "created_at": "2026-03-24T06:26:17Z", - "deletions": 127, + "body_excerpt": null, + "changed_files": 13, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65884", + "created_at": "2026-04-13T10:33:53Z", + "deletions": 53, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53462/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53462", + "files_url": "https://github.com/openclaw/openclaw/pull/65884/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65884", "labels": [ + "channel: telegram", + "gateway", "commands", - "size: S" + "agents", + "size: L" ], "merged": false, - "number": 53462, - "review_comments_count": 1, + "number": 65884, + "review_comments_count": 4, "state": "open", - "title": "fix(gateway): avoid snapshotting user env into services", - "updated_at": "2026-03-24T20:15:30Z" + "title": "Honor configured exec node for remote skill probes", + "updated_at": "2026-04-13T14:20:52Z" }, { - "additions": 275, - "author": "drinkflav", - "author_association": "NONE", - "body_excerpt": "## Problem Channel plugin registrations are lost when the active plugin registry is replaced at runtime. `getChannelPlugin()` returns `undefined` after a registry swap, even though `isKnownChannel()` passes (hardcoded array) \u2014 contradictor\u2026", - "changed_files": 7, + "additions": 74, + "author": "EronFan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Fixes two related issues that block ACP agent setup: ### 1. `openclaw devices approve all` treated 'all' as a literal requestId **Root cause:** `usingImplicitSelection = !resolvedRequestId || Boolean(opts.latest)` \u2014 since 'all'\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53461", - "created_at": "2026-03-24T06:23:46Z", - "deletions": 16, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65882", + "created_at": "2026-04-13T10:31:55Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53461/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53461", + "files_url": "https://github.com/openclaw/openclaw/pull/65882/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65882", "labels": [ "gateway", - "size: M" + "cli", + "size: S", + "r: too-many-prs" ], "merged": false, - "number": 53461, + "number": 65882, "review_comments_count": 4, - "state": "open", - "title": "fix(plugins): pin channel registry to prevent announce delivery failures (#48790)", - "updated_at": "2026-03-24T20:15:30Z" + "state": "closed", + "title": "fix: handle 'all' in devices approve and auto-approve ACP pairing", + "updated_at": "2026-04-13T10:36:26Z" }, { - "additions": 79, - "author": "hun9008", + "additions": 16, + "author": "estack-takeda-yorichika", "author_association": "NONE", - "body_excerpt": "Closes #53448 ## Summary - normalize OpenAI-compatible `prompt_tokens` / `completion_tokens` usage in the WebSocket responses path - teach the shared usage normalizer about Ollama `prompt_eval_count` / `eval_count` aliases - add regression\u2026", - "changed_files": 5, - "cluster_id": "cluster-53448-5", - "cluster_ids": [ - "cluster-53448-5" - ], - "cluster_role": "canonical", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53460", - "created_at": "2026-03-24T06:22:52Z", - "deletions": 20, + "body_excerpt": "## Summary - Add optional `attachments` field to `PluginHookBeforeModelResolveEvent` so plugins can inspect file metadata (kind + mimeType) during model resolution - Thread `params.images` through `resolveHookModelSelection` as attachment\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65881", + "created_at": "2026-04-13T10:30:28Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53460/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53460", + "files_url": "https://github.com/openclaw/openclaw/pull/65881/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65881", "labels": [ "agents", - "size: S" + "size: XS" ], "merged": false, - "number": 53460, - "review_comments_count": 1, + "number": 65881, + "review_comments_count": 0, "state": "open", - "title": "fix(agents): normalize llama.cpp and Ollama context usage aliases", - "updated_at": "2026-03-24T20:15:30Z" + "title": "feat(plugins): pass attachment metadata to before_model_resolve hook", + "updated_at": "2026-04-13T10:47:36Z" }, { - "additions": 4, - "author": "nathandrewes", + "additions": 2, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Problem `EXA_API_KEY` and `FIRECRAWL_API_KEY` were hardcoded as plaintext values in `docker-compose.yml`, risking accidental exposure if the file is committed or shared. ## Fix Replaced both with `${VAR:-}` substitution \u2014 consistent wit\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - fixes #65870 - update Brave web search metadata to use canonical docs URL (`/tools/brave-search`) ## Why Brave provider metadata still pointed at the legacy path (`/brave-search`). It currently redirects, but using the canonic\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53459", - "created_at": "2026-03-24T06:22:34Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65880", + "created_at": "2026-04-13T10:30:11Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53459/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53459", + "files_url": "https://github.com/openclaw/openclaw/pull/65880/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65880", "labels": [ - "docker", - "size: XS" + "size: XS", + "r: too-many-prs" ], "merged": false, - "number": 53459, - "review_comments_count": 1, - "state": "open", - "title": "fix(config): replace hardcoded API keys with env var substitution", - "updated_at": "2026-03-24T20:15:30Z" + "number": 65880, + "review_comments_count": 0, + "state": "closed", + "title": "fix(brave): use canonical tools docs URL in provider metadata", + "updated_at": "2026-04-13T10:30:54Z" }, { - "additions": 239, - "author": "openperf", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Problem Fixes #51947 When a user has both a 1:1 DM and a channel/group conversation with the bot, proactive sends initiated from a DM session may be delivered to the **wrong conversation**. For example, an agent sending an Adaptive Card\u2026", - "changed_files": 4, + "additions": 32, + "author": "Jah-yee", + "author_association": "NONE", + "body_excerpt": "## Summary - fixes #65868 - improve QQBot configuration and token-fetch error messages with actionable setup guidance ## Why Several common QQBot errors only reported technical text like `missing appId or clientSecret`, without clear env v\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53458", - "created_at": "2026-03-24T06:17:29Z", - "deletions": 14, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65879", + "created_at": "2026-04-13T10:28:19Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53458/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53458", + "files_url": "https://github.com/openclaw/openclaw/pull/65879/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65879", "labels": [ - "channel: msteams", - "size: M" + "size: XS", + "channel: qqbot" ], "merged": false, - "number": 53458, - "review_comments_count": 2, - "state": "open", - "title": "fix(msteams): prefer personal conversation in findByUserId to prevent DM misrouting", - "updated_at": "2026-03-24T20:15:30Z" + "number": 65879, + "review_comments_count": 1, + "state": "closed", + "title": "fix(qqbot): add actionable setup guidance to common errors", + "updated_at": "2026-04-13T10:33:54Z" }, { - "additions": 67, - "author": "PitayaK", + "additions": 13, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Summary Add **TASTE.md** as a new workspace bootstrap file that records a human's taste \u2014 their preferences, sensibilities, and aesthetic judgments across all domains of life. - TASTE.md complements existing workspace files: **SOUL.md**\u2026", - "changed_files": 3, + "body_excerpt": "## Summary - fixes #65866 - document MiniMax speech-related environment overrides in provider docs ## Why The speech provider supports `MINIMAX_TTS_MODEL` and `MINIMAX_TTS_VOICE_ID`, but `docs/providers/minimax.md` did not mention them, ma\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53454", - "created_at": "2026-03-24T06:14:33Z", - "deletions": 2, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65878", + "created_at": "2026-04-13T10:26:19Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53454/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53454", + "files_url": "https://github.com/openclaw/openclaw/pull/65878/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65878", "labels": [ "docs", - "agents", - "size: XS" + "size: XS", + "r: too-many-prs" ], "merged": false, - "number": 53454, - "review_comments_count": 2, - "state": "open", - "title": "feat: add TASTE.md as a workspace bootstrap file", - "updated_at": "2026-03-24T20:15:31Z" + "number": 65878, + "review_comments_count": 0, + "state": "closed", + "title": "docs(minimax): add speech environment override guidance", + "updated_at": "2026-04-13T10:31:45Z" }, { - "additions": 31, - "author": "fangli", + "additions": 9, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Summary Fix image-generation provider lookup so it reloads plugins from config when the active plugin registry is present but has no image providers. ## What changed - remove the `getActivePluginRegistryKey()` shortcut from `src/image-g\u2026", - "changed_files": 2, - "cluster_id": "cluster-53450-4", - "cluster_ids": [ - "cluster-53450-4" - ], - "cluster_role": "member", - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53453", - "created_at": "2026-03-24T06:12:29Z", - "deletions": 2, + "body_excerpt": "## Summary - fixes #65864 - document `ZALOUSER_PROFILE` and `ZCA_PROFILE` in the Zalo Personal channel docs ## Why The runtime already reads these environment variables for profile resolution, but users had no discoverable documentation in\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65877", + "created_at": "2026-04-13T10:25:21Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53453/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53453", + "files_url": "https://github.com/openclaw/openclaw/pull/65877/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65877", "labels": [ - "size: XS" + "docs", + "channel: zalouser", + "size: XS", + "r: too-many-prs" ], "merged": false, - "number": 53453, + "number": 65877, "review_comments_count": 1, - "state": "open", - "title": "fix: Image Generation Failed: imageGenerationModel / No image-generation provider registered for google / openai, etc. Regression version 2026.3.23", - "updated_at": "2026-03-24T20:15:31Z" + "state": "closed", + "title": "docs(zalouser): document profile environment overrides", + "updated_at": "2026-04-13T10:27:48Z" }, { - "additions": 15, - "author": "choiking", + "additions": 2, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Summary - stop copying state-dir `.env` values into gateway install service metadata - keep config-provided service env values in the install plan - add coverage to ensure `.env` keys are not baked into the LaunchAgent/system service en\u2026", + "body_excerpt": "## Summary - fixes #65863 - add missing `Amazon Bedrock Mantle` links to provider index documents ## Why `docs/providers/bedrock-mantle.md` already exists as a standalone provider page, but it was missing from both provider index lists, ma\u2026", "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53452", - "created_at": "2026-03-24T06:09:39Z", - "deletions": 13, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65876", + "created_at": "2026-04-13T10:24:51Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53452/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53452", + "files_url": "https://github.com/openclaw/openclaw/pull/65876/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65876", "labels": [ - "commands", + "docs", "size: XS", "r: too-many-prs" ], "merged": false, - "number": 53452, - "review_comments_count": 2, + "number": 65876, + "review_comments_count": 0, "state": "closed", - "title": "fix(launchd): stop embedding state-dir .env vars in service metadata", - "updated_at": "2026-03-24T06:14:01Z" + "title": "docs(providers): add Bedrock Mantle to provider index pages", + "updated_at": "2026-04-13T10:30:16Z" }, { - "additions": 121, - "author": "hnshah", + "additions": 2, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "Fixes #53398 ## Problem `openclaw status --all` reports misleading `! Port already in use` warning when only a single local dual-stack gateway listener exists (same PID on both `127.0.0.1` and `::1`). This creates false alarms for u\u2026", - "changed_files": 3, + "body_excerpt": "## Summary - fixes #65862 - add `onboardingScopes: [\\\"text-inference\\\"]` to DuckDuckGo web search provider runtime and contract definitions ## Why `search-setup` filters provider choices by `onboardingScopes` and only shows entries that in\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53451", - "created_at": "2026-03-24T06:09:28Z", - "deletions": 1, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65874", + "created_at": "2026-04-13T10:23:42Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53451/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53451", + "files_url": "https://github.com/openclaw/openclaw/pull/65874/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65874", "labels": [ - "size: S" + "size: XS", + "r: too-many-prs", + "extensions: duckduckgo" ], "merged": false, - "number": 53451, - "review_comments_count": 6, - "state": "open", - "title": "fix: Suppress misleading port warning for dual-stack loopback listeners", - "updated_at": "2026-03-24T20:15:31Z" + "number": 65874, + "review_comments_count": 0, + "state": "closed", + "title": "fix(onboarding): include DuckDuckGo web search in setup wizard", + "updated_at": "2026-04-13T10:24:37Z" }, { - "additions": 113, - "author": "wongcyrus", + "additions": 0, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "Describe the problem and fix in 2\u20135 bullets: - Problem: Web Search does not support LiteLLM Vertex AI Gemini - Why it matters: we cannot cost control the web search without LiteLLM proxy - What changed: Enable endpoint settings - What did\u2026", - "changed_files": 8, + "body_excerpt": "## Summary - fixes #65861 - remove the stale `extensions: minimax-portal-auth` labeler rule from `.github/labeler.yml` ## Why The rule targets `extensions/minimax-portal-auth/**`, but that directory does not exist in this repository. The l\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53449", - "created_at": "2026-03-24T06:07:04Z", - "deletions": 6, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65873", + "created_at": "2026-04-13T10:22:16Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53449/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53449", + "files_url": "https://github.com/openclaw/openclaw/pull/65873/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65873", "labels": [ - "docs", - "size: S" + "size: XS", + "r: too-many-prs" ], "merged": false, - "number": 53449, - "review_comments_count": 6, - "state": "open", - "title": "Add support for proxying Gemini web search", - "updated_at": "2026-03-24T20:15:31Z" + "number": 65873, + "review_comments_count": 0, + "state": "closed", + "title": "chore(labeler): remove dead minimax-portal-auth rule", + "updated_at": "2026-04-13T10:23:08Z" }, { - "additions": 75, - "author": "lml2468", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## What Pass the configured `channels.discord.proxy` URL through to `@buape/carbon` `RequestClient` so that Discord REST API calls (message sends, reactions, etc.) honour the proxy setting \u2014 matching the existing gateway WebSocket proxy be\u2026", + "additions": 2, + "author": "Jah-yee", + "author_association": "NONE", + "body_excerpt": "## Summary - fixes #65860 - update fallback override authorization error guidance in `src/gateway/server-plugins.ts` to point at a valid documentation page (`/plugins/sdk-runtime`) instead of a missing anchor - update the corresponding exp\u2026", "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53446", - "created_at": "2026-03-24T06:03:17Z", - "deletions": 5, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65872", + "created_at": "2026-04-13T10:21:33Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53446/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53446", + "files_url": "https://github.com/openclaw/openclaw/pull/65872/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65872", "labels": [ - "channel: discord", - "size: S" + "gateway", + "size: XS", + "r: too-many-prs" ], "merged": false, - "number": 53446, - "review_comments_count": 2, - "state": "open", - "title": "fix(discord): pass proxy-aware fetch to RequestClient (#30221)", - "updated_at": "2026-03-24T20:15:31Z" + "number": 65872, + "review_comments_count": 0, + "state": "closed", + "title": "fix(gateway): point fallback override guidance to valid docs page", + "updated_at": "2026-04-13T10:33:47Z" }, { - "additions": 61, - "author": "dingtao416", + "additions": 0, + "author": "manhhai999", "author_association": "NONE", - "body_excerpt": "## Summary - Problem: The Control UI session list \"Updated\" column only shows relative time (e.g. \"5m ago\", \"3h ago\"), making it hard to know the actual date/time a session was last active. - Why it matters: When managing many sessions, us\u2026", - "changed_files": 3, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "body_excerpt": "## Summary This branch consolidates the changes used to harden the `v2026.4.10-safe` release line for the `2026-04-12` safe integration snapshot. It focuses on reconnect and approval-flow stability, safer chat output handling, Plans suppor\u2026", + "changed_files": 0, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53445", - "created_at": "2026-03-24T06:02:53Z", - "deletions": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65871", + "created_at": "2026-04-13T10:17:17Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53445/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53445", + "files_url": "https://github.com/openclaw/openclaw/pull/65871/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65871", "labels": [ + "docs", + "channel: telegram", + "app: macos", "app: web-ui", - "size: S" + "gateway", + "cli", + "commands", + "agents", + "size: XS" ], "merged": false, - "number": 53445, - "review_comments_count": 2, - "state": "open", - "title": "Control UI: show full date-time in session list (fixes #53088)", - "updated_at": "2026-03-24T20:15:31Z" + "number": 65871, + "review_comments_count": 4, + "state": "closed", + "title": "Integrate/release v2026.4.10 safe 20260412", + "updated_at": "2026-04-13T17:36:07Z" }, { - "additions": 105, - "author": "lml2468", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## What Bypass the heartbeat interval check in `runHeartbeatOnce()` for event-driven reasons (cron, exec-event, wake, hook). ## Why Fixes #46046 \u2014 When `agents.defaults.heartbeat.every` is set to `\"0m\"`, `sessionTarget=\"main\"` cron jobs ar\u2026", - "changed_files": 2, + "additions": 43, + "author": "fsp279469961", + "author_association": "NONE", + "body_excerpt": "## Summary - `--dangerously-force-unsafe-install` was silently dropped in dependency denylist scans (both pre-install and post-install), making it impossible to force-install plugins with blocked dependencies - Now all four scan paths (`sc\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53444", - "created_at": "2026-03-24T06:02:31Z", - "deletions": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65857", + "created_at": "2026-04-13T10:11:08Z", + "deletions": 22, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53444/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53444", + "files_url": "https://github.com/openclaw/openclaw/pull/65857/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65857", "labels": [ "size: S" ], "merged": false, - "number": 53444, + "number": 65857, "review_comments_count": 0, "state": "open", - "title": "fix(cron): allow cron-triggered heartbeat runs when heartbeat.every=\"0m\" (#46046)", - "updated_at": "2026-03-24T20:15:31Z" - }, - { - "additions": 96, - "author": "kotoyuuko", - "author_association": "NONE", - "body_excerpt": "## Summary - **Problem**: The memory-lancedb plugin failed to load in bundled/production mode with `ENOENT: no such file or directory, open '/opt/homebrew/lib/node_modules/openclaw/dist/package.json'` - **Why it matters**: The plugin was c\u2026", - "changed_files": 1, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53440", - "created_at": "2026-03-24T05:59:44Z", - "deletions": 6, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53440/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53440", - "labels": [ - "extensions: memory-lancedb", - "size: S" - ], - "merged": false, - "number": 53440, - "review_comments_count": 4, - "state": "open", - "title": "fix(memory-lancedb): resolve package.json path in bundled mode", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(security): propagate --dangerously-force-unsafe-install to dependency denylist scans", + "updated_at": "2026-04-14T01:40:24Z" }, { - "additions": 47, - "author": "dennis-lynch", - "author_association": "NONE", - "body_excerpt": "Fixes #53439 ## Problem Synology Chat bot webhooks fail silently in two ways, discovered through live debugging with a Synology NAS bot integration: **1. HEAD probe** Synology sends a `HEAD` request to the outgoing webhook URL before each\u2026", - "changed_files": 3, + "additions": 102, + "author": "EronFan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Fixes #65835. ### Root Cause `sourceConfig` in `ConfigFileSnapshot` was not being redacted by `redactConfigSnapshot()` (src/config/redact-snapshot.ts). While `config`, `parsed`, `raw`, and `resolved` were properly redacted befor\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53441", - "created_at": "2026-03-24T05:59:44Z", - "deletions": 21, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65858", + "created_at": "2026-04-13T10:11:08Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53441/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53441", + "files_url": "https://github.com/openclaw/openclaw/pull/65858/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65858", "labels": [ - "size: S" + "agents", + "size: S", + "r: too-many-prs" ], "merged": false, - "number": 53441, - "review_comments_count": 1, - "state": "open", - "title": "fix(synology-chat): handle HEAD probe and return 200 on webhook ACK", - "updated_at": "2026-03-24T20:15:31Z" + "number": 65858, + "review_comments_count": 0, + "state": "closed", + "title": "fix: redact sourceConfig in config.get responses", + "updated_at": "2026-04-13T10:16:34Z" }, { - "additions": 25, - "author": "hun9008", + "additions": 2, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## Summary - prevent long exec approval commands from widening or overflowing the Control UI modal - keep the command block bounded within the modal width - allow scrolling for unusually large approval payloads while preserving multiline r\u2026", + "body_excerpt": "## Summary - **Problem:** `runway` and `alibaba` are video-generation-only providers (no text `providers` key in their manifests, only `contracts.videoGenerationProviders`). Their `providerAuthChoices` do not set `onboardingScopes`, which\u2026", "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53437", - "created_at": "2026-03-24T05:56:03Z", - "deletions": 16, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65856", + "created_at": "2026-04-13T10:05:45Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53437/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53437", + "files_url": "https://github.com/openclaw/openclaw/pull/65856/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65856", "labels": [ - "app: web-ui", - "agents", "size: XS" ], "merged": false, - "number": 53437, + "number": 65856, "review_comments_count": 1, "state": "open", - "title": "fix(ui): prevent exec approval command overflow", - "updated_at": "2026-03-24T20:15:31Z" + "title": "fix(onboarding): set onboardingScopes for video-only providers runway and alibaba", + "updated_at": "2026-04-13T10:13:08Z" }, { - "additions": 567, - "author": "nathandrewes", + "additions": 12, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "## What this adds 5 new GitHub Actions workflows + 2 modified files to automate code quality, security, and developer experience: | File | Trigger | What it does | |------|---------|-------------| | `codex-pr-review.yml` | Every non-draft\u2026", - "changed_files": 7, + "body_excerpt": "## Summary - **Problem:** Two infra gaps found while auditing bundled channel extensions: 1. `qqbot` is a bundled channel plugin (`extensions/qqbot/`) with 3 runtime dependencies (`mpg123-decoder`, `silk-wasm`, `ws`) mirrored in the root `\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53436", - "created_at": "2026-03-24T05:55:30Z", + "conversation_url": "https://github.com/openclaw/openclaw/pull/65855", + "created_at": "2026-04-13T10:04:50Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53436/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53436", + "files_url": "https://github.com/openclaw/openclaw/pull/65855/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65855", "labels": [ - "size: L" + "size: XS" ], "merged": false, - "number": 53436, - "review_comments_count": 7, + "number": 65855, + "review_comments_count": 0, "state": "open", - "title": "ci: add AI PR review, autofix, coverage, dead-code, and bundle-size workflows", - "updated_at": "2026-03-24T20:15:31Z" + "title": "chore: add qqbot to channel contract guardrails and fix synology-chat labeler", + "updated_at": "2026-04-13T10:06:50Z" }, { - "additions": 13, - "author": "biguxuzz", + "additions": 259, + "author": "noahclanman", "author_association": "NONE", - "body_excerpt": "## Summary Adds MAX Messenger plugin to the community plugins listing (alphabetically between Lossless Claw and Opik). ## Plugin details - **npm**: `@biguxuzz/max@1.2.2` - **repo**: https://github.com/biguxuzz/openclaw-max-plugin - **Featu\u2026", + "body_excerpt": "## Bug The MiniMax music generation provider uses `DEFAULT_MINIMAX_MUSIC_MODEL = \"music-2.5+\"` but `music-2.5+` is not a valid model name in the MiniMax API. Valid models per the MiniMax API docs: - `music-2.6` (recommended, paid) - `music\u2026", "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53435", - "created_at": "2026-03-24T05:54:24Z", + "conversation_url": "https://github.com/openclaw/openclaw/pull/65853", + "created_at": "2026-04-13T10:01:58Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53435/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53435", + "files_url": "https://github.com/openclaw/openclaw/pull/65853/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65853", "labels": [ - "docs", - "size: XS" + "size: M", + "extensions: minimax" ], "merged": false, - "number": 53435, - "review_comments_count": 0, + "number": 65853, + "review_comments_count": 1, "state": "open", - "title": "Add MAX Messenger to community plugins", - "updated_at": "2026-03-24T20:15:31Z" + "title": "fix(minimax): change DEFAULT_MINIMAX_MUSIC_MODEL from 'music-2.5+' to 'music-2.6'", + "updated_at": "2026-04-13T10:04:20Z" }, { - "additions": 21, - "author": "A-AL-ANAZI", + "additions": 14, + "author": "Jah-yee", "author_association": "NONE", - "body_excerpt": "### Summary - Guard read-only process.noDeprecation assignment in update CLI (Node newer runtimes) - Make session-memory LLM slug generation opt-in to avoid tests/offline runs depending on provider creds - Ignore local/generated artifacts\u2026", - "changed_files": 2, + "body_excerpt": "## Summary Three small infra gaps found while auditing bundled channel and provider extensions: - **Problem 1:** `qqbot` is a bundled channel plugin but was missing from `package-manifest.contract.test.ts` and `channel-import-guardrails.te\u2026", + "changed_files": 5, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 4, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53434", - "created_at": "2026-03-24T05:52:11Z", - "deletions": 1, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65850", + "created_at": "2026-04-13T10:01:00Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53434/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53434", + "files_url": "https://github.com/openclaw/openclaw/pull/65850/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65850", "labels": [ "size: XS" ], "merged": false, - "number": 53434, - "review_comments_count": 0, - "state": "open", - "title": "Fix Node test flake: guard process.noDeprecation; opt-in LLM slug", - "updated_at": "2026-03-24T20:15:31Z" + "number": 65850, + "review_comments_count": 1, + "state": "closed", + "title": "chore: channel infra consistency -- qqbot guardrails, synology-chat labeler, onboarding scopes", + "updated_at": "2026-04-13T10:05:11Z" }, { - "additions": 666, - "author": "sudie-codes", + "additions": 14, + "author": "serkonyc", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - **Read message** \u2014 retrieve a single message by ID from a chat or channel via Graph API (`GET /chats/{id}/messages/{msgId}` or `/teams/{teamId}/channels/{channelId}/messages/{msgId}`) - **Pin message** \u2014 pin a message in a cha\u2026", - "changed_files": 5, + "body_excerpt": "## Summary - auto-approve local `metadata-upgrade` pairing requests for already-paired devices - keep remote metadata upgrades manual - extend handshake helper tests to cover the local regression and remote guardrail ## Problem A local Ope\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53432", - "created_at": "2026-03-24T05:51:34Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65845", + "created_at": "2026-04-13T09:55:02Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53432/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53432", + "files_url": "https://github.com/openclaw/openclaw/pull/65845/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65845", "labels": [ - "channel: msteams", - "size: L" + "gateway", + "size: XS" ], "merged": false, - "number": 53432, - "review_comments_count": 14, + "number": 65845, + "review_comments_count": 0, "state": "open", - "title": "msteams: add pin/unpin, list-pins, and read message actions", - "updated_at": "2026-03-24T20:15:31Z" + "title": "fix: auto-approve local metadata pairing upgrades", + "updated_at": "2026-04-13T09:57:21Z" }, { - "additions": 1747, - "author": "BunsDev", - "author_association": "MEMBER", - "body_excerpt": "## Summary - continue the Control UI polish pass across skills, agent workspace/files, markdown preview, usage styling, and macOS config navigation - improve skill setup/install UX and API key guidance in both the UI and CLI - update relat\u2026", - "changed_files": 42, + "additions": 323239, + "author": "mylukin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## What Add `memory/injected-lessons.md` to the **Session start** section of `docs/reference/AGENTS.default.md`. ## Why PR #24 updated `docs/reference/templates/AGENTS.md` to include injected-lessons.md in the startup reading list. `docs/r\u2026", + "changed_files": 350, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53427", - "created_at": "2026-03-24T05:49:05Z", - "deletions": 655, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65842", + "created_at": "2026-04-13T09:45:24Z", + "deletions": 1287, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53427/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53427", + "files_url": "https://github.com/openclaw/openclaw/pull/65842/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65842", "labels": [ - "app: macos", + "docs", + "channel: discord", + "channel: mattermost", + "channel: msteams", + "channel: telegram", "app: web-ui", - "cli", - "maintainer", - "size: XL" + "gateway", + "extensions: memory-core", + "scripts", + "commands", + "agents", + "channel: feishu", + "size: XL", + "extensions: anthropic", + "extensions: openai", + "extensions: memory-wiki" ], "merged": false, - "number": 53427, - "review_comments_count": 4, + "number": 65842, + "review_comments_count": 2, "state": "closed", - "title": "feat(ui): Control UI polish \u2014 skills revamp, markdown preview, agent workspace, macOS config tree", - "updated_at": "2026-03-24T06:01:53Z" + "title": "docs(lesson-engine): sync injected-lessons.md to AGENTS.default.md session start", + "updated_at": "2026-04-13T09:51:35Z" }, { - "additions": 3, - "author": "w-sss", + "additions": 148, + "author": "steipete", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Fixes #53247 - WhatsApp plugin crashes agent in v2026.3.23 with missing light-runtime-api ## Root Cause The whatsapp extension was missing the `bundle.stageRuntimeDependencies` configuration that other channel extensions (telegr\u2026", - "changed_files": 1, - "cluster_id": "cluster-53247-4", - "cluster_ids": [ - "cluster-53247-4" - ], - "cluster_role": "member", - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53423", - "created_at": "2026-03-24T05:38:07Z", - "deletions": 0, + "body_excerpt": "## Summary - validate MSteams conversation member roles and escape Graph OData user ids - restore default private/reserved IP DNS blocking for direct attachment fetches - open delegated OAuth URLs with spawn argv instead of shell exec @Bra\u2026", + "changed_files": 10, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65841", + "created_at": "2026-04-13T09:42:46Z", + "deletions": 12, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53423/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53423", + "files_url": "https://github.com/openclaw/openclaw/pull/65841/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65841", "labels": [ - "channel: whatsapp-web", - "size: XS" + "channel: msteams", + "maintainer", + "size: S" ], "merged": false, - "number": 53423, + "number": 65841, "review_comments_count": 0, - "state": "closed", - "title": "fix(whatsapp): add bundle.stageRuntimeDependencies to fix #53247", - "updated_at": "2026-03-24T10:42:42Z" + "state": "open", + "title": "fix(msteams): harden security-sensitive flows", + "updated_at": "2026-04-13T09:51:10Z" }, { - "additions": 554, - "author": "Ravenwing9029", + "additions": 81, + "author": "sagarpswc", "author_association": "NONE", - "body_excerpt": "## Summary - Adds a new `smart-router` plugin that classifies prompt complexity using 6-dimension scoring (reasoning depth, code complexity, multi-step planning, technical terms, token estimate, simple indicators) - Routes requests to user\u2026", - "changed_files": 8, + "body_excerpt": "Fix an image tool bug where custom providers defined in models.json were not resolved by the image tool's ModelRegistry lookup. The fix adds a registry fallback for custom providers when find() returns nothing and updates the image tool to\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53421", - "created_at": "2026-03-24T05:36:58Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65837", + "created_at": "2026-04-13T09:31:42Z", + "deletions": 8, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53421/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53421", + "files_url": "https://github.com/openclaw/openclaw/pull/65837/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65837", "labels": [ - "size: L" + "agents", + "size: S" ], "merged": false, - "number": 53421, + "number": 65837, "review_comments_count": 4, "state": "open", - "title": "feat(plugins): add smart-router plugin for intelligent model routing", - "updated_at": "2026-03-24T20:15:31Z" + "title": "Fix image tool custom provider resolution for models.json", + "updated_at": "2026-04-13T09:43:08Z" }, { - "additions": 4, - "author": "SeashoreShi", + "additions": 11, + "author": "KnightNiwrem", "author_association": "NONE", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: - Why it matters: - What changed: - What did NOT change (scope boundary): ## Change Type (select all) - [ ] Bug fix - [ ] Feature - [ ] Refactor required for the fix - [ ]\u2026", + "body_excerpt": "## Summary - Problem: Exa exposes `plugins.entries.exa.config.webSearch.apiKey`, but the canonical SecretRef target registry omitted that path. - Why it matters: users cannot target Exa's web-search API key through the SecretRef contract s\u2026", "changed_files": 1, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53420", - "created_at": "2026-03-24T05:36:53Z", + "conversation_url": "https://github.com/openclaw/openclaw/pull/65833", + "created_at": "2026-04-13T09:16:01Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53420/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53420", + "files_url": "https://github.com/openclaw/openclaw/pull/65833/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65833", "labels": [ "size: XS" ], "merged": false, - "number": 53420, + "number": 65833, "review_comments_count": 1, "state": "open", - "title": "fix(media): normalize redirected media file mode after rename", - "updated_at": "2026-03-24T20:15:31Z" + "title": "Secrets: add Exa web-search SecretRef target", + "updated_at": "2026-04-13T09:21:15Z" }, { - "additions": 104, - "author": "coygeek", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Fix Summary Authenticated clients with only `operator.read` scope can call `config.get` and receive the full, unredacted `browser.cdpUrl` and `browser.profiles.*.cdpUrl` values, including embedded query tokens (e.g., Browserless `?token\u2026", - "changed_files": 9, + "additions": 16, + "author": "central-hd-ytakeda", + "author_association": "NONE", + "body_excerpt": "## Summary - Add optional `attachments` field to `PluginHookBeforeModelResolveEvent` so plugins can inspect file metadata (kind + mimeType) during model resolution - Thread `params.images` through `resolveHookModelSelection` as attachment\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53418", - "created_at": "2026-03-24T05:27:12Z", - "deletions": 13, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65831", + "created_at": "2026-04-13T09:12:24Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53418/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53418", + "files_url": "https://github.com/openclaw/openclaw/pull/65831/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65831", "labels": [ - "docs", - "app: web-ui", - "size: S" + "agents", + "size: XS" ], "merged": false, - "number": 53418, + "number": 65831, "review_comments_count": 2, "state": "open", - "title": "fix(config): redact browser CDP URLs in config snapshots", - "updated_at": "2026-03-24T20:15:31Z" + "title": "feat(plugins): pass attachment metadata to before_model_resolve hook", + "updated_at": "2026-04-13T10:30:11Z" }, { - "additions": 41, - "author": "coygeek", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Fix Summary When Feishu is configured in webhook mode, `channels.feishu.encryptKey` survives config redaction and is returned in plaintext to any `operator.read` client via `config.get`. The leaked key is the sole authenticator for inbo\u2026", - "changed_files": 4, + "additions": 76, + "author": "rogery-coder", + "author_association": "NONE", + "body_excerpt": "## Summary - Problem: `volcengine-plan/ark-code-latest` could fail at runtime with `Unknown model` because the generated PI-facing `models.json` included an invalid `codex` provider entry. - Why it matters: once PI rejected the generated `\u2026", + "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53414", - "created_at": "2026-03-24T05:25:24Z", - "deletions": 11, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65830", + "created_at": "2026-04-13T09:10:32Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53414/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53414", + "files_url": "https://github.com/openclaw/openclaw/pull/65830/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65830", "labels": [ + "agents", "size: S" ], "merged": false, - "number": 53414, - "review_comments_count": 0, - "state": "open", - "title": "fix(config): redact Feishu encryptKey in config snapshots", - "updated_at": "2026-03-24T20:15:31Z" + "number": 65830, + "review_comments_count": 1, + "state": "closed", + "title": "fix: skip invalid PI custom model providers", + "updated_at": "2026-04-13T10:11:06Z" }, { - "additions": 1521, - "author": "BunsDev", + "additions": 45, + "author": "Jah-yee", + "author_association": "NONE", + "body_excerpt": "## Summary - **Problem:** The MiniMax web search provider only listed `MINIMAX_CODE_PLAN_KEY` and `MINIMAX_CODING_API_KEY` in its `envVars` metadata. Most MiniMax users set the standard `MINIMAX_API_KEY`, so OpenClaw's auto-detection silen\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65828", + "created_at": "2026-04-13T09:06:43Z", + "deletions": 27, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65828/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65828", + "labels": [ + "docs", + "size: XS", + "extensions: minimax" + ], + "merged": false, + "number": 65828, + "review_comments_count": 1, + "state": "open", + "title": "fix(minimax): include MINIMAX_API_KEY in web search auto-detection and onboarding", + "updated_at": "2026-04-13T09:35:58Z" + }, + { + "additions": 1, + "author": "sliverp", "author_association": "MEMBER", - "body_excerpt": "## Summary Broad UI polish pass across the Control UI, macOS app, bundled skills, and CLI skills output. Adds rich markdown preview for agent workspace files, a fully redesigned skills management view, and improved config navigation on mac\u2026", - "changed_files": 40, + "body_excerpt": "## Summary Auto-detected and fixed test failure from full test suite run. ### Issue Found and Fixed **1 test failure in `src/gateway/server-methods/server-methods.test.ts`** - **Test**: `timestampOptsFromConfig > falls back gracefully with\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 4, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53411", - "created_at": "2026-03-24T05:22:23Z", - "deletions": 649, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65827", + "created_at": "2026-04-13T09:02:37Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53411/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53411", + "files_url": "https://github.com/openclaw/openclaw/pull/65827/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65827", "labels": [ - "app: macos", - "app: web-ui", - "cli", + "gateway", "maintainer", - "size: XL" + "size: XS" ], "merged": false, - "number": 53411, - "review_comments_count": 8, + "number": 65827, + "review_comments_count": 0, "state": "closed", - "title": "feat(ui): Control UI polish \u2014 skills revamp, markdown preview, agent workspace, macOS config tree", - "updated_at": "2026-03-24T06:38:29Z" + "title": "fix: align timestampOptsFromConfig test with resolveUserTimezone UTC fallback", + "updated_at": "2026-04-14T02:07:45Z" }, { - "additions": 32, - "author": "cgdusek", + "additions": 28, + "author": "dependabot[bot]", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary - `compareSemverStrings()` treated purely numeric suffixes (e.g. `-1` in `2026.3.23-1`) as semver pre-releases, ranking them below the base version - This caused a false \"Update available\" banner when the installed version was a\u2026", - "changed_files": 2, + "body_excerpt": "Bumps the android-deps group with 11 updates in the /apps/android directory: | Package | From | To | | --- | --- | --- | | org.jlleitschuh.gradle.ktlint | `14.0.1` | `14.2.0` | | [org.jetbrains.kotlin.plugin.compose](https://github.com/Jet\u2026", + "changed_files": 7, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53410", - "created_at": "2026-03-24T05:21:20Z", - "deletions": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65826", + "created_at": "2026-04-13T08:58:40Z", + "deletions": 28, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53410/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53410", + "files_url": "https://github.com/openclaw/openclaw/pull/65826/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65826", "labels": [ - "size: XS" + "dependencies", + "app: android", + "size: S", + "java" ], "merged": false, - "number": 53410, + "number": 65826, "review_comments_count": 0, "state": "open", - "title": "fix(update): treat numeric -N suffix as calver revision, not pre-release", - "updated_at": "2026-03-24T20:15:31Z" + "title": "build(deps): bump the android-deps group across 1 directory with 16 updates", + "updated_at": "2026-04-14T08:43:31Z" }, { - "additions": 19, - "author": "w-sss", + "additions": 153, + "author": "welfo-beo", "author_association": "CONTRIBUTOR", - "body_excerpt": "## \ud83d\udc1b \u4fee\u590d\u95ee\u9898 \u4fee\u590d #53335 - /new \u547d\u4ee4\u9519\u8bef\u5730 spawn subagent \u800c\u4e0d\u662f\u91cd\u7f6e session ## \ud83d\udd27 \u4fee\u590d\u5185\u5bb9 \u5f53 /new \u547d\u4ee4\u6ca1\u6709 ACP binding \u65f6\uff1a - \u89e6\u53d1 session reset hook - \u8fd4\u56de\u6210\u529f\u6d88\u606f\u800c\u4e0d\u662f\u7ee7\u7eed\u5904\u7406 - \u9632\u6b62\u610f\u5916 spawn subagent ## \u2705 \u9a8c\u8bc1 - \u2705 pnpm run lint \u901a\u8fc7 - \u2705 \u4fee\u590d\u524d\uff1a/new \u4f1a spawn subagent - \u2705 \u4fee\u590d\u540e\uff1a/new \u91cd\u7f6e ses\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - thread a shared `realpathCache` through plugin discovery helpers so one discovery pass can reuse `safeRealpathSync()` results - cache the canonical resolved path in `safeRealpathSync()` so symlinked or canonicalized package ro\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53407", - "created_at": "2026-03-24T05:19:41Z", - "deletions": 0, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65825", + "created_at": "2026-04-13T08:58:16Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53407/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53407", + "files_url": "https://github.com/openclaw/openclaw/pull/65825/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65825", "labels": [ - "size: XS", - "r: too-many-prs" + "size: S" + ], + "merged": false, + "number": 65825, + "review_comments_count": 4, + "state": "open", + "title": "fix(plugins): reuse realpath cache during discovery", + "updated_at": "2026-04-13T17:11:13Z" + }, + { + "additions": 22, + "author": "Bartok9", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary The Slack setup wizard (`openclaw channels add` \u2192 Slack) displays the app manifest JSON inside a `@clack/prompts` `note()` box. This wraps every line in ASCII box-drawing characters (`\u2502`), making the JSON invalid when users copy\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65809", + "created_at": "2026-04-13T08:37:29Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65809/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65809", + "labels": [ + "channel: slack", + "size: XS" ], "merged": false, - "number": 53407, + "number": 65809, "review_comments_count": 1, + "state": "open", + "title": "fix(slack): print manifest JSON outside framed note for easy copying", + "updated_at": "2026-04-13T08:41:54Z" + }, + { + "additions": 387, + "author": "dutifulbob", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - move the shared `buildStatusText` implementation out of `auto-reply/reply/commands-status.ts` into a neutral internal `src/status/` module - keep the `session_status` tool on a local runtime shim instead of importing `auto-rep\u2026", + "changed_files": 13, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65807", + "created_at": "2026-04-13T08:33:59Z", + "deletions": 403, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65807/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65807", + "labels": [ + "agents", + "size: L" + ], + "merged": true, + "number": 65807, + "review_comments_count": 0, "state": "closed", - "title": "fix: /new command should reset session instead of spawning subagent (#53335)", - "updated_at": "2026-03-24T11:05:24Z" + "title": "fix: extract shared session status runtime", + "updated_at": "2026-04-13T09:51:48Z" }, { - "additions": 32, - "author": "erhhung", - "author_association": "NONE", - "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: Documented [**Web Fetch** config setting, `maxResponseBytes`](https://docs.openclaw.ai/tools/web-fetch#config), is not permitted in the config file because schema validatio\u2026", - "changed_files": 7, - "cluster_id": "cluster-53248-81", + "additions": 93, + "author": "frankekn", + "author_association": "MEMBER", + "body_excerpt": "## Summary - suppress LM Studio runtime profile/env API keys when an `Authorization` header is configured - normalize bare `host:port` LM Studio base URLs to fetchable `http://` endpoints - add focused regression tests for both follow-up b\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65806", + "created_at": "2026-04-13T08:33:31Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65806/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65806", + "labels": [ + "maintainer", + "size: S", + "extensions: lmstudio" + ], + "merged": true, + "number": 65806, + "review_comments_count": 1, + "state": "closed", + "title": "[codex] Fix LM Studio header-auth follow-ups", + "updated_at": "2026-04-13T09:52:01Z" + }, + { + "additions": 18, + "author": "Bartok9", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary When a model call fails and triggers a fallback retry on a session with existing history, `resolveFallbackRetryPrompt()` replaces the original user prompt with the generic string `\"Continue where you left off. The previous model\u2026", + "changed_files": 2, + "cluster_id": "cluster-65760-4", "cluster_ids": [ - "cluster-53248-81" + "cluster-65760-4" ], "cluster_role": "member", "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53401", - "created_at": "2026-03-24T05:09:16Z", - "deletions": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65805", + "created_at": "2026-04-13T08:32:55Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53401/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53401", + "files_url": "https://github.com/openclaw/openclaw/pull/65805/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65805", "labels": [ + "agents", "size: XS" ], "merged": false, - "number": 53401, - "review_comments_count": 1, + "number": 65805, + "review_comments_count": 0, "state": "open", - "title": "fix(schema): tools.web.fetch.maxResponseBytes #53397", - "updated_at": "2026-03-24T20:15:31Z" + "title": "fix(fallback): preserve original prompt in resolveFallbackRetryPrompt", + "updated_at": "2026-04-13T08:34:42Z" }, { - "additions": 16, - "author": "srxly888-creator", + "additions": 12, + "author": "wyyis", "author_association": "NONE", - "body_excerpt": "## Description / \u63cf\u8ff0 Add 5 missing fields in the Chinese translation file. \u8865\u5145\u4e2d\u6587\u7ffb\u8bd1\u6587\u4ef6\u4e2d\u7f3a\u5931\u7684 5 \u4e2a\u5b57\u6bb5\u3002 ## Changes / \u6539\u52a8\u5185\u5bb9 - `common.theme` = \"\u4e3b\u9898\" (Theme) - `chat.toolCallsToggle` = \"\u5207\u6362\u5de5\u5177\u8c03\u7528\u548c\u5de5\u5177\u7ed3\u679c\" (Toggle tool calls and tool results) - `cron.jobs.sche\u2026", - "changed_files": 2, + "body_excerpt": "## Summary - `createSubsystemLogger()` caches a `fileLogger` child on first use, but never invalidates it when the root logger rebuilds at day boundaries (`defaultRollingPathForToday`). - After midnight, all file log output from long-lived\u2026", + "changed_files": 1, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53400", - "created_at": "2026-03-24T05:06:16Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65804", + "created_at": "2026-04-13T08:29:43Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53400/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53400", + "files_url": "https://github.com/openclaw/openclaw/pull/65804/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65804", "labels": [ - "channel: telegram", - "app: web-ui", "size: XS" ], "merged": false, - "number": 53400, + "number": 65804, "review_comments_count": 2, "state": "open", - "title": "i18n(zh-CN): add 5 missing translations / \u8865\u5145\u7f3a\u5931\u7684 5 \u4e2a\u7ffb\u8bd1", - "updated_at": "2026-03-24T23:16:23Z" + "title": "fix: refresh SubsystemLogger file child on rolling log rotation", + "updated_at": "2026-04-13T09:29:46Z" }, { - "additions": 23007, - "author": "artemgetmann", + "additions": 11, + "author": "reopenpilot", "author_association": "NONE", - "body_excerpt": "## Summary - Problem: our `main` fork was missing recent upstream browser fixes for existing-session readiness, non-default Chromium profile targeting, and launch behavior. - Why it matters: Chrome MCP attach was still more fragile than up\u2026", - "changed_files": 327, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53396", - "created_at": "2026-03-24T05:01:29Z", - "deletions": 1863, + "body_excerpt": "When a provider has `auth:'token'` (e.g. codex-cli with OAuth), its credentials come from external CLI sync, not a static apiKey. But pi-coding-agent's `ModelRegistry.validateConfig()` requires apiKey when custom models are defined, causin\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65803", + "created_at": "2026-04-13T08:28:43Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53396/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53396", + "files_url": "https://github.com/openclaw/openclaw/pull/65803/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65803", "labels": [ - "docs", - "channel: telegram", - "app: macos", - "gateway", - "extensions: memory-core", - "cli", - "scripts", - "commands", "agents", - "size: XL" + "size: XS" ], "merged": false, - "number": 53396, - "review_comments_count": 1, - "state": "closed", - "title": "fix(browser): port upstream existing-session readiness and profile targeting [AI-assisted]", - "updated_at": "2026-03-24T05:07:55Z" + "number": 65803, + "review_comments_count": 4, + "state": "open", + "title": "fix: media understanding silently fails when Codex CLI is authorized", + "updated_at": "2026-04-13T19:17:50Z" }, { - "additions": 2, - "author": "drvoss", - "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Remove the deprecated `wide_screen_mode` field from schema 2.0 card configs in the Feishu interactive card UX functions, replacing it with `enable_forward`. ## Changes - `createApprovalCard` in `card-ux-approval.ts`: replace `co\u2026", + "additions": 23, + "author": "songbing0632-code", + "author_association": "NONE", + "body_excerpt": "## Summary - stop Feishu WebSocket from inheriting ambient proxy env by default - add an explicit `OPENCLAW_FEISHU_WS_USE_PROXY=1` opt-in for proxy usage - update Feishu WS proxy tests to cover the new default and opt-in behavior ## Why Fe\u2026", "changed_files": 2, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53395", - "created_at": "2026-03-24T05:01:23Z", - "deletions": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65802", + "created_at": "2026-04-13T08:24:33Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53395/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53395", + "files_url": "https://github.com/openclaw/openclaw/pull/65802/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65802", "labels": [ "channel: feishu", "size: XS" ], "merged": false, - "number": 53395, + "number": 65802, "review_comments_count": 0, "state": "open", - "title": "feishu: fix schema 2.0 card config in interactive card UX functions", - "updated_at": "2026-03-24T20:15:31Z" + "title": "fix(feishu): disable ambient proxy inheritance for websocket by default", + "updated_at": "2026-04-13T08:26:22Z" }, { - "additions": 2, - "author": "drvoss", + "additions": 94, + "author": "leonardsellem", "author_association": "CONTRIBUTOR", - "body_excerpt": "## Summary Replace invalid `wide_screen_mode` with `enable_forward` in schema 2.0 Feishu card configs so cards deliver without error 230099. ## Changes - `buildMarkdownCard`: replace `config: { wide_screen_mode: true }` with `config: { ena\u2026", - "changed_files": 1, + "body_excerpt": "## Summary - Problem: even after `#65240` and `#65012`, `openclaw wiki` could still boot without runtime plugin loading because `src/cli/command-catalog.ts` had no `[\"wiki\"]` policy entry, so wiki commands inherited `loadPlugins: \"never\"`.\u2026", + "changed_files": 4, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53394", - "created_at": "2026-03-24T04:59:29Z", - "deletions": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65800", + "created_at": "2026-04-13T08:21:01Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53394/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53394", + "files_url": "https://github.com/openclaw/openclaw/pull/65800/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65800", "labels": [ - "channel: feishu", - "size: XS" + "cli", + "size: S", + "extensions: memory-wiki" ], "merged": false, - "number": 53394, - "review_comments_count": 0, + "number": 65800, + "review_comments_count": 5, "state": "open", - "title": "feishu: fix schema 2.0 card config - replace wide_screen_mode with enable_forward", - "updated_at": "2026-03-24T20:15:31Z" + "title": "fix(cli): load runtime plugins for wiki commands", + "updated_at": "2026-04-13T11:25:23Z" }, { - "additions": 233, - "author": "hodongrun", + "additions": 22, + "author": "Foundry421", "author_association": "NONE", - "body_excerpt": "## Summary - **Problem**: module-scoped caches for model catalog, models.json fingerprints, and context windows use the same `let promise = null` pattern as process-lifetime code-module caches \u2014 but unlike code modules, they hold state der\u2026", - "changed_files": 6, + "body_excerpt": "## Problem Currently, timezone is never proactively collected from the user. If it gets skipped during onboarding, it stays empty forever. This means quiet hours, cron scheduling, and reminders all operate without knowing the user's timezo\u2026", + "changed_files": 3, "cluster_id": null, "cluster_ids": [], "cluster_role": null, "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53393", - "created_at": "2026-03-24T04:59:23Z", - "deletions": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65797", + "created_at": "2026-04-13T08:10:10Z", + "deletions": 15, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53393/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53393", + "files_url": "https://github.com/openclaw/openclaw/pull/65797/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65797", "labels": [ - "gateway", - "agents", - "size: M" + "docs", + "size: XS" ], "merged": false, - "number": 53393, + "number": 65797, "review_comments_count": 1, - "state": "open", - "title": "refactor(gateway): unify config-derived cache invalidation on hot reload", - "updated_at": "2026-03-24T20:15:31Z" + "state": "closed", + "title": "feat(templates): ask user for city/timezone during onboarding and startup", + "updated_at": "2026-04-13T08:15:20Z" }, { - "additions": 4, - "author": "SnowSky1", + "additions": 70, + "author": "ZehanXu-Doncic", "author_association": "NONE", - "body_excerpt": "## Summary - Problem: long exec approval commands can overflow the Dashboard approval modal and break the layout. - Why it matters: approval prompts become hard to read right when the operator needs to inspect the command before approving\u2026", - "changed_files": 1, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 3, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53391", - "created_at": "2026-03-24T04:55:03Z", - "deletions": 0, + "body_excerpt": "Fixes #65782 Prevent memory indexing stalls caused by splitting UTF-16 surrogate pairs (emojis, supplementary-plane characters) during chunking. ## Changes - **chunkMarkdown**: outer loop now guards against cutting inside surrogate pairs (\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65796", + "created_at": "2026-04-13T08:06:37Z", + "deletions": 439, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53391/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53391", + "files_url": "https://github.com/openclaw/openclaw/pull/65796/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65796", "labels": [ - "app: web-ui", - "size: XS" + "extensions: memory-core", + "size: L" ], "merged": false, - "number": 53391, - "review_comments_count": 1, + "number": 65796, + "review_comments_count": 4, "state": "open", - "title": "fix(ui): contain long exec approval commands", - "updated_at": "2026-03-24T20:15:31Z" + "title": "fix(memory): prevent indexing stalls from emoji surrogate pair splits", + "updated_at": "2026-04-13T10:28:03Z" }, { - "additions": 763, - "author": "vincentkoc", - "author_association": "MEMBER", - "body_excerpt": "## Summary - Problem: Slack interactive replies had multiple parity gaps. Direct `agent --deliver` replies dropped Slack directive compilation, the Slack plugin runtime did not expose `sendPayload`, duplicate Block Kit `action_id`s caused\u2026", - "changed_files": 17, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 2, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53389", - "created_at": "2026-03-24T04:51:48Z", - "deletions": 28, + "additions": 1467, + "author": "yozu", + "author_association": "NONE", + "body_excerpt": "## Summary - add the adaptive-memory skill for hierarchical memory management across sessions - include helper scripts for workspace initialization, distillation checks, linting, pending tasks, and channel context management - keep the reb\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65793", + "created_at": "2026-04-13T07:52:23Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53389/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53389", + "files_url": "https://github.com/openclaw/openclaw/pull/65793/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65793", "labels": [ - "channel: slack", - "agents", - "maintainer", - "size: L" + "size: XL" ], - "merged": true, - "number": 53389, - "review_comments_count": 3, - "state": "closed", - "title": "fix(slack): improve interactive reply parity", - "updated_at": "2026-03-24T17:42:58Z" + "merged": false, + "number": 65793, + "review_comments_count": 8, + "state": "open", + "title": "feat(skills): add adaptive-memory skill", + "updated_at": "2026-04-14T11:16:56Z" }, { - "additions": 30, - "author": "sgebalaJC", + "additions": 43, + "author": "TrueNorth49", "author_association": "NONE", - "body_excerpt": "## Summary - **Problem:** Hook dispatches always create isolated sessions (`sessionTarget: \"isolated\"` hardcoded), so webhook-driven integrations can't access the main agent's context, memory, or skills. - **Why it matters:** Integrations\u2026", - "changed_files": 10, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", - "comments_count": 1, - "conversation_url": "https://github.com/openclaw/openclaw/pull/53388", - "created_at": "2026-03-24T04:51:44Z", - "deletions": 3, + "body_excerpt": "## Summary - add an execution checklist to `docs/gateway/troubleshooting.md` for cases where health checks look green but real work still fails - link the new checklist from `docs/help/troubleshooting.md` so it is reachable from the fast t\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65789", + "created_at": "2026-04-13T07:46:32Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53388/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53388", + "files_url": "https://github.com/openclaw/openclaw/pull/65789/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65789", "labels": [ "docs", "gateway", - "docker", "size: XS" ], "merged": false, - "number": 53388, - "review_comments_count": 12, - "state": "open", - "title": "feat: configurable sessionTarget on hook dispatches", - "updated_at": "2026-03-24T20:15:31Z" + "number": 65789, + "review_comments_count": 0, + "state": "closed", + "title": "docs: add execution checklist for false-green gateway health", + "updated_at": "2026-04-13T07:59:49Z" }, { - "additions": 53, - "author": "amsminn", - "author_association": "NONE", - "body_excerpt": "## Summary - Problem: `docker-setup.sh` runs several `docker compose run openclaw-cli ...` commands before the gateway is started, but `openclaw-cli` now shares the gateway network namespace. - Why it matters: fresh Docker installs can dea\u2026", - "changed_files": 3, - "cluster_id": "cluster-53248-81", - "cluster_ids": [ - "cluster-53248-81" - ], - "cluster_role": "member", + "additions": 20, + "author": "sliverp", + "author_association": "MEMBER", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: If this PR fixes a plugin beta-release blocker, title it `fix(): beta blocker -

` and link the matching `Beta blocker: - ` issue labeled `be\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65788", + "created_at": "2026-04-13T07:45:09Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65788/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65788", + "labels": [ + "maintainer", + "size: XS", + "channel: qqbot" + ], + "merged": true, + "number": 65788, + "review_comments_count": 1, + "state": "closed", + "title": "Feat/fix qq ssrf url list", + "updated_at": "2026-04-13T07:50:19Z" + }, + { + "additions": 15, + "author": "zhouhe-xydt", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary The MiniMax `web_search` provider's `resolveMiniMaxApiKey()` only looked up API keys from config and environment variables (`MINIMAX_CODE_PLAN_KEY`, `MINIMAX_CODING_API_KEY`, `MINIMAX_API_KEY`), but did not include `MINIMAX_OAUT\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65785", + "created_at": "2026-04-13T07:38:16Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65785/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65785", + "labels": [ + "size: XS", + "extensions: minimax" + ], + "merged": false, + "number": 65785, + "review_comments_count": 1, + "state": "open", + "title": "fix(minimax): allow web_search to use MINIMAX_OAUTH_TOKEN", + "updated_at": "2026-04-13T07:51:20Z" + }, + { + "additions": 259, + "author": "purisev", + "author_association": "NONE", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: If this PR fixes a plugin beta-release blocker, title it `fix(): beta blocker - ` and link the matching `Beta blocker: - ` issue labeled `be\u2026", + "changed_files": 9, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65784", + "created_at": "2026-04-13T07:37:24Z", + "deletions": 26, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65784/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65784", + "labels": [ + "size: M", + "extensions: memory-wiki" + ], + "merged": false, + "number": 65784, + "review_comments_count": 4, + "state": "closed", + "title": "feat(memory-wiki): support configurable vault layout", + "updated_at": "2026-04-13T07:41:40Z" + }, + { + "additions": 102, + "author": "jensenwang560-blip", + "author_association": "NONE", + "body_excerpt": "## Summary - Fix the outer coarse-split loop in `chunkMarkdown` so it does not bisect a UTF-16 surrogate pair (root cause of indexing stalls). - Add a defensive `stripUnpairedSurrogates` sanitizer at the embed boundary (the safety net #277\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65783", + "created_at": "2026-04-13T07:35:54Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65783/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65783", + "labels": [ + "extensions: memory-core", + "size: S" + ], + "merged": false, + "number": 65783, + "review_comments_count": 2, + "state": "open", + "title": "fix(memory): preserve surrogate pairs in chunker; sanitize embed inputs", + "updated_at": "2026-04-13T11:30:56Z" + }, + { + "additions": 239, + "author": "yozu", + "author_association": "NONE", + "body_excerpt": "## Summary - add bounded chat-shaping guidance for short conversational replies - sanitize reply-to context before building shaping notes - thread the shaping note into reply prompt context without broadening the feature scope ## Verificat\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65781", + "created_at": "2026-04-13T07:34:31Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65781/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65781", + "labels": [ + "size: M" + ], + "merged": false, + "number": 65781, + "review_comments_count": 3, + "state": "closed", + "title": "fix(auto-reply): add bounded chat shaping for conversational replies", + "updated_at": "2026-04-13T22:18:52Z" + }, + { + "additions": 2, + "author": "EronFan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Fixes\\n\\n### #65602 \u2014 reserveTokens overwritten by resourceLoader.reload()\\n`resourceLoader.reload()` calls `settingsManager.reload()` which resets the override state set by `applyPiCompactionSettingsFromConfig()`. Fix: call it again af\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65780", + "created_at": "2026-04-13T07:33:13Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65780/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65780", + "labels": [ + "size: XS", + "r: too-many-prs" + ], + "merged": false, + "number": 65780, + "review_comments_count": 2, + "state": "closed", + "title": "fix(agents+misc): compaction reload + memory-alt dedup + plugin model allowlist", + "updated_at": "2026-04-13T08:08:21Z" + }, + { + "additions": 10, + "author": "hclsys", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary The MiniMax web_search provider's \\`envVars\\` only listed \\`MINIMAX_CODE_PLAN_KEY\\` and \\`MINIMAX_CODING_API_KEY\\`, missing \\`MINIMAX_OAUTH_TOKEN\\` and \\`MINIMAX_API_KEY\\`. Users who authenticated via MiniMax OAuth (the recommen\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65779", + "created_at": "2026-04-13T07:26:41Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65779/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65779", + "labels": [ + "size: XS", + "extensions: minimax" + ], + "merged": false, + "number": 65779, + "review_comments_count": 2, + "state": "closed", + "title": "fix(minimax): include OAuth env vars in web_search provider lookup", + "updated_at": "2026-04-14T04:24:51Z" + }, + { + "additions": 4, + "author": "zhouhe-xydt", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary When a model call fails and OpenClaw triggers a fallback retry, `resolveFallbackRetryPrompt()` was replacing the entire original user prompt with the fixed string `\"Continue where you left off. The previous model attempt failed\u2026", + "changed_files": 2, + "cluster_id": "cluster-65760-4", + "cluster_ids": [ + "cluster-65760-4" + ], + "cluster_role": "canonical", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65778", + "created_at": "2026-04-13T07:26:33Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65778/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65778", + "labels": [ + "agents", + "size: XS" + ], + "merged": false, + "number": 65778, + "review_comments_count": 0, + "state": "open", + "title": "fix(agent): preserve original prompt in fallback retry instead of replacing it", + "updated_at": "2026-04-13T07:29:12Z" + }, + { + "additions": 19, + "author": "yozu", + "author_association": "NONE", + "body_excerpt": "## Summary - preserve explicit IDENTITY.md expression defaults in normal chat replies - keep naming, vibe, and preferred emoji guidance visible in the system prompt when IDENTITY.md is present - add a focused regression test for that promp\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65777", + "created_at": "2026-04-13T07:26:01Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65777/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65777", + "labels": [ + "agents", + "size: XS" + ], + "merged": false, + "number": 65777, + "review_comments_count": 0, + "state": "open", + "title": "fix(prompt): preserve IDENTITY defaults in system prompt", + "updated_at": "2026-04-14T08:11:28Z" + }, + { + "additions": 9, + "author": "zhouhe-xydt", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Fixes CLI Slack JSON manifest being framed by box-drawing characters (`\u2502`) from `@clack/prompts` `note()`, making the JSON invalid and difficult to copy-paste. ## Changes - Export `buildSlackManifest` from `extensions/slack/src/\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65773", + "created_at": "2026-04-13T07:10:35Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65773/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65773", + "labels": [ + "channel: slack", + "size: XS" + ], + "merged": false, + "number": 65773, + "review_comments_count": 2, + "state": "open", + "title": "fix(slack): print manifest JSON without box-drawing borders", + "updated_at": "2026-04-13T07:14:54Z" + }, + { + "additions": 217, + "author": "skainguyen1412", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: `openclaw nodes status` used the effective `node.list` view, while `openclaw nodes list` still used raw `node.pair.list`, so the two commands could disagree about which nodes were paired. - Why it matters: operators c\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65772", + "created_at": "2026-04-13T07:09:35Z", + "deletions": 34, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65772/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65772", + "labels": [ + "cli", + "size: M" + ], + "merged": false, + "number": 65772, + "review_comments_count": 6, + "state": "open", + "title": "fix(cli): keep nodes list aligned with nodes status", + "updated_at": "2026-04-14T01:37:03Z" + }, + { + "additions": 169, + "author": "yozu", + "author_association": "NONE", + "body_excerpt": "## Summary - surface classified cron failure causes before raw error text in alerts and CLI output - backfill errorReason for older cron run log entries by deriving it from stored error text - add regression coverage for timeout cause disp\u2026", + "changed_files": 12, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65771", + "created_at": "2026-04-13T07:08:46Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65771/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65771", + "labels": [ + "app: macos", + "app: web-ui", + "gateway", + "cli", + "size: S" + ], + "merged": false, + "number": 65771, + "review_comments_count": 6, + "state": "open", + "title": "fix(cron): surface timeout cause before raw errors", + "updated_at": "2026-04-14T11:36:48Z" + }, + { + "additions": 383, + "author": "m0x14o", + "author_association": "NONE", + "body_excerpt": "Adds `sourceRunId` through subagent announce delivery so pending/delivered state can be tied back to the run record instead of only the child session key. Also: - persists `pendingAnnounceId` / `lastAnnounceDeliveredId` on run records - cl\u2026", + "changed_files": 14, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65770", + "created_at": "2026-04-13T06:58:44Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65770/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65770", + "labels": [ + "agents", + "size: M" + ], + "merged": false, + "number": 65770, + "review_comments_count": 1, + "state": "open", + "title": "feat: persist subagent announce source run IDs", + "updated_at": "2026-04-13T07:17:46Z" + }, + { + "additions": 334, + "author": "Xer0x-official", + "author_association": "NONE", + "body_excerpt": "### Problem The problem is described in this [issue](https://github.com/openclaw/openclaw/issues/65563) by me. ### Fix I added tests to recreate the issue. Then i updated the src/tasks/task-flow-registry.store.sqlite.ts file to correct the\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65767", + "created_at": "2026-04-13T06:53:07Z", + "deletions": 72, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65767/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65767", + "labels": [ + "size: M" + ], + "merged": false, + "number": 65767, + "review_comments_count": 0, + "state": "open", + "title": "Fix/65563 missing owner session key migration", + "updated_at": "2026-04-13T07:05:10Z" + }, + { + "additions": 507, + "author": "openperf", + "author_association": "MEMBER", + "body_excerpt": "fix(config): auto-heal unrecognized keys during config load to prevent gateway crash ### Summary - **Problem**: When an Agent (or external tool) modifies `~/.openclaw/openclaw.json` directly via the filesystem and injects invalid fields in\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65766", + "created_at": "2026-04-13T06:52:17Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65766/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65766", + "labels": [ + "maintainer", + "size: L" + ], + "merged": false, + "number": 65766, + "review_comments_count": 9, + "state": "closed", + "title": "fix(config): auto-heal unrecognized keys during config load to prevent gateway crash", + "updated_at": "2026-04-14T02:14:50Z" + }, + { + "additions": 28, + "author": "yozu", + "author_association": "NONE", + "body_excerpt": "## Summary - reduce unnecessary confirmation pauses for safe internal work on GPT-5 turns - tighten the prompt guidance so reversible internal steps continue without approval-seeking filler - keep explicit confirmation boundaries for destr\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65765", + "created_at": "2026-04-13T06:51:56Z", + "deletions": 37, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65765/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65765", + "labels": [ + "agents", + "size: S", + "extensions: openai" + ], + "merged": false, + "number": 65765, + "review_comments_count": 1, + "state": "closed", + "title": "fix: reduce unnecessary confirmation pauses for gpt-5 turns", + "updated_at": "2026-04-13T22:18:52Z" + }, + { + "additions": 111, + "author": "pashpashpash", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - stop strict-agentic plan-only retries from hijacking casual chat and status turns - require the original user prompt to look task-like before retry/block logic engages - tighten the future-intent heuristic so direct answers li\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65764", + "created_at": "2026-04-13T06:47:19Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65764/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65764", + "labels": [ + "agents", + "maintainer", + "size: S" + ], + "merged": true, + "number": 65764, + "review_comments_count": 2, + "state": "closed", + "title": "agents: stop strict mode from hijacking chat turns", + "updated_at": "2026-04-13T18:49:04Z" + }, + { + "additions": 3, + "author": "sliverp", + "author_association": "MEMBER", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: If this PR fixes a plugin beta-release blocker, title it `fix(): beta blocker - ` and link the matching `Beta blocker: - ` issue labeled `be\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65762", + "created_at": "2026-04-13T06:43:34Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65762/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65762", + "labels": [ + "maintainer", + "size: XS" + ], + "merged": true, + "number": 65762, + "review_comments_count": 0, + "state": "closed", + "title": "docs:add maintainer info", + "updated_at": "2026-04-13T06:48:10Z" + }, + { + "additions": 174, + "author": "nxmxbbd", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Problem When block streaming is enabled and a block reply targets the same channel as the final reply, `sendBlockReply` is fire-and-forget. On channels with async delivery (Discord embeds, Feishu cards), the final reply can arrive befor\u2026", + "changed_files": 18, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 8, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65761", + "created_at": "2026-04-13T06:43:10Z", + "deletions": 29, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65761/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65761", + "labels": [ + "channel: discord", + "gateway", + "agents", + "channel: feishu", + "size: M" + ], + "merged": false, + "number": 65761, + "review_comments_count": 5, + "state": "open", + "title": "fix(reply): await block streaming delivery on same-channel dispatch", + "updated_at": "2026-04-13T09:10:20Z" + }, + { + "additions": 230, + "author": "nxmxbbd", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Problem The WhatsApp inbound monitor relies on the Baileys socket connection state, but a connected socket doesn't guarantee the application layer is healthy. The socket can remain open while the server silently stops delivering message\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 6, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65759", + "created_at": "2026-04-13T06:41:59Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65759/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65759", + "labels": [ + "channel: whatsapp-web", + "size: M" + ], + "merged": false, + "number": 65759, + "review_comments_count": 5, + "state": "open", + "title": "fix(whatsapp): add application-level health probe to inbound monitor", + "updated_at": "2026-04-13T08:37:39Z" + }, + { + "additions": 124, + "author": "nxmxbbd", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Problem When the WhatsApp watchdog triggers a reconnect, `closeCurrentConnection()` nulls the active listener immediately while the reconnect loop sleeps before re-registering. During this gap (up to 30s+ with exponential backoff), inbo\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65758", + "created_at": "2026-04-13T06:38:43Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65758/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65758", + "labels": [ + "channel: whatsapp-web", + "size: S" + ], + "merged": false, + "number": 65758, + "review_comments_count": 8, + "state": "open", + "title": "fix(whatsapp): add reconnect safety timer to connection controller", + "updated_at": "2026-04-14T07:24:40Z" + }, + { + "additions": 523, + "author": "nxmxbbd", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Problem Periodic heartbeat runs silently consume **all** queued system events (exec completions, cron results, inter-session messages, restart sentinels) before the main agent session can see them. Background task results and hook notif\u2026", + "changed_files": 24, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 10, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65757", + "created_at": "2026-04-13T06:35:18Z", + "deletions": 60, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65757/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65757", + "labels": [ + "gateway", + "agents", + "size: L" + ], + "merged": false, + "number": 65757, + "review_comments_count": 11, + "state": "open", + "title": "fix: selective system event drain for heartbeat runs", + "updated_at": "2026-04-14T09:06:19Z" + }, + { + "additions": 1082, + "author": "parfumed", + "author_association": "NONE", + "body_excerpt": "# PR: Wire before_tool_call and after_tool_call Hooks with Veto Support ## Summary This PR implements real-time tool call interception and veto capability by wiring the existing `before_tool_call` and `after_tool_call` hooks into the actua\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65756", + "created_at": "2026-04-13T06:34:21Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65756/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65756", + "labels": [ + "docs", + "agents", + "size: L" + ], + "merged": false, + "number": 65756, + "review_comments_count": 5, + "state": "open", + "title": "feat(hooks): add veto support and full context to tool call hooks", + "updated_at": "2026-04-13T06:39:31Z" + }, + { + "additions": 170, + "author": "nxmxbbd", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Problem The chokidar file watcher used by memory-core can silently stop firing events after long gateway uptime. When this happens, the memory index becomes permanently stale \u2014 `dirty` is never set to `true`, so `syncMemoryFiles` is nev\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 6, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65755", + "created_at": "2026-04-13T06:31:55Z", + "deletions": 13, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65755/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65755", + "labels": [ + "extensions: memory-core", + "agents", + "size: S" + ], + "merged": false, + "number": 65755, + "review_comments_count": 3, + "state": "open", + "title": "fix(memory): add watcher error handling and non-zero default intervalMinutes", + "updated_at": "2026-04-13T06:51:45Z" + }, + { + "additions": 41, + "author": "YangManBOBO", + "author_association": "NONE", + "body_excerpt": "## Summary - Fix docs link audit fenced-code detection to support both backtick and tilde fences. - Track fence marker type and opening length so closing only occurs on matching markers with sufficient length. - Add unit tests for fence de\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65753", + "created_at": "2026-04-13T06:29:22Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65753/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65753", + "labels": [ + "scripts", + "size: XS" + ], + "merged": false, + "number": 65753, + "review_comments_count": 0, + "state": "open", + "title": "docs: fix link audit to ignore fenced code blocks correctly", + "updated_at": "2026-04-13T06:31:22Z" + }, + { + "additions": 206, + "author": "pashpashpash", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - prefer `openai-codex/gpt-5.4` for qa-lab live defaults when `OPENAI_API_KEY` is absent but Codex OAuth auth is available - keep the shared browser-safe model-selection helper unchanged by adding a runtime-only resolver - cover\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65752", + "created_at": "2026-04-13T06:18:24Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65752/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65752", + "labels": [ + "maintainer", + "size: M", + "extensions: qa-lab" + ], + "merged": true, + "number": 65752, + "review_comments_count": 2, + "state": "closed", + "title": "qa: prefer Codex auth for live defaults", + "updated_at": "2026-04-13T06:35:20Z" + }, + { + "additions": 5, + "author": "WuKongAI-CMU", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary \\`clearChatHistory()\\` in \\`ui/src/ui/app-chat.ts\\` called \\`loadChatHistory()\\` immediately after \\`sessions.reset\\` resolved, racing the server-side session-archive flush. \\`chat.history\\` returned the just-archived session's\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65750", + "created_at": "2026-04-13T06:14:51Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65750/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65750", + "labels": [ + "app: web-ui", + "size: XS" + ], + "merged": false, + "number": 65750, + "review_comments_count": 0, + "state": "open", + "title": "fix(control-ui): stop reloading history after clear (#65719)", + "updated_at": "2026-04-13T06:16:29Z" + }, + { + "additions": 90, + "author": "lhy1024", + "author_association": "NONE", + "body_excerpt": "## Summary - Fix the `pdf` tool so config-defined custom provider models continue to resolve when the runtime registry misses. - Keep the fix scoped to the `pdf` tool path. - Add a regression test covering a custom provider model defined u\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65746", + "created_at": "2026-04-13T06:10:52Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65746/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65746", + "labels": [ + "agents", + "size: S" + ], + "merged": false, + "number": 65746, + "review_comments_count": 1, + "state": "open", + "title": "fix(pdf): resolve custom provider models with config-aware resolver", + "updated_at": "2026-04-13T06:41:49Z" + }, + { + "additions": 70, + "author": "mylesdebastion", + "author_association": "NONE", + "body_excerpt": "## Summary Three related fixes for Telegram group message handling that were identified while debugging group bindings not working for a bot configured with `groupPolicy: \"allowlist\"` and explicit `bindings[]` entries. - **`src/channels/ch\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65741", + "created_at": "2026-04-13T05:56:24Z", + "deletions": 11, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65741/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65741", + "labels": [ + "gateway", + "size: S" + ], + "merged": false, + "number": 65741, + "review_comments_count": 1, + "state": "open", + "title": "fix(telegram): improve group message routing reliability", + "updated_at": "2026-04-13T09:21:40Z" + }, + { + "additions": 1613, + "author": "yananli199307-dev", + "author_association": "NONE", + "body_excerpt": "# feat: Add Agent P2P channel plugin ## Summary Add a new channel plugin that enables OpenClaw to connect to Agent P2P Portal for decentralized P2P messaging between Agents. ## Motivation Currently, OpenClaw supports centralized channels (\u2026", + "changed_files": 19, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65739", + "created_at": "2026-04-13T05:52:54Z", + "deletions": 44, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65739/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65739", + "labels": [ + "size: L" + ], + "merged": false, + "number": 65739, + "review_comments_count": 24, + "state": "open", + "title": "feat: Add Agent P2P channel plugin", + "updated_at": "2026-04-13T12:43:15Z" + }, + { + "additions": 6, + "author": "WuKongAI-CMU", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary The chat-completions verification probe in \\`requestOpenAICompatVerification\\` (\\`src/commands/onboard-custom.ts\\`) sent \\`max_tokens: 1\\`, which fails against OpenAI \u2014 and compatible proxies routing to recent OpenAI models \u2014 be\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65738", + "created_at": "2026-04-13T05:46:16Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65738/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65738", + "labels": [ + "commands", + "size: XS" + ], + "merged": false, + "number": 65738, + "review_comments_count": 0, + "state": "closed", + "title": "fix(onboard): use max_tokens=16 for OpenAI-compat verification probes (Closes #65703)", + "updated_at": "2026-04-14T09:21:56Z" + }, + { + "additions": 8, + "author": "WuKongAI-CMU", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary The Active Memory tuning-fields table listed \\`cacheTtlMs\\` without its bounds. The zod schema and the plugin manifest cap it at 1000\u2013120000 ms with a 15000 ms default. A user following older \"paste this in\" snippets with \\`cach\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65737", + "created_at": "2026-04-13T05:43:22Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65737/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65737", + "labels": [ + "docs", + "size: XS" + ], + "merged": false, + "number": 65737, + "review_comments_count": 0, + "state": "open", + "title": "docs(active-memory): document cacheTtlMs bounds (#65708)", + "updated_at": "2026-04-13T05:44:21Z" + }, + { + "additions": 46, + "author": "oinoom", + "author_association": "NONE", + "body_excerpt": "Use the configured state directory for exec approvals file and socket resolution so Docker and hosted deployments with relocated state roots stop falling back to ~/.openclaw. Add regression coverage for OPENCLAW_STATE_DIR path resolution.\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65736", + "created_at": "2026-04-13T05:43:01Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65736/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65736", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65736, + "review_comments_count": 4, + "state": "open", + "title": "fix(exec): respect OPENCLAW_STATE_DIR for exec approvals", + "updated_at": "2026-04-13T05:52:32Z" + }, + { + "additions": 18, + "author": "JQRobert", + "author_association": "NONE", + "body_excerpt": "## Problem The `/status` slash command fails silently with module not found errors: ``` Cannot find module \"commands-status-deps.runtime.js\" Cannot find module \"status.runtime.js\" ``` ## Root Cause `commands-status.ts` uses `importRuntimeM\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65735", + "created_at": "2026-04-13T05:33:05Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65735/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65735", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65735, + "review_comments_count": 4, + "state": "open", + "title": "fix: add missing runtime entries for /status command", + "updated_at": "2026-04-13T12:38:41Z" + }, + { + "additions": 18, + "author": "pashpashpash", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: the live `instruction-followthrough-repo-contract` qa-lab scenario timed out on `openai-codex/gpt-5.4` even when the agent read the files in order, wrote `repo-contract-summary.txt`, and returned the required three-li\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65732", + "created_at": "2026-04-13T05:27:35Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65732/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65732", + "labels": [ + "maintainer", + "size: XS", + "extensions: qa-lab" + ], + "merged": true, + "number": 65732, + "review_comments_count": 2, + "state": "closed", + "title": "qa: relax repo-contract artifact matcher", + "updated_at": "2026-04-13T05:43:25Z" + }, + { + "additions": 119, + "author": "bek91", + "author_association": "NONE", + "body_excerpt": "## Summary Annotate inbound Slack mention tokens in Slack `RawBody` and `BodyForAgent` content so the agent sees both the actionable Slack mention token and a human-readable name. ## What changed - normalize inbound Slack mention tokens in\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65731", + "created_at": "2026-04-13T05:27:07Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65731/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65731", + "labels": [ + "channel: slack", + "size: S" + ], + "merged": false, + "number": 65731, + "review_comments_count": 4, + "state": "open", + "title": "Slack: Annotate inbound Slack mentions in raw bodies", + "updated_at": "2026-04-13T16:41:38Z" + }, + { + "additions": 488, + "author": "yozu", + "author_association": "NONE", + "body_excerpt": "## Summary - resolve short referential follow-ups from nearby reply and thread context before broader memory - add bounded chat-shaping guidance for conversational follow-ups - update memory recall prompt guidance to be thread-first when s\u2026", + "changed_files": 10, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65730", + "created_at": "2026-04-13T05:26:50Z", + "deletions": 17, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65730/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65730", + "labels": [ + "channel: discord", + "extensions: memory-core", + "size: L" + ], + "merged": false, + "number": 65730, + "review_comments_count": 8, + "state": "open", + "title": "fix(auto-reply): resolve short referential follow-ups from thread context", + "updated_at": "2026-04-14T11:26:58Z" + }, + { + "additions": 499, + "author": "snowshadow", + "author_association": "NONE", + "body_excerpt": "## Summary - add a dedicated Publishing Hook Packs guide under automation docs - clarify in Hooks docs that public sharing already works through npm-distributed hook packs - link the Hooks CLI docs to the new publishing guide ## Why OpenCl\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65727", + "created_at": "2026-04-13T05:15:43Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65727/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65727", + "labels": [ + "docs", + "channel: discord", + "size: M" + ], + "merged": false, + "number": 65727, + "review_comments_count": 1, + "state": "open", + "title": "docs: add hook-pack publishing guide", + "updated_at": "2026-04-13T05:23:27Z" + }, + { + "additions": 15, + "author": "ejc3", + "author_association": "NONE", + "body_excerpt": "## Summary Fixes #64788 \u2014 Browser plugin cannot connect to its own Chrome via CDP since v2026.4.10. The GHSA-53vx-pmqw-863c security fix (#63885, commit `905f1923`) changed `resolveBrowserSsrFPolicy()` to return `{}` instead of `undefined`\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65725", + "created_at": "2026-04-13T05:08:53Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65725/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65725", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65725, + "review_comments_count": 4, + "state": "closed", + "title": "fix(browser): allow loopback CDP connections regardless of SSRF policy", + "updated_at": "2026-04-14T11:20:19Z" + }, + { + "additions": 277, + "author": "pgondhi987", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - **Problem:** Shell-wrapper env override filtering only activated for inline `-c`/`-lc` payload patterns (`shellPayload !== null`), leaving direct shell invocations like `sh script.sh` unprotected; additionally, dangerous varia\u2026", + "changed_files": 9, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65717", + "created_at": "2026-04-13T04:53:08Z", + "deletions": 23, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65717/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65717", + "labels": [ + "maintainer", + "size: M" + ], + "merged": true, + "number": 65717, + "review_comments_count": 5, + "state": "closed", + "title": "fix(security): broaden shell-wrapper detection and block env-argv assignment injection [AI-assisted]", + "updated_at": "2026-04-13T06:26:02Z" + }, + { + "additions": 106, + "author": "feiskyer", + "author_association": "CONTRIBUTOR", + "body_excerpt": "Fixes #65715 Regression introduced in f0ea5bf393 (\"plugins: add lightweight anthropic vertex discovery\"), which added a provider discovery fast-path for anthropic-vertex. Three issues in that change prevented models from being discovered a\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65716", + "created_at": "2026-04-13T04:53:04Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65716/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65716", + "labels": [ + "size: S" + ], + "merged": false, + "number": 65716, + "review_comments_count": 1, + "state": "open", + "title": "fix(anthropic-vertex): resolve model discovery and auth for GCP ADC", + "updated_at": "2026-04-14T11:54:04Z" + }, + { + "additions": 177, + "author": "pgondhi987", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - **Problem:** `createResolvedApproverActionAuthAdapter` returned `{ authorized: true }` when the resolved approver list was empty. `resolveApprovalCommandAuthorization` then converted that into `explicit: true` authorization (b\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65714", + "created_at": "2026-04-13T04:51:10Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65714/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65714", + "labels": [ + "maintainer", + "size: S" + ], + "merged": true, + "number": 65714, + "review_comments_count": 2, + "state": "closed", + "title": "fix(approval-auth): prevent empty approver list from granting explicit approval authorization [AI]", + "updated_at": "2026-04-13T06:30:24Z" + }, + { + "additions": 105, + "author": "pgondhi987", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - **Problem:** `busybox` and `toybox` were classified as interpreter-like safe binaries (`INTERPRETER_LIKE_SAFE_BINS`), which weakened runtime exec policy checks. Non-shell applets such as `awk`, `find`, and `xargs` \u2014 all capabl\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65713", + "created_at": "2026-04-13T04:49:39Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65713/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65713", + "labels": [ + "commands", + "maintainer", + "size: S" + ], + "merged": true, + "number": 65713, + "review_comments_count": 4, + "state": "closed", + "title": "fix(security): remove busybox/toybox from interpreter-like safe bins [AI-assisted]", + "updated_at": "2026-04-13T06:33:26Z" + }, + { + "additions": 68, + "author": "gztony", + "author_association": "NONE", + "body_excerpt": "## Summary - In skill mode (agent-autonomous execution), the model drives all tool calls and consumes results in the same turn \u2014 retaining 3 turns of full tool results wastes context window space - Detect skill mode via `skillsSnapshot` pr\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65707", + "created_at": "2026-04-13T04:31:10Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65707/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65707", + "labels": [ + "agents", + "size: S" + ], + "merged": false, + "number": 65707, + "review_comments_count": 1, + "state": "open", + "title": "perf(context-pruning): reduce keepLastAssistants to 1 in skill mode", + "updated_at": "2026-04-13T05:35:35Z" + }, + { + "additions": 15, + "author": "hclsys", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary When heartbeat creates an isolated session via \\`resolveCronSession(forceNew: true)\\`, the new session entry has \\`deliveryContext\\`, \\`lastThreadId\\`, \\`chatType\\`, and other routing fields cleared. For Telegram topic-scoped se\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65702", + "created_at": "2026-04-13T04:13:07Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65702/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65702", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65702, + "review_comments_count": 1, + "state": "closed", + "title": "fix(heartbeat): inherit delivery context from base session in isolated runs", + "updated_at": "2026-04-13T16:27:10Z" + }, + { + "additions": 785, + "author": "mcaxtr", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: WhatsApp inbound policy facts were recomputed separately in ingress auth, command auth, group gating/activation, and reply-context visibility, and named-account group state still reused shared group session keys. - Wh\u2026", + "changed_files": 19, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65700", + "created_at": "2026-04-13T04:04:57Z", + "deletions": 257, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65700/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65700", + "labels": [ + "channel: whatsapp-web", + "maintainer", + "size: XL" + ], + "merged": false, + "number": 65700, + "review_comments_count": 13, + "state": "open", + "title": "fix(whatsapp): unify inbound policy resolution", + "updated_at": "2026-04-13T04:50:19Z" + }, + { + "additions": 244, + "author": "richarsun", + "author_association": "NONE", + "body_excerpt": "## Summary - switch OpenAI Codex default selection to openai-codex/gpt-5.4 with openai-codex/gpt-5.2 fallback - allow xhigh thinking for openai-codex/gpt-5.4 and openai-codex/gpt-5.2 - add forward-compatible Codex model resolution for gpt-\u2026", + "changed_files": 14, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65699", + "created_at": "2026-04-13T04:01:48Z", + "deletions": 39, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65699/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65699", + "labels": [ + "commands", + "agents", + "size: M" + ], + "merged": false, + "number": 65699, + "review_comments_count": 1, + "state": "closed", + "title": "Set OpenAI Codex defaults to GPT-5.4", + "updated_at": "2026-04-14T08:53:16Z" + }, + { + "additions": 29, + "author": "sunkeysun", + "author_association": "NONE", + "body_excerpt": "## Summary The `agent` gateway handler dispatches agent runs via `dispatchAgentRunFromGateway` but never creates an `AbortController` or registers the run in `context.chatAbortControllers`. This means `chat.abort` (which iterates `chatAbor\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65696", + "created_at": "2026-04-13T03:55:06Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65696/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65696", + "labels": [ + "gateway", + "size: XS" + ], + "merged": false, + "number": 65696, + "review_comments_count": 3, + "state": "open", + "title": "fix(gateway): wire AbortController into agent handler to enable chat.abort cascading", + "updated_at": "2026-04-13T04:00:36Z" + }, + { + "additions": 708, + "author": "leochame", + "author_association": "NONE", + "body_excerpt": "Phase 1 of #65250. ## Summary - Problem: context pruning evaluated trim/clear thresholds against raw prunable tool-result text, so CRLF-heavy output, ANSI color codes, trailing whitespace, and repeated blank lines could inflate size and tr\u2026", + "changed_files": 15, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65692", + "created_at": "2026-04-13T03:41:33Z", + "deletions": 31, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65692/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65692", + "labels": [ + "docs", + "gateway", + "agents", + "size: L" + ], + "merged": false, + "number": 65692, + "review_comments_count": 12, + "state": "open", + "title": "tool result microcompress", + "updated_at": "2026-04-13T23:51:32Z" + }, + { + "additions": 176, + "author": "yozu", + "author_association": "NONE", + "body_excerpt": "## Summary - add Slack message search support backed by `search.messages` - expose the search action when an enabled Slack account has a user token - extend CLI/search dispatch and add focused Slack tests ## Notes - requires a Slack User T\u2026", + "changed_files": 8, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65691", + "created_at": "2026-04-13T03:38:55Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65691/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65691", + "labels": [ + "channel: slack", + "cli", + "size: S" + ], + "merged": false, + "number": 65691, + "review_comments_count": 5, + "state": "open", + "title": "feat(slack): add message search support via search.messages API", + "updated_at": "2026-04-14T11:18:06Z" + }, + { + "additions": 92, + "author": "javierdici", + "author_association": "NONE", + "body_excerpt": "## Summary - preserve assistant in chat message decoding - surface provider failures as visible assistant text when the backend writes an empty assistant turn - add a regression test for history refresh after an error turn ## Testing - git\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65689", + "created_at": "2026-04-13T03:33:17Z", + "deletions": 7, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65689/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65689", + "labels": [ + "size: S" + ], + "merged": false, + "number": 65689, + "review_comments_count": 2, + "state": "open", + "title": "Render provider errors in chat history", + "updated_at": "2026-04-13T03:37:25Z" + }, + { + "additions": 86, + "author": "EronFan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary TTS audio base64 blobs were being serialized as JSON in `estimateContentBlockChars`, inflating token estimates to ~250K tokens per audio block. This caused compaction to fail repeatedly (compaction cannot summarize audio blobs),\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65688", + "created_at": "2026-04-13T03:32:36Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65688/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65688", + "labels": [ + "agents", + "size: S", + "r: too-many-prs" + ], + "merged": false, + "number": 65688, + "review_comments_count": 2, + "state": "closed", + "title": "fix: estimate small constant for audio blocks in estimateContentBlockChars", + "updated_at": "2026-04-13T03:34:09Z" + }, + { + "additions": 896, + "author": "mazhe-nerd", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - **Problem:** Feishu channel onboarding required manual App ID and App Secret input, with no streamlined setup experience for new users. - **Why it matters:** Manual credential entry is error-prone and adds friction for users s\u2026", + "changed_files": 23, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65680", + "created_at": "2026-04-13T03:15:07Z", + "deletions": 1103, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65680/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65680", + "labels": [ + "docs", + "channel: feishu", + "size: XL" + ], + "merged": true, + "number": 65680, + "review_comments_count": 17, + "state": "closed", + "title": "feat: Streamline Feishu channel onboarding with QR code scan-to-create flow", + "updated_at": "2026-04-14T07:08:20Z" + }, + { + "additions": 28, + "author": "ANURAG040599", + "author_association": "NONE", + "body_excerpt": "\u2e3b \ud83e\udde0 GeometryOS: OpenClaw-Powered Verified Math Intelligence Engine A next-generation agentic, neuro-symbolic geometry system that combines LLM reasoning with formal verification to produce provably correct mathematical solutions. \u2e3b \ud83d\udccc Descr\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65677", + "created_at": "2026-04-13T03:07:56Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65677/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65677", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65677, + "review_comments_count": 3, + "state": "open", + "title": "GeometryOS: OpenClaw-Powered Verified Math Intelligence Engine", + "updated_at": "2026-04-13T21:14:00Z" + }, + { + "additions": 1854, + "author": "717986230", + "author_association": "NONE", + "body_excerpt": "## Summary This PR adds documentation about the 2MB size limit for avatar images, addressing issue #65312. ## Changes - **docs/cli/agents.md**: Added note about 2MB limit in the `set-identity` command documentation - **docs/gateway/configu\u2026", + "changed_files": 16, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65675", + "created_at": "2026-04-13T03:04:28Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65675/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65675", + "labels": [ + "docs", + "app: web-ui", + "gateway", + "cli", + "size: XL" + ], + "merged": false, + "number": 65675, + "review_comments_count": 7, + "state": "open", + "title": "docs: add 2MB size limit note for avatar images", + "updated_at": "2026-04-14T01:48:17Z" + }, + { + "additions": 9, + "author": "hclsys", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Rich messages (flex tables, carousels) were always sent via Push API (\\`allowReplyToken = false\\`), even when the Reply token was still available. On LINE free plans where push quota is limited, this caused flex messages to be *\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65673", + "created_at": "2026-04-13T03:00:43Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65673/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65673", + "labels": [ + "channel: line", + "size: XS" + ], + "merged": false, + "number": 65673, + "review_comments_count": 2, + "state": "closed", + "title": "fix(line): allow rich messages to use reply token instead of forcing push", + "updated_at": "2026-04-13T03:17:04Z" + }, + { + "additions": 156, + "author": "coder999999999", + "author_association": "NONE", + "body_excerpt": "## Summary - preserve embedded Pi compaction overrides after `resourceLoader.reload()` resets in-memory settings - reuse the same reload helper in both the main embedded attempt path and direct compaction path - add regression coverage for\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65672", + "created_at": "2026-04-13T02:55:43Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65672/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65672", + "labels": [ + "agents", + "size: S" + ], + "merged": false, + "number": 65672, + "review_comments_count": 0, + "state": "open", + "title": "[codex] Agents: preserve Pi compaction overrides after reload", + "updated_at": "2026-04-13T05:38:34Z" + }, + { + "additions": 221, + "author": "openperf", + "author_association": "MEMBER", + "body_excerpt": "### Summary - **Problem**: Local models with small context windows (e.g., Ollama with 16K tokens) fail with \"Context overflow: prompt too large for the model (precheck)\" even for small prompts. The logs show `reserveTokens=16384` and `prom\u2026", + "changed_files": 7, + "cluster_id": "cluster-63923-8", + "cluster_ids": [ + "cluster-63923-8" + ], + "cluster_role": "canonical", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65671", + "created_at": "2026-04-13T02:52:55Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65671/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65671", + "labels": [ + "agents", + "maintainer", + "size: M" + ], + "merged": false, + "number": 65671, + "review_comments_count": 3, + "state": "open", + "title": "fix(gateway): cap compaction reserve floor to context window for small models", + "updated_at": "2026-04-14T12:16:20Z" + }, + { + "additions": 23, + "author": "songlairui", + "author_association": "NONE", + "body_excerpt": "## Summary AI-assisted: yes (Codex). Testing degree: lightly tested. - Problem: daemon installs that use a `.vite-plus/js_runtime/node/.../bin/node` runtime only keep that Node bin dir on the supervised service PATH. - Why it matters: comp\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65670", + "created_at": "2026-04-13T02:49:05Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65670/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65670", + "labels": [ + "commands", + "size: XS" + ], + "merged": false, + "number": 65670, + "review_comments_count": 0, + "state": "open", + "title": "feat: keep vite-plus companion bin on daemon PATH", + "updated_at": "2026-04-13T02:53:28Z" + }, + { + "additions": 1850, + "author": "717986230", + "author_association": "NONE", + "body_excerpt": "## Summary This PR adds support for custom job IDs in the `openclaw cron add` command, addressing issue #65636. ## Changes - **CLI**: Added optional `--id` flag to `openclaw cron add` for human-readable job IDs - **Validation**: Custom IDs\u2026", + "changed_files": 14, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65669", + "created_at": "2026-04-13T02:48:11Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65669/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65669", + "labels": [ + "app: web-ui", + "gateway", + "cli", + "size: XL" + ], + "merged": false, + "number": 65669, + "review_comments_count": 7, + "state": "open", + "title": "feat: support custom job IDs in cron add command", + "updated_at": "2026-04-14T01:47:43Z" + }, + { + "additions": 3228, + "author": "pashpashpash", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - salvage the conflicted #65224 parity-proof work onto current `main` - keep the QA-lab parity proof slice only: scenarios, parity-report semantics, Anthropic mock lane, summary run metadata, mock auth staging, and the parity-ga\u2026", + "changed_files": 24, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65664", + "created_at": "2026-04-13T02:24:27Z", + "deletions": 251, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65664/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65664", + "labels": [ + "maintainer", + "size: XL", + "extensions: qa-lab" + ], + "merged": true, + "number": 65664, + "review_comments_count": 5, + "state": "closed", + "title": "qa: salvage GPT-5.4 parity proof slice", + "updated_at": "2026-04-13T04:01:55Z" + }, + { + "additions": 60, + "author": "mushuiyu886", + "author_association": "NONE", + "body_excerpt": "## Summary Fixes #65643 When running CLI commands from within a gateway process that has `OPENCLAW_LAUNCHD_LABEL` set (e.g. `ai.openclaw.batch`), using `--profile interactive gateway status` would still resolve the wrong plist because `res\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65658", + "created_at": "2026-04-13T02:12:24Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65658/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65658", + "labels": [ + "cli", + "size: S" + ], + "merged": false, + "number": 65658, + "review_comments_count": 2, + "state": "closed", + "title": "Fix #65643: clear OPENCLAW_LAUNCHD_LABEL when --profile is provided", + "updated_at": "2026-04-13T13:54:32Z" + }, + { + "additions": 119, + "author": "coygeek", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Fix Summary Mattermost native slash commands were insecure in two ways: when `commands.callbackUrl` was omitted, OpenClaw auto-derived a plain-HTTP callback URL; and once commands were registered, any valid callback token for the accoun\u2026", + "changed_files": 8, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65655", + "created_at": "2026-04-13T02:08:19Z", + "deletions": 32, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65655/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65655", + "labels": [ + "docs", + "channel: mattermost", + "gateway", + "size: S" + ], + "merged": false, + "number": 65655, + "review_comments_count": 2, + "state": "open", + "title": "fix: harden Mattermost slash callback auth", + "updated_at": "2026-04-13T02:11:39Z" + }, + { + "additions": 841, + "author": "rhinoroo", + "author_association": "NONE", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: If this PR fixes a plugin beta-release blocker, title it `fix(): beta blocker - ` and link the matching `Beta blocker: - ` issue labeled `be\u2026", + "changed_files": 13, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65651", + "created_at": "2026-04-13T02:01:43Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65651/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65651", + "labels": [ + "scripts", + "size: L" + ], + "merged": false, + "number": 65651, + "review_comments_count": 8, + "state": "closed", + "title": "Claude/automate fork sync ir128", + "updated_at": "2026-04-13T02:35:15Z" + }, + { + "additions": 284, + "author": "JUSTICEESSIELP", + "author_association": "NONE", + "body_excerpt": "## Summary The config watcher's anomaly detector writes a forensic snapshot (`openclaw.json.clobbered.`) whenever it sees a suspicious config read. Existing dedup (`io.observe-recovery.ts`, keyed on `hash:reasons`) collapses *id\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65649", + "created_at": "2026-04-13T01:54:28Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65649/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65649", + "labels": [ + "size: M" + ], + "merged": false, + "number": 65649, + "review_comments_count": 4, + "state": "open", + "title": "fix(config): cap forensic clobber snapshots at 32 per path", + "updated_at": "2026-04-13T02:07:39Z" + }, + { + "additions": 148, + "author": "neeravmakwana", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: Mattermost native slash commands derived a plain-HTTP callback URL by default and accepted any registered token for any slash trigger on the same account. - Why it matters: a captured slash-command token could be repl\u2026", + "changed_files": 8, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65648", + "created_at": "2026-04-13T01:51:26Z", + "deletions": 22, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65648/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65648", + "labels": [ + "channel: mattermost", + "size: S" + ], + "merged": false, + "number": 65648, + "review_comments_count": 1, + "state": "open", + "title": "fix(mattermost): harden native slash command callbacks", + "updated_at": "2026-04-13T02:48:40Z" + }, + { + "additions": 119, + "author": "coygeek", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Fix Summary Mattermost native slash commands were insecure in two ways: when `commands.callbackUrl` was omitted, OpenClaw auto-derived a plain-HTTP callback URL; and once commands were registered, any valid callback token for the accoun\u2026", + "changed_files": 8, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65647", + "created_at": "2026-04-13T01:49:54Z", + "deletions": 32, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65647/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65647", + "labels": [ + "docs", + "channel: mattermost", + "gateway", + "size: S", + "r: too-many-prs" + ], + "merged": false, + "number": 65647, + "review_comments_count": 0, + "state": "closed", + "title": "fix: harden Mattermost slash callback auth", + "updated_at": "2026-04-13T01:53:06Z" + }, + { + "additions": 24, + "author": "coygeek", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Fix Summary The shipped Podman sample env file looked like a ready-to-use deployment artifact even though it carried an empty live `OPENCLAW_GATEWAY_TOKEN=` assignment. This update makes the sample explicitly template-only, tells operat\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65644", + "created_at": "2026-04-13T01:44:27Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65644/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65644", + "labels": [ + "docs", + "size: XS" + ], + "merged": false, + "number": 65644, + "review_comments_count": 1, + "state": "open", + "title": "docs: harden podman env sample guidance", + "updated_at": "2026-04-13T03:41:23Z" + }, + { + "additions": 482, + "author": "simon-marcus", + "author_association": "NONE", + "body_excerpt": "Closes #48489 Supersedes #48491 ## Summary - Surface internal tool execution as `function_call` and `function_call_output` output items in the OpenResponses `/v1/responses` SSE stream - Preserve raw internal tool results for HTTP `function\u2026", + "changed_files": 7, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65642", + "created_at": "2026-04-13T01:41:40Z", + "deletions": 34, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65642/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65642", + "labels": [ + "gateway", + "agents", + "size: L" + ], + "merged": false, + "number": 65642, + "review_comments_count": 8, + "state": "open", + "title": "OpenResponses: emit internal tool call events in SSE stream", + "updated_at": "2026-04-13T13:05:40Z" + }, + { + "additions": 145, + "author": "zeolenon", + "author_association": "NONE", + "body_excerpt": "# Respect explicit null deviceIdentity and improve local gateway RPC error reporting ## Summary This PR improves gateway RPC behavior in two ways: 1. It makes `GatewayClient` honor an explicit `deviceIdentity: null` instead of replacing it\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65641", + "created_at": "2026-04-13T01:38:36Z", + "deletions": 13, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65641/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65641", + "labels": [ + "gateway", + "size: S" + ], + "merged": false, + "number": 65641, + "review_comments_count": 1, + "state": "open", + "title": "Improve local gateway RPC diagnostics", + "updated_at": "2026-04-13T01:51:30Z" + }, + { + "additions": 360, + "author": "SARAMALI15792", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## What does this PR do? Fixes #65568 - Enables automatic recovery for persistent ACP sessions created with `/acp spawn --bind here` when the backend loses the session. This PR fixes three related bugs: - `clearPersistedRuntimeResumeState(\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65640", + "created_at": "2026-04-13T01:37:11Z", + "deletions": 59, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65640/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65640", + "labels": [ + "size: M" + ], + "merged": false, + "number": 65640, + "review_comments_count": 4, + "state": "open", + "title": "fix(acp): persistent session recovery for --bind here sessions", + "updated_at": "2026-04-13T02:22:06Z" + }, + { + "additions": 125, + "author": "coygeek", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Fix Summary Browser control was accepting whichever shared secret values happened to be configured, even when `gateway.auth.mode` explicitly retired one credential lane. This patch makes browser control resolve only the active gateway a\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65639", + "created_at": "2026-04-13T01:32:57Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65639/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65639", + "labels": [ + "size: S" + ], + "merged": false, + "number": 65639, + "review_comments_count": 2, + "state": "open", + "title": "fix: scope browser auth to active gateway mode", + "updated_at": "2026-04-13T03:42:08Z" + }, + { + "additions": 69, + "author": "srinivaspavan9", + "author_association": "NONE", + "body_excerpt": "## Summary - **Problem:** `appendCronDeliveryInstruction()` told the cron agent to \"Return your summary as plain text\" \u2014 the word \"summary\" caused LLMs to condense and reformat structured output non-deterministically, dropping fields on de\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65638", + "created_at": "2026-04-13T01:31:31Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65638/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65638", + "labels": [ + "size: S" + ], + "merged": false, + "number": 65638, + "review_comments_count": 0, + "state": "open", + "title": "fix(cron): preserve all fields in announce delivery by removing summarization instruction", + "updated_at": "2026-04-13T01:33:58Z" + }, + { + "additions": 68, + "author": "coygeek", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Fix Summary `/config show` exposed the raw parsed config object directly in chat replies, so owner-triggered config inspection could leak gateway tokens, provider API keys, and channel secrets into message history. This patch routes bot\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65637", + "created_at": "2026-04-13T01:30:31Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65637/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65637", + "labels": [ + "size: S" + ], + "merged": false, + "number": 65637, + "review_comments_count": 1, + "state": "open", + "title": "fix: redact secrets in /config show replies", + "updated_at": "2026-04-13T01:37:09Z" + }, + { + "additions": 20, + "author": "neeravmakwana", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - keep explicit `gateway.bind=loopback` pinned to `127.0.0.1` instead of downgrading to `0.0.0.0` after a failed preflight loopback probe - add a focused regression test for the failed loopback probe path - add an unreleased cha\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65635", + "created_at": "2026-04-13T01:27:05Z", + "deletions": 9, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65635/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65635", + "labels": [ + "gateway", + "size: XS" + ], + "merged": false, + "number": 65635, + "review_comments_count": 0, + "state": "open", + "title": "fix(gateway): keep explicit loopback binds on 127.0.0.1", + "updated_at": "2026-04-13T01:29:18Z" + }, + { + "additions": 29, + "author": "yozu", + "author_association": "NONE", + "body_excerpt": "## Summary - reduce unnecessary confirmation-seeking for GPT-5 turns in the OpenAI prompt overlay - reinforce the shared execution-bias prompt so safe internal work proceeds without asking first - add test coverage for the new autonomy gui\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65634", + "created_at": "2026-04-13T01:25:14Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65634/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65634", + "labels": [ + "agents", + "size: XS", + "extensions: openai" + ], + "merged": false, + "number": 65634, + "review_comments_count": 6, + "state": "closed", + "title": "fix: reduce unnecessary confirmation pauses for gpt-5 turns", + "updated_at": "2026-04-13T22:18:52Z" + }, + { + "additions": 1, + "author": "Mlightsnow", + "author_association": "CONTRIBUTOR", + "body_excerpt": "Fixes #65538. ## Problem The Control UI chat thread is rendered with `role=\\\"log\\\"` and `aria-live=\\\"polite\\\"`. `role=\\\"log\\\"` already has an implicit `aria-live=\\\"polite\\\"` in the ARIA spec, and while streaming an assistant response, ever\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65633", + "created_at": "2026-04-13T01:20:11Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65633/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65633", + "labels": [ + "app: web-ui", + "size: XS" + ], + "merged": false, + "number": 65633, + "review_comments_count": 3, + "state": "open", + "title": "Fix: disable chat-thread aria-live to stop per-token screen reader announcements (Resolves #65538)", + "updated_at": "2026-04-13T02:43:12Z" + }, + { + "additions": 24, + "author": "neeravmakwana", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: the Discord channel health monitor could restart otherwise healthy idle gateway sessions every ~35 minutes with `stale-socket`. - Why it matters: Discord reconnects cleanly, but the repeated cycle is noisy and creates\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65632", + "created_at": "2026-04-13T01:19:20Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65632/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65632", + "labels": [ + "channel: discord", + "size: XS" + ], + "merged": false, + "number": 65632, + "review_comments_count": 0, + "state": "open", + "title": "fix(discord): skip false stale-socket restarts", + "updated_at": "2026-04-13T01:21:25Z" + }, + { + "additions": 192, + "author": "epanonymous", + "author_association": "NONE", + "body_excerpt": "## Summary - When Gemini OAuth credentials are broken, users now see a helpful error message telling them to run `/connect_ai_subscription gemini` instead of a raw API error or silence - New `/connect_ai_subscription` Telegram command guid\u2026", + "changed_files": 8, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65629", + "created_at": "2026-04-13T01:08:25Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65629/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65629", + "labels": [ + "agents", + "size: S" + ], + "merged": false, + "number": 65629, + "review_comments_count": 3, + "state": "open", + "title": "fix: user-facing Gemini auth errors + /connect_ai_subscription command", + "updated_at": "2026-04-13T01:15:20Z" + }, + { + "additions": 201, + "author": "hxy91819", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Add `discussion_comment` location type support to the secret-scanning maintainer skill - Discussion comments require GraphQL (no REST API available), so two new commands are added: - `delete-discussion-comment ` \u2014 del\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65628", + "created_at": "2026-04-13T01:07:07Z", + "deletions": 25, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65628/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65628", + "labels": [ + "maintainer", + "size: M" + ], + "merged": false, + "number": 65628, + "review_comments_count": 15, + "state": "open", + "title": "feat(skills): add discussion_comment support to secret-scanning skill", + "updated_at": "2026-04-14T09:23:55Z" + }, + { + "additions": 46, + "author": "Mlightsnow", + "author_association": "CONTRIBUTOR", + "body_excerpt": "Fixes #65470. `applyGatewayLaneConcurrency` (and its hot-reload counterpart) configured Main, Cron, and Subagent lanes but never set `CommandLane.Nested`, leaving it at the command-queue default of `maxConcurrent: 1`. `sessions_send` (agen\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65627", + "created_at": "2026-04-13T01:06:56Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65627/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65627", + "labels": [ + "gateway", + "size: XS" + ], + "merged": false, + "number": 65627, + "review_comments_count": 0, + "state": "open", + "title": "Fix: configure Nested CommandLane so sessions_send isn't serialized (Resolves #65470)", + "updated_at": "2026-04-13T01:08:45Z" + }, + { + "additions": 128, + "author": "neeravmakwana", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: preflight compaction returned early whenever a session already had a fresh cached `totalTokens` value, so later turns never re-checked the threshold after the first successful reply. - Why it matters: safeguard prefli\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65622", + "created_at": "2026-04-13T01:04:09Z", + "deletions": 20, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65622/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65622", + "labels": [ + "size: S" + ], + "merged": false, + "number": 65622, + "review_comments_count": 0, + "state": "open", + "title": "fix(agents): reevaluate preflight compaction on fresh totals", + "updated_at": "2026-04-13T01:17:48Z" + }, + { + "additions": 964, + "author": "BunsDev", + "author_association": "MEMBER", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: the Control UI chat composer and command palette built their slash-command list from built-in definitions only, so they missed runtime-discovered commands. - Why it matters\u2026", + "changed_files": 11, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65620", + "created_at": "2026-04-13T00:55:38Z", + "deletions": 132, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65620/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65620", + "labels": [ + "app: web-ui", + "gateway", + "maintainer", + "size: XL" + ], + "merged": true, + "number": 65620, + "review_comments_count": 5, + "state": "closed", + "title": "Control UI: refresh slash commands from runtime command list", + "updated_at": "2026-04-13T01:45:12Z" + }, + { + "additions": 7, + "author": "EronFan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Fixes GitHub issue #65584: cron CLI commands can succeed but hang instead of exiting cleanly. ### Root Cause In `src/gateway/call.ts`, the `executeGatewayRequestWithScopes` function calls `client.stop()` after a request complete\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65618", + "created_at": "2026-04-13T00:54:11Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65618/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65618", + "labels": [ + "gateway", + "size: XS", + "r: too-many-prs" + ], + "merged": false, + "number": 65618, + "review_comments_count": 2, + "state": "closed", + "title": "fix: wait for gateway client teardown so CLI cron commands exit cleanly", + "updated_at": "2026-04-13T01:03:50Z" + }, + { + "additions": 1089, + "author": "kantorcodes", + "author_association": "NONE", + "body_excerpt": "## Summary - add a bundled HOL Guard plugin that checks pre-execution verdicts before tool calls - emit Guard receipts and pain signals for blocked or reviewed executions - add bundled-plugin and hook-runner tests covering the blocked exec\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65616", + "created_at": "2026-04-13T00:51:30Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65616/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65616", + "labels": [ + "size: XL" + ], + "merged": false, + "number": 65616, + "review_comments_count": 12, + "state": "open", + "title": "feat: add HOL Guard pre-execution plugin", + "updated_at": "2026-04-13T11:19:55Z" + }, + { + "additions": 250, + "author": "EronFan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Fixes GitHub issue #65584: cron CLI commands can succeed but hang instead of exiting cleanly. ### Root Cause In `src/gateway/call.ts`, the `executeGatewayRequestWithScopes` function calls `client.stop()` after a successful reque\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65615", + "created_at": "2026-04-13T00:51:06Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65615/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65615", + "labels": [ + "gateway", + "size: M", + "r: too-many-prs" + ], + "merged": false, + "number": 65615, + "review_comments_count": 3, + "state": "closed", + "title": "fix: wait for gateway client teardown so CLI cron commands exit cleanly", + "updated_at": "2026-04-13T01:00:40Z" + }, + { + "additions": 188, + "author": "ssgrim", + "author_association": "NONE", + "body_excerpt": "## Summary - add a minimal Nexus task packet parser and validator for OpenClaw - add a small local CLI to validate YAML or JSON packets before any execution begins - add focused test coverage and a short help doc for the bounded ingest pat\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65610", + "created_at": "2026-04-13T00:28:16Z", + "deletions": 0, + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/65610/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65610", + "labels": [ + "docs", + "scripts", + "size: S" + ], + "merged": false, + "number": 65610, + "review_comments_count": 0, + "state": "closed", + "title": "feat(runtime): validate Nexus task packets locally", + "updated_at": "2026-04-13T00:33:55Z" + }, + { + "additions": 12, + "author": "HOYALIM", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: several unrelated PRs started failing the same GitHub Actions lanes because `main` had shared test regressions in plugin runtime mocks, extension-boundary allowlists, and the memory-wiki gateway registration expectati\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65609", + "created_at": "2026-04-13T00:26:15Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65609/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65609", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65609, + "review_comments_count": 2, + "state": "open", + "title": "test: unblock shared CI regressions on main", + "updated_at": "2026-04-14T02:58:33Z" + }, + { + "additions": 77, + "author": "KeWang0622", + "author_association": "NONE", + "body_excerpt": "## Summary Fixes #65595 \u2014 the `image` tool hardcodes `openai/` as the provider prefix for bare model names, breaking non-OpenAI vision models (Ollama, Google, etc.). **Root cause:** `runWithImageModelFallback` passes `DEFAULT_PROVIDER` (`\"\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65607", + "created_at": "2026-04-13T00:16:56Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65607/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65607", + "labels": [ + "agents", + "size: S" + ], + "merged": false, + "number": 65607, + "review_comments_count": 0, + "state": "closed", + "title": "fix(image-tool): resolve default provider from config instead of hardcoding openai", + "updated_at": "2026-04-14T09:21:48Z" + }, + { + "additions": 82, + "author": "coder999999999", + "author_association": "NONE", + "body_excerpt": "## Summary - Problem: QQBot close code `4009` was treated like `4006/4007`, which cleared the saved session and forced a full re-identify. - Why it matters: `4009` is a session-timeout reconnect case, so clearing `sessionId` and `lastSeq`\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65606", + "created_at": "2026-04-13T00:15:31Z", + "deletions": 11, + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/65606/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65606", + "labels": [ + "size: S", + "channel: qqbot" + ], + "merged": false, + "number": 65606, + "review_comments_count": 0, + "state": "open", + "title": "fix(qqbot): resume after 4009 session timeout", + "updated_at": "2026-04-13T00:15:50Z" + }, + { + "additions": 31, + "author": "pashpashpash", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - freeze the dreaming session-ingestion tests to the fixture timeline - keep the April 5 and April 6 transcript fixtures inside the configured lookback window - avoid current-date drift that makes session corpus files disappear\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65605", + "created_at": "2026-04-13T00:11:42Z", + "deletions": 44, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65605/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65605", + "labels": [ + "extensions: memory-core", + "maintainer", + "size: S" + ], + "merged": true, + "number": 65605, + "review_comments_count": 0, + "state": "closed", + "title": "test(memory-core): freeze dreaming session-ingest clocks", + "updated_at": "2026-04-13T00:24:35Z" + }, + { + "additions": 143, + "author": "coygeek", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Fix Summary On Windows, a malicious or compromised provider response can turn an OAuth or sign-in URL into arbitrary command execution on the gateway host. The vulnerable helper wraps the raw string in quotes for `cmd /c start` but neve\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65599", + "created_at": "2026-04-12T23:53:16Z", + "deletions": 54, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65599/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65599", + "labels": [ + "commands", + "size: S" + ], + "merged": false, + "number": 65599, + "review_comments_count": 2, + "state": "closed", + "title": "fix: Provider-supplied OAuth URLs inject Windows cmd.exe via openUrl", + "updated_at": "2026-04-13T02:05:00Z" + }, + { + "additions": 352, + "author": "pashpashpash", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - split the prompt-overlay and one-action retry-guard pieces out of #65257 - strengthen GPT-5 tool-first guidance without pulling in auto-continuation/config surface - close the single-action-then-narrative loophole for strict-a\u2026", + "changed_files": 8, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65597", + "created_at": "2026-04-12T23:45:18Z", + "deletions": 17, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65597/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65597", + "labels": [ + "commands", + "agents", + "maintainer", + "size: M", + "extensions: openai" + ], + "merged": true, + "number": 65597, + "review_comments_count": 7, + "state": "closed", + "title": "agents: split GPT-5 prompt and retry behavior", + "updated_at": "2026-04-13T01:52:23Z" + }, + { + "additions": 3678, + "author": "joshavant", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: QA Telegram live runs required each maintainer/CI lane to provide local credentials, with no shared lease-safe pool. - Why it matters: this blocks reliable concurrent smoke\u2026", + "changed_files": 25, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 6, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65596", + "created_at": "2026-04-12T23:44:49Z", + "deletions": 125, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65596/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65596", + "labels": [ + "docs", + "maintainer", + "size: XL", + "extensions: qa-lab" + ], + "merged": true, + "number": 65596, + "review_comments_count": 8, + "state": "closed", + "title": "feat(qa-lab): add Convex credential broker and admin CLI", + "updated_at": "2026-04-13T03:09:05Z" + }, + { + "additions": 58, + "author": "alexanderkreidich", + "author_association": "NONE", + "body_excerpt": "## Summary - Forward `mediaLocalRoots`, `mediaReadFile`, and `cfg` from the `ChannelMessageActionContext` to `sendMessageMattermost()` in the Mattermost plugin's `handleAction` send path - Without these fields, file uploads through the age\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65593", + "created_at": "2026-04-12T23:34:37Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65593/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65593", + "labels": [ + "channel: mattermost", + "size: S" + ], + "merged": false, + "number": 65593, + "review_comments_count": 0, + "state": "open", + "title": "fix(mattermost): forward media access context in handleAction send", + "updated_at": "2026-04-12T23:35:55Z" + }, + { + "additions": 18, + "author": "evanpaul14", + "author_association": "NONE", + "body_excerpt": "## Summary Users setting up SearXNG as their web search provider have no indication that the JSON API format must be enabled in `settings.yml`. SearXNG ships with JSON format disabled by default, so the user has to manually go and search t\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65592", + "created_at": "2026-04-12T23:24:44Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65592/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65592", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65592, + "review_comments_count": 4, + "state": "open", + "title": "feat(searxng): show JSON format setup note during onboarding", + "updated_at": "2026-04-14T00:06:13Z" + }, + { + "additions": 1186, + "author": "100yenadmin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Adds **hybrid personality mode** \u2014 a dual-model architecture with two independent features: 1. **Auto-switching** (`personalityMode: \"hybrid\"`) \u2014 routes personality turns to GPT-5.2 and execution turns to GPT-5.4 based on intent\u2026", + "changed_files": 12, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65591", + "created_at": "2026-04-12T23:21:54Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65591/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65591", + "labels": [ + "agents", + "size: XL" + ], + "merged": false, + "number": 65591, + "review_comments_count": 79, + "state": "closed", + "title": "agents: hybrid personality mode \u2014 GPT-5.4 execution + GPT-5.2 personality via shared KV cache", + "updated_at": "2026-04-14T01:02:41Z" + }, + { + "additions": 953, + "author": "bahadorkhaleghi1982", + "author_association": "NONE", + "body_excerpt": "## Summary - Adds a `DreamingBudgetEnforcer` module to the memory-core plugin that prevents dreaming runaway loops from burning unbounded API costs and corrupting daily notes - Implements three independent safety layers: **per-cycle dedupl\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65589", + "created_at": "2026-04-12T23:15:36Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65589/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65589", + "labels": [ + "extensions: memory-core", + "size: L" + ], + "merged": false, + "number": 65589, + "review_comments_count": 2, + "state": "open", + "title": "feat(memory-core): dreaming circuit breaker to prevent runaway cost and data corruption", + "updated_at": "2026-04-13T23:29:42Z" + }, + { + "additions": 256, + "author": "FroeMic", + "author_association": "NONE", + "body_excerpt": "## Summary - Problem: custom channel plugins can dispatch inbound runs through the shared reply pipeline, but they do not have a simple plugin-facing seam for live reasoning/tool/item/approval activity. Plugin authors are pushed toward `ru\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65586", + "created_at": "2026-04-12T23:02:23Z", + "deletions": 0, + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/65586/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65586", + "labels": [ + "docs", + "size: M" + ], + "merged": false, + "number": 65586, + "review_comments_count": 0, + "state": "closed", + "title": "[codex] Plugin SDK: add reply activity callbacks for channel plugins", + "updated_at": "2026-04-12T23:26:44Z" + }, + { + "additions": 817, + "author": "chefallan", + "author_association": "NONE", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: * **Problem:** Per-agent model cost tuning is manual and difficult to apply consistently across agents. * **Why it matters:** Users often keep higher-cost models longer than necessary\u2026", + "changed_files": 25, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65583", + "created_at": "2026-04-12T22:54:01Z", + "deletions": 36, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65583/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65583", + "labels": [ + "channel: matrix", + "app: web-ui", + "gateway", + "cli", + "scripts", + "commands", + "docker", + "agents", + "size: L" + ], + "merged": false, + "number": 65583, + "review_comments_count": 17, + "state": "open", + "title": "feat(agents): add per-agent model optimization for lower token cost (CLI + Dashboard)", + "updated_at": "2026-04-13T05:03:20Z" + }, + { + "additions": 545, + "author": "joshavant", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: - Problem: outbound payload normalization semantics were duplicated across delivery prep, JSON output shaping, and mirror summary paths. - Why it matters: duplicated keep/drop and tex\u2026", + "changed_files": 8, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65577", + "created_at": "2026-04-12T22:18:27Z", + "deletions": 105, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65577/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65577", + "labels": [ + "gateway", + "agents", + "maintainer", + "size: L" + ], + "merged": true, + "number": 65577, + "review_comments_count": 0, + "state": "closed", + "title": "Outbound: centralize payload normalization semantics", + "updated_at": "2026-04-13T00:52:27Z" + }, + { + "additions": 36, + "author": "coder999999999", + "author_association": "NONE", + "body_excerpt": "## Summary - Problem: `ui/src/ui/views/chat.ts` hardcoded `aria-live=\"polite\"` on the chat thread, so screen readers could announce every streaming DOM mutation. - Why it matters: streamed replies became noisy and difficult to follow for s\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65575", + "created_at": "2026-04-12T22:15:50Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65575/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65575", + "labels": [ + "app: web-ui", + "size: XS" + ], + "merged": false, + "number": 65575, + "review_comments_count": 1, + "state": "open", + "title": "fix(ui): pause chat announcements during streaming", + "updated_at": "2026-04-12T23:00:22Z" + }, + { + "additions": 423, + "author": "KeWang0622", + "author_association": "NONE", + "body_excerpt": "## Summary MCP stdio child processes silently lose proxy configuration (`HTTPS_PROXY`, `HTTP_PROXY`, `NO_PROXY`) and `NODE_OPTIONS` from the gateway process. This breaks MCP servers in proxy-only environments (sandboxed containers, corpora\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65574", + "created_at": "2026-04-12T22:12:52Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65574/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65574", + "labels": [ + "agents", + "size: M" + ], + "merged": false, + "number": 65574, + "review_comments_count": 12, + "state": "open", + "title": "fix(mcp-stdio): propagate proxy env vars to child processes", + "updated_at": "2026-04-13T02:25:31Z" + }, + { + "additions": 2, + "author": "mcaxtr", + "author_association": "MEMBER", + "body_excerpt": "## Summary This fixes tagged TTS guidance so it matches the runtime behavior on `main`. The codebase does **not** support bare `[[tts]]`, but it **does** support these two tagged forms: - `[[tts:key=value]]` directives for per-reply TTS ov\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65573", + "created_at": "2026-04-12T22:11:40Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65573/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65573", + "labels": [ + "docs", + "maintainer", + "size: XS" + ], + "merged": true, + "number": 65573, + "review_comments_count": 1, + "state": "closed", + "title": "fix(tts): correct tagged TTS syntax guidance", + "updated_at": "2026-04-12T22:41:16Z" + }, + { + "additions": 45, + "author": "colin-lgtm", + "author_association": "NONE", + "body_excerpt": "This PR bundles critical bug fixes for the Google Chat channel adapter that currently block usage in recent versions. ### 1. Fix `google-auth-library` Startup Crash Pins `node-domexception` to `1.0.0` in `package.json` resolutions to resol\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65570", + "created_at": "2026-04-12T21:59:13Z", + "deletions": 30, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65570/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65570", + "labels": [ + "channel: googlechat", + "channel: matrix", + "size: S" + ], + "merged": false, + "number": 65570, + "review_comments_count": 1, + "state": "open", + "title": "fix(googlechat): resolve domexception startup crash and prevent silent text loss", + "updated_at": "2026-04-13T13:38:14Z" + }, + { + "additions": 283, + "author": "imadal1n", + "author_association": "NONE", + "body_excerpt": "## Summary - tokenize normalized wiki queries into meaningful terms - replace full-string-only candidate gating with token-overlap matching - preserve exact-phrase bonuses while allowing long multi-term queries to return relevant candidate\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65569", + "created_at": "2026-04-12T21:55:49Z", + "deletions": 42, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65569/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65569", + "labels": [ + "size: M", + "extensions: memory-wiki" + ], + "merged": false, + "number": 65569, + "review_comments_count": 6, + "state": "open", + "title": "fix(memory-wiki): support token-overlap search for multi-term queries", + "updated_at": "2026-04-12T22:13:47Z" + }, + { + "additions": 3, + "author": "latenighthackathon", + "author_association": "NONE", + "body_excerpt": "## Summary Telegram group chat follow-up messages crash with `TypeError: Cannot read properties of undefined (reading 'trim')` when `event.text` is undefined during dispatch. ## Problem In `acp-projector.ts`, the `usage_update` status hand\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65567", + "created_at": "2026-04-12T21:50:51Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65567/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65567", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65567, + "review_comments_count": 0, + "state": "open", + "title": "fix(telegram): guard hashText against undefined text in dispatch", + "updated_at": "2026-04-12T22:16:24Z" + }, + { + "additions": 10031, + "author": "supmo668", + "author_association": "NONE", + "body_excerpt": "## Summary Adds the consolidated `syntropy` OpenClaw extension that bridges Syntropy Health's MCP tools into the OpenClaw agent. Includes identity gating (priority 35 hook), per-user API token storage, and 9 health tool registrations. Also\u2026", + "changed_files": 67, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65562", + "created_at": "2026-04-12T21:31:27Z", + "deletions": 32, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65562/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65562", + "labels": [ + "docs", + "app: macos", + "app: web-ui", + "gateway", + "scripts", + "size: XL" + ], + "merged": false, + "number": 65562, + "review_comments_count": 4, + "state": "closed", + "title": "feat(syntropy): consolidated Syntropy Health plugin \u2014 identity gate, token storage, 9 health tools", + "updated_at": "2026-04-12T21:36:20Z" + }, + { + "additions": 12, + "author": "garnetlyx", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary This PR fixes a critical regression introduced in commit 74f31241ed that caused crashes during Telegram/Discord incoming message processing and broke the `/status` slash command entirely. ## Root Cause 1. **Missing build entries\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65561", + "created_at": "2026-04-12T21:24:34Z", + "deletions": 64, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65561/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65561", + "labels": [ + "agents", + "size: S" + ], + "merged": false, + "number": 65561, + "review_comments_count": 1, + "state": "open", + "title": "fix(runtime): add missing tsdown entries for lazy runtime modules", + "updated_at": "2026-04-13T23:50:02Z" + }, + { + "additions": 475, + "author": "vladxyz23", + "author_association": "NONE", + "body_excerpt": "## Summary - Problem: OpenClaw did not include a bundled skill for orchestrating a self-hosted `crypto_bot_binance` instance through its OpenClaw-compatible API. - Why it matters: Users need a reusable built-in workflow for health/status c\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65555", + "created_at": "2026-04-12T21:02:14Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65555/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65555", + "labels": [ + "size: M" + ], + "merged": false, + "number": 65555, + "review_comments_count": 14, + "state": "open", + "title": "skills: add bundled crypto-bot-binance orchestrator skill", + "updated_at": "2026-04-14T10:14:56Z" + }, + { + "additions": 1883, + "author": "jdc4429", + "author_association": "NONE", + "body_excerpt": "## Summary - Updated code to work with 2026.4.11 \ud83c\udf10 WebChat (Complete media suite) Previously had NO media support - now fully featured: Images: JPEG/JPG, PNG, GIF, WebP, SVG, BMP Audio (local files - streamed via HTTP server on port 18791)\u2026", + "changed_files": 25, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65554", + "created_at": "2026-04-12T20:57:07Z", + "deletions": 827, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65554/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65554", + "labels": [ + "app: web-ui", + "gateway", + "agents", + "size: XL" + ], + "merged": false, + "number": 65554, + "review_comments_count": 96, + "state": "open", + "title": "Jdc4429 media support v2 - Updated to work with latest version 2026.4.11", + "updated_at": "2026-04-14T06:19:50Z" + }, + { + "additions": 203, + "author": "onutc", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - remove the live cache steps from `OpenClaw NPM Release` - add a separate `OpenClaw Release Checks` workflow that accepts a release tag or commit SHA on `main` - update the public release policy docs to explain that the release\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65552", + "created_at": "2026-04-12T20:53:21Z", + "deletions": 45, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65552/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65552", + "labels": [ + "docs", + "maintainer", + "size: M" + ], + "merged": true, + "number": 65552, + "review_comments_count": 2, + "state": "closed", + "title": "Release: separate release checks workflow", + "updated_at": "2026-04-12T22:00:51Z" + }, + { + "additions": 979, + "author": "imaddde867", + "author_association": "NONE", + "body_excerpt": "Closed.", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65549", + "created_at": "2026-04-12T20:49:00Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65549/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65549", + "labels": [ + "size: L" + ], + "merged": false, + "number": 65549, + "review_comments_count": 3, + "state": "closed", + "title": "Closed", + "updated_at": "2026-04-12T20:53:25Z" + }, + { + "additions": 116, + "author": "jochenfrey", + "author_association": "NONE", + "body_excerpt": "## Summary - Adds two regression tests for `QmdMemoryManager` that verify the `pattern` field from `extraCollections` config entries is correctly passed as the `--mask`/`--glob` argument in the `qmd collection add` CLI call - Covers `*.jso\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65547", + "created_at": "2026-04-12T20:42:30Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65547/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65547", + "labels": [ + "extensions: memory-core", + "size: S" + ], + "merged": false, + "number": 65547, + "review_comments_count": 0, + "state": "open", + "title": "test(memory-qmd): verify extraCollections pattern reaches qmd collection add CLI args", + "updated_at": "2026-04-12T20:45:59Z" + }, + { + "additions": 959, + "author": "omarshahine", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Adds a new **Model Auth** card to the Overview dashboard that surfaces OAuth token health and rate limits for model providers at a glance. ![Example: OpenAI Codex: 97% left, expires 10d] ## Motivation When OAuth-authenticated mo\u2026", + "changed_files": 16, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65545", + "created_at": "2026-04-12T20:38:32Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65545/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65545", + "labels": [ + "app: web-ui", + "gateway", + "maintainer", + "size: L" + ], + "merged": false, + "number": 65545, + "review_comments_count": 11, + "state": "closed", + "title": "feat(ui): add Model Auth status card to Overview dashboard", + "updated_at": "2026-04-13T23:28:20Z" + }, + { + "additions": 175, + "author": "coygeek", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Fix Summary Device pairing alone is enough for a reconnecting macOS or Linux node to publish `system.run` into the live node session, and `node.invoke` trusts that live command list. An operator with only `operator.write` can therefore\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65543", + "created_at": "2026-04-12T20:36:22Z", + "deletions": 51, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65543/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65543", + "labels": [ + "gateway", + "size: M" + ], + "merged": false, + "number": 65543, + "review_comments_count": 0, + "state": "closed", + "title": "fix: Device pairing alone exposes exec-capable nodes before admin...", + "updated_at": "2026-04-12T20:44:07Z" + }, + { + "additions": 14, + "author": "jakepresent", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Problem When `blockStreamingDefault` is `\"off\"`, text-only block replies were silently dropped during generation. Only media payloads were sent immediately. This caused all assistant text to batch to the end of the response, making it i\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65541", + "created_at": "2026-04-12T20:29:41Z", + "deletions": 25, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65541/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65541", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65541, + "review_comments_count": 3, + "state": "open", + "title": "fix: deliver text blocks progressively when block streaming is disabled", + "updated_at": "2026-04-13T23:56:56Z" + }, + { + "additions": 223, + "author": "gdibble", + "author_association": "NONE", + "body_excerpt": "## Summary \ud83e\udd9e A resilient, deterministic path ensuring downstream systems immediately recognize session evictions, safely bypassing pub/sub pipeline delays and connection speed limits. It also firmly resolves persistent `vite` test deadlock\u2026", + "changed_files": 12, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65539", + "created_at": "2026-04-12T20:26:08Z", + "deletions": 21, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65539/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65539", + "labels": [ + "gateway", + "size: M" + ], + "merged": false, + "number": 65539, + "review_comments_count": 16, + "state": "open", + "title": "feat(session-message-events) socket.drain", + "updated_at": "2026-04-14T07:56:59Z" + }, + { + "additions": 124, + "author": "VACInc", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## What changed - fix native `/status` to lazy-load the formatter through a local `./status.runtime` seam that resolves in both source and flattened `dist/` builds - keep stable `status.runtime` and `commands-status-deps.runtime` build ent\u2026", + "changed_files": 7, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65537", + "created_at": "2026-04-12T20:16:23Z", + "deletions": 2, + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/65537/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65537", + "labels": [ + "channel: telegram", + "size: S" + ], + "merged": false, + "number": 65537, + "review_comments_count": 0, + "state": "closed", + "title": "[codex] Fix native /status runtime resolution", + "updated_at": "2026-04-13T12:47:36Z" + }, + { + "additions": 9, + "author": "smartaz", + "author_association": "NONE", + "body_excerpt": "## Summary - `expandPath` in `src/agents/sandbox-paths.ts` uses `os.homedir()` directly for tilde (`~`) expansion - `os.homedir()` reads from `/etc/passwd`, not from `process.env.HOME` - In systemd user services and sub-agent sessions, `$H\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65536", + "created_at": "2026-04-12T20:13:40Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65536/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65536", + "labels": [ + "docker", + "agents", + "size: XS" + ], + "merged": false, + "number": 65536, + "review_comments_count": 0, + "state": "open", + "title": "fix: prefer process.env.HOME over os.homedir() in sandbox expandPath", + "updated_at": "2026-04-12T20:19:10Z" + }, + { + "additions": 118, + "author": "nerua1", + "author_association": "NONE", + "body_excerpt": "This PR adds a new Community Skills page documenting community-contributed skills for OpenClaw. ## Added Skills ### \ud83d\udd12 Security Suite - **safe-skill-install** - Secure installation pipeline with automatic auditing - **skill-vetter** - Manua\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65531", + "created_at": "2026-04-12T19:44:51Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65531/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65531", + "labels": [ + "docs", + "size: XS" + ], + "merged": false, + "number": 65531, + "review_comments_count": 5, + "state": "open", + "title": "docs: add community skills page with security and memory tools", + "updated_at": "2026-04-12T21:35:37Z" + }, + { + "additions": 210, + "author": "Takhoffman", + "author_association": "CONTRIBUTOR", + "body_excerpt": "We found that the harness contract was fragmented and underspecified. The agent prompt, the docs, and several channel/web pages all described pieces of the behavior, but not the real parser/runtime rules in one place. That showed up most c\u2026", + "changed_files": 10, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65530", + "created_at": "2026-04-12T19:40:03Z", + "deletions": 12, + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/65530/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65530", + "labels": [ + "docs", + "channel: discord", + "channel: slack", + "channel: telegram", + "channel: whatsapp-web", + "agents", + "maintainer", + "size: S" + ], + "merged": false, + "number": 65530, + "review_comments_count": 1, + "state": "open", + "title": "docs: centralize harness syntax guidance", + "updated_at": "2026-04-13T20:59:04Z" + }, + { + "additions": 224, + "author": "mcaxtr", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: tagged TTS replies that only contain TTS directives could resolve to no visible text and get dropped before a media-only reply was treated as final content. - Why it matters: tagged auto-TTS could fail silently for in\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65527", + "created_at": "2026-04-12T19:22:30Z", + "deletions": 35, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65527/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65527", + "labels": [ + "maintainer", + "size: M" + ], + "merged": false, + "number": 65527, + "review_comments_count": 5, + "state": "closed", + "title": "fix(speech): allow media-only tagged TTS replies", + "updated_at": "2026-04-12T22:12:05Z" + }, + { + "additions": 183, + "author": "mcaxtr", + "author_association": "MEMBER", + "body_excerpt": "## Summary - send WhatsApp group reactions with the target participant so they attach to the intended message reliably - automatically reuse the current inbound WhatsApp group participant only for current-message reaction context fallback\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65512", + "created_at": "2026-04-12T19:00:06Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65512/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65512", + "labels": [ + "channel: whatsapp-web", + "maintainer", + "size: S" + ], + "merged": true, + "number": 65512, + "review_comments_count": 2, + "state": "closed", + "title": "fix(whatsapp): send group reactions with target participant", + "updated_at": "2026-04-12T23:00:22Z" + }, + { + "additions": 3377, + "author": "100yenadmin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - add phase-aware embedded-run and `agent.wait` timeout attribution so queue, preflight, provider, post-turn, and gateway-draining failures stop being flattened together - prevent false timeout-like failures from poisoning Anthr\u2026", + "changed_files": 55, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65511", + "created_at": "2026-04-12T18:51:06Z", + "deletions": 208, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65511/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65511", + "labels": [ + "docs", + "channel: telegram", + "gateway", + "agents", + "size: XL", + "channel: qa-channel", + "extensions: qa-lab" + ], + "merged": false, + "number": 65511, + "review_comments_count": 41, + "state": "open", + "title": "gateway: qa test: stabilize live gateway timeout attribution and QA restarts", + "updated_at": "2026-04-13T15:36:44Z" + }, + { + "additions": 6, + "author": "ghoc0099", + "author_association": "NONE", + "body_excerpt": "Allow OPENCLAW_STATE_DIR environment variable to override the default ~/.openclaw base directory used for workspace path resolution. Motivation Running multiple OpenClaw instances on the same machine currently requires profile names via OP\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65509", + "created_at": "2026-04-12T18:49:23Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65509/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65509", + "labels": [ + "agents", + "size: XS" + ], + "merged": false, + "number": 65509, + "review_comments_count": 2, + "state": "open", + "title": "feat(workspace): respect OPENCLAW_STATE_DIR for workspace base path", + "updated_at": "2026-04-12T18:53:41Z" + }, + { + "additions": 41, + "author": "WuKongAI-CMU", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Strips `...` and `...` XML tags from user-facing text in `sanitizeUserFacingText` - Prevents leaked tool invocation markup from reaching messaging channels (Discord, Telegram,\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65508", + "created_at": "2026-04-12T18:46:24Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65508/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65508", + "labels": [ + "agents", + "size: XS" + ], + "merged": false, + "number": 65508, + "review_comments_count": 5, + "state": "open", + "title": "fix(sanitize): strip tool_call XML tags from user-facing messages", + "updated_at": "2026-04-13T05:06:15Z" + }, + { + "additions": 71, + "author": "yubingjiaocn", + "author_association": "NONE", + "body_excerpt": "## Problem `resolvePluginProviders()` is called on every LLM turn for every agent session. Each session has a unique `workspaceDir` (e.g., `workspace-agent1`, `workspace-agent2`), and the plugin registry cache key includes `workspaceDir`.\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65497", + "created_at": "2026-04-12T18:24:50Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65497/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65497", + "labels": [ + "size: S" + ], + "merged": false, + "number": 65497, + "review_comments_count": 1, + "state": "open", + "title": "fix: reuse gateway provider registry in worker sessions (#62051)", + "updated_at": "2026-04-13T02:56:05Z" + }, + { + "additions": 13, + "author": "keithce", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary This fixes a browser regression where the managed local `openclaw` profile could start Chrome successfully on loopback CDP, but OpenClaw would still report it as unreachable after start. The root cause was that server-side CDP r\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65496", + "created_at": "2026-04-12T18:20:17Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65496/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65496", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65496, + "review_comments_count": 3, + "state": "closed", + "title": "fix(browser): skip SSRF policy for managed loopback CDP readiness", + "updated_at": "2026-04-13T16:55:25Z" + }, + { + "additions": 93, + "author": "fabioquinzi", + "author_association": "NONE", + "body_excerpt": "## Summary Add a dedicated `agents.defaults.slugGenerator.timeoutSeconds` config field that takes priority over the general `agents.defaults.timeoutSeconds` for slug generation. The general agent timeout (recently added on main) applies to\u2026", + "changed_files": 8, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65492", + "created_at": "2026-04-12T17:59:38Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65492/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65492", + "labels": [ + "docs", + "size: S" + ], + "merged": false, + "number": 65492, + "review_comments_count": 5, + "state": "open", + "title": "feat(agents): make slug generator timeout configurable", + "updated_at": "2026-04-14T11:04:27Z" + }, + { + "additions": 378, + "author": "scoootscooob", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Problem: `openclaw infer audio providers --json` reported env-authenticated audio providers like Deepgram and Groq as `configured: false`. - Why it matters: the CLI status output disagreed with `openclaw models status` and wit\u2026", + "changed_files": 8, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65491", + "created_at": "2026-04-12T17:59:14Z", + "deletions": 9, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65491/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65491", + "labels": [ + "cli", + "maintainer", + "size: M" + ], + "merged": true, + "number": 65491, + "review_comments_count": 3, + "state": "closed", + "title": "CLI: detect env-backed audio providers", + "updated_at": "2026-04-12T21:04:45Z" + }, + { + "additions": 11, + "author": "VACInc", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - reuse cached speaker member role ids in the Discord voice path - avoid a second `fetchMember` or `fetchUser` lookup after `resolveSpeakerContext()` - keep voice ingress authorization using the same resolved speaker data ## Why\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 0, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65489", + "created_at": "2026-04-12T17:53:44Z", + "deletions": 5, + "draft": true, + "files_url": "https://github.com/openclaw/openclaw/pull/65489/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65489", + "labels": [ + "channel: discord", + "size: XS" + ], + "merged": false, + "number": 65489, + "review_comments_count": 0, + "state": "open", + "title": "fix(discord): avoid duplicate voice member lookup", + "updated_at": "2026-04-12T17:54:20Z" + }, + { + "additions": 298, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: a transient iMessage `watch.subscribe` startup timeout or early RPC close immediately fails the monitor and bounces the channel. - Why it matters: issue #65393 showed these failures next to bonjour churn, but the sour\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65482", + "created_at": "2026-04-12T17:19:07Z", + "deletions": 25, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65482/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65482", + "labels": [ + "channel: imessage", + "maintainer", + "size: M" + ], + "merged": true, + "number": 65482, + "review_comments_count": 3, + "state": "closed", + "title": "fix(imessage): retry watch.subscribe startup failures", + "updated_at": "2026-04-12T18:43:59Z" + }, + { + "additions": 62, + "author": "ccage-simp", + "author_association": "NONE", + "body_excerpt": "## Summary Prefer `--mask` instead of `--glob` when bootstrapping QMD collections. Current QMD `2.0.1` silently ignores `--glob` and falls back to its default `**/*.md` pattern, which breaks custom collection patterns and can cause collect\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65481", + "created_at": "2026-04-12T17:18:49Z", + "deletions": 27, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65481/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65481", + "labels": [ + "extensions: memory-core", + "size: S" + ], + "merged": false, + "number": 65481, + "review_comments_count": 0, + "state": "open", + "title": "fix(memory-qmd): prefer --mask for collection patterns", + "updated_at": "2026-04-12T19:35:38Z" + }, + { + "additions": 110, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: active-turn transcript repair removed a trailing orphaned user leaf when a new inbound message arrived mid-run. - Why it matters: the follow-up could be queued correctly and still disappear from the next prompt, so th\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65478", + "created_at": "2026-04-12T17:08:12Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65478/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65478", + "labels": [ + "agents", + "maintainer", + "size: S" + ], + "merged": true, + "number": 65478, + "review_comments_count": 3, + "state": "closed", + "title": "fix(agents): preserve active-turn queued user prompts", + "updated_at": "2026-04-12T18:04:29Z" + }, + { + "additions": 3, + "author": "lanyasheng", + "author_association": "NONE", + "body_excerpt": "## Summary - **Problem**: `listActiveMemoryPublicArtifacts()` returns an empty array after plugin re-registration via snapshot-load or error-recovery rollback paths, causing bridge sync to always report 0 artifacts. - **Root cause**: The p\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65476", + "created_at": "2026-04-12T17:06:11Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65476/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65476", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65476, + "review_comments_count": 0, + "state": "open", + "title": "fix(memory-wiki): persist capability in plugin registry cache rollback paths", + "updated_at": "2026-04-12T17:08:44Z" + }, + { + "additions": 12, + "author": "jlapenna", + "author_association": "CONTRIBUTOR", + "body_excerpt": "Add warning and constraints for Docker-out-of-Docker sandbox deployments OpenClaw's architecture requires host absolute path parity when deploying the Gateway in a Docker container alongside sandbox socket bridging. Because the internal Ga\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65473", + "created_at": "2026-04-12T16:57:49Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65473/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65473", + "labels": [ + "docs", + "gateway", + "docker", + "size: XS" + ], + "merged": true, + "number": 65473, + "review_comments_count": 3, + "state": "closed", + "title": "docs(gateway): Document Docker-out-of-Docker Paradox and constraint", + "updated_at": "2026-04-14T01:19:28Z" + }, + { + "additions": 199, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: after a package-manager self-update, `openclaw update` can keep running old lazy-import paths while it enters `Updating plugins...`, which breaks tracked plugin refresh with `ERR_MODULE_NOT_FOUND` on stale hashed `dis\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65471", + "created_at": "2026-04-12T16:57:24Z", + "deletions": 25, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65471/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65471", + "labels": [ + "cli", + "maintainer", + "size: M" + ], + "merged": true, + "number": 65471, + "review_comments_count": 2, + "state": "closed", + "title": "fix(update-cli): respawn plugin refresh after self-update", + "updated_at": "2026-04-12T17:34:51Z" + }, + { + "additions": 26, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: `session-write-lock` registers a process `exit` cleanup listener when the first lock is acquired, but teardown only unregisters the signal handlers. - Why it matters: repeated test/runtime reset cycles keep stacking `\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65469", + "created_at": "2026-04-12T16:51:50Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65469/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65469", + "labels": [ + "agents", + "maintainer", + "size: XS" + ], + "merged": true, + "number": 65469, + "review_comments_count": 1, + "state": "closed", + "title": "fix(agents): stop leaking session lock exit listeners", + "updated_at": "2026-04-12T17:23:16Z" + }, + { + "additions": 314, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: channel-originated Claude CLI turns still emitted the exact `openclaw.inbound_meta.v1` schema string that Anthropic is currently filtering, and inbound prompt metadata could still carry raw NUL bytes into CLI/backend\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65467", + "created_at": "2026-04-12T16:46:55Z", + "deletions": 118, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65467/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65467", + "labels": [ + "maintainer", + "size: M" + ], + "merged": true, + "number": 65467, + "review_comments_count": 3, + "state": "closed", + "title": "fix(inbound-meta): unblock Claude CLI and scrub NULs", + "updated_at": "2026-04-12T17:52:57Z" + }, + { + "additions": 67, + "author": "shirtlessfounder", + "author_association": "NONE", + "body_excerpt": "## Summary - The embedded ACPX runtime now prefers `ctx.stateDir` from the plugin service context as the default state directory, instead of only falling back to `path.join(workspaceDir, \"state\")`. This ensures session state writes target\u2026", + "changed_files": 7, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65462", + "created_at": "2026-04-12T16:41:08Z", + "deletions": 10, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65462/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65462", + "labels": [ + "size: S", + "extensions: acpx" + ], + "merged": false, + "number": 65462, + "review_comments_count": 1, + "state": "closed", + "title": "fix(acpx): use plugin service stateDir and stop writing into plugin root", + "updated_at": "2026-04-12T16:45:01Z" + }, + { + "additions": 670, + "author": "omarshahine", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - `sendPolicy: deny` was killing inbound message processing before the agent could see the message \u2014 not just suppressing delivery - Moved the deny gate after agent dispatch and replaced the early return with a `suppressDelivery\u2026", + "changed_files": 9, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 6, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65461", + "created_at": "2026-04-12T16:41:03Z", + "deletions": 169, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65461/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65461", + "labels": [ + "maintainer", + "size: L" + ], + "merged": true, + "number": 65461, + "review_comments_count": 7, + "state": "closed", + "title": "fix: sendPolicy deny should suppress delivery, not inbound processing (#53328)", + "updated_at": "2026-04-13T23:42:25Z" + }, + { + "additions": 275, + "author": "pandego", + "author_association": "CONTRIBUTOR", + "body_excerpt": "Closes #65400 ## Summary - lazily register browser subcommand groups so `openclaw browser --help` does not import the full browser CLI stack up front - keep targeted command execution working by eagerly resolving only the requested browser\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65460", + "created_at": "2026-04-12T16:40:21Z", + "deletions": 13, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65460/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65460", + "labels": [ + "size: M" + ], + "merged": false, + "number": 65460, + "review_comments_count": 3, + "state": "open", + "title": "perf(cli): lazy-load browser help subcommands", + "updated_at": "2026-04-12T16:45:46Z" + }, + { + "additions": 239, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: provider and channel manifest-owner trust checks had drifted into separate helpers with nearly the same policy logic. - Why it matters: that duplication is exactly how we kept reintroducing trust, allowlist, and expli\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65459", + "created_at": "2026-04-12T16:35:22Z", + "deletions": 123, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65459/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65459", + "labels": [ + "maintainer", + "size: M" + ], + "merged": true, + "number": 65459, + "review_comments_count": 3, + "state": "closed", + "title": "refactor(plugins): centralize manifest owner trust policy", + "updated_at": "2026-04-12T18:36:06Z" + }, + { + "additions": 81, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "Fixes #65247. ## Summary - hide the synthetic transcript-repair tool result from Control UI chat history reloads - keep ordinary tool results visible - add regression coverage for the exact leaked internal marker ## Root cause The Control\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65458", + "created_at": "2026-04-12T16:33:05Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65458/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65458", + "labels": [ + "app: web-ui", + "maintainer", + "size: S" + ], + "merged": true, + "number": 65458, + "review_comments_count": 2, + "state": "closed", + "title": "fix(ui): hide synthetic transcript-repair history messages", + "updated_at": "2026-04-12T16:37:56Z" + }, + { + "additions": 249, + "author": "mohuaxiao", + "author_association": "NONE", + "body_excerpt": "## Summary `resolveMergedAssistantText` (in `src/gateway/server-chat.ts`, the helper that backs every `emitChatDelta` broadcast) silently drops data from streamed assistant messages whenever the incremental delta chunk shares a suffix/pref\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65457", + "created_at": "2026-04-12T16:28:41Z", + "deletions": 22, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65457/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65457", + "labels": [ + "gateway", + "size: M" + ], + "merged": false, + "number": 65457, + "review_comments_count": 1, + "state": "open", + "title": "fix(gateway): stop dropping repeated markdown tokens in chat stream merge", + "updated_at": "2026-04-12T16:41:04Z" + }, + { + "additions": 50, + "author": "ngutman", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: several `src/agents/skills*.test.ts` suites were loading real personal `~/.agents/skills` entries from the developer machine. - Why it matters: local `pnpm test` became nondeterministic, with skills tests failing base\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65456", + "created_at": "2026-04-12T16:28:36Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65456/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65456", + "labels": [ + "agents", + "maintainer", + "size: S" + ], + "merged": true, + "number": 65456, + "review_comments_count": 0, + "state": "closed", + "title": "fix(agents): isolate skills tests from personal home", + "updated_at": "2026-04-12T16:46:50Z" + }, + { + "additions": 8, + "author": "mjamiv", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Adds `input: [\"text\", \"image\"]` to the MiniMax-M2.7 and MiniMax-M2.7-highspeed model catalog entries in `provider-catalog.ts`. MiniMax M2.7 officially supports multimodal (text + image) input via their Anthropic-compatible API,\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65453", + "created_at": "2026-04-12T16:25:00Z", + "deletions": 13, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65453/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65453", + "labels": [ + "size: XS", + "extensions: minimax" + ], + "merged": false, + "number": 65453, + "review_comments_count": 2, + "state": "open", + "title": "fix(models): add image input to MiniMax-M2.7 catalog", + "updated_at": "2026-04-13T11:46:01Z" + }, + { + "additions": 40, + "author": "apocalypse9949", + "author_association": "NONE", + "body_excerpt": "This PR addresses a security vulnerability where dynamic identifiers were being interpolated directly into SQL queries in the memory schema management code. **What:** The vulnerability fixed SQL Injection via Template Literals in `src/memo\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65452", + "created_at": "2026-04-12T16:23:58Z", + "deletions": 10, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65452/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65452", + "labels": [ + "size: S" + ], + "merged": false, + "number": 65452, + "review_comments_count": 3, + "state": "open", + "title": " [security fix] Fix SQL injection in memory schema management", + "updated_at": "2026-04-13T10:48:32Z" + }, + { + "additions": 47, + "author": "alickgithub2", + "author_association": "NONE", + "body_excerpt": "## Summary Adds `au` to the regional prefix regex in `resolveBaseModelId()`, fixing discovery of Australia/NZ Bedrock inference profiles (`au.anthropic.*`, etc.). ## Problem AWS Bedrock uses an `au.` prefix for inference profiles routing w\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65449", + "created_at": "2026-04-12T16:15:43Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65449/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65449", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65449, + "review_comments_count": 1, + "state": "open", + "title": "[Bug]: fix(amazon-bedrock): add au. prefix support for Australia/NZ inference profiles", + "updated_at": "2026-04-13T12:52:48Z" + }, + { + "additions": 378, + "author": "omarshahine", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - When the 10-minute Private API status cache expires, `getCachedBlueBubblesPrivateApiStatus()` returns `null` and `resolvePrivateApiDecision` silently downgrades reply threading and effects to plain messages - This adds a lazy\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65447", + "created_at": "2026-04-12T16:11:53Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65447/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65447", + "labels": [ + "channel: bluebubbles", + "scripts", + "maintainer", + "size: M" + ], + "merged": true, + "number": 65447, + "review_comments_count": 0, + "state": "closed", + "title": "fix(bluebubbles): lazy-refresh Private API status on send (#43764)", + "updated_at": "2026-04-13T18:03:48Z" + }, + { + "additions": 10, + "author": "frankentini", + "author_association": "NONE", + "body_excerpt": "## Summary Two small hardening changes in the credential handling path: ### 1. Timing-safe bearer token comparison in MCP loopback () `validateMcpLoopbackRequest` was comparing the incoming `Authorization` header against the expected beare\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65446", + "created_at": "2026-04-12T16:08:33Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65446/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65446", + "labels": [ + "gateway", + "agents", + "size: XS", + "r: too-many-prs" + ], + "merged": false, + "number": 65446, + "review_comments_count": 0, + "state": "closed", + "title": "security: use timing-safe token comparison in MCP loopback validator", + "updated_at": "2026-04-12T16:10:11Z" + }, + { + "additions": 1, + "author": "soumikbhatta", + "author_association": "CONTRIBUTOR", + "body_excerpt": "Docs-only: add soumikbhatta to the README clawtributors list. Related: #24901.", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65439", + "created_at": "2026-04-12T15:58:54Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65439/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65439", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65439, + "review_comments_count": 0, + "state": "open", + "title": "Add avatar link for soumikbhatta to README", + "updated_at": "2026-04-12T16:00:23Z" + }, + { + "additions": 21, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "Fixes #65256 ## Summary - stop marking gateway tick keepalives as `dropIfSlow` - add a maintenance-timer regression test proving tick broadcasts are non-droppable - add the changelog entry for the keepalive fix ## Testing - `pnpm test:seri\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65436", + "created_at": "2026-04-12T15:49:22Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65436/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65436", + "labels": [ + "gateway", + "maintainer", + "size: XS" + ], + "merged": true, + "number": 65436, + "review_comments_count": 1, + "state": "closed", + "title": "fix(gateway): keep tick broadcasts non-droppable", + "updated_at": "2026-04-12T16:00:59Z" + }, + { + "additions": 218, + "author": "samrusani", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## What changed - Added a chunk-scan fallback for memory search when FTS5 is unavailable. - Kept the existing FTS path intact when it is available. - Re-enabled the memory-core regression tests that now pass with the fallback. - Skipped th\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65435", + "created_at": "2026-04-12T15:48:23Z", + "deletions": 44, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65435/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65435", + "labels": [ + "gateway", + "extensions: memory-core", + "cli", + "commands", + "size: M" + ], + "merged": false, + "number": 65435, + "review_comments_count": 4, + "state": "open", + "title": "[codex] add memory text-search fallback", + "updated_at": "2026-04-12T17:26:44Z" + }, + { + "additions": 133, + "author": "Tianworld", + "author_association": "NONE", + "body_excerpt": "## Summary - **Inbound metadata / spawn safety**: Strip NUL bytes from strings before JSON-serializing inbound context blocks so downstream surfaces (e.g. spawn args) do not hit `ERR_INVALID_ARG_VALUE` (related: #65389). - **Google Gemini\u2026", + "changed_files": 7, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65433", + "created_at": "2026-04-12T15:46:33Z", + "deletions": 19, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65433/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65433", + "labels": [ + "agents", + "size: S" + ], + "merged": false, + "number": 65433, + "review_comments_count": 1, + "state": "open", + "title": "fix: inbound NUL safety, Gemini 3.1 CLI templates, Sonnet 4.6 default 1M context", + "updated_at": "2026-04-12T15:51:10Z" + }, + { + "additions": 831, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: channel setup and configured-channel runtime narrowing still depended on direct `channels[]` ownership, so activation-only channel manifests could not drive scoped loads. - Why it matters: that kept channel planning b\u2026", + "changed_files": 9, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65429", + "created_at": "2026-04-12T15:37:57Z", + "deletions": 21, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65429/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65429", + "labels": [ + "docs", + "commands", + "maintainer", + "size: L" + ], + "merged": true, + "number": 65429, + "review_comments_count": 5, + "state": "closed", + "title": "feat(plugins): narrow channel loads from manifests", + "updated_at": "2026-04-12T16:32:47Z" + }, + { + "additions": 1353, + "author": "mcaxtr", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: WhatsApp connection lifecycle ownership was split across `auto-reply/monitor`, `inbound/monitor`, `active-listener`, `login`, and `login-qr`, so socket state, reconnect state, timers, and login recovery could drift ap\u2026", + "changed_files": 19, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65427", + "created_at": "2026-04-12T15:30:13Z", + "deletions": 729, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65427/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65427", + "labels": [ + "channel: whatsapp-web", + "maintainer", + "size: XL" + ], + "merged": true, + "number": 65427, + "review_comments_count": 10, + "state": "closed", + "title": "refactor(whatsapp): centralize account connection lifecycle", + "updated_at": "2026-04-12T18:24:52Z" + }, + { + "additions": 129, + "author": "samrusani", + "author_association": "CONTRIBUTOR", + "body_excerpt": "Allow channels.groupChat.historyLimit to be set to 0 so users can disable group history consistently with the rest of the config schema. After review: - regenerated src/config/schema.base.generated.ts - renamed the regression test to match\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65425", + "created_at": "2026-04-12T15:24:41Z", + "deletions": 17, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65425/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65425", + "labels": [ + "extensions: memory-core", + "size: S" + ], + "merged": false, + "number": 65425, + "review_comments_count": 4, + "state": "open", + "title": "Allow zero group chat history limit", + "updated_at": "2026-04-12T16:11:14Z" + }, + { + "additions": 51, + "author": "ryanngit", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Problem When multiple subagents spawn concurrently with the same provider, they all iterate `profileOrder` from index 0, causing a thundering herd on the first auth profile and cascading 429 errors. ## Fix - Add Fisher-Yates shuffle hel\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65423", + "created_at": "2026-04-12T15:22:19Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65423/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65423", + "labels": [ + "agents", + "size: S" + ], + "merged": false, + "number": 65423, + "review_comments_count": 1, + "state": "open", + "title": "feat(agents): shuffle auth profile candidates for subagent runs", + "updated_at": "2026-04-12T15:24:18Z" + }, + { + "additions": 62, + "author": "Hou-Yufan", + "author_association": "NONE", + "body_excerpt": "## Summary Discord's `deliverDiscordReply` (`reply-delivery.ts`) calls `sendMessageDiscord` directly, completely bypassing the core delivery pipeline `deliverOutboundPayloads`. This means all `message_sending` plugin hooks **never fire** o\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65421", + "created_at": "2026-04-12T15:18:31Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65421/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65421", + "labels": [ + "channel: discord", + "size: S" + ], + "merged": false, + "number": 65421, + "review_comments_count": 11, + "state": "open", + "title": "fix(discord): add message_sending plugin hook to reply delivery path", + "updated_at": "2026-04-13T02:18:32Z" + }, + { + "additions": 46, + "author": "ryanngit", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Problem `validateScriptFileForShellBleed` runs unconditionally before every exec command, even when `bypassApprovals` is `true` (i.e., the session has `elevated: 'full'`). This causes cron agents and other fully-trusted sessions to get\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65419", + "created_at": "2026-04-12T15:15:52Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65419/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65419", + "labels": [ + "agents", + "size: XS" + ], + "merged": false, + "number": 65419, + "review_comments_count": 0, + "state": "open", + "title": "fix(exec): skip script preflight validation when elevated=full", + "updated_at": "2026-04-12T15:19:32Z" + }, + { + "additions": 732, + "author": "hxy91819", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Add `openclaw-secret-scanning-maintainer` skill for handling GitHub Secret Scanning alerts - Covers 4 leak location types: `issue_comment`, `issue_body`, `pull_request_body`, `commit` - Includes redaction, history purge (delet\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65417", + "created_at": "2026-04-12T15:14:06Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65417/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65417", + "labels": [ + "maintainer", + "size: L" + ], + "merged": true, + "number": 65417, + "review_comments_count": 34, + "state": "closed", + "title": "feat(skills): add secret-scanning-maintainer skill", + "updated_at": "2026-04-12T16:53:15Z" + }, + { + "additions": 4, + "author": "samrusani", + "author_association": "CONTRIBUTOR", + "body_excerpt": "Fix video_generate so generated buffer videos are saved with the video media cap instead of the generic 5MB default. This allows generated videos larger than 5MB to be delivered without tripping the shared media-store limit. Validation: -\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65416", + "created_at": "2026-04-12T15:12:40Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65416/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65416", + "labels": [ + "agents", + "size: XS" + ], + "merged": false, + "number": 65416, + "review_comments_count": 0, + "state": "open", + "title": "Raise video generation save cap for generated videos", + "updated_at": "2026-04-12T15:13:58Z" + }, + { + "additions": 122, + "author": "ryanngit", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Problem All subagent gateway calls (spawn, session patch, session delete, cleanup) use a hardcoded `timeoutMs: 10_000`. Under high concurrency (40+ lanes), the gateway loopback regularly exceeds 10 s, causing spurious `gateway timeout a\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65415", + "created_at": "2026-04-12T15:11:30Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65415/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65415", + "labels": [ + "agents", + "size: S" + ], + "merged": false, + "number": 65415, + "review_comments_count": 2, + "state": "open", + "title": "feat(agents): configurable gateway timeout floor for subagent calls", + "updated_at": "2026-04-12T15:15:41Z" + }, + { + "additions": 53, + "author": "ryanngit", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Problem Cron jobs running via `createCronPromptExecutor` call `runEmbeddedPiAgent` without passing `bashElevated`. This means cron agents cannot execute elevated shell commands even when the gateway is configured with `tools.elevated.en\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65413", + "created_at": "2026-04-12T15:09:17Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65413/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65413", + "labels": [ + "size: S" + ], + "merged": false, + "number": 65413, + "review_comments_count": 2, + "state": "open", + "title": "fix(cron): pass bashElevated to isolated embedded runs", + "updated_at": "2026-04-12T15:15:42Z" + }, + { + "additions": 257, + "author": "pradeep7127", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Commit `5e2136c6ae` fixed `channel-plugin-ids.ts` so that `memory-core` (the dreaming engine) is included in gateway startup plugin IDs when dreaming is enabled \u2014 but the loader had three independent slot-policy fast-paths tha\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65411", + "created_at": "2026-04-12T14:58:13Z", + "deletions": 52, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65411/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65411", + "labels": [ + "size: M" + ], + "merged": true, + "number": 65411, + "review_comments_count": 5, + "state": "closed", + "title": "fix(plugins): exempt dreaming engine from memory slot fast-path in loader", + "updated_at": "2026-04-12T16:42:42Z" + }, + { + "additions": 57, + "author": "batmanhz", + "author_association": "NONE", + "body_excerpt": "## Problem Sending large media files (MP4 videos >1MB) via WhatsApp causes `creds.json` corruption, leading to Gateway crash loops. ### Symptoms - Gateway disconnects repeatedly (status 499/428) - Log shows: `restored corrupted WhatsApp cr\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 6, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65410", + "created_at": "2026-04-12T14:52:39Z", + "deletions": 7, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65410/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65410", + "labels": [ + "channel: whatsapp-web", + "size: S" + ], + "merged": false, + "number": 65410, + "review_comments_count": 4, + "state": "open", + "title": "fix: prevent WhatsApp credentials corruption on media upload", + "updated_at": "2026-04-13T08:18:26Z" + }, + { + "additions": 282, + "author": "marinosabijan", + "author_association": "NONE", + "body_excerpt": "## Summary - materialize bundle MCP tools for the codex-cli system prompt report path - feed those effective tools into `buildSystemPromptReport(...)` instead of `[]` - assert via the existing bundle MCP e2e that CLI runs now report tool e\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65409", + "created_at": "2026-04-12T14:52:36Z", + "deletions": 7, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65409/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65409", + "labels": [ + "agents", + "size: M" + ], + "merged": false, + "number": 65409, + "review_comments_count": 6, + "state": "open", + "title": "Populate codex-cli tool entries in system prompt report", + "updated_at": "2026-04-13T05:32:52Z" + }, + { + "additions": 215, + "author": "Alex-Alaniz", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Adds `docs/providers/claude-subscription-billing-proxy.md` \u2014 a provider guide for routing OpenClaw Anthropic API requests through Claude Max/Pro subscription billing using the [openclaw-billing-proxy](https://github.com/zacdcook\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65406", + "created_at": "2026-04-12T14:45:11Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65406/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65406", + "labels": [ + "docs", + "size: XS" + ], + "merged": false, + "number": 65406, + "review_comments_count": 3, + "state": "open", + "title": "docs(providers): add Claude subscription billing proxy guide", + "updated_at": "2026-04-12T14:50:51Z" + }, + { + "additions": 96, + "author": "EronFan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary **Issue:** #65379 \u2014 Browser CDP reachability check fails on Linux due to global undici EnvHttpProxyAgent **Root cause:** When an HTTP(S) proxy is configured via environment variables, `ensureGlobalUndiciEnvProxyDispatcher()` ins\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65401", + "created_at": "2026-04-12T14:32:49Z", + "deletions": 24, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65401/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65401", + "labels": [ + "commands", + "agents", + "size: S", + "r: too-many-prs" + ], + "merged": false, + "number": 65401, + "review_comments_count": 3, + "state": "closed", + "title": "fix: bypass proxy for localhost/127.0.0.1 to fix CDP reachability on Linux", + "updated_at": "2026-04-12T14:40:50Z" + }, + { + "additions": 151, + "author": "bin448482", + "author_association": "NONE", + "body_excerpt": "## Summary - Problem: Feishu had two regressions in the same flow: repeated tool/hook registration on plugin cache misses, and named-account config loads silently rewrote top-level `groupPolicy: \"open\"` back to `allowlist`. - Why it matter\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65398", + "created_at": "2026-04-12T14:30:05Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65398/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65398", + "labels": [ + "commands", + "channel: feishu", + "size: S" + ], + "merged": false, + "number": 65398, + "review_comments_count": 1, + "state": "open", + "title": "fix(feishu): preserve top-level groupPolicy and avoid duplicate registration", + "updated_at": "2026-04-12T14:36:42Z" + }, + { + "additions": 17, + "author": "hclsys", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Both LINE webhook handlers await the full event processing chain before sending HTTP 200. LINE requires a 200 within 1 second \u2014 when LLM processing exceeds that, the reply token expires and LINE records the delivery as \\`request\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65397", + "created_at": "2026-04-12T14:29:53Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65397/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65397", + "labels": [ + "channel: line", + "size: XS" + ], + "merged": false, + "number": 65397, + "review_comments_count": 2, + "state": "closed", + "title": "fix(line): respond to webhook before processing events", + "updated_at": "2026-04-13T09:25:07Z" + }, + { + "additions": 118, + "author": "AnonAmit", + "author_association": "CONTRIBUTOR", + "body_excerpt": "- Improves memory search quality when embeddings are unavailable. - Keeps existing hybrid search behavior, but makes FTS-only fallback ranking more useful by boosting stronger lexical matches. - Adds focused tests and updates docs. **Why**\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65395", + "created_at": "2026-04-12T14:24:33Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65395/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65395", + "labels": [ + "docs", + "extensions: memory-core", + "size: S" + ], + "merged": true, + "number": 65395, + "review_comments_count": 4, + "state": "closed", + "title": "improve memory fallback lexical ranking", + "updated_at": "2026-04-12T17:36:28Z" + }, + { + "additions": 20, + "author": "phxwang", + "author_association": "NONE", + "body_excerpt": "## Problem Feishu recently changed the `card.action.trigger` event payload format. The new format: - Does NOT send `operator.user_id` - Does NOT send `context.open_id` - Does NOT send `context.user_id` - Uses `context.open_chat_id` instead\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65392", + "created_at": "2026-04-12T14:23:12Z", + "deletions": 12, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65392/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65392", + "labels": [ + "channel: feishu", + "size: XS" + ], + "merged": false, + "number": 65392, + "review_comments_count": 2, + "state": "open", + "title": "fix(feishu): handle new card action payload format with open_chat_id", + "updated_at": "2026-04-12T14:26:15Z" + }, + { + "additions": 99, + "author": "zqchris", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary System events (heartbeat, cron-event, exec-event) update `updatedAt` on every automated turn but skip the session freshness check (`fresh: true` forced at `src/auto-reply/reply/session.ts:414`). This pushes `updatedAt` past the\u2026", + "changed_files": 7, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65386", + "created_at": "2026-04-12T14:14:26Z", + "deletions": 10, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65386/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65386", + "labels": [ + "agents", + "size: S" + ], + "merged": false, + "number": 65386, + "review_comments_count": 3, + "state": "open", + "title": "fix(sessions): system events no longer prevent daily/idle session resets", + "updated_at": "2026-04-12T16:24:34Z" + }, + { + "additions": 155, + "author": "OwenYWT", + "author_association": "NONE", + "body_excerpt": "## Summary - read Comfy config data from the plugin-owned `plugins.entries.comfy.config` path while keeping `models.providers.comfy` as a runtime override for backwards compatibility - update the Comfy docs and tests so plugin config stays\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65385", + "created_at": "2026-04-12T14:10:40Z", + "deletions": 36, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65385/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65385", + "labels": [ + "docs", + "size: S" + ], + "merged": false, + "number": 65385, + "review_comments_count": 2, + "state": "open", + "title": "fix(comfy): read plugin-owned provider config", + "updated_at": "2026-04-12T14:16:05Z" + }, + { + "additions": 155, + "author": "OwenYWT", + "author_association": "NONE", + "body_excerpt": "## Summary - migrate legacy `botName` fields under `channels.feishu.accounts.*` to the supported `name` key so the doctor migration keeps Feishu models in sync - expose the migration rule and run it as part of the bundled Feishu doctor con\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65384", + "created_at": "2026-04-12T14:10:20Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65384/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65384", + "labels": [ + "commands", + "channel: feishu", + "size: S" + ], + "merged": false, + "number": 65384, + "review_comments_count": 2, + "state": "open", + "title": "fix(feishu): migrate legacy botName accounts", + "updated_at": "2026-04-14T02:24:12Z" + }, + { + "additions": 85, + "author": "OwenYWT", + "author_association": "NONE", + "body_excerpt": "## Summary - avoid spinning up the default iMessage watcher when a named account with the same CLI+DB path is enabled - gate default path creation on `watcher.enabled` so duplicate configs do not result in double replies ## Testing - node\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65383", + "created_at": "2026-04-12T14:09:51Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65383/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65383", + "labels": [ + "channel: imessage", + "size: S" + ], + "merged": false, + "number": 65383, + "review_comments_count": 2, + "state": "open", + "title": "fix(imessage): avoid duplicate default watcher", + "updated_at": "2026-04-12T14:17:14Z" + }, + { + "additions": 76, + "author": "OwenYWT", + "author_association": "NONE", + "body_excerpt": "## Summary - format common cron patterns (every N minutes/hours) so the control tooltip reads \"Every ...\" instead of raw cron syntax - keep the existing fallback for unusual schedules and preserve timezone annotations ## Testing - pnpm --d\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65382", + "created_at": "2026-04-12T14:09:32Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65382/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65382", + "labels": [ + "app: web-ui", + "size: S" + ], + "merged": false, + "number": 65382, + "review_comments_count": 3, + "state": "open", + "title": "fix(ui): format common cron intervals", + "updated_at": "2026-04-14T02:02:11Z" + }, + { + "additions": 44, + "author": "OwenYWT", + "author_association": "NONE", + "body_excerpt": "## Summary - include cache read/write counters in the `/status` cost estimate so cache usage appears in the CLI breakdown - propagate the cache counters into the unit GST cost estimate when they are present ## Testing - node scripts/run-vi\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65381", + "created_at": "2026-04-12T14:09:02Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65381/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65381", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65381, + "review_comments_count": 0, + "state": "open", + "title": "fix(status): include cache tokens in cost estimate", + "updated_at": "2026-04-12T14:11:56Z" + }, + { + "additions": 90, + "author": "martingarramon", + "author_association": "CONTRIBUTOR", + "body_excerpt": "In the default single-account SecretRef deployment, `buildActionOpts()` returned `undefined` \u2014 causing 12+ downstream action sites (sendMessage, editMessage, readMessages, react, pin/unpin, uploadFile, memberInfo, emojiList) to call `resol\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65378", + "created_at": "2026-04-12T14:05:44Z", + "deletions": 43, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65378/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65378", + "labels": [ + "channel: slack", + "size: S" + ], + "merged": false, + "number": 65378, + "review_comments_count": 0, + "state": "open", + "title": "fix(slack): forward resolved token in all action call sites", + "updated_at": "2026-04-12T14:08:00Z" + }, + { + "additions": 453, + "author": "carlushuang", + "author_association": "NONE", + "body_excerpt": "## Summary - **Problem:** We propose adding built-in support for [ATOM](https://github.com/ROCm/ATOM), an OpenAI-compatible inference server optimized for AMD Instinct GPUs. A bundled provider plugin would give AMD GPU users a smooth onboa\u2026", + "changed_files": 25, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65376", + "created_at": "2026-04-12T13:59:08Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65376/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65376", + "labels": [ + "docs", + "commands", + "agents", + "size: M" + ], + "merged": false, + "number": 65376, + "review_comments_count": 10, + "state": "open", + "title": "feat: add ATOM provider (self-hosted, AMD GPU optimized)", + "updated_at": "2026-04-14T00:20:28Z" + }, + { + "additions": 776, + "author": "magnusasnes-design", + "author_association": "NONE", + "body_excerpt": "## Summary - Add Entur plugin for real-time Norwegian public transit departures (Ruter, Vy, AtB, etc.) - Three tools: `entur_search_stops`, `entur_get_departures`, `entur_get_nearby_stops` - Uses Entur's open GraphQL API \u2014 no API key requi\u2026", + "changed_files": 10, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65373", + "created_at": "2026-04-12T13:53:50Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65373/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65373", + "labels": [ + "size: L" + ], + "merged": false, + "number": 65373, + "review_comments_count": 2, + "state": "open", + "title": "feat(entur): add Norwegian public transit plugin", + "updated_at": "2026-04-12T13:57:15Z" + }, + { + "additions": 2, + "author": "EronFan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Fix: Gemini 3.1 CLI template IDs corrected **Issue:** #65363 ### Problem In extensions/google/provider-models.ts, GEMINI_3_1_PRO_TEMPLATE_IDS and GEMINI_3_1_FLASH_TEMPLATE_IDS were incorrectly mapped to 3.0 preview versions: - GEMINI_3_\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65372", + "created_at": "2026-04-12T13:52:14Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65372/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65372", + "labels": [ + "size: XS", + "r: too-many-prs" + ], + "merged": false, + "number": 65372, + "review_comments_count": 1, + "state": "closed", + "title": "fix(google): update Gemini 3.1 CLI template IDs to correct 3.1 versions", + "updated_at": "2026-04-12T13:57:42Z" + }, + { + "additions": 27, + "author": "sebykrueger", + "author_association": "NONE", + "body_excerpt": "## Summary - MiniMax's Anthropic-compatible API generates its own tool call IDs and rejects tool results if the echoed ID doesn't match exactly (error 2013: \"tool result's tool id not found\") - The default `buildStrictAnthropicReplayPolicy\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65371", + "created_at": "2026-04-12T13:50:07Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65371/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65371", + "labels": [ + "size: XS", + "extensions: minimax" + ], + "merged": false, + "number": 65371, + "review_comments_count": 1, + "state": "open", + "title": "minimax: disable tool call ID sanitization for Anthropic-compatible API", + "updated_at": "2026-04-12T14:14:46Z" + }, + { + "additions": 51, + "author": "1bcMax", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - Wire up `usage.cost` data from provider plugins to the per-message metadata badge in the chat UI - Add a \"saved X%\" tag next to cost when `savings_pct` is present - Widen `sanitizeCost` to preserve routing metadata fields thro\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65370", + "created_at": "2026-04-12T13:48:20Z", + "deletions": 11, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65370/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65370", + "labels": [ + "app: web-ui", + "gateway", + "size: S" + ], + "merged": false, + "number": 65370, + "review_comments_count": 1, + "state": "open", + "title": "feat(ui): render per-message cost + savings badge from usage.cost", + "updated_at": "2026-04-12T13:51:23Z" + }, + { + "additions": 121, + "author": "sebykrueger", + "author_association": "NONE", + "body_excerpt": "## Summary - The global undici `EnvHttpProxyAgent` dispatcher silently interferes with `fetch()` to localhost, causing `isChromeReachable` and `isChromeCdpReady` to fail even when Chrome CDP is listening on `127.0.0.1` - Chrome starts succ\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65369", + "created_at": "2026-04-12T13:47:56Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65369/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65369", + "labels": [ + "size: S" + ], + "merged": false, + "number": 65369, + "review_comments_count": 5, + "state": "open", + "title": "browser: use raw node:http for loopback CDP reachability checks", + "updated_at": "2026-04-12T14:15:08Z" + }, + { + "additions": 1, + "author": "EronFan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Fix: memory-core dreaming narrative silent failure (issue #65341) ### Problem In , the field was passed using a conditional spread: ```typescript ...(params.idempotencyKey && { idempotencyKey: params.idempotencyKey }), ``` When `params.\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65366", + "created_at": "2026-04-12T13:36:56Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65366/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65366", + "labels": [ + "gateway", + "size: XS", + "r: too-many-prs" + ], + "merged": false, + "number": 65366, + "review_comments_count": 1, + "state": "closed", + "title": "fix: use randomUUID fallback when idempotencyKey is falsy", + "updated_at": "2026-04-12T13:42:19Z" + }, + { + "additions": 304, + "author": "lml2468", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Fixes #65322 Gateway startup race condition: cron scheduler and heartbeat runner started **before** `chat.history` became available, causing `GatewayRequestError: chat.history unavailable during gateway startup` on every restart\u2026", + "changed_files": 12, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65365", + "created_at": "2026-04-12T13:36:27Z", + "deletions": 36, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65365/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65365", + "labels": [ + "app: web-ui", + "gateway", + "size: M" + ], + "merged": true, + "number": 65365, + "review_comments_count": 5, + "state": "closed", + "title": "fix(gateway): defer cron/heartbeat activation until sidecars ready (#65322)", + "updated_at": "2026-04-13T00:42:42Z" + }, + { + "additions": 818, + "author": "supersantux", + "author_association": "NONE", + "body_excerpt": "## Summary Add a public plugin registration API, `registerProviderRuntimeAuthOverride`, that lets external plugins provide runtime auth for specific built-in model providers without replacing the provider implementation. This is intended f\u2026", + "changed_files": 19, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65364", + "created_at": "2026-04-12T13:36:10Z", + "deletions": 24, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65364/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65364", + "labels": [ + "gateway", + "agents", + "size: L" + ], + "merged": false, + "number": 65364, + "review_comments_count": 14, + "state": "open", + "title": "feat(plugins): add registerProviderRuntimeAuthOverride API", + "updated_at": "2026-04-13T10:03:18Z" + }, + { + "additions": 463, + "author": "kagura-agent", + "author_association": "NONE", + "body_excerpt": "## Summary Adds a `tier` frontmatter field to SKILL.md metadata, providing a cleaner semantic alternative to the boolean `always` field for controlling skill catalog placement. ## Changes - **`types.ts`** \u2014 Added `tier?: \"always\" | \"discov\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65361", + "created_at": "2026-04-12T13:31:33Z", + "deletions": 34, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65361/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65361", + "labels": [ + "agents", + "size: M" + ], + "merged": false, + "number": 65361, + "review_comments_count": 2, + "state": "open", + "title": "feat(skills): add tier frontmatter field for skill catalog priority", + "updated_at": "2026-04-12T13:34:19Z" + }, + { + "additions": 20, + "author": "maxreith", + "author_association": "NONE", + "body_excerpt": "## Summary `GroupChatSchema.historyLimit` uses `.positive()` which rejects `0`, while every other `historyLimit` schema in the codebase uses `.min(0)`. Setting `messages.groupChat.historyLimit: 0` (meaning \"disable group chat history\") cau\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65359", + "created_at": "2026-04-12T13:25:29Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65359/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65359", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65359, + "review_comments_count": 0, + "state": "open", + "title": "fix(config): allow historyLimit: 0 in GroupChatSchema", + "updated_at": "2026-04-12T13:27:08Z" + }, + { + "additions": 5, + "author": "QiaoSuGH", + "author_association": "NONE", + "body_excerpt": "## Summary - `SANDBOX_BACKEND_FACTORIES` in `src/agents/sandbox/backend.ts` used a plain module-level `Map`, causing third-party plugins loaded via jiti to operate on a separate Map instance \u2014 registration succeeds but runtime lookup fails\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65356", + "created_at": "2026-04-12T13:23:59Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65356/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65356", + "labels": [ + "agents", + "size: XS" + ], + "merged": false, + "number": 65356, + "review_comments_count": 0, + "state": "open", + "title": "fix(sandbox): use resolveGlobalSingleton for backend registry", + "updated_at": "2026-04-12T13:25:14Z" + }, + { + "additions": 46, + "author": "CodeForgeNet", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Fixes #65341. `createGatewaySubagentRuntime().run()` in `src/gateway/server-plugins.ts` was using a conditional spread to forward `idempotencyKey`: ```ts ...(params.idempotencyKey && { idempotencyKey: params.idempotencyKey }), B\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65354", + "created_at": "2026-04-12T13:12:44Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65354/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65354", + "labels": [ + "gateway", + "size: XS" + ], + "merged": true, + "number": 65354, + "review_comments_count": 0, + "state": "closed", + "title": "gateway: always send idempotencyKey on plugin subagent run", + "updated_at": "2026-04-12T15:39:27Z" + }, + { + "additions": 69, + "author": "martingarramon", + "author_association": "CONTRIBUTOR", + "body_excerpt": "`isStrictAgenticExecutionContractActive` uses a `^`-anchored regex, so prefixed model IDs like `openai/gpt-5.4` or `openai:gpt-5.4` silently fail to match. Auto-activation doesn't fire and the model falls through to the looser default beha\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65352", + "created_at": "2026-04-12T13:10:44Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65352/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65352", + "labels": [ + "agents", + "size: S" + ], + "merged": false, + "number": 65352, + "review_comments_count": 0, + "state": "closed", + "title": "fix(agents): widen strict-agentic auto-activation for prefixed model IDs", + "updated_at": "2026-04-13T23:07:53Z" + }, + { + "additions": 3, + "author": "martingarramon", + "author_association": "CONTRIBUTOR", + "body_excerpt": "The `google-gemini-cli` provider doesn't appear under the \"Google\" group in the `openclaw configure` wizard \u2014 it shows as an orphan entry instead of grouping alongside the API key method. The static plugin manifest (`openclaw.plugin.json:2\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65351", + "created_at": "2026-04-12T13:10:40Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65351/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65351", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65351, + "review_comments_count": 0, + "state": "open", + "title": "fix(google): add missing groupId to Gemini CLI provider wizard registration", + "updated_at": "2026-04-14T00:04:46Z" + }, + { + "additions": 253, + "author": "Alex-Alaniz", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Adds a step-by-step guide at `docs/guides/claude-subscription-billing.md` for configuring OpenClaw to use Claude Max/Pro subscription billing instead of extra usage. ## What this solves Max/Pro subscribers using `anthropic/claud\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65348", + "created_at": "2026-04-12T12:45:02Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65348/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65348", + "labels": [ + "docs", + "size: XS" + ], + "merged": false, + "number": 65348, + "review_comments_count": 5, + "state": "closed", + "title": "docs: add Claude subscription billing guide for Max/Pro subscribers", + "updated_at": "2026-04-12T14:42:04Z" + }, + { + "additions": 96, + "author": "welfo-beo", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - preserve Unicode letters and numbers in \\ for memory-wiki page paths - preserve Unicode letters and numbers in contradiction note key normalization - add regression coverage for ASCII, CJK-only, and mixed ASCII+CJK inputs ## P\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65342", + "created_at": "2026-04-12T12:20:12Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65342/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65342", + "labels": [ + "size: S", + "extensions: memory-wiki" + ], + "merged": false, + "number": 65342, + "review_comments_count": 1, + "state": "closed", + "title": "fix(memory-wiki): preserve Unicode slugs and contradiction keys", + "updated_at": "2026-04-12T17:06:23Z" + }, + { + "additions": 14, + "author": "monsonego", + "author_association": "NONE", + "body_excerpt": "## Summary Adds regression coverage for nested provider-qualified chat model refs in the Control UI. ## Why The original slash-delimited provider-prefix fix is already present on current main. This follow-up PR keeps that behavior protecte\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65340", + "created_at": "2026-04-12T12:15:11Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65340/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65340", + "labels": [ + "app: web-ui", + "size: XS" + ], + "merged": false, + "number": 65340, + "review_comments_count": 0, + "state": "open", + "title": "test(ui): cover nested qualified chat model refs", + "updated_at": "2026-04-12T12:25:14Z" + }, + { + "additions": 43, + "author": "bin448482", + "author_association": "NONE", + "body_excerpt": "## Summary\\n\\n\u540c\u6b65\u4e0a\u6e38\u4ed3\u5e93\u7684\u5927\u91cf\u66f4\u65b0\u548c\u91cd\u6784\uff0c\u5305\u62ec\uff1a\\n\\n### \u4e3b\u8981\u6539\u52a8\\n- \u65b0\u589e QA Testing \u6280\u80fd\u548c\u76f8\u5173\u5de5\u4f5c\u6d41\\n- \u91cd\u6784\u6587\u6863\u56fd\u9645\u5316\uff08i18n\uff09\u7ed3\u6784\\n- \u5220\u9664\u65e7\u7684\u591a\u8bed\u8a00\u6587\u6863\u76ee\u5f55\uff08zh-CN, ja-JP\uff09\\n- \u65b0\u589e\u591a\u4e2a\u63d0\u4f9b\u5546\u63d2\u4ef6\uff08Alibaba, Amazon Bedrock Mantle, Arcee \u7b49\uff09\\n- \u66f4\u65b0\u79fb\u52a8\u7aef\u5e94\u7528\uff08Android/iOS\uff09\u529f\u80fd\\n- \u91cd\u6784\u6d4f\u89c8\u5668\u6269\u5c55\u548c ACPX \u63d2\u4ef6\\n- \u65b0\u589e\u6280\u80fd\u6ce8\u518c\u548c\u7ba1\u7406\u529f\u80fd\\n- \u66f4\u65b0\u2026", + "changed_files": 7, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65338", + "created_at": "2026-04-12T12:14:05Z", + "deletions": 10, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65338/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65338", + "labels": [ + "channel: discord", + "app: web-ui", + "gateway", + "extensions: memory-core", + "commands", + "size: S" + ], + "merged": false, + "number": 65338, + "review_comments_count": 1, + "state": "closed", + "title": "Merge: \u540c\u6b65\u5927\u91cf\u66f4\u65b0\u548c\u91cd\u6784", + "updated_at": "2026-04-12T12:22:12Z" + }, + { + "additions": 3331, + "author": "Trojaner", + "author_association": "NONE", + "body_excerpt": "## Summary - Add gateway RPC handlers for session-level message mutations: fork, edit, delete, regenerate, continue, and version navigation - Add workspace file serving (`/__file__/`) and image proxy (`/__image_proxy__/`) HTTP endpoints fo\u2026", + "changed_files": 21, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65337", + "created_at": "2026-04-12T12:13:01Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65337/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65337", + "labels": [ + "app: web-ui", + "gateway", + "size: XL" + ], + "merged": false, + "number": 65337, + "review_comments_count": 6, + "state": "closed", + "title": "feat(gateway): add session message mutations", + "updated_at": "2026-04-12T12:19:43Z" + }, + { + "additions": 36, + "author": "frankentini", + "author_association": "NONE", + "body_excerpt": "## Summary Addresses review feedback from [PR #65187](https://github.com/openclaw/openclaw/pull/65187) \u2014 specifically the Greptile P2 comment about missing `extractTextCached` assertions. ## Changes - Added `expect(extractTextCached(messag\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65336", + "created_at": "2026-04-12T12:11:06Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65336/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65336", + "labels": [ + "app: web-ui", + "size: XS", + "r: too-many-prs" + ], + "merged": false, + "number": 65336, + "review_comments_count": 0, + "state": "closed", + "title": "test: add missing extractTextCached assertions to final-tag regression tests", + "updated_at": "2026-04-12T12:12:55Z" + }, + { + "additions": 25, + "author": "TOMUIV", + "author_association": "NONE", + "body_excerpt": "## Summary Change the default `gateway.auth.mode` from `\"token\"` to `\"none\"` in `maybePersistAutoGeneratedGatewayInstallToken()`. OpenClaw is typically deployed in local/private networks where the gateway defaults to loopback bind (127.0.0\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65333", + "created_at": "2026-04-12T11:56:28Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65333/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65333", + "labels": [ + "commands", + "size: XS" + ], + "merged": false, + "number": 65333, + "review_comments_count": 6, + "state": "open", + "title": "fix(gateway): default gateway.auth.mode to 'none' for local deployments", + "updated_at": "2026-04-12T12:31:38Z" + }, + { + "additions": 47, + "author": "TOMUIV", + "author_association": "NONE", + "body_excerpt": "## Summary Fix three locations in `renderMapField` where spreading `value` directly could throw when `value` is `null` or `undefined`. Use `(value ?? {})` instead. ## Changes - `ui/src/ui/views/config-form.node.ts`: three locations in `ren\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65332", + "created_at": "2026-04-12T11:55:53Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65332/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65332", + "labels": [ + "app: web-ui", + "size: S" + ], + "merged": false, + "number": 65332, + "review_comments_count": 1, + "state": "open", + "title": "fix(ui): handle null/undefined value in renderMapField", + "updated_at": "2026-04-12T12:36:15Z" + }, + { + "additions": 2, + "author": "TOMUIV", + "author_association": "NONE", + "body_excerpt": "## Summary Use `getActivePluginRegistry()` as the primary lookup for plugin text transforms, falling back to `loadPluginRuntime()` if not available. This ensures text transforms are applied in the main process.", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65331", + "created_at": "2026-04-12T11:55:42Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65331/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65331", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65331, + "review_comments_count": 1, + "state": "open", + "title": "fix: textTransforms from plugins now applied in main process", + "updated_at": "2026-04-12T11:58:12Z" + }, + { + "additions": 34, + "author": "TOMUIV", + "author_association": "NONE", + "body_excerpt": "## Summary When `/new` or `/reset` is called without a model argument, clear any existing `modelOverride`/`providerOverride` by treating it as a reset to defaults. ## Changes - `src/auto-reply/reply/session-reset-model.ts`: when `resetTrig\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65330", + "created_at": "2026-04-12T11:55:33Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65330/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65330", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65330, + "review_comments_count": 2, + "state": "open", + "title": "fix(sessions): clear model override on /new and /reset", + "updated_at": "2026-04-12T11:58:04Z" + }, + { + "additions": 29095, + "author": "TOMUIV", + "author_association": "NONE", + "body_excerpt": "## Summary Move `cron.add` from `ADMIN_SCOPE` to `WRITE_SCOPE`. `cron.add` is a write operation, not an admin operation. ## Changes - `src/gateway/method-scopes.ts`: remove `cron.add` from `ADMIN_SCOPE`, add to `WRITE_SCOPE` - `src/gateway\u2026", + "changed_files": 538, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65325", + "created_at": "2026-04-12T11:50:09Z", + "deletions": 14144, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65325/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65325", + "labels": [ + "docs", + "channel: discord", + "channel: matrix", + "channel: mattermost", + "channel: msteams", + "channel: slack", + "channel: telegram", + "channel: voice-call", + "channel: whatsapp-web", + "channel: zalo", + "channel: zalouser", + "app: web-ui", + "gateway", + "extensions: memory-core", + "scripts", + "commands", + "docker", + "agents", + "channel: irc", + "size: XL", + "extensions: openai", + "extensions: minimax", + "extensions: synthetic", + "extensions: xiaomi", + "extensions: kilocode", + "channel: qqbot", + "extensions: qa-lab", + "extensions: codex" + ], + "merged": false, + "number": 65325, + "review_comments_count": 2, + "state": "closed", + "title": "feat: lower cron.add from admin to write scope", + "updated_at": "2026-04-14T04:34:50Z" + }, + { + "additions": 50, + "author": "TOMUIV", + "author_association": "NONE", + "body_excerpt": "## Summary Chrome needs the DISPLAY environment variable set in WSL2 to connect to the X server. ## Changes - `extensions/browser/src/browser/chrome.ts`: import `isWSL2Sync` from `openclaw/plugin-sdk/runtime-env` and spread `DISPLAY: ':0'`\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65324", + "created_at": "2026-04-12T11:48:50Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65324/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65324", + "labels": [ + "size: S" + ], + "merged": false, + "number": 65324, + "review_comments_count": 3, + "state": "open", + "title": "fix(browser): set DISPLAY env for Chrome in WSL2", + "updated_at": "2026-04-12T11:51:48Z" + }, + { + "additions": 101, + "author": "openperf", + "author_association": "MEMBER", + "body_excerpt": "### Summary - **Problem**: Gateway crashes with `Error: Agent listener invoked outside active run` (#65285). The crash occurs when a `tool_execution_update` event is emitted by the `exec` tool after the agent run has already been torn down\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65323", + "created_at": "2026-04-12T11:41:48Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65323/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65323", + "labels": [ + "maintainer", + "size: S" + ], + "merged": false, + "number": 65323, + "review_comments_count": 6, + "state": "open", + "title": "fix(gateway): prevent crash on late tool_execution_update after agent run teardown", + "updated_at": "2026-04-12T16:16:20Z" + }, + { + "additions": 322, + "author": "serkonyc", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - add a second settle wait before deleting timed-out `dreaming-narrative-*` sessions - stop swallowing narrative cleanup failures and log them explicitly - narrowly scrub stale/orphan `dreaming-narrative-*` session artifacts lef\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65320", + "created_at": "2026-04-12T11:37:04Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65320/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65320", + "labels": [ + "extensions: memory-core", + "size: M" + ], + "merged": true, + "number": 65320, + "review_comments_count": 7, + "state": "closed", + "title": "fix: harden dreaming narrative session cleanup", + "updated_at": "2026-04-12T16:34:44Z" + }, + { + "additions": 4, + "author": "hclsys", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary `GroupChatSchema.historyLimit` uses `.positive()` which rejects `0`, while every other `historyLimit` in the codebase uses `.min(0)`. Setting `messages.groupChat.historyLimit: 0` (meaning \"disable group chat history\") causes a *\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65311", + "created_at": "2026-04-12T11:17:20Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65311/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65311", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65311, + "review_comments_count": 1, + "state": "closed", + "title": "fix(config): allow historyLimit: 0 in GroupChatSchema", + "updated_at": "2026-04-13T06:25:04Z" + }, + { + "additions": 1, + "author": "Jah-yee", + "author_association": "NONE", + "body_excerpt": "## Bug AGENTS.md line 271 stated Gateway only runs as macOS menubar app - outdated. GroupChatSchema.historyLimit uses .positive() which rejects 0 (issue #65305). Avatar docs missing 2MB limit note (issue #65312). ## Fix - Reflect that open\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65306", + "created_at": "2026-04-12T11:08:13Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65306/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65306", + "labels": [ + "size: XS" + ], + "merged": false, + "number": 65306, + "review_comments_count": 1, + "state": "closed", + "title": "fix(docs): update AGENTS.md gateway launch mechanism (fixes #61615)", + "updated_at": "2026-04-12T11:36:01Z" + }, + { + "additions": 161, + "author": "weichengdeng", + "author_association": "NONE", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: If this PR fixes a plugin beta-release blocker, title it `fix(): beta blocker - ` and link the matching `Beta blocker: - ` issue labeled `be\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65301", + "created_at": "2026-04-12T10:46:49Z", + "deletions": 18, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65301/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65301", + "labels": [ + "size: S" + ], + "merged": false, + "number": 65301, + "review_comments_count": 0, + "state": "open", + "title": "Fix/send poll intent detection clean", + "updated_at": "2026-04-12T11:30:26Z" + }, + { + "additions": 475, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: explicit plugin scopes were still encoded ad hoc across loader/runtime/provider helpers, so `[]` vs `undefined` could drift back into the same behavior outside the first main-path fix. - Why it matters: when an explic\u2026", + "changed_files": 19, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65298", + "created_at": "2026-04-12T10:31:59Z", + "deletions": 56, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65298/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65298", + "labels": [ + "maintainer", + "size: L" + ], + "merged": true, + "number": 65298, + "review_comments_count": 2, + "state": "closed", + "title": "fix(plugins): centralize explicit plugin scope handling", + "updated_at": "2026-04-12T15:23:26Z" + }, + { + "additions": 42, + "author": "ngutman", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: `src/gateway/server.shared-auth-rotation.test.ts` could hang in suite teardown during aggressive local full-suite runs, timing out in the shared gateway test `afterAll` hook. - Why it matters: this makes local `pnpm t\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65296", + "created_at": "2026-04-12T10:18:57Z", + "deletions": 12, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65296/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65296", + "labels": [ + "gateway", + "maintainer", + "size: S" + ], + "merged": true, + "number": 65296, + "review_comments_count": 1, + "state": "closed", + "title": "fix(gateway): reduce shared auth rotation test teardown flake", + "updated_at": "2026-04-12T10:40:19Z" + }, + { + "additions": 161, + "author": "weichengdeng", + "author_association": "NONE", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: If this PR fixes a plugin beta-release blocker, title it `fix(): beta blocker - ` and link the matching `Beta blocker: - ` issue labeled `be\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65295", + "created_at": "2026-04-12T10:16:34Z", + "deletions": 18, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65295/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65295", + "labels": [ + "size: S" + ], + "merged": false, + "number": 65295, + "review_comments_count": 1, + "state": "open", + "title": "fix: avoid misclassifying send poll metadata as poll intent\uff08Weixin plugin\uff09", + "updated_at": "2026-04-12T10:33:01Z" + }, + { + "additions": 1519, + "author": "Jah-yee", + "author_association": "NONE", + "body_excerpt": "## Bug\\nDreaming timestamps show wrong timezone.\\n\\n## Fix\\nAdd timeZoneName: short to toLocaleString().\\n\\nCloses #65027", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65291", + "created_at": "2026-04-12T10:06:42Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65291/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65291", + "labels": [ + "app: web-ui", + "agents", + "size: XL" + ], + "merged": false, + "number": 65291, + "review_comments_count": 3, + "state": "closed", + "title": "fix(dreaming): show timezone in timestamp (fixes #65027)", + "updated_at": "2026-04-12T16:41:47Z" + }, + { + "additions": 1121, + "author": "100yenadmin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Closes #65287. This adds Anthropic-native compaction support and a mixed Anthropic cache-retention policy that uses `1h` retention for the stable system/tool/workspace prefix and `5m` retention for high-churn conversation conten\u2026", + "changed_files": 11, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 10, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65288", + "created_at": "2026-04-12T09:57:47Z", + "deletions": 89, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65288/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65288", + "labels": [ + "agents", + "size: XL" + ], + "merged": false, + "number": 65288, + "review_comments_count": 23, + "state": "open", + "title": "compaction + caches: add Anthropic native compaction and mixed cache TTLs", + "updated_at": "2026-04-13T13:48:10Z" + }, + { + "additions": 13, + "author": "lightning-openclaw", + "author_association": "NONE", + "body_excerpt": "## Summary Fixes async message delivery failure in Slack DM threads. Subagent/exec completion messages and background task announcements fail with `channel_not_found` or land at top-level DM instead of the correct thread. ### Root cause 1.\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65286", + "created_at": "2026-04-12T09:57:06Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65286/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65286", + "labels": [ + "channel: slack", + "size: XS" + ], + "merged": false, + "number": 65286, + "review_comments_count": 4, + "state": "open", + "title": "fix(slack): resolve DM thread delivery failure (channel_not_found)", + "updated_at": "2026-04-12T12:36:03Z" + }, + { + "additions": 126, + "author": "Kyzcreig", + "author_association": "NONE", + "body_excerpt": "## Summary - stop preserving orphaned providers when merging generated `models.json` state - use provider-aware context window resolution in session/status/runtime persistence paths - add focused regressions for orphaned provider removal a\u2026", + "changed_files": 8, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65284", + "created_at": "2026-04-12T09:44:58Z", + "deletions": 30, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65284/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65284", + "labels": [ + "gateway", + "commands", + "agents", + "size: S" + ], + "merged": false, + "number": 65284, + "review_comments_count": 1, + "state": "open", + "title": "fix(context): avoid stale provider context window collisions", + "updated_at": "2026-04-12T09:50:33Z" + }, + { + "additions": 12, + "author": "damselem", + "author_association": "NONE", + "body_excerpt": "## Problem When an agent falls back from ACP runtime to subagent runtime, it may still pass `streamTo: \"parent\"` from the original ACP request parameters. This caused `sessions_spawn` to return an error: ``` streamTo is only supported for\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65282", + "created_at": "2026-04-12T09:37:25Z", + "deletions": 13, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65282/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65282", + "labels": [ + "agents", + "size: XS" + ], + "merged": false, + "number": 65282, + "review_comments_count": 0, + "state": "open", + "title": "fix(agents): ignore ACP-only streamTo on subagent sessions_spawn", + "updated_at": "2026-04-13T18:32:22Z" + }, + { + "additions": 32, + "author": "hxy91819", + "author_association": "MEMBER", + "body_excerpt": "## Summary - CI pipeline: `checks-fast-contracts-protocol` - Failing problem: `src/channels/plugins/contracts/plugins-core-extension.slack.contract.test.ts` -> `lists peers/groups from config` - Failing problem: `src/channels/plugins/contr\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65280", + "created_at": "2026-04-12T09:31:54Z", + "deletions": 15, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65280/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65280", + "labels": [ + "channel: discord", + "channel: slack", + "maintainer", + "size: XS" + ], + "merged": true, + "number": 65280, + "review_comments_count": 0, + "state": "closed", + "title": "tests(contracts): use contract-api for Slack and Discord directories", + "updated_at": "2026-04-12T10:58:28Z" + }, + { + "additions": 95, + "author": "Jah-yee", + "author_association": "NONE", + "body_excerpt": "Fixes issue #65268 - QQ Bot voice messages fail to download due to missing SSRF allowlist domains.", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65278", + "created_at": "2026-04-12T09:28:51Z", + "deletions": 18, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65278/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65278", + "labels": [ + "agents", + "size: S", + "channel: qqbot" + ], + "merged": false, + "number": 65278, + "review_comments_count": 4, + "state": "closed", + "title": "fix(qqbot): add missing domains to SSRF allowlist (fixes #65268)", + "updated_at": "2026-04-13T07:51:12Z" + }, + { + "additions": 5699, + "author": "mitmul", + "author_association": "NONE", + "body_excerpt": "## What changed This updates the bundled PLaMo provider so uncataloged `plamo-*` model ids resolve to safe runtime metadata, and so parameter-free tool schemas are normalized before they are sent over PLaMo's OpenAI-compatible transport. I\u2026", + "changed_files": 23, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65275", + "created_at": "2026-04-12T09:22:46Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65275/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65275", + "labels": [ + "docs", + "scripts", + "agents", + "size: XL" + ], + "merged": false, + "number": 65275, + "review_comments_count": 12, + "state": "open", + "title": "feat: Add PLaMo provider", + "updated_at": "2026-04-14T09:15:00Z" + }, + { + "additions": 4, + "author": "hxy91819", + "author_association": "MEMBER", + "body_excerpt": "## Summary - CI pipeline: `checks-node-agentic` - Failing problem: `src/agents/pi-embedded-runner/run.timeout-triggered-compaction.test.ts` -> `fires compaction hooks during timeout recovery for ownsCompaction engines` - Problem: the share\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65274", + "created_at": "2026-04-12T09:21:54Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65274/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65274", + "labels": [ + "agents", + "maintainer", + "size: XS" + ], + "merged": true, + "number": 65274, + "review_comments_count": 0, + "state": "closed", + "title": "tests(agents): mock timeout compaction side effects at runtime seam", + "updated_at": "2026-04-12T09:33:45Z" + }, + { + "additions": 10, + "author": "hclsys", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary QQ Bot voice messages (`.wav`) and media files fail to download \u2014 blocked by the SSRF security policy because the hostname allowlist is missing domains that QQ Open Platform actually uses for media delivery. Fixes #65268 ## Root\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65273", + "created_at": "2026-04-12T09:17:12Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65273/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65273", + "labels": [ + "size: XS", + "channel: qqbot" + ], + "merged": false, + "number": 65273, + "review_comments_count": 1, + "state": "closed", + "title": "fix(qqbot): add missing QQ media domains to SSRF hostname allowlist", + "updated_at": "2026-04-13T07:53:28Z" + }, + { + "additions": 255, + "author": "trudbot", + "author_association": "NONE", + "body_excerpt": "## Summary - add Windows custom shell support via `OPENCLAW_SHELL` and `SHELL` - keep `OPENCLAW_SHELL` as the highest-priority override on every platform - choose shell arguments by shell type (`/c` for `cmd`, PowerShell flags for `pwsh` /\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65271", + "created_at": "2026-04-12T09:09:15Z", + "deletions": 9, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65271/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65271", + "labels": [ + "agents", + "size: M" + ], + "merged": false, + "number": 65271, + "review_comments_count": 3, + "state": "open", + "title": "shell: support custom shells on Windows", + "updated_at": "2026-04-12T09:22:13Z" + }, + { + "additions": 4322, + "author": "masatohoshino", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary ### TL;DR - Adds end-to-end LINE sticker support (send + receive) - Introduces bundled `line-sticker` Skill with 14-package catalog (416 stickers) + browser-based catalog editor - Fixes pipeline stages that silently dropped stic\u2026", + "changed_files": 56, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65270", + "created_at": "2026-04-12T09:09:07Z", + "deletions": 52, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65270/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65270", + "labels": [ + "channel: line", + "channel: matrix", + "channel: telegram", + "agents", + "size: XL" + ], + "merged": false, + "number": 65270, + "review_comments_count": 15, + "state": "open", + "title": "feat(line): add LINE sticker send/receive support with Skill-based catalog", + "updated_at": "2026-04-13T13:59:18Z" + }, + { + "additions": 111, + "author": "pashpashpash", + "author_association": "CONTRIBUTOR", + "body_excerpt": "Supersedes #65261. This carries the current-main blocker fixes onto a fresh PR after the prior thread stopped receiving the real CI workflow on synchronize/reopen. Validation run locally: - pnpm test src/plugins/contracts/provider-family-p\u2026", + "changed_files": 9, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65269", + "created_at": "2026-04-12T09:04:54Z", + "deletions": 75, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65269/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65269", + "labels": [ + "docs", + "channel: msteams", + "channel: voice-call", + "scripts", + "agents", + "maintainer", + "size: S" + ], + "merged": true, + "number": 65269, + "review_comments_count": 1, + "state": "closed", + "title": "CI: fix mainline regression blockers", + "updated_at": "2026-04-12T21:18:39Z" + }, + { + "additions": 668, + "author": "OurHobbyApp", + "author_association": "NONE", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: If this PR fixes a plugin beta-release blocker, title it `fix(): beta blocker - ` and link the matching `Beta blocker: - ` issue labeled `be\u2026", + "changed_files": 13, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65266", + "created_at": "2026-04-12T08:51:45Z", + "deletions": 7, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65266/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65266", + "labels": [ + "channel: telegram", + "app: web-ui", + "size: L" + ], + "merged": false, + "number": 65266, + "review_comments_count": 4, + "state": "open", + "title": "PC Aion setup + Telegram output fix + itplug auto-update timer", + "updated_at": "2026-04-13T02:27:04Z" + }, + { + "additions": 480, + "author": "TOMUIV", + "author_association": "NONE", + "body_excerpt": "## Summary Change the default `gateway.auth.mode` from `token` to `none` in `maybePersistAutoGeneratedGatewayInstallToken()`. ## Motivation OpenClaw is primarily deployed in local/private networks (e.g., behind a NAT or firewall). The gate\u2026", + "changed_files": 8, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65265", + "created_at": "2026-04-12T08:50:52Z", + "deletions": 462, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65265/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65265", + "labels": [ + "gateway", + "commands", + "agents", + "size: L", + "extensions: qa-lab" + ], + "merged": false, + "number": 65265, + "review_comments_count": 6, + "state": "closed", + "title": "fix(gateway): default gateway.auth.mode to 'none' for local deployments", + "updated_at": "2026-04-12T11:46:31Z" + }, + { + "additions": 334, + "author": "ngutman", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: local `pnpm test` kept using the conservative `4x1` full-suite defaults even on large local machines, while Vitest already had a host-aware local scheduler. - Why it matters: larger developer machines can run the loca\u2026", + "changed_files": 7, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 5, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65264", + "created_at": "2026-04-12T08:43:47Z", + "deletions": 112, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65264/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65264", + "labels": [ + "scripts", + "maintainer", + "size: M" + ], + "merged": true, + "number": 65264, + "review_comments_count": 2, + "state": "closed", + "title": "feat(test): use host-aware local full-suite defaults", + "updated_at": "2026-04-12T09:46:24Z" + }, + { + "additions": 44, + "author": "Bartok9", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Problem When the Pi settings manager returns a compaction reserve value equal to (or exceeding) the full context token budget, the preemptive overflow precheck computes: ``` promptBudgetBeforeReserve = contextTokenBudget - reserveTokens\u2026", + "changed_files": 2, + "cluster_id": "cluster-63923-8", + "cluster_ids": [ + "cluster-63923-8" + ], + "cluster_role": "member", + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65263", + "created_at": "2026-04-12T08:42:21Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65263/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65263", + "labels": [ + "agents", + "size: XS" + ], + "merged": false, + "number": 65263, + "review_comments_count": 1, + "state": "open", + "title": "fix(compaction): clamp reserveTokens to at most 90% of context window in precheck", + "updated_at": "2026-04-12T08:44:39Z" + }, + { + "additions": 89, + "author": "bloodycoder", + "author_association": "NONE", + "body_excerpt": "## Summary - fix misleading guidance for `openclaw commands` when `plugins.allow` is configured - treat built-in runtime slash commands (like `commands`) as non-CLI commands in missing-command diagnostics - add regression test for `command\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65262", + "created_at": "2026-04-12T08:42:07Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65262/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65262", + "labels": [ + "cli", + "agents", + "size: S" + ], + "merged": false, + "number": 65262, + "review_comments_count": 5, + "state": "open", + "title": "fix(cli): clarify that 'commands' is a runtime slash command", + "updated_at": "2026-04-12T15:41:00Z" + }, + { + "additions": 167, + "author": "pashpashpash", + "author_association": "CONTRIBUTOR", + "body_excerpt": "Supersedes #65255. This revives the current-main blocker fixes on a fresh branch after the previous retry PR stopped receiving the real CI workflow. Validation run locally: - pnpm test src/plugins/contracts/provider-family-plugin-tests.tes\u2026", + "changed_files": 14, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65261", + "created_at": "2026-04-12T08:41:54Z", + "deletions": 72, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65261/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65261", + "labels": [ + "docs", + "channel: msteams", + "channel: slack", + "channel: voice-call", + "extensions: memory-core", + "scripts", + "agents", + "maintainer", + "size: M" + ], + "merged": false, + "number": 65261, + "review_comments_count": 1, + "state": "closed", + "title": "CI: fix mainline regression blockers", + "updated_at": "2026-04-13T04:00:34Z" + }, + { + "additions": 674, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: explicit `providerRefs` setup/runtime loads still relied on older manifest ownership helpers, so descriptor-first provider activation hints were not actually narrowing those paths. - Why it matters: provider-targeted\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65259", + "created_at": "2026-04-12T08:38:09Z", + "deletions": 63, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65259/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65259", + "labels": [ + "docs", + "maintainer", + "size: L" + ], + "merged": true, + "number": 65259, + "review_comments_count": 4, + "state": "closed", + "title": "feat(plugins): narrow explicit provider loads from manifests", + "updated_at": "2026-04-12T09:52:49Z" + }, + { + "additions": 2134, + "author": "aayushprsingh", + "author_association": "NONE", + "body_excerpt": "## Summary This PR upgrades the Control UI around connection state, tool visibility, chat ergonomics, approval flows, and artifact handling. ## What changed - Reconnect and restored-session UX - keep the dashboard mounted after the first s\u2026", + "changed_files": 32, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65258", + "created_at": "2026-04-12T08:37:49Z", + "deletions": 142, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65258/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65258", + "labels": [ + "app: web-ui", + "commands", + "agents", + "size: XL" + ], + "merged": false, + "number": 65258, + "review_comments_count": 10, + "state": "open", + "title": "Improve control UI chat and task UX", + "updated_at": "2026-04-12T12:19:42Z" + }, + { + "additions": 387, + "author": "100yenadmin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Four targeted fixes that close the behavioral gap between GPT-5.4 and Claude agents in OpenClaw. Based on root-cause analysis of the actual code paths in `extensions/openai/prompt-overlay.ts`, `src/agents/pi-embedded-runner/run.\u2026", + "changed_files": 13, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65257", + "created_at": "2026-04-12T08:28:33Z", + "deletions": 15, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65257/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65257", + "labels": [ + "docs", + "agents", + "size: M", + "extensions: openai" + ], + "merged": false, + "number": 65257, + "review_comments_count": 58, + "state": "closed", + "title": "agents: strengthen GPT-5.4 execution bias and close the one-action-then-narrative loophole", + "updated_at": "2026-04-13T01:53:11Z" + }, + { + "additions": 146, + "author": "pashpashpash", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - fix provider-boundary and extension-boundary regressions on current main - align the MSTeams logger tests with the current logger contract - refresh the generated config schema artifacts that drifted on main - fix the remainin\u2026", + "changed_files": 12, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65255", + "created_at": "2026-04-12T08:21:15Z", + "deletions": 36, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65255/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65255", + "labels": [ + "docs", + "channel: msteams", + "channel: slack", + "channel: voice-call", + "gateway", + "extensions: memory-core", + "scripts", + "maintainer", + "size: S" + ], + "merged": false, + "number": 65255, + "review_comments_count": 0, + "state": "closed", + "title": "CI: fix mainline regression blockers", + "updated_at": "2026-04-12T08:30:58Z" + }, + { + "additions": 14, + "author": "OpenCodeEngineer", + "author_association": "NONE", + "body_excerpt": "## Summary - classify the exact Responses transport fallback string `Unknown error (no error details in response)` as failover reason `unknown` - keep this path failover-eligible so assistant/model fallback is attempted instead of ending t\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65254", + "created_at": "2026-04-12T08:19:51Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65254/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65254", + "labels": [ + "agents", + "size: XS" + ], + "merged": false, + "number": 65254, + "review_comments_count": 4, + "state": "open", + "title": "fix(agents): classify unknown-no-details Responses failures as unknown for failover", + "updated_at": "2026-04-13T20:20:49Z" + }, + { + "additions": 606, + "author": "kumarshreyak", + "author_association": "NONE", + "body_excerpt": "## Summary Adds a minimal, deterministic pixel-art placeholder generator to `extensions/image-generation-core`. This is a small MVP intended as a foundation for future game/media/video asset flows (e.g., Stardew-like pixel assets), while k\u2026", + "changed_files": 7, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65253", + "created_at": "2026-04-12T08:19:01Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65253/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65253", + "labels": [ + "size: L" + ], + "merged": false, + "number": 65253, + "review_comments_count": 5, + "state": "open", + "title": "image-generation-core: add deterministic pixel-art placeholder MVP", + "updated_at": "2026-04-14T04:33:06Z" + }, + { + "additions": 70, + "author": "sercada", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - bypass recognized slash commands before dispatching a bound conversation to the ACP runtime - keep `/acp ...` and `/unfocus` routed to OpenClaw's local command handlers even when the conversation is currently ACP-bound - updat\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65248", + "created_at": "2026-04-12T08:11:04Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65248/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65248", + "labels": [ + "size: S" + ], + "merged": false, + "number": 65248, + "review_comments_count": 1, + "state": "open", + "title": "fix(acp): bypass bound slash commands to local handlers", + "updated_at": "2026-04-12T14:27:05Z" + }, + { + "additions": 146, + "author": "pashpashpash", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - fix provider-boundary and extension-boundary regressions on current main - align the MSTeams logger tests with the current logger contract - refresh the generated config schema artifacts that drifted on main ## Testing - pnpm\u2026", + "changed_files": 12, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65243", + "created_at": "2026-04-12T07:59:11Z", + "deletions": 36, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65243/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65243", + "labels": [ + "docs", + "channel: msteams", + "channel: slack", + "channel: voice-call", + "gateway", + "extensions: memory-core", + "scripts", + "maintainer", + "size: S" + ], + "merged": false, + "number": 65243, + "review_comments_count": 0, + "state": "closed", + "title": "CI: fix mainline regression blockers", + "updated_at": "2026-04-12T08:30:00Z" + }, + { + "additions": 938, + "author": "richardclawbot", + "author_association": "NONE", + "body_excerpt": "## Summary - Introduces a `CompletionDeliveryGate` module that uses first-writer-wins compare-and-swap to ensure exactly one delivery path handles each ACP/subagent completion event - Integrates gate checks into the three competing deliver\u2026", + "changed_files": 12, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65242", + "created_at": "2026-04-12T07:52:20Z", + "deletions": 35, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65242/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65242", + "labels": [ + "channel: discord", + "agents", + "size: L" + ], + "merged": false, + "number": 65242, + "review_comments_count": 7, + "state": "open", + "title": "fix: CompletionDeliveryGate to prevent duplicate ACP completion delivery", + "updated_at": "2026-04-12T11:51:58Z" + }, + { + "additions": 131, + "author": "vincentkoc", + "author_association": "MEMBER", + "body_excerpt": "## Summary - Problem: the repo root `AGENTS.md` had grown into a mixed policy file, ops note dump, and duplicated boundary guide, with repeated rules already owned by scoped `AGENTS.md` files. - Why it matters: duplicated instructions drif\u2026", + "changed_files": 10, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65241", + "created_at": "2026-04-12T07:50:03Z", + "deletions": 34, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65241/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65241", + "labels": [ + "docs", + "app: web-ui", + "scripts", + "maintainer", + "size: S" + ], + "merged": true, + "number": 65241, + "review_comments_count": 0, + "state": "closed", + "title": "docs(agents): split scoped workflow guidance", + "updated_at": "2026-04-12T08:13:39Z" + }, + { + "additions": 74, + "author": "sercada", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - persist the registered memory capability in the plugin registry cache - restore the cached capability on cache hits so memory `publicArtifacts` stay available - add a regression test covering cached restores for memory capabil\u2026", + "changed_files": 3, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65240", + "created_at": "2026-04-12T07:49:56Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65240/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65240", + "labels": [ + "size: S" + ], + "merged": true, + "number": 65240, + "review_comments_count": 0, + "state": "closed", + "title": "fix(plugins): restore cached memory capability on cache hits", + "updated_at": "2026-04-12T10:54:56Z" + }, + { + "additions": 21, + "author": "EronFan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Use nullish coalescing (??) instead of logical OR (||) when serializing usage totals to NormalizedUsage. ## Root Cause When API returns input_tokens: 0 with cached_tokens: 262000: 1. normalizeUsage produces { input: 0, cacheRead\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65237", + "created_at": "2026-04-12T07:42:01Z", + "deletions": 23, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65237/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65237", + "labels": [ + "commands", + "agents", + "size: XS", + "r: too-many-prs" + ], + "merged": false, + "number": 65237, + "review_comments_count": 1, + "state": "closed", + "title": "fix: preserve zero-valued usage fields", + "updated_at": "2026-04-12T07:47:25Z" + }, + { + "additions": 1742, + "author": "100yenadmin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Closes #65220. This teaches context engines to opt into background turn maintenance and moves turn-triggered maintenance off the foreground session lane when `turnMaintenanceMode === \"background\"`. For `lossless-claw`, that mean\u2026", + "changed_files": 8, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 13, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65233", + "created_at": "2026-04-12T07:36:46Z", + "deletions": 36, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65233/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65233", + "labels": [ + "docs", + "agents", + "size: XL" + ], + "merged": true, + "number": 65233, + "review_comments_count": 29, + "state": "closed", + "title": "Run context-engine turn maintenance as idle-aware background work", + "updated_at": "2026-04-13T13:50:29Z" + }, + { + "additions": 10, + "author": "EronFan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary\\nFixes TypeError when cron service starts up and accesses `job.state.runningAtMs` on jobs whose `state` is undefined.\\n\\n## Root Cause\\nJobs loaded from the persistent store may be missing the `state` field if they were created\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65232", + "created_at": "2026-04-12T07:30:21Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65232/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65232", + "labels": [ + "size: XS", + "r: too-many-prs" + ], + "merged": false, + "number": 65232, + "review_comments_count": 2, + "state": "closed", + "title": "fix(cron): guard job.state before accessing in planStartupCatchup", + "updated_at": "2026-04-12T07:33:33Z" + }, + { + "additions": 14, + "author": "EronFan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Fix Gmail watcher duplicate start issue (#65042): when port 8788 is already in use, set `stopped=true` to prevent repeated restart attempts. ## Changes - Add `stopped` state variable to track intentional stops - In `spawnGogServ\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65230", + "created_at": "2026-04-12T07:24:51Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65230/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65230", + "labels": [ + "size: XS", + "r: too-many-prs" + ], + "merged": false, + "number": 65230, + "review_comments_count": 1, + "state": "closed", + "title": "fix(gmail): set stopped=true on addressInUse to prevent duplicate watcher restart", + "updated_at": "2026-04-12T07:28:00Z" + }, + { + "additions": 134, + "author": "extrasmall0", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Problem When `gateway.auth.token` is configured as a SecretRef backed by an environment variable (e.g. via `openclaw secrets` or a credentials file), running `openclaw doctor` shows a false-positive warning: ``` \u25c7 Gateway auth \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65229", + "created_at": "2026-04-12T07:18:16Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65229/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65229", + "labels": [ + "gateway", + "extensions: memory-core", + "size: S" + ], + "merged": false, + "number": 65229, + "review_comments_count": 4, + "state": "open", + "title": "fix(doctor): resolve env-backed SecretRef in gateway auth health check to prevent false-positive warning", + "updated_at": "2026-04-12T19:21:03Z" + }, + { + "additions": 172, + "author": "fujiwaranosai850", + "author_association": "NONE", + "body_excerpt": "## Summary - add observed heartbeat state to status summaries using the latest runtime heartbeat event - show that observed state in the `Heartbeat` line so running agents are not reported as only disabled/configured - cover running, stale\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65227", + "created_at": "2026-04-12T07:17:06Z", + "deletions": 10, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65227/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65227", + "labels": [ + "commands", + "size: S" + ], + "merged": false, + "number": 65227, + "review_comments_count": 3, + "state": "closed", + "title": "fix(status): reflect observed heartbeat state", + "updated_at": "2026-04-12T07:21:01Z" + }, + { + "additions": 223, + "author": "bek91", + "author_association": "NONE", + "body_excerpt": "## Summary - serialize the qmd session export + update critical section per agent so concurrent manager instances cannot rewrite the same managed session export file at once - dedupe in-flight full QMD manager creation so startup paths reu\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65226", + "created_at": "2026-04-12T07:12:12Z", + "deletions": 49, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65226/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65226", + "labels": [ + "extensions: memory-core", + "size: M" + ], + "merged": false, + "number": 65226, + "review_comments_count": 1, + "state": "open", + "title": "Fix qmd session export/update races", + "updated_at": "2026-04-12T07:19:17Z" + }, + { + "additions": 3566, + "author": "100yenadmin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary The test harness and CI proof for the GPT-5.4 parity program. Runs GPT-5.4 and Opus 4.6 through the same 11 scenarios, compares the results, and produces a pass/fail verdict \u2014 all with real API keys (or without if you prefer). P\u2026", + "changed_files": 24, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 6, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65224", + "created_at": "2026-04-12T07:09:27Z", + "deletions": 451, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65224/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65224", + "labels": [ + "docs", + "size: XL", + "extensions: qa-lab" + ], + "merged": false, + "number": 65224, + "review_comments_count": 71, + "state": "closed", + "title": "agents: GPT-5.4 parity proof rollup ", + "updated_at": "2026-04-13T04:03:09Z" + }, + { + "additions": 1280, + "author": "jetd1", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Problem In Telegram, grammYs `sequentialize` middleware serializes all updates for the same chat. When a run is active (e.g., executing a tool call), new messages queue behind it. This prevents: - **Interrupt mode**: user message cannot\u2026", + "changed_files": 22, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65222", + "created_at": "2026-04-12T07:07:35Z", + "deletions": 86, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65222/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65222", + "labels": [ + "channel: telegram", + "agents", + "size: XL" + ], + "merged": false, + "number": 65222, + "review_comments_count": 2, + "state": "open", + "title": "fix(telegram): bypass grammY sequential key for interrupt/steer message delivery", + "updated_at": "2026-04-12T14:25:48Z" + }, + { + "additions": 611, + "author": "jetd1", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Problem When a user message arrives during an active run in **interrupt** queue mode, the scheduling layer rejects it with _\"\u26a0\ufe0f Previous run is still shutting down\"_ and the message is lost. ### Root cause Two registries track run activ\u2026", + "changed_files": 11, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65221", + "created_at": "2026-04-12T07:07:18Z", + "deletions": 28, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65221/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65221", + "labels": [ + "agents", + "size: L" + ], + "merged": false, + "number": 65221, + "review_comments_count": 18, + "state": "open", + "title": "fix: resolve interrupt scheduling race between embedded run and ReplyOperation registries", + "updated_at": "2026-04-12T12:04:58Z" + }, + { + "additions": 538, + "author": "100yenadmin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Auto-activates the `strict-agentic` execution contract for unconfigured GPT-5 `openai` / `openai-codex` runs so the behavioral improvements from the parity program work out of the box. Previously users had to manually set `agent\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65219", + "created_at": "2026-04-12T06:57:53Z", + "deletions": 16, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65219/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65219", + "labels": [ + "agents", + "size: L" + ], + "merged": true, + "number": 65219, + "review_comments_count": 6, + "state": "closed", + "title": "agents: GPT-5.4 runtime completion rollup ", + "updated_at": "2026-04-12T23:36:11Z" + }, + { + "additions": 535, + "author": "100yenadmin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary This is the runtime completion rollup for the GPT-5.4 / Codex parity program. It supersedes #64679 and keeps the runtime closeout in one readable merge unit. ## What This Fixes From The Original GPT-5.4 Prompt The original runti\u2026", + "changed_files": 6, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65217", + "created_at": "2026-04-12T06:55:55Z", + "deletions": 16, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65217/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65217", + "labels": [ + "agents", + "size: L", + "r: too-many-prs" + ], + "merged": false, + "number": 65217, + "review_comments_count": 2, + "state": "closed", + "title": "GPT-5.4 runtime completion rollup", + "updated_at": "2026-04-12T07:03:44Z" + }, + { + "additions": 3304, + "author": "100yenadmin", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary This is the parity proof rollup for the GPT-5.4 / Codex parity program. It supersedes: - #64662 - #64681 - #64685 - #64789 - #64837 - #64909 The goal is to make the remaining proof/release-certification work reviewable as one co\u2026", + "changed_files": 24, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 4, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65216", + "created_at": "2026-04-12T06:55:54Z", + "deletions": 524, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65216/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65216", + "labels": [ + "docs", + "size: XL", + "r: too-many-prs", + "extensions: qa-lab" + ], + "merged": false, + "number": 65216, + "review_comments_count": 5, + "state": "closed", + "title": "GPT-5.4 parity proof rollup", + "updated_at": "2026-04-12T07:09:38Z" + }, + { + "additions": 484, + "author": "neofdezf-cloud", + "author_association": "NONE", + "body_excerpt": "Adds a focused `openclaw sessions explain ` command to inspect how a stored session resolves today. ### What changed - adds `openclaw sessions explain ` - supports both human-readable text output and `--json` - resolves the sessi\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 8, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65213", + "created_at": "2026-04-12T06:48:14Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65213/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65213", + "labels": [ + "cli", + "commands", + "size: M" + ], + "merged": false, + "number": 65213, + "review_comments_count": 9, + "state": "open", + "title": "feat(sessions): add effective session explain command", + "updated_at": "2026-04-12T15:53:52Z" + }, + { + "additions": 49, + "author": "SYU8384", + "author_association": "NONE", + "body_excerpt": "## Summary Fix QMD custom collection path handling when a config entry points directly to a file instead of a directory. Before this change, a direct file path like `shared-memory.md` was treated as the collection root itself, with the usu\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65212", + "created_at": "2026-04-12T06:44:07Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65212/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65212", + "labels": [ + "size: S" + ], + "merged": false, + "number": 65212, + "review_comments_count": 2, + "state": "open", + "title": "fix(qmd): normalize direct file collection paths", + "updated_at": "2026-04-12T07:26:22Z" + }, + { + "additions": 74, + "author": "hondaya01", + "author_association": "NONE", + "body_excerpt": "## Problem Custom models declared in `models.providers.*.models[]` (e.g. a local copilot proxy with `input: [\"text\", \"image\"]`) were **absent from the built-in Pi SDK model registry**. This meant `resolveGatewayModelSupportsImages` could n\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65211", + "created_at": "2026-04-12T06:40:40Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65211/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65211", + "labels": [ + "gateway", + "size: S" + ], + "merged": false, + "number": 65211, + "review_comments_count": 3, + "state": "open", + "title": "fix: include user-configured provider models in gateway catalog for capability checks", + "updated_at": "2026-04-12T07:14:11Z" + }, + { + "additions": 107, + "author": "EronFan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary - preserve persisted `job.state` when cron jobs are normalized during store load - keep legacy runtime fields like `runningAtMs` and `nextRunAtMs` available for startup catch-up - add a regression test covering persisted runtime\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65206", + "created_at": "2026-04-12T06:32:59Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65206/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65206", + "labels": [ + "size: S", + "r: too-many-prs" + ], + "merged": false, + "number": 65206, + "review_comments_count": 1, + "state": "closed", + "title": "fix: preserve cron persisted runtime state on load", + "updated_at": "2026-04-12T06:36:54Z" + }, + { + "additions": 1698, + "author": "thewilloftheshadow", + "author_association": "MEMBER", + "body_excerpt": "## Summary Describe the problem and fix in 2\u20135 bullets: If this PR fixes a plugin beta-release blocker, title it `fix(): beta blocker - ` and link the matching `Beta blocker: - ` issue labeled `be\u2026", + "changed_files": 41, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65205", + "created_at": "2026-04-12T06:31:28Z", + "deletions": 20, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65205/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65205", + "labels": [ + "docs", + "channel: discord", + "gateway", + "agents", + "maintainer", + "size: XL" + ], + "merged": false, + "number": 65205, + "review_comments_count": 4, + "state": "open", + "title": "feat(discord): add canvas-first Discord Activities support", + "updated_at": "2026-04-12T06:54:20Z" + }, + { + "additions": 54, + "author": "samrusani", + "author_association": "CONTRIBUTOR", + "body_excerpt": "Fix isolated cron runs so the resolved transcript path is attached to the session entry before persistence, and keep a fallback in the executor. Validation: - pnpm exec vitest run src/cron/isolated-agent.session-identity.test.ts", + "changed_files": 7, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65203", + "created_at": "2026-04-12T06:30:02Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65203/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65203", + "labels": [ + "size: S" + ], + "merged": true, + "number": 65203, + "review_comments_count": 5, + "state": "closed", + "title": "Fix cron sessionFile persistence for isolated runs", + "updated_at": "2026-04-12T11:10:12Z" + }, + { + "additions": 73, + "author": "hclsys", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary The Feishu account config schema was updated to use `name` instead of `botName`, but no doctor migration was added. Users upgrading to 2026.4.11 with an existing `botName` hit a fatal config validation error that blocks gateway\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65202", + "created_at": "2026-04-12T06:24:31Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65202/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65202", + "labels": [ + "commands", + "size: S" + ], + "merged": false, + "number": 65202, + "review_comments_count": 3, + "state": "closed", + "title": "fix(feishu): add doctor migration for legacy botName \u2192 name rename", + "updated_at": "2026-04-13T02:56:54Z" + }, + { + "additions": 175, + "author": "coder999999999", + "author_association": "NONE", + "body_excerpt": "## Summary - Fixes #65135 \u2014 the Dreaming panel showed only the next-run timestamp (e.g. \"3:00\") for all sleep phases, making them indistinguishable when schedules happened to share the same next-run time - Adds `describeCronExpression()` u\u2026", + "changed_files": 4, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65199", + "created_at": "2026-04-12T06:09:57Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65199/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65199", + "labels": [ + "app: web-ui", + "size: S" + ], + "merged": false, + "number": 65199, + "review_comments_count": 5, + "state": "open", + "title": "fix(ui): humanize cron expressions in dreaming phase and cron job displays", + "updated_at": "2026-04-12T06:48:14Z" + }, + { + "additions": 21, + "author": "alexuser", + "author_association": "NONE", + "body_excerpt": "## Summary - add a regression test for non-streaming assistant replies that arrive as plain string content at `message_end` - keep `assistantTexts` populated for the final reply in that provider shape ## Why The installed `v2026.4.9` runti\u2026", + "changed_files": 1, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 1, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65198", + "created_at": "2026-04-12T06:08:19Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65198/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65198", + "labels": [ + "agents", + "size: XS" + ], + "merged": false, + "number": 65198, + "review_comments_count": 0, + "state": "open", + "title": "test: cover string-backed non-streaming assistant replies", + "updated_at": "2026-04-12T06:10:10Z" + }, + { + "additions": 193, + "author": "reghar-bot", + "author_association": "NONE", + "body_excerpt": "## Summary This upstreams the local memory-wiki hotfix cluster into maintained source code. Fixes included: - sanitize `[[reply_to_current]]` and `[[reply_to:...]]` tags when rendering bridged markdown source pages - invalidate bridge sour\u2026", + "changed_files": 7, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65197", + "created_at": "2026-04-12T06:05:32Z", + "deletions": 11, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65197/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65197", + "labels": [ + "size: M", + "extensions: memory-wiki" + ], + "merged": false, + "number": 65197, + "review_comments_count": 1, + "state": "closed", + "title": "fix(memory-wiki): upstream bridge and lint hotfixes", + "updated_at": "2026-04-12T17:06:22Z" + }, + { + "additions": 180, + "author": "EronFan", + "author_association": "CONTRIBUTOR", + "body_excerpt": "## Summary Fix Gmail watcher duplicate start issue (#65042): when port 8788 is already in use, set stopped=true to prevent repeated restart attempts. ## Changes - `src/hooks/gmail-watcher.ts`: set stopped=true when addressInUse - `extensio\u2026", + "changed_files": 12, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65196", + "created_at": "2026-04-12T06:01:38Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65196/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65196", + "labels": [ + "app: web-ui", + "gateway", + "extensions: memory-core", + "agents", + "size: S", + "r: too-many-prs", + "extensions: qa-lab" + ], + "merged": false, + "number": 65196, + "review_comments_count": 1, + "state": "closed", + "title": "fix(gmail): set stopped=true on addressInUse to prevent duplicate watcher restart", + "updated_at": "2026-04-12T06:06:16Z" + }, + { + "additions": 98, + "author": "swang430", + "author_association": "NONE", + "body_excerpt": "## Summary This PR prevents duplicate iMessage monitor startup when `channels.imessage.accounts` contains both: - a named account - `default` used only as fallback config Before this change, both could be treated as enabled monitor account\u2026", + "changed_files": 2, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 3, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65194", + "created_at": "2026-04-12T05:48:53Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65194/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65194", + "labels": [ + "channel: imessage", + "size: S" + ], + "merged": false, + "number": 65194, + "review_comments_count": 4, + "state": "open", + "title": "fix(imessage): avoid duplicate default monitor startup", + "updated_at": "2026-04-12T07:45:12Z" + }, + { + "additions": 74, + "author": "kiet1022", + "author_association": "NONE", + "body_excerpt": "## Summary - Add `glossary.vi-VN.json` with 38 EN\u2192VI term mappings - Add `vi-VN-navigation.json` navigation structure for Vietnamese locale ## Motivation OpenClaw is widely used in Vietnam \u2014 it has a large and growing Vietnamese user commu\u2026", + "changed_files": 5, + "cluster_id": null, + "cluster_ids": [], + "cluster_role": null, + "comments_count": 2, + "conversation_url": "https://github.com/openclaw/openclaw/pull/65190", + "created_at": "2026-04-12T05:23:40Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65190/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65190", + "labels": [ + "docs", + "scripts", + "size: XS" + ], + "merged": false, + "number": 65190, + "review_comments_count": 1, + "state": "open", + "title": "feat(i18n): add Vietnamese (vi-VN) localization", + "updated_at": "2026-04-12T05:47:13Z" + }, + { + "additions": 141, + "author": "draix", + "author_association": "NONE", + "body_excerpt": "## Summary Safari on iOS automatically zooms the page when a focused `` or `