From 3e5e0877b1d316fae8872c89f2a4eaba0a998414 Mon Sep 17 00:00:00 2001 From: techartdev Date: Mon, 4 May 2026 10:19:53 +0300 Subject: [PATCH] Bump OpenClaw to version 0.5.72 and add repair for known invalid config settings --- DOCS.md | 12 +++++++ openclaw_assistant/CHANGELOG.md | 5 +++ openclaw_assistant/config.yaml | 2 +- openclaw_assistant/oc_config_helper.py | 44 ++++++++++++++++++++++++++ openclaw_assistant/run.sh | 13 +++++++- 5 files changed, 74 insertions(+), 2 deletions(-) diff --git a/DOCS.md b/DOCS.md index 6873089..e175ba6 100644 --- a/DOCS.md +++ b/DOCS.md @@ -811,6 +811,18 @@ Go to **Settings → Add-ons → OpenClaw Assistant → Log** tab. Logs show sta 3. Is the port correct? `openclaw config get gateway.port` 4. Is the firewall blocking the port? Check your HA host firewall rules +### Gateway restart loop: `web_search provider is not available: brave` + +**Symptom**: Logs repeat `Invalid config at /config/.openclaw/openclaw.json` and `tools.web.search.provider: web_search provider is not available: brave`. + +**Cause**: The persisted OpenClaw config selects the Brave web search provider, but that provider plugin is not currently installed or enabled in the add-on runtime. + +**Fix**: In v0.5.72+ the add-on clears that unavailable provider automatically during startup. On older versions, run this in the add-on terminal, then restart: + +```sh +jq 'del(.tools.web.search.provider)' /config/.openclaw/openclaw.json > /tmp/openclaw.json && mv /tmp/openclaw.json /config/.openclaw/openclaw.json +``` + ### "disconnected (1008): control ui requires device identity" / "requires HTTPS or localhost" **Symptom**: Gateway UI shows error 1008 or "requires secure context / device identity". diff --git a/openclaw_assistant/CHANGELOG.md b/openclaw_assistant/CHANGELOG.md index f64f807..7c340a1 100644 --- a/openclaw_assistant/CHANGELOG.md +++ b/openclaw_assistant/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to the OpenClaw Assistant Home Assistant Add-on will be documented in this file. +## [0.5.72] - 2026-05-04 + +### Fixed +- Repair startup when a persisted OpenClaw config still selects the unavailable `tools.web.search.provider=brave` provider. The add-on now clears that provider before launching the gateway so OpenClaw can start; users can reinstall/enable the Brave provider later if they want web search through Brave. + ## [0.5.70] - 2026-04-30 - Bump OpenClaw to 2026.4.27. diff --git a/openclaw_assistant/config.yaml b/openclaw_assistant/config.yaml index d5596a7..458b2e1 100644 --- a/openclaw_assistant/config.yaml +++ b/openclaw_assistant/config.yaml @@ -1,5 +1,5 @@ name: OpenClaw Assistant -version: "0.5.71" +version: "0.5.72" slug: openclaw_assistant description: Run OpenClaw Assistant (OpenClaw-compatible) as a Home Assistant add-on. url: https://github.com/techartdev/OpenClawHomeAssistant diff --git a/openclaw_assistant/oc_config_helper.py b/openclaw_assistant/oc_config_helper.py index 5dcb912..f6c917e 100644 --- a/openclaw_assistant/oc_config_helper.py +++ b/openclaw_assistant/oc_config_helper.py @@ -256,6 +256,43 @@ def set_control_ui_origins(origins_csv: str, additional_origins_csv: str = "", d return False +def repair_known_invalid_settings(): + """Repair known config values that prevent OpenClaw from starting.""" + cfg = read_config() + if cfg is None: + return True + + tools = cfg.get("tools") + if not isinstance(tools, dict): + return True + + web = tools.get("web") + if not isinstance(web, dict): + return True + + search = web.get("search") + if not isinstance(search, dict): + return True + + provider = search.get("provider") + changes = [] + + if provider == "brave": + del search["provider"] + changes.append("removed unavailable tools.web.search.provider=brave") + + if not changes: + print("INFO: No known invalid OpenClaw config settings found") + return True + + if write_config(cfg): + print(f"INFO: Repaired OpenClaw config: {', '.join(changes)}") + return True + + print("ERROR: Failed to write config") + return False + + def main(): """CLI entry point for use by run.sh""" if len(sys.argv) < 2: @@ -300,6 +337,13 @@ def main(): success = set_control_ui_origins(origins_csv, additional_origins_csv, disable_device_auth) sys.exit(0 if success else 1) + elif cmd == "repair-known-invalid-settings": + if len(sys.argv) != 2: + print("Usage: oc_config_helper.py repair-known-invalid-settings") + sys.exit(1) + success = repair_known_invalid_settings() + sys.exit(0 if success else 1) + elif cmd == "set": if len(sys.argv) != 4: print("Usage: oc_config_helper.py set ") diff --git a/openclaw_assistant/run.sh b/openclaw_assistant/run.sh index a5ca6ef..7af6cc4 100644 --- a/openclaw_assistant/run.sh +++ b/openclaw_assistant/run.sh @@ -562,9 +562,20 @@ fi if [ -f "$OPENCLAW_CONFIG_PATH" ]; then if [ -f "$HELPER_PATH" ]; then + if python3 "$HELPER_PATH" repair-known-invalid-settings; then + : + else + rc=$? + echo "ERROR: Failed to repair known invalid OpenClaw config settings via oc_config_helper.py (exit code ${rc})." + echo "ERROR: Gateway configuration may be invalid; aborting startup." + exit "${rc}" + fi + # In lan_https mode the gateway uses an internal port; nginx owns the external one. EFFECTIVE_GW_PORT="$GATEWAY_INTERNAL_PORT" - if ! python3 "$HELPER_PATH" apply-gateway-settings "$GATEWAY_MODE" "$GATEWAY_REMOTE_URL" "$GATEWAY_BIND_MODE" "$EFFECTIVE_GW_PORT" "$ENABLE_OPENAI_API" "$GATEWAY_AUTH_MODE" "$GATEWAY_TRUSTED_PROXIES"; then + if python3 "$HELPER_PATH" apply-gateway-settings "$GATEWAY_MODE" "$GATEWAY_REMOTE_URL" "$GATEWAY_BIND_MODE" "$EFFECTIVE_GW_PORT" "$ENABLE_OPENAI_API" "$GATEWAY_AUTH_MODE" "$GATEWAY_TRUSTED_PROXIES"; then + : + else rc=$? echo "ERROR: Failed to apply gateway settings via oc_config_helper.py (exit code ${rc})." echo "ERROR: Gateway configuration may be incorrect; aborting startup."