diff --git a/CHANGELOG.md b/CHANGELOG.md index d102118ad78..12b516795cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -47,6 +47,8 @@ Docs: https://docs.openclaw.ai ### Fixes +- Plugin SDK/release guard: add explicit `openclaw/plugin-sdk` export verification in tests and release checks to prevent missing runtime exports from shipping and breaking channel extensions. (#28575) Thanks @Glucksberg. +- Media understanding/OpenAI provider registry: advertise OpenAI as an audio-capable provider in addition to image support so shared-model capability filtering can select OpenAI STT correctly. (#12717) Thanks @openjay. - Synology Chat/webhook compatibility: accept JSON and alias payload fields, allow token resolution from body/query/header sources, and ACK webhook requests with `204` to avoid persistent `Processing...` states in Synology Chat clients. (#26635) Thanks @memphislee09-source. - OpenAI Codex OAuth/TLS prerequisites: add an OAuth TLS cert-chain preflight with actionable remediation for cert trust failures, and gate doctor TLS prerequisite probing to OpenAI Codex OAuth-configured installs (or explicit `doctor --deep`) to avoid unconditional outbound probe latency. (#32051) Thanks @alexfilatov. - Synology Chat/webhook ingress hardening: enforce bounded body reads (size + timeout) via shared request-body guards to prevent unauthenticated slow-body hangs before token validation. (#25831) Thanks @bmendonca3. diff --git a/src/media-understanding/providers/index.test.ts b/src/media-understanding/providers/index.test.ts index 430e89e84a6..8b1bf3f576a 100644 --- a/src/media-understanding/providers/index.test.ts +++ b/src/media-understanding/providers/index.test.ts @@ -10,6 +10,14 @@ describe("media-understanding provider registry", () => { expect(provider?.capabilities).toEqual(["audio"]); }); + it("registers OpenAI audio + image capabilities", () => { + const registry = buildMediaUnderstandingRegistry(); + const provider = getMediaUnderstandingProvider("openai", registry); + + expect(provider?.id).toBe("openai"); + expect(provider?.capabilities).toEqual(["image", "audio"]); + }); + it("keeps provider id normalization behavior", () => { const registry = buildMediaUnderstandingRegistry(); const provider = getMediaUnderstandingProvider("gemini", registry);