openclaw/docs/plugins/sdk-migration
Peter Steinberger bb41c47d77
fix(doctor): reject malformed UTF-8 across legacy imports (#180861)
Doctor and state-migration importers decoded legacy files lossily, so malformed bytes became U+FFFD replacement characters that were committed into canonical state or restored into workspace files (retired runtime state, Skill Workshop proposals/rollbacks, sessions, credentials, pairing, cron, plugin state, catalogs, archives, and plugin importers for ACPX, Codex, Teams, Matrix, Zalo and Reef). All of them now use the shared strict decoder (src/infra/utf8-input.ts, exposed additively to plugins via the runtime doctor-migrations SDK seam): malformed sources produce a recoverable warning, keep their original bytes, and independent migrations continue, so updates do not fail. Fixes #180795, Fixes #180782. Supersedes #180794 and #180781, thanks @wangmiao0668000666.

Co-authored-by: wangmiao0668000666 <wang.miao86@xydigit.com>
2026-10-22 18:06:12 -07:00
..
async-transcript-and-tts.md refactor: prepare synchronous SQLite SDK retirement (#171775) 2026-10-14 07:12:12 -07:00
compatibility-policy.md fix(sessions): preserve requester identity at execution admission (#157806) 2026-10-18 20:09:24 -07:00
how-to-migrate.md fix(doctor): reject malformed UTF-8 across legacy imports (#180861) 2026-10-22 18:06:12 -07:00
import-paths.md docs: simplify plugin sdk and authoring docs (#168701) 2026-10-13 00:28:25 -07:00
removal-timeline.md refactor: prepare synchronous SQLite SDK retirement (#171775) 2026-10-14 07:12:12 -07:00
removed-surfaces.md refactor(automations): remove retired heartbeat turn paths (#180563) 2026-10-22 16:51:10 +00:00
sqlite-async.md refactor: prepare bundled callers for async SDK removal (#175199) 2026-10-17 01:51:53 -07:00
talk.md