diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f9cd5bd473..4182225a9b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -63,6 +63,7 @@ Docs: https://docs.openclaw.ai ### Fixes +- Plugins/runtime deps: stage bundled plugin runtime dependencies for packaged/global installs in an external runtime root and retain already staged deps across repairs, avoiding package-tree update races and npm pruning after upgrades. Thanks @steipete. - Plugins/runtime deps: log bundled plugin runtime-dependency staging before synchronous npm installs start and include elapsed timing afterward, so first boot after upgrades no longer looks hung while dependencies are being repaired. Thanks @steipete. - Agents/failover: forward embedded run abort signals into provider-owned model streams, cap implicit LLM idle watchdogs below long run timeouts, and mark 429 responses without usable retry timing as non-retryable so GitHub Copilot rate limits fail over or surface promptly instead of hanging until run timeout. Fixes #71120. Thanks @steipete. - Plugins/Google Meet: make meeting creation join by default, with an explicit URL-only opt-out, so agents that create a Meet also enter it. Thanks @steipete. diff --git a/docs/cli/doctor.md b/docs/cli/doctor.md index 96fec5d619d..6e61b15860f 100644 --- a/docs/cli/doctor.md +++ b/docs/cli/doctor.md @@ -43,7 +43,7 @@ Notes: - `--fix` (alias for `--repair`) writes a backup to `~/.openclaw/openclaw.json.bak` and drops unknown config keys, listing each removal. - State integrity checks now detect orphan transcript files in the sessions directory and can archive them as `.deleted.` to reclaim space safely. - Doctor also scans `~/.openclaw/cron/jobs.json` (or `cron.store`) for legacy cron job shapes and can rewrite them in place before the scheduler has to auto-normalize them at runtime. -- Doctor repairs missing bundled plugin runtime dependencies without requiring write access to the installed OpenClaw package. For root-owned npm installs or hardened systemd units, set `OPENCLAW_PLUGIN_STAGE_DIR` to a writable directory such as `/var/lib/openclaw/plugin-runtime-deps`. +- Doctor repairs missing bundled plugin runtime dependencies without writing into packaged global installs. For root-owned npm installs or hardened systemd units, set `OPENCLAW_PLUGIN_STAGE_DIR` to a writable directory such as `/var/lib/openclaw/plugin-runtime-deps`. - Doctor auto-migrates legacy flat Talk config (`talk.voiceId`, `talk.modelId`, and friends) into `talk.provider` + `talk.providers.`. - Repeat `doctor --fix` runs no longer report/apply Talk normalization when the only difference is object key order. - Doctor includes a memory-search readiness check and can recommend `openclaw configure --section model` when embedding credentials are missing. diff --git a/docs/install/updating.md b/docs/install/updating.md index 90f5befa0ee..fd0f91f00df 100644 --- a/docs/install/updating.md +++ b/docs/install/updating.md @@ -52,13 +52,17 @@ pnpm add -g openclaw@latest bun add -g openclaw@latest ``` -### Root-owned global npm installs +### Global npm installs and runtime dependencies -Some Linux npm setups install global packages under root-owned directories such as -`/usr/lib/node_modules/openclaw`. OpenClaw supports that layout: the installed -package is treated as read-only at runtime, and bundled plugin runtime +OpenClaw treats packaged global installs as read-only at runtime, even when the +global package directory is writable by the current user. Bundled plugin runtime dependencies are staged into a writable runtime directory instead of mutating the -package tree. +package tree. This keeps `openclaw update` from racing with a running gateway or +local agent that is repairing plugin dependencies during the same install. + +Some Linux npm setups install global packages under root-owned directories such +as `/usr/lib/node_modules/openclaw`. OpenClaw supports that layout through the +same external staging path. For hardened systemd units, set a writable stage directory that is included in `ReadWritePaths`: