From 4a546da37d51d8a71b22bf705ea058b6f7d69e45 Mon Sep 17 00:00:00 2001 From: Luis Date: Thu, 6 Aug 2026 19:33:44 -0700 Subject: [PATCH] fix: artifact panel never auto-opens on a fast stream The auto-open gate is a narrow length window (text 400({ kind: "code", onStreamPart: ({ streamPart, setArtifact }) => { if (streamPart.type === "data-codeDelta") { - setArtifact((draftArtifact) => ({ - ...draftArtifact, - content: streamPart.data, - isVisible: - draftArtifact.status === "streaming" && - draftArtifact.content.length > 300 && - draftArtifact.content.length < 310 - ? true - : draftArtifact.isVisible, - status: "streaming", - })); + setArtifact((draftArtifact) => { + const content = streamPart.data; + return { + ...draftArtifact, + content, + isVisible: + draftArtifact.status === "streaming" && + draftArtifact.content.length <= 300 && + content.length > 300 + ? true + : draftArtifact.isVisible, + status: "streaming", + }; + }); } }, toolbar: [ diff --git a/artifacts/text/client.tsx b/artifacts/text/client.tsx index bddd549dfa..83d3892501 100644 --- a/artifacts/text/client.tsx +++ b/artifacts/text/client.tsx @@ -134,17 +134,20 @@ export const textArtifact = new Artifact<"text", TextArtifactMetadata>({ } if (streamPart.type === "data-textDelta") { - setArtifact((draftArtifact) => ({ - ...draftArtifact, - content: draftArtifact.content + streamPart.data, - isVisible: - draftArtifact.status === "streaming" && - draftArtifact.content.length > 400 && - draftArtifact.content.length < 450 - ? true - : draftArtifact.isVisible, - status: "streaming", - })); + setArtifact((draftArtifact) => { + const content = draftArtifact.content + streamPart.data; + return { + ...draftArtifact, + content, + isVisible: + draftArtifact.status === "streaming" && + draftArtifact.content.length <= 400 && + content.length > 400 + ? true + : draftArtifact.isVisible, + status: "streaming", + }; + }); } }, toolbar: [