Skip to content

fix(update): recover package gateway restart after refresh failure#91581

Merged
obviyus merged 2 commits into
openclaw:mainfrom
fuller-stack-dev:codex/update-stale-gateway-recovery
Jun 10, 2026
Merged

fix(update): recover package gateway restart after refresh failure#91581
obviyus merged 2 commits into
openclaw:mainfrom
fuller-stack-dev:codex/update-stale-gateway-recovery

Conversation

@fuller-stack-dev

@fuller-stack-dev fuller-stack-dev commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Continue package-update restart recovery when refreshing the managed gateway service environment from the updated install fails.
  • Prefer the updated install's gateway restart path after refresh failure so unmanaged/stale gateway listeners can be replaced by the newer CLI.
  • Add regression coverage for the observed stale-gateway sequence: refresh fails, first probe sees the old version, updated-root restart runs, second probe sees the new version.

Verification

  • node scripts/run-vitest.mjs src/cli/update-cli.test.ts
  • .agents/skills/autoreview/scripts/autoreview --mode local
  • git diff --check
  • npm pack --json --pack-destination /tmp/openclaw-pr-91581-artifacts from PR head 2fa5a5b2c15ec64d7d6d771d33f4496a2730d917
  • Isolated macOS LaunchAgent package-update proof using published openclaw@2026.6.1 -> PR tarball openclaw-2026.6.2.tgz

Real behavior proof

Behavior addressed: Package-manager update could install the new OpenClaw package but stop restart recovery when gateway install --force failed, leaving an old gateway process serving the port.
Real environment tested: Local macOS LaunchAgent with disposable HOME, disposable npm prefix, named profile pr91581, service label ai.openclaw.pr91581, gateway port 19981, published baseline package openclaw@2026.6.1, and PR-head tarball openclaw-2026.6.2.tgz built from 2fa5a5b2c15ec64d7d6d771d33f4496a2730d917.
Exact steps or command run after this patch: Installed openclaw@2026.6.1 into /tmp/openclaw-pr-91581-live5/npm-prefix, ran openclaw --profile pr91581 gateway install --force --port 19981, verified the baseline gateway, then ran NPM_CONFIG_PREFIX=/tmp/openclaw-pr-91581-live5/npm-prefix openclaw --profile pr91581 update --tag /tmp/openclaw-pr-91581-artifacts/openclaw-2026.6.2.tgz --yes --timeout 240.
Evidence after fix: Terminal capture from the isolated run:

npm_root_g=/tmp/openclaw-pr-91581-live5/npm-prefix/lib/node_modules
baseline_cli=OpenClaw 2026.6.1 (2e08f0f)

# baseline gateway status
{
  "gatewayVersion": "2026.6.1",
  "port": 19981,
  "serviceLoaded": true,
  "serviceRuntime": "running",
  "program": [
    "/Users/jason/.nvm/versions/node/v23.11.1/bin/node",
    "/private/tmp/openclaw-pr-91581-live5/npm-prefix/lib/node_modules/openclaw/dist/index.js",
    "gateway",
    "--port",
    "19981"
  ]
}

Update Result: OK
  Root: /tmp/openclaw-pr-91581-live5/npm-prefix/lib/node_modules/openclaw
  Before: 2026.6.1
  After: 2026.6.2

Steps:
  ✓ global update (20.04s)
  ✓ global install swap (1.22s)
  ✓ openclaw doctor (5.69s)

Restarting service...
Gateway already reports the updated version after service refresh; skipped redundant restart.
Gateway: restarted and verified.

A separate disposable forced-failure run patched only the generated ai.openclaw.pr91581 service env during the update so the updated install's first launchctl bootstrap failed. That run reached the refresh-failure branch in the PR-head package:

Failed to refresh gateway service environment from updated install: Error: updated install refresh failed (/tmp/openclaw-pr-91581-live6/npm-prefix/lib/node_modules/openclaw/dist/index.js):
Gateway install failed: Error: launchctl bootstrap failed: simulated launchctl bootstrap failure for PR 91581 proof

Observed result after fix: The real named-profile package update replaced the baseline 2026.6.1 package with the PR 2026.6.2 package and verified the LaunchAgent gateway on port 19981. The forced-failure harness confirmed the updated package emits the refresh-failure path under a real package update, while the committed Vitest regression covers the intended fallback to updated-root gateway restart after that failure.
What was not tested: An organic macOS launchctl/LaunchAgent failure from the OS; the refresh-failure case was forced with a temporary launchctl wrapper in a disposable profile. The forced-failure harness was suitable for reaching the failure branch but not for a clean recovery-success claim, so the fallback success remains covered by the focused regression test.

@openclaw-barnacle openclaw-barnacle Bot added cli CLI command changes size: S triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 9, 2026
@clawsweeper

clawsweeper Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed June 10, 2026, 5:15 AM ET / 09:15 UTC.

Summary
This PR changes package-update restart recovery to continue into the updated-install gateway restart path after service-environment refresh failure, adds service-root/running proof for ambiguous recovery, and adds regression tests.

PR surface: Source +58, Tests +270. Total +328 across 4 files.

Reproducibility: yes. Source inspection shows current main returns false immediately after a package service refresh failure, and the PR regression tests model the intended old-version-to-updated-version recovery path; I did not run a live current-main reproduction in this read-only review.

Review metrics: 1 noteworthy metric.

  • Real Proof Head: proof names 2fa5a5b; current head is 3ae7658. The latest force-push changed the reviewed restart path after the supplied package tarball proof was captured.

Merge readiness
Overall: 🦐 gold shrimp
Proof: 🦐 gold shrimp
Patch quality: 🐚 platinum hermit
Result: blocked until stronger real behavior proof is added.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P1] Add redacted current-head proof for refresh failure followed by updated-root restart and verified updated managed Gateway.
  • Keep private details such as paths, tokens, IPs, and local account information redacted in any posted proof.

Proof guidance:

  • [P1] Needs stronger real behavior proof before merge: The PR body has useful terminal proof, but it targets an older tarball commit and does not show the current head's exact refresh-failure recovery path verifying the updated managed Gateway. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Risk before merge

  • [P1] The supplied terminal proof targets an older PR tarball commit and does not demonstrate the current head's forced refresh-failure path recovering through updated-root restart and verifying the managed Gateway in one real run.
  • [P2] This changes package-update Gateway restart control flow; if the fallback ordering or same-version service-root proof is wrong, users can finish an update with a stale or unavailable Gateway.

Maintainer options:

  1. Refresh Current-Head Recovery Proof (recommended)
    Add redacted terminal output, logs, or a short recording from 3ae7658 or a later head where service refresh fails, updated-root restart runs, and the managed Gateway is verified updated.
  2. Accept The Proof Gap
    Maintainers may explicitly accept the normal package-update proof plus forced branch-reachability proof and rely on the focused regression tests for the exact recovery success.

Next step before merge

  • [P1] The remaining action is maintainer review or contributor-supplied current-head real behavior proof; there is no narrow code repair for ClawSweeper to generate.

Security
Cleared: The diff only changes CLI restart recovery code and focused tests; it does not change dependencies, workflows, package resolution, permissions, or secret handling.

Review details

Best possible solution:

Merge after redacted current-head real proof shows refresh failure, updated-root restart, and verified updated managed Gateway, or after maintainers explicitly accept the unit-test-backed proof gap for this hard-to-trigger service failure.

Do we have a high-confidence way to reproduce the issue?

Yes. Source inspection shows current main returns false immediately after a package service refresh failure, and the PR regression tests model the intended old-version-to-updated-version recovery path; I did not run a live current-main reproduction in this read-only review.

Is this the best way to solve the issue?

Yes for the implementation shape: the PR reuses the updated-install restart path and adds service-root/running proof for ambiguous same-version recovery. The remaining blocker is validation of the current head, not an obvious better code layer.

AGENTS.md: found and applied where relevant.

Codex review notes: model gpt-5.5, reasoning high; reviewed against 69aca06e0216.

Label changes

Label justifications:

  • P2: The PR addresses a normal-priority package-update Gateway recovery bug with limited but real availability impact.
  • merge-risk: 🚨 availability: The diff changes package-update Gateway restart fallback behavior, where a bad recovery order can leave a stale or unavailable Gateway after update.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦐 gold shrimp and patch quality is 🐚 platinum hermit.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs stronger real behavior proof before merge: The PR body has useful terminal proof, but it targets an older tarball commit and does not show the current head's exact refresh-failure recovery path verifying the updated managed Gateway. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Evidence reviewed

PR surface:

Source +58, Tests +270. Total +328 across 4 files.

View PR surface stats
Area Files Added Removed Net
Source 2 83 25 +58
Tests 2 270 0 +270
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 4 353 25 +328

What I checked:

  • Repository policy applied: Root AGENTS.md was read fully; no scoped src/cli AGENTS.md exists, so the root PR proof, best-fix, and availability-risk review guidance applies. (AGENTS.md:14, 69aca06e0216)
  • Current main failure path: Current main logs refreshGatewayServiceEnv failure and returns false immediately for package updates, so it skips the existing updated-install restart fallback. (src/cli/update-cli/update-command.ts:2111, 69aca06e0216)
  • PR recovery path: The PR head clears the stale restart script after package refresh failure, falls through to runUpdatedInstallGatewayRestart, and checks service-root proof for same-version cases. (src/cli/update-cli/update-command.ts:2167, 3ae765876907)
  • Regression coverage: The PR adds tests for refresh failure falling back to updated-root restart, same-version success when the managed service points to the updated root, and same-version rejection for stale service definitions. (src/cli/update-cli.test.ts:5004, 3ae765876907)
  • Running-service wait proof: The PR extends restart health waiting so callers can require the managed service runtime to report running, not only a healthy gateway listener. (src/cli/daemon-cli/restart-health.ts:548, 3ae765876907)
  • Public update contract: The docs say package-manager updates refresh service metadata, restart the service, and verify the restarted Gateway reports the expected version before reporting success. Public docs: docs/cli/update.md. (docs/cli/update.md:121, 69aca06e0216)

Likely related people:

  • vincentkoc: History shows work introducing and carrying the package-update service refresh and current restart path, including the current main line carrier and earlier service-refresh update commits. (role: feature owner / recent area contributor; confidence: high; commits: 45d9b2069264, 65f92fd83915, 56dc53f6d24c; files: src/cli/update-cli/update-command.ts, src/cli/update-cli.test.ts)
  • steipete: History shows extensive ownership of update restart convergence and restart-health behavior across the central touched files, including the commits that verified gateway restart health after daemon restarts. (role: adjacent restart-convergence owner; confidence: high; commits: e93ba6ce2af3, 905e355f651d, 7b7d69a31e86; files: src/cli/update-cli/update-command.ts, src/cli/update-cli.test.ts, src/cli/daemon-cli/restart-health.ts)
  • obviyus: The current PR head was force-pushed by obviyus and includes Ayaan Zaidi's refactor commit that added the service-root/running proof surface now under review. (role: current branch refactor author; confidence: medium; commits: 3ae765876907; files: src/cli/update-cli/update-command.ts, src/cli/update-cli.test.ts, src/cli/daemon-cli/restart-health.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. labels Jun 9, 2026
@openclaw-barnacle openclaw-barnacle Bot added proof: supplied External PR includes structured after-fix real behavior proof. and removed triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 9, 2026
@fuller-stack-dev

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Updated the PR body with the requested real behavior proof. The latest Real behavior proof workflow passed: https://github.com/openclaw/openclaw/actions/runs/27182616434/job/80244803389

@clawsweeper

clawsweeper Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Jun 9, 2026
@obviyus obviyus force-pushed the codex/update-stale-gateway-recovery branch from 126623d to 3ae7658 Compare June 10, 2026 09:07
@obviyus

obviyus commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Land-ready proof after maintainer cleanup.

  • Head: 3ae7658
  • Local focused tests: node scripts/run-vitest.mjs src/cli/update-cli.test.ts src/cli/daemon-cli/restart-health.test.ts (184 passed)
  • Format/whitespace: node_modules/.bin/oxfmt --write --threads=1 src/cli/update-cli/update-command.ts src/cli/update-cli.test.ts src/cli/daemon-cli/restart-health.ts src/cli/daemon-cli/restart-health.test.ts; git diff --check origin/main...HEAD
  • Review gates: autoreview --mode local; autoreview --mode branch --base origin/main (both clean)
  • PR checks: 164 total, 0 pending, 0 failing
  • Changelog: not updated; release generation owns CHANGELOG.md.

Thanks @fuller-stack-dev.

@obviyus obviyus merged commit a283df4 into openclaw:main Jun 10, 2026
169 of 171 checks passed
@obviyus

obviyus commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Landed via rebase onto main.

  • Landed commits: cab62324f4, a283df4bfe
  • Merge tip: a283df4bfe51551576034b96c1628e81401d2f3c
  • Local focused tests: node scripts/run-vitest.mjs src/cli/update-cli.test.ts src/cli/daemon-cli/restart-health.test.ts (184 passed)
  • Review gates: local autoreview clean; branch autoreview against origin/main clean
  • PR checks before merge: 164 total, 0 pending, 0 failing
  • Changelog: not updated; release generation owns CHANGELOG.md.

Thanks @fuller-stack-dev.

eleboucher pushed a commit to eleboucher/homelab that referenced this pull request Jun 12, 2026
…26.6.6) (#1040)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/openclaw/openclaw](https://openclaw.ai) ([source](https://github.com/openclaw/openclaw)) | patch | `2026.6.5` → `2026.6.6` |

---

### Release Notes

<details>
<summary>openclaw/openclaw (ghcr.io/openclaw/openclaw)</summary>

### [`v2026.6.6`](https://github.com/openclaw/openclaw/blob/HEAD/CHANGELOG.md#202666)

[Compare Source](openclaw/openclaw@v2026.6.5...v2026.6.6)

##### Highlights

- Security boundaries are substantially tighter across transcripts, sandbox binds, host environment inheritance, MCP stdio, Codex HTTP access, native search policy, elevated sender checks, deleted-agent ACP bypasses, loopback tools, Discord moderation, and Teams group actions; exec approvals now fail closed on timeout. ([#&#8203;91529](openclaw/openclaw#91529), [#&#8203;91618](openclaw/openclaw#91618), [#&#8203;91615](openclaw/openclaw#91615), [#&#8203;91619](openclaw/openclaw#91619), [#&#8203;91741](openclaw/openclaw#91741), [#&#8203;91745](openclaw/openclaw#91745), [#&#8203;91746](openclaw/openclaw#91746), [#&#8203;91748](openclaw/openclaw#91748), [#&#8203;91749](openclaw/openclaw#91749), [#&#8203;91750](openclaw/openclaw#91750), [#&#8203;91751](openclaw/openclaw#91751), [#&#8203;91752](openclaw/openclaw#91752), [#&#8203;91763](openclaw/openclaw#91763), [#&#8203;89938](openclaw/openclaw#89938)) Thanks [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;pgondhi987](https://github.com/pgondhi987), [@&#8203;mmaps](https://github.com/mmaps), [@&#8203;eleqtrizit](https://github.com/eleqtrizit), [@&#8203;shakkernerd](https://github.com/shakkernerd), and [@&#8203;drobison00](https://github.com/drobison00).
- Telegram delivery is safer and more coherent: account-scoped topics route to the right agent, streamed text survives tool calls, `/compact` works on generic ingress, callback handling uses concrete APIs, draft chunking is shared, durable dispatch dedupe moved into the SDK, and unauthorized DM text stays out of cache and prompt context. ([#&#8203;91189](openclaw/openclaw#91189), [#&#8203;88682](openclaw/openclaw#88682), [#&#8203;89588](openclaw/openclaw#89588), [#&#8203;90212](openclaw/openclaw#90212), [#&#8203;91876](openclaw/openclaw#91876), [#&#8203;91874](openclaw/openclaw#91874), [#&#8203;91904](openclaw/openclaw#91904), [#&#8203;91478](openclaw/openclaw#91478), [#&#8203;91915](openclaw/openclaw#91915)) Thanks [@&#8203;codysai001](https://github.com/codysai001), [@&#8203;alexzhu0](https://github.com/alexzhu0), [@&#8203;joelnishanth](https://github.com/joelnishanth), [@&#8203;snowzlm](https://github.com/snowzlm), [@&#8203;obviyus](https://github.com/obviyus), and [@&#8203;sallyom](https://github.com/sallyom).
- iMessage recovery and delivery now cover always-on inbound restart, durable echo markers, block streaming, idle approval discovery, hardened outbound transport, and actionable inbound startup diagnostics. ([#&#8203;91335](openclaw/openclaw#91335), [#&#8203;91449](openclaw/openclaw#91449), [#&#8203;88969](openclaw/openclaw#88969), [#&#8203;88530](openclaw/openclaw#88530), [#&#8203;91783](openclaw/openclaw#91783), [#&#8203;91785](openclaw/openclaw#91785)) Thanks [@&#8203;omarshahine](https://github.com/omarshahine), [@&#8203;jmissig](https://github.com/jmissig), and [@&#8203;colmbrogan](https://github.com/colmbrogan).
- Browser and MCP connectivity gained existing-session CDP support, discovered WebSocket validation, default-profile `cdpUrl` handling, safer browser-output boundaries, Streamable HTTP loopback transport, corrected OAuth/SSE authorization handling, and broader schema compatibility. ([#&#8203;91422](openclaw/openclaw#91422), [#&#8203;89851](openclaw/openclaw#89851), [#&#8203;91736](openclaw/openclaw#91736), [#&#8203;91747](openclaw/openclaw#91747), [#&#8203;91451](openclaw/openclaw#91451), [#&#8203;80143](openclaw/openclaw#80143)) Thanks [@&#8203;pgondhi987](https://github.com/pgondhi987), [@&#8203;anagnorisis2peripeteia](https://github.com/anagnorisis2peripeteia), [@&#8203;lifuyue](https://github.com/lifuyue), [@&#8203;eleqtrizit](https://github.com/eleqtrizit), [@&#8203;LiuwqGit](https://github.com/LiuwqGit), and [@&#8203;HemantSudarshan](https://github.com/HemantSudarshan).
- Control UI startup and first-reply latency are lower through cached model metadata, removal of the startup catalog wait, lazy slash-command loading, and first-event tracing with slow-reply diagnostics. ([#&#8203;91531](openclaw/openclaw#91531), [#&#8203;91538](openclaw/openclaw#91538), [#&#8203;91568](openclaw/openclaw#91568), [#&#8203;91583](openclaw/openclaw#91583), [#&#8203;91598](openclaw/openclaw#91598))
- Provider support expands with OpenRouter OAuth onboarding and Claude Fable 5 adaptive thinking, while Codex sessions keep correct compaction ownership, local models skip guardian review, dynamic tool progress normalizes cleanly, and Gemma 4 reasoning replay is preserved. ([#&#8203;91830](openclaw/openclaw#91830), [#&#8203;91882](openclaw/openclaw#91882), [#&#8203;91590](openclaw/openclaw#91590), [#&#8203;88630](openclaw/openclaw#88630), [#&#8203;88768](openclaw/openclaw#88768), [#&#8203;91696](openclaw/openclaw#91696)) Thanks [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen), [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;bdjben](https://github.com/bdjben), and [@&#8203;Coder-Wangyankun](https://github.com/Coder-Wangyankun).

##### Changes

- CLI progress: emit Claude CLI commentary progress events and bridge inter-tool commentary into channel progress without exposing internal protocol scaffolding. ([#&#8203;89834](openclaw/openclaw#89834), [#&#8203;90883](openclaw/openclaw#90883)) Thanks [@&#8203;anagnorisis2peripeteia](https://github.com/anagnorisis2peripeteia).
- Observability: allow trusted diagnostics channels to capture tool input/output content, add first-assistant-event traces, and warn on slow initial replies. ([#&#8203;91256](openclaw/openclaw#91256), [#&#8203;91568](openclaw/openclaw#91568), [#&#8203;91583](openclaw/openclaw#91583)) Thanks [@&#8203;amknight](https://github.com/amknight).
- Plugins/ClawHub: dogfood reusable package publishing, let dry runs skip publish approval, allow declared installed trusted hooks, report managed plugin version drift, and warn instead of failing on retired Skill Workshop configuration. ([#&#8203;91574](openclaw/openclaw#91574), [#&#8203;91591](openclaw/openclaw#91591), [#&#8203;90004](openclaw/openclaw#90004), [#&#8203;90927](openclaw/openclaw#90927), [#&#8203;90838](openclaw/openclaw#90838)) Thanks [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen), [@&#8203;brokemac79](https://github.com/brokemac79), and [@&#8203;lonexreb](https://github.com/lonexreb).
- Memory/providers: move the local llama.cpp runtime into its provider plugin, batch embeddings across files, persist the agent model catalog cache, and keep QMD JSON search one-shot while filtering stale REM recall previews. ([#&#8203;91324](openclaw/openclaw#91324), [#&#8203;89138](openclaw/openclaw#89138), [#&#8203;90457](openclaw/openclaw#90457), [#&#8203;91837](openclaw/openclaw#91837), [#&#8203;91851](openclaw/openclaw#91851)) Thanks [@&#8203;osolmaz](https://github.com/osolmaz), [@&#8203;mushuiyu886](https://github.com/mushuiyu886), [@&#8203;ai-hpc](https://github.com/ai-hpc), and [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Channels/mobile: add the QQBot group mention toggle, improve iPad and iPhone control surfaces, and expose the active connection host in the TUI footer. ([#&#8203;91423](openclaw/openclaw#91423), [#&#8203;91557](openclaw/openclaw#91557), [#&#8203;89909](openclaw/openclaw#89909)) Thanks [@&#8203;cxyhhhhh](https://github.com/cxyhhhhh), [@&#8203;Solvely-Colin](https://github.com/Solvely-Colin), and [@&#8203;baskduf](https://github.com/baskduf).
- Performance: prewarm TUI runtime plugins, deduplicate plugin auto-enable fanout, trim dense text-delta snapshots, and reuse prepared startup model metadata. ([#&#8203;90782](openclaw/openclaw#90782), [#&#8203;89978](openclaw/openclaw#89978), [#&#8203;91580](openclaw/openclaw#91580), [#&#8203;91531](openclaw/openclaw#91531)) Thanks [@&#8203;RomneyDa](https://github.com/RomneyDa) and [@&#8203;ai-hpc](https://github.com/ai-hpc).

##### Fixes

- Agent/session recovery: drop stale approval follow-ups after session rebind, remove drained reply-queue items by identity, recover stale main and visible replies, preserve Codex context-engine compaction ownership, lower the default compaction timeout to 180 seconds while respecting explicit configuration, and keep provider-failure terminal lifecycle state correct. ([#&#8203;85679](openclaw/openclaw#85679), [#&#8203;91450](openclaw/openclaw#91450), [#&#8203;91566](openclaw/openclaw#91566), [#&#8203;91840](openclaw/openclaw#91840), [#&#8203;91590](openclaw/openclaw#91590), [#&#8203;91361](openclaw/openclaw#91361), [#&#8203;91895](openclaw/openclaw#91895)) Thanks [@&#8203;openperf](https://github.com/openperf), [@&#8203;yetval](https://github.com/yetval), [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;wangmiao0668000666](https://github.com/wangmiao0668000666), and [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- User-visible content boundaries: suppress Codex/Harmony protocol artifacts, neutralize browser and LanceDB memory media directives, redact transcript images, and preserve native `/compact` replies through source suppression. ([#&#8203;89151](openclaw/openclaw#89151), [#&#8203;91422](openclaw/openclaw#91422), [#&#8203;91425](openclaw/openclaw#91425), [#&#8203;91529](openclaw/openclaw#91529), [#&#8203;90212](openclaw/openclaw#90212)) Thanks [@&#8203;joelnishanth](https://github.com/joelnishanth), [@&#8203;pgondhi987](https://github.com/pgondhi987), [@&#8203;joshavant](https://github.com/joshavant), and [@&#8203;snowzlm](https://github.com/snowzlm).
- Channel delivery: keep WhatsApp captured replies attached to the successor controller after restart, retry Feishu rate limits, preserve Mattermost thread replies, canonicalize LINE webhook paths, restore Discord reply hydration and runtime timeout exports, and show OpenAI Realtime WebRTC assistant transcripts. ([#&#8203;85823](openclaw/openclaw#85823), [#&#8203;89659](openclaw/openclaw#89659), [#&#8203;91684](openclaw/openclaw#91684), [#&#8203;91649](openclaw/openclaw#91649), [#&#8203;90263](openclaw/openclaw#90263), [#&#8203;91686](openclaw/openclaw#91686), [#&#8203;90426](openclaw/openclaw#90426)) Thanks [@&#8203;itsuzef](https://github.com/itsuzef), [@&#8203;ladygege](https://github.com/ladygege), [@&#8203;jacobtomlinson](https://github.com/jacobtomlinson), [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev), and [@&#8203;shushushv](https://github.com/shushushv).
- Cron: cancel active task runs cleanly, preserve terminal timeout/cancel state, and recover no-deliver tool warnings instead of silently losing the outcome. ([#&#8203;90666](openclaw/openclaw#90666), [#&#8203;90678](openclaw/openclaw#90678)) Thanks [@&#8203;ai-hpc](https://github.com/ai-hpc).
- Gateway/config/auth: share the approval runtime socket token, replace arrays explicitly in `config.patch`, skip the deleted-agent guard only for valid ACP harness sessions, surface headless LaunchAgent state, verify SQLite auth migration before cleanup, and arm QMD startup maintenance. ([#&#8203;87105](openclaw/openclaw#87105), [#&#8203;91551](openclaw/openclaw#91551), [#&#8203;91219](openclaw/openclaw#91219), [#&#8203;91614](openclaw/openclaw#91614), [#&#8203;91740](openclaw/openclaw#91740), [#&#8203;91978](openclaw/openclaw#91978)) Thanks [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev) and [@&#8203;scotthuang](https://github.com/scotthuang).
- Providers/Codex: clarify quota errors, restore the Codex synthetic usage line, canonicalize Codex protocol assets, require API-key auth for realtime voice, normalize ACP model refs, preserve Gemma 4 `reasoning_content`, and avoid guardian review for local models. ([#&#8203;91390](openclaw/openclaw#91390), [#&#8203;91709](openclaw/openclaw#91709), [#&#8203;91507](openclaw/openclaw#91507), [#&#8203;91567](openclaw/openclaw#91567), [#&#8203;88630](openclaw/openclaw#88630), [#&#8203;91696](openclaw/openclaw#91696)) Thanks [@&#8203;hxy91819](https://github.com/hxy91819), [@&#8203;brokemac79](https://github.com/brokemac79), [@&#8203;RomneyDa](https://github.com/RomneyDa), [@&#8203;joshavant](https://github.com/joshavant), and [@&#8203;Coder-Wangyankun](https://github.com/Coder-Wangyankun).
- Updates/builds: recover package Gateway restarts after refresh failure, expose plugin convergence repair, fall back to Corepack in PATH-less pnpm environments, seed the correct Docker store packages, and keep ClawHub dry-run and publish paths reusable. ([#&#8203;91581](openclaw/openclaw#91581), [#&#8203;91599](openclaw/openclaw#91599), [#&#8203;91547](openclaw/openclaw#91547), [#&#8203;91591](openclaw/openclaw#91591)) Thanks [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev), [@&#8203;sallyom](https://github.com/sallyom), and [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- UI: require explicit user intent before opening chat sessions and drain restored chat queues after session switches. ([#&#8203;91480](openclaw/openclaw#91480)) Thanks [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Android: avoid the `dataSync` foreground-service type for persistent nodes. ([#&#8203;80082](openclaw/openclaw#80082)) Thanks [@&#8203;davelutztx](https://github.com/davelutztx).
- Native hooks: bound relay lifetimes so abandoned native hook connections cannot linger indefinitely. ([#&#8203;91550](openclaw/openclaw#91550)) Thanks [@&#8203;joshavant](https://github.com/joshavant).

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/1040
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cli CLI command changes merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. P2 Normal backlog priority with limited blast radius. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. size: M status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants