fix(ui): fall back for generic transcript image MIME

This commit is contained in:
Alec Hrdina
2026-04-18 00:39:10 -05:00
committed by Peter Steinberger
parent 501a68a69b
commit 3cb142ff2e
2 changed files with 35 additions and 1 deletions

View File

@@ -83,7 +83,13 @@ function getFileExtension(url: string): string | undefined {
function isImageTranscriptMediaPath(path: string, mediaType: unknown): boolean {
if (typeof mediaType === "string" && mediaType.trim()) {
return mediaType.trim().toLowerCase().startsWith("image/");
const normalized = mediaType.trim().toLowerCase();
if (normalized.startsWith("image/")) {
return true;
}
if (normalized !== "application/octet-stream") {
return false;
}
}
const ext = getFileExtension(path);
return (

View File

@@ -946,6 +946,34 @@ describe("chat view", () => {
);
});
it("keeps transcript images visible when MIME falls back to application/octet-stream", () => {
const container = document.createElement("div");
renderGroupedMessage(
container,
{
id: "user-history-image-octet-stream",
role: "user",
content: "",
MediaPath: "/tmp/openclaw/user-upload.png",
MediaType: "application/octet-stream",
timestamp: Date.now(),
},
"user",
{
showToolCalls: false,
basePath: "/openclaw",
assistantAttachmentAuthToken: "session-token",
localMediaPreviewRoots: ["/tmp/openclaw"],
},
);
const image = container.querySelector<HTMLImageElement>(".chat-message-image");
expect(image?.getAttribute("src")).toBe(
"/openclaw/__openclaw__/assistant-media?source=%2Ftmp%2Fopenclaw%2Fuser-upload.png&token=session-token",
);
});
it("skips non-image transcript media paths after history reload", () => {
const container = document.createElement("div");