diff --git a/.openclaw-sync/source.json b/.openclaw-sync/source.json index d719e27a3..33389da6e 100644 --- a/.openclaw-sync/source.json +++ b/.openclaw-sync/source.json @@ -1,5 +1,5 @@ { "repository": "openclaw/openclaw", - "sha": "65fc962d7bf3d9c8abf0c5a38cc9289218f76949", - "syncedAt": "2026-05-02T07:54:08.309Z" + "sha": "c35ed548bf0c6bad052d822d7607889e100efd08", + "syncedAt": "2026-05-02T08:13:42.896Z" } diff --git a/docs/plugins/manifest.md b/docs/plugins/manifest.md index 7c4d46ffe..42865febc 100644 --- a/docs/plugins/manifest.md +++ b/docs/plugins/manifest.md @@ -1271,12 +1271,30 @@ Implications: - A forked or stale copy of a bundled plugin sitting in the workspace will not shadow the bundled build. - To actually override a bundled plugin with a local one, pin it via `plugins.entries.` so it wins by precedence rather than relying on workspace discovery. - Duplicate drops are logged so Doctor and startup diagnostics can point at the discarded copy. +- Config-selected duplicate overrides are worded as explicit overrides in diagnostics, but still warn so stale forks and accidental shadows stay visible. ## JSON Schema requirements - **Every plugin must ship a JSON Schema**, even if it accepts no config. - An empty schema is acceptable (for example, `{ "type": "object", "additionalProperties": false }`). - Schemas are validated at config read/write time, not at runtime. +- When extending or forking a bundled plugin with new config keys, update that plugin's `openclaw.plugin.json` `configSchema` at the same time. Bundled plugin schemas are strict, so adding `plugins.entries..config.myNewKey` in user config without adding `myNewKey` to `configSchema.properties` will be rejected before the plugin runtime loads. + +Example schema extension: + +```json +{ + "configSchema": { + "type": "object", + "additionalProperties": false, + "properties": { + "myNewKey": { + "type": "string" + } + } + } +} +``` ## Validation behavior