openclaw/docs
Marvinthebored 22c336c0b4
fix(plugins): load active generation after upgrades (#111141)
* fix(plugins): load newest managed generation when a prior install lingers

An upgrade writes a plugin's new version into a distinct managed project
directory (an `__openclaw-generation__` dir) without removing the previous one.
The persisted install record keeps pointing at the older, still-present
directory, so `mergeRecoveredManagedNpmRecord` falls through to returning the
persisted record and the runtime imports the stale version even though the newer
generation is installed. `isUnavailableManagedNpmInstallRecord` only self-heals
when the persisted path is gone, so an upgrading install (both directories
present) is not covered — `plugins inspect <id> --runtime` reports the old
version and `install`/`update` appear to silently no-op.

- Recovery now selects the highest-version record per plugin id across the
  legacy flat dir and any generation dirs, instead of whichever project root
  sorts last (generation-dir suffixes are hashes, so on-disk order is unrelated
  to version).
- When the recovered managed install is a strictly newer version at a different
  path, repoint to it, reusing the metadata merge the unavailable-path branch
  uses. The repoint is gated to persisted records that live inside the managed
  npm root, so intentional custom/outside npm installs are left untouched.

This is a recovery-layer self-heal, so it also repairs installs that already
diverged from an earlier upgrade.

Refs #107228

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(plugins): honor active managed generations

Recover ambiguous managed installs by package recency only when no usable active ledger path exists, and let doctor retire non-authoritative generations safely.

Co-authored-by: Peter Lindsey <peter@lindsey.jp>

* test(plugins): use shared temp cleanup

* fix(plugins): compare active paths per platform

* fix(plugins): use managed install timestamps

* test(plugins): timestamp managed project roots

* test(plugins): exclude retired legacy recovery

* refactor(plugins): keep recovery candidate private

---------

Co-authored-by: Peter Lindsey <peter@lindsey.jp>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-19 12:50:35 -07:00
..
.generated refactor: remove expired plugin compatibility surfaces (#111451) 2026-07-19 11:04:48 -07:00
.i18n docs: Swarm user guide (#110325) (#111384) 2026-07-19 05:33:00 -07:00
announcements docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
assets docs(readme): trim banner whitespace for a more compact hero 2026-07-09 14:53:52 -07:00
automation refactor(config): purge numeric tuning knobs behind built-in defaults (#111382) 2026-07-19 07:35:45 -07:00
channels refactor(config): purge numeric tuning knobs behind built-in defaults (#111382) 2026-07-19 07:35:45 -07:00
clawhub docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
cli fix(plugins): load active generation after upgrades (#111141) 2026-07-19 12:50:35 -07:00
concepts refactor: remove expired plugin compatibility surfaces (#111451) 2026-07-19 11:04:48 -07:00
debug docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
diagnostics refactor: prune redundant OpenClaw env controls (#109211) 2026-07-16 10:06:39 -07:00
gateway feat(gateway): allow explicit operator.admin in device auto-approval with critical audit finding (#111509) 2026-07-19 12:05:04 -07:00
help refactor(config): purge numeric tuning knobs behind built-in defaults (#111382) 2026-07-19 07:35:45 -07:00
images chore: remove unused tracked assets 2026-05-26 02:21:58 +01:00
install refactor(config): purge numeric tuning knobs behind built-in defaults (#111382) 2026-07-19 07:35:45 -07:00
maturity fix(docs): preserve canonical maturity product labels 2026-07-17 09:44:52 -04:00
nodes feat(talk): add durable client voice sessions (#111216) 2026-07-19 01:06:49 -07:00
plan docs: Swarm user guide (#110325) (#111384) 2026-07-19 05:33:00 -07:00
platforms feat(macos): Quick Chat power features — voice dictation, paste-to-app, model/reasoning control (#110994) 2026-07-18 17:21:03 -07:00
plugins refactor: remove expired plugin compatibility surfaces (#111451) 2026-07-19 11:04:48 -07:00
providers docs: align interactive client behavior (#111047) 2026-07-18 17:00:14 -07:00
refactor refactor(config): purge numeric tuning knobs behind built-in defaults (#111382) 2026-07-19 07:35:45 -07:00
reference refactor: remove expired plugin compatibility surfaces (#111451) 2026-07-19 11:04:48 -07:00
releases docs: publish release notes for v2026.7.1 (#107040) 2026-07-13 22:54:04 -06:00
security fix(onboarding): leave session.dmScope unset so the personal-agent default "main" applies (#110225) 2026-07-18 03:54:45 +01:00
snippets/plugin-publish docs: restore source-backed contract details (#100182) 2026-07-05 01:26:25 -04:00
specs improve: stream native sessions as hosts finish (#110211) 2026-07-17 23:59:57 +01:00
start fix(wizard): honor process locale when overrides are blank (#111076) 2026-07-18 23:28:03 -07:00
tools feat(dashboard): stitch session dashboards end-to-end — live provider, show_widget pin, board commands (#111218) 2026-07-19 12:36:54 -07:00
web refactor(config): config-surface reduction tranche 1 — retire dead keys, dedupe channel schemas, add growth ratchet (#111142) 2026-07-19 00:52:37 -07:00
agent-runtime-architecture.md refactor: own model discovery by runtime lifecycle (#111173) 2026-07-19 05:30:54 -07:00
AGENTS.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
auth-credential-semantics.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
brave-search.md
ci.md fix(ci): validate sticky importer restores (#111444) 2026-07-19 07:57:46 -07:00
CLAUDE.md
date-time.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
docs.json docs: Swarm user guide (#110325) (#111384) 2026-07-19 05:33:00 -07:00
docs_map.md refactor: remove expired plugin compatibility surfaces (#111451) 2026-07-19 11:04:48 -07:00
index.md fix(sqlite): reject runtimes vulnerable to WAL corruption (#106065) 2026-07-13 13:59:00 +08:00
logging.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
nav-tabs-underline.js docs: document repo support scripts 2026-06-04 08:01:15 -04:00
network.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
openclaw-agent-runtime.md refactor: flip sessions and transcripts to sqlite storage (#98236) 2026-07-11 14:50:37 -07:00
perplexity.md
prose.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
style.css fix(docs): expose generated taxonomy links 2026-07-15 07:28:58 -04:00
tts.md
vps.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
whatsapp-openclaw.jpg