Skip to content

OpenClaw 2026.7.1-2 hotfix pin + watchdog safe-mode detection with resume UI - #110

Open
garrytan wants to merge 1 commit into
chrysb:mainfrom
garrytan:feat/openclaw-hotfix-watchdog-safemode
Open

OpenClaw 2026.7.1-2 hotfix pin + watchdog safe-mode detection with resume UI#110
garrytan wants to merge 1 commit into
chrysb:mainfrom
garrytan:feat/openclaw-hotfix-watchdog-safemode

Conversation

@garrytan

Copy link
Copy Markdown

Narrowly scoped follow-up to #109 per your review — just the dependency hotfix and the watchdog safe-mode/resume behavior with its UI. Package identity, project/template URLs, and everything else untouched; branched directly off current main.

1. openclaw pin → 2026.7.1-2

Plain 2026.7.1 on npm has the doctor --fix bug that silently strips official external-catalog plugin ids (like codex) from plugins.allow (openclaw#107226, fixed by openclaw#108336 in the 2026.7.1-2 correction release). Since AlphaClaw's watchdog runs doctor --fix --yes during auto-repair, staying on plain 7.1 makes auto-repair actively harmful for Codex deployments.

Provenance note: 2026.7.1-2 was published outside openclaw's normal release pipeline (no git tag / GitHub release), so I tarball-diffed it against 2026.7.1 before adopting: identical dependencies, identical bin/main, no new install scripts — a clean rebuild plus the plugin-update fix.

2. Watchdog: safe-mode detection + resume

OpenClaw 2026.7.1's crash-loop breaker can boot the gateway into control-plane-safe mode: /health stays green while channel autostart is suppressed — so the watchdog (and the UI) previously reported a fully healthy gateway while no channels were delivering messages.

  • After each healthy /health check the watchdog now probes /readyz (payload shape {ready, failing[], suppressed[]?} verified against the installed 2026.7.1-2 dist).
  • GET /api/watchdog/status gains safeMode + suppressedChannels; one notification per distinct suppression set, with a recovery notice when it clears; state resets on gateway exit/restart/stop.
  • POST /api/watchdog/resume-channels issues openclaw's documented manual override (gateway call channels.start --params '{"channel":…}') per suppressed channel, then re-checks health. Returns 409 when nothing is suppressed.
  • Watchdog UI: an amber banner at the top of the Watchdog tab lists the suppressed channels with a "Resume channels" action (toast + status refresh, mirroring the Repair flow), and the gateway card's watchdog badge shows amber "safe mode" instead of green "healthy" while suppressed.

3. vitest testTimeout: 30000

openclaw's plugin-sdk pays a >5s dynamic-import cost on first load per worker, which flakes timing-sensitive tests under parallel load (we hit this repeatedly). One config line; individual tests can still set tighter timeouts.

Test plan

  • Full suite green on Node 24.18: 736 passed / 0 failed, including new coverage: safe-mode detection/dedupe/clear + resumeChannels unit tests, resume-channels route tests, an e2e suite driving the real watchdog through the real routes against a stateful fake gateway, banner-model helper tests, and api-wrapper tests.
  • npm run build:ui clean.

🤖 Generated with Claude Code

…sume UI.

Pin openclaw to the 2026.7.1-2 correction release: plain 2026.7.1 has the
doctor --fix bug that silently strips official external-catalog plugin ids
(codex) from plugins.allow (openclaw#107226, fixed by openclaw#108336) —
and the watchdog runs doctor --fix --yes during auto-repair.

Watchdog: detect OpenClaw's control-plane-safe mode. After the gateway's
crash-loop breaker trips, /health stays green while channel autostart is
suppressed; the watchdog previously reported fully healthy. Now it probes
/readyz after each healthy check, exposes safeMode/suppressedChannels in
status, notifies once per suppression set, and offers
POST /api/watchdog/resume-channels (openclaw's channels.start override per
suppressed channel). The Watchdog tab shows a safe-mode banner with the
suppressed channel list and a Resume channels action, and the gateway
badge shows amber "safe mode" instead of green "healthy".

Set vitest testTimeout to 30s: openclaw's plugin-sdk pays a >5s dynamic
import cost on first load per worker, which flakes timing-sensitive tests
under parallel load.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant