openclaw - ✅(Solved) Fix chore: rebase origin/main and feature branches onto upstream v2026.3.22 [1 pull requests, 1 comments, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#52830Fetched 2026-04-08 01:18:45
View on GitHub
Comments
1
Participants
1
Timeline
2
Reactions
0
Author
Participants
Timeline (top)
commented ×1cross-referenced ×1

Fix Action

Fix / Workaround

30 unique commits land on top of updated main. Conflict risk is low — many are the same patches already applied in Step 1 and git will skip them as already-applied.

PR fix notes

PR #53237: feat: cron improvements, skill triggers, twilio-sms, webchat attachments, control-ui IP guard

Description (problem / solution / changelog)

Summary

Rebased fork main onto upstream v2026.3.22. Includes the following batched features and fixes developed on feature/cron-improvements:

Cron improvements

  • Script payload kindkind: "script" with command, args, env, cwd, timeoutSeconds, deliver fields; executor uses execFile (no shell injection)
  • Script interpreter auto-detection — resolves interpreter from file extension (.py, .sh, .js, etc.); no chmod +x required on most platforms
  • Windows script supportresolveScriptInterpreter handles .cmd/.bat/.ps1
  • Lifecycle hooksbeforeRun/afterRun/onError hooks with script or agent-turn payloads; resolveUserPath for hook script paths
  • Script delivery pipelineannounceScriptOutput wired via dep injection; deliver flag respected
  • Timeout policy — enforces timeoutSeconds for script payloads; guards against NaN
  • resolveDeliveryConfig — extracted helper; script delivery flag wiring tested
  • coercePayload — trims command/cwd on script kind
  • Fix isIsolatedLike missing variable in assertSupportedJobSpec
  • Fix hook dispatch in catch-up runs; abort/timeout edge cases covered

Skill triggers (dynamic loading)

  • triggers: frontmatter field — comma-separated or YAML array
  • skills.dynamicLoading.enabled config toggle (default false, opt-in)
  • Trigger-matched skills → full content; unmatched → compact listing; skills without triggers → always full

Twilio SMS extension (Phase 1 inbound-only)

  • extensions/twilio-sms — receives inbound SMS via webhook, routes to agent via subagent.run() SDK
  • SecretRef-compatible config schema for authToken

WebChat attachments

  • Attachment file picker accepts PDF and plain-text file types

Control UI IP guard (feature/60)

  • gateway.controlUi.allowedNetworks — IP/CIDR allowlist for HTTP access to Control UI
  • Loopback (127.0.0.1, ::1) always permitted regardless of allowlist
  • Handles trustedProxies shadowing socket addr (loopback fallback restored)
  • IPv6 CIDR and wildcard tests added

Fixes

  • SecretRef accepted in twilio-sms and voice-call plugin config schemas (#55)
  • TS errors resolved after rebase: slack import path, allowedNetworks type, messageText param, duplicate isIsolatedLike, non-null assertions in normalize tests
  • Stale generated files regenerated: schema.base.generated.ts, bundled-plugin-metadata.generated.ts

Related issues

Closes #52830 (rebase tracking issue)

Test plan

  • pnpm tsgo — 0 errors
  • pnpm check — all lint/format/schema checks pass
  • pnpm test — cron suite passes (script payload, timeout policy, lifecycle hooks, normalize)
  • Skill triggers: create a skill with triggers: "buy, order" frontmatter; verify only loads when message matches
  • Twilio SMS: inbound webhook delivers message to agent session
  • Control UI: allowedNetworks: ["192.168.1.0/24"] blocks requests from outside the CIDR

Changed files

  • .agents/skills/openclaw-parallels-smoke/SKILL.md (modified, +1/-0)
  • .agents/skills/openclaw-release-maintainer/SKILL.md (modified, +142/-3)
  • .claude/CLAUDE.md (added, +80/-0)
  • .claude/settings.json (added, +8/-0)
  • .coderabbit.yaml (added, +51/-0)
  • .github/ISSUE_TEMPLATE/config.yml (modified, +2/-8)
  • .github/ISSUE_TEMPLATE/improvement.yml (added, +62/-0)
  • .github/labeler.yml (modified, +4/-0)
  • .github/pull_request_template.md (modified, +26/-0)
  • .github/workflows/ci.yml (modified, +12/-1)
  • .github/workflows/macos-release.yml (added, +86/-0)
  • .github/workflows/openclaw-npm-release.yml (modified, +44/-68)
  • .gitignore (modified, +5/-1)
  • AGENTS.md (modified, +5/-0)
  • CHANGELOG.md (modified, +58/-0)
  • apps/android/app/build.gradle.kts (modified, +2/-2)
  • apps/ios/Config/Version.xcconfig (modified, +3/-3)
  • apps/ios/fastlane/Fastfile (modified, +1/-1)
  • apps/macos/Sources/OpenClaw/Resources/Info.plist (modified, +2/-2)
  • apps/macos/Sources/OpenClawProtocol/GatewayModels.swift (modified, +5/-1)
  • apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift (modified, +5/-1)
  • docs/.generated/config-baseline.json (modified, +1429/-4737)
  • docs/.generated/config-baseline.jsonl (modified, +123/-367)
  • docs/architecture_summary.md (added, +33/-0)
  • docs/automation/webhook.md (modified, +1/-1)
  • docs/channels/feishu.md (modified, +3/-3)
  • docs/channels/index.md (modified, +2/-1)
  • docs/claude-workflow.md (added, +143/-0)
  • docs/cli/index.md (modified, +9/-2)
  • docs/docs.json (modified, +7/-7)
  • docs/plugins/sdk-overview.md (modified, +0/-3)
  • docs/providers/index.md (modified, +6/-2)
  • docs/reference/RELEASING.md (modified, +10/-1)
  • docs/repo-map.json (added, +683/-0)
  • docs/tools/index.md (modified, +12/-12)
  • docs/zh-CN/channels/feishu.md (modified, +3/-3)
  • extensions/discord/src/api.test.ts (modified, +5/-1)
  • extensions/discord/src/channel-actions.test.ts (modified, +19/-0)
  • extensions/discord/src/channel-actions.ts (modified, +2/-1)
  • extensions/discord/src/channel.test.ts (modified, +10/-3)
  • extensions/discord/src/components.test.ts (modified, +21/-12)
  • extensions/discord/src/monitor.test.ts (modified, +5/-0)
  • extensions/discord/src/monitor.tool-result.sends-status-replies-responseprefix.test.ts (modified, +12/-6)
  • extensions/discord/src/monitor/agent-components.wildcard.test.ts (modified, +25/-11)
  • extensions/discord/src/monitor/listeners.test.ts (modified, +8/-2)
  • extensions/discord/src/monitor/message-handler.preflight.test.ts (modified, +16/-9)
  • extensions/discord/src/monitor/message-handler.queue.test.ts (modified, +10/-6)
  • extensions/discord/src/monitor/native-command.options.test.ts (modified, +19/-8)
  • extensions/discord/src/monitor/provider.skill-dedupe.test.ts (modified, +8/-2)
  • extensions/discord/src/monitor/thread-bindings.discord-api.test.ts (modified, +10/-4)
  • extensions/discord/src/monitor/thread-session-close.test.ts (modified, +4/-2)
  • extensions/discord/src/outbound-adapter.test.ts (modified, +8/-2)
  • extensions/duckduckgo/src/ddg-search-provider.test.ts (modified, +10/-2)
  • extensions/feishu/src/channel.test.ts (modified, +34/-1)
  • extensions/feishu/src/channel.ts (modified, +49/-19)
  • extensions/firecrawl/src/firecrawl-scrape-tool.test.ts (modified, +15/-4)
  • extensions/firecrawl/src/firecrawl-search-provider.test.ts (modified, +10/-2)
  • extensions/firecrawl/src/firecrawl-search-tool.test.ts (modified, +15/-4)
  • extensions/line/src/bot-handlers.test.ts (modified, +16/-10)
  • extensions/line/src/download.test.ts (modified, +6/-3)
  • extensions/line/src/monitor.lifecycle.test.ts (modified, +12/-8)
  • extensions/line/src/probe.test.ts (modified, +8/-2)
  • extensions/line/src/send.test.ts (modified, +13/-7)
  • extensions/matrix/index.test.ts (modified, +20/-0)
  • extensions/matrix/src/runtime-api.ts (modified, +2/-3)
  • extensions/memory-lancedb/index.test.ts (modified, +13/-9)
  • extensions/memory-lancedb/index.ts (modified, +2/-14)
  • extensions/memory-lancedb/lancedb-runtime.test.ts (added, +176/-0)
  • extensions/memory-lancedb/lancedb-runtime.ts (added, +266/-0)
  • extensions/minimax/oauth.ts (modified, +4/-0)
  • extensions/mistral/model-definitions.test.ts (modified, +2/-2)
  • extensions/mistral/model-definitions.ts (modified, +5/-5)
  • extensions/modelstudio/index.ts (modified, +52/-6)
  • extensions/modelstudio/model-definitions.ts (modified, +3/-0)
  • extensions/modelstudio/onboard.ts (modified, +25/-1)
  • extensions/modelstudio/openclaw.plugin.json (modified, +32/-4)
  • extensions/msteams/src/probe.test.ts (modified, +12/-2)
  • extensions/openai/openai-codex-provider.runtime.test.ts (added, +51/-0)
  • extensions/openai/openai-codex-provider.runtime.ts (modified, +9/-1)
  • extensions/signal/src/monitor/event-handler.inbound-context.test.ts (modified, +8/-5)
  • extensions/slack/src/channel-actions.ts (modified, +2/-1)
  • extensions/slack/src/channel.test.ts (modified, +25/-0)
  • extensions/slack/src/channel.ts (modified, +2/-1)
  • extensions/slack/src/draft-stream.test.ts (modified, +18/-0)
  • extensions/slack/src/draft-stream.ts (modified, +2/-2)
  • extensions/slack/src/limits.ts (added, +1/-0)
  • extensions/slack/src/monitor.threading.missing-thread-ts.test.ts (modified, +7/-1)
  • extensions/slack/src/monitor/message-handler.app-mention-race.test.ts (modified, +4/-2)
  • extensions/slack/src/monitor/message-handler/dispatch.ts (modified, +2/-1)
  • extensions/slack/src/monitor/provider.ts (modified, +4/-1)
  • extensions/slack/src/monitor/replies.test.ts (modified, +25/-2)
  • extensions/slack/src/monitor/replies.ts (modified, +2/-1)
  • extensions/slack/src/monitor/slash.test.ts (modified, +3/-1)
  • extensions/slack/src/outbound-adapter.ts (modified, +2/-1)
  • extensions/slack/src/send.blocks.test.ts (modified, +20/-0)
  • extensions/slack/src/send.ts (modified, +4/-3)
  • extensions/tavily/src/tavily-extract-tool.test.ts (modified, +11/-5)
  • extensions/tavily/src/tavily-search-provider.test.ts (modified, +10/-2)
  • extensions/tavily/src/tavily-search-tool.test.ts (modified, +15/-4)
  • extensions/telegram/src/allowed-updates.test.ts (modified, +11/-3)
RAW_BUFFERClick to expand / collapse

Goal

Bring origin/main and all active feature branches up to upstream v2026.3.22, preserving all custom commits without breaking feature/cron-improvements or feature/60-control-ui-allowed-networks.

Current State

BranchUpstream diverge pointCustom commits above diverge
origin/main~1940 commits behind upstream/main33
feature/cron-improvements~2544 commits behind upstream/main+30 above origin/main
feature/60-control-ui-allowed-networkssame as cron-improvements+5 above feature/cron-improvements

Latest upstream release: v2026.3.22 (the async startup hang that blocked us on 3.14 is resolved).

Plan: Three-Step Sequential Rebase

Step 1 — Rebase origin/main onto upstream/main

Cherry-pick the 33 custom commits onto v2026.3.22.

Custom commits to carry forward (oldest → newest):

  • cron lifecycle hooks, hook fixes, zod schema, resolveUserPath, runningAtMs fix
  • cron script payload kind + middleware hook visibility
  • cron: auto-detect interpreter, timeout policy, review findings
  • scripts: deploy-local, deploy:replist, deploy-stable, worktree
  • chore: coderabbit config, fork issue template, .claude/CLAUDE.md
  • twilio-sms Phase 1 inbound SMS, refactor to subagent.run()
  • webchat: PDF/text attachment file types

Risk: highest — 1940 upstream commits may touch overlapping files (cron, scripts). Resolve conflicts, verify pnpm build passes before proceeding.

Step 2 — Rebase feature/cron-improvements onto new origin/main

30 unique commits land on top of updated main. Conflict risk is low — many are the same patches already applied in Step 1 and git will skip them as already-applied.

Unique commits above origin/main:

  • cron: resolveDeliveryConfig, Windows script extensions, script payload trimming tests
  • fix: isIsolatedLike variable, test regex update
  • feat/fix: twilio-sms idempotencyKey, SecretRef schema fix
  • skill triggers (#59)
  • scripts: deploy-stable, deploy-local, deploy:replist (deduplicated)

Step 3 — Rebase feature/60-control-ui-allowed-networks onto new feature/cron-improvements

5 commits, lowest risk:

  • scripts: improve deploy-stable
  • scripts: fix deploy-stable status check
  • scripts: add RPC probe retry loop
  • gateway: add controlUi.allowedNetworks IP filter
  • gateway: document and test plain IP entries in allowedNetworks

Execution Notes

  • Do one step at a time; verify pnpm build + pnpm test pass between steps.
  • Force-push each branch to origin after its rebase (rewrites history).
  • Resolve conflicts conservatively — prefer upstream for core logic, preserve fork additions.

extent analysis

Fix Plan

To bring origin/main and all active feature branches up to upstream v2026.3.22, follow these steps:

Step 1: Rebase origin/main onto upstream/main

  1. Fetch the latest upstream changes: git fetch upstream
  2. Checkout origin/main: git checkout origin/main
  3. Rebase onto upstream/main: git rebase upstream/main
  4. Cherry-pick the 33 custom commits onto v2026.3.22:
    git cherry-pick -x <oldest-commit-hash>..<newest-commit-hash>
    Resolve conflicts, and verify pnpm build passes before proceeding.

Step 2: Rebase feature/cron-improvements onto new origin/main

  1. Checkout feature/cron-improvements: git checkout feature/cron-improvements
  2. Rebase onto new origin/main: git rebase origin/main
  3. Resolve any conflicts, and verify pnpm build and pnpm test pass.

Step 3: Rebase feature/60-control-ui-allowed-networks onto new feature/cron-improvements

  1. Checkout feature/60-control-ui-allowed-networks: git checkout feature/60-control-ui-allowed-networks
  2. Rebase onto new feature/cron-improvements: git rebase feature/cron-improvements
  3. Resolve any conflicts, and verify pnpm build and pnpm test pass.

Verification

After each step, verify that pnpm build and pnpm test pass to ensure the changes did not introduce any issues.

Extra Tips

  • Force-push each branch to origin after its rebase: git push origin <branch-name> --force
  • Resolve conflicts conservatively, preferring upstream for core logic and preserving fork additions.
  • Test thoroughly after each step to catch any potential issues early.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - ✅(Solved) Fix chore: rebase origin/main and feature branches onto upstream v2026.3.22 [1 pull requests, 1 comments, 1 participants]