From 90328d5651b22d80e537cc6db8cf54dde551f611 Mon Sep 17 00:00:00 2001
From: vantanco <86152750+vantanco@users.noreply.github.com>
Date: Fri, 19 Jun 2026 23:15:11 +0700
Subject: [PATCH] Avoid blank previews for unsupported artifacts (#3644)
---
.../artifacts/artifact-file-detail.tsx | 66 ++++++++++++++++++-
frontend/src/core/utils/files.tsx | 27 ++++++++
2 files changed, 91 insertions(+), 2 deletions(-)
diff --git a/frontend/src/components/workspace/artifacts/artifact-file-detail.tsx b/frontend/src/components/workspace/artifacts/artifact-file-detail.tsx
index 4d9af67a6..8c70d91db 100644
--- a/frontend/src/components/workspace/artifacts/artifact-file-detail.tsx
+++ b/frontend/src/components/workspace/artifacts/artifact-file-detail.tsx
@@ -20,6 +20,7 @@ import {
ArtifactTitle,
} from "@/components/ai-elements/artifact";
import { ClipboardSafeStreamdown } from "@/components/ai-elements/streamdown";
+import { Button } from "@/components/ui/button";
import { Select, SelectItem } from "@/components/ui/select";
import {
SelectContent,
@@ -43,7 +44,13 @@ import { useI18n } from "@/core/i18n/hooks";
import { findToolCallResult } from "@/core/messages/utils";
import { installSkill } from "@/core/skills/api";
import { streamdownPlugins } from "@/core/streamdown";
-import { checkCodeFile, getFileName } from "@/core/utils/files";
+import {
+ canBrowserPreviewFile,
+ checkCodeFile,
+ getFileExtensionDisplayName,
+ getFileIcon,
+ getFileName,
+} from "@/core/utils/files";
import { env } from "@/env";
import { cn } from "@/lib/utils";
@@ -92,6 +99,9 @@ export function ArtifactFileDetail({
}
return checkCodeFile(filepath);
}, [filepath, isWriteFile, isSkillFile]);
+ const canPreviewInBrowser = useMemo(() => {
+ return canBrowserPreviewFile(filepath);
+ }, [filepath]);
const isSupportPreview = useMemo(() => {
return language === "html" || language === "markdown";
}, [language]);
@@ -303,17 +313,69 @@ export function ArtifactFileDetail({
readonly
/>
)}
- {!isCodeFile && (
+ {!isCodeFile && canPreviewInBrowser && (
)}
+ {!isCodeFile && !canPreviewInBrowser && (
+
+ This file type cannot be previewed in the browser. +
+ +