diff --git a/apps/app/src/components/generative-ui/open-generative-ui/__tests__/open-generative-ui-renderer.test.tsx b/apps/app/src/components/generative-ui/open-generative-ui/__tests__/open-generative-ui-renderer.test.tsx index 65cdb2a..4b3cd60 100644 --- a/apps/app/src/components/generative-ui/open-generative-ui/__tests__/open-generative-ui-renderer.test.tsx +++ b/apps/app/src/components/generative-ui/open-generative-ui/__tests__/open-generative-ui-renderer.test.tsx @@ -647,4 +647,11 @@ describe("OpenGenUIActivityRenderer", () => { }); expect(parsed.success).toBe(true); }); + + it.each([[-100, "50px"], [0, "50px"], [50000, "4000px"], [300.2, "301px"], [NaN, "200px"], [Infinity, "200px"]])("bounds invalid initial activity height %s", async (initialHeight, expected) => { + const { container } = renderRenderer({ initialHeight, generating: true }); + await flushImport(); + expect(container.querySelector("div[style]")!.style.height).toBe(expected); + }); + }); diff --git a/apps/app/src/components/generative-ui/open-generative-ui/renderer.tsx b/apps/app/src/components/generative-ui/open-generative-ui/renderer.tsx index 4fb3a40..7ac28fd 100644 --- a/apps/app/src/components/generative-ui/open-generative-ui/renderer.tsx +++ b/apps/app/src/components/generative-ui/open-generative-ui/renderer.tsx @@ -145,7 +145,7 @@ function styleIframe(iframe: HTMLIFrameElement) { const OpenGenUIActivityRendererInner = React.memo( function OpenGenUIActivityRendererInner({ content }: InnerProps) { - const initialHeight = content.initialHeight ?? 200; + const initialHeight = clampReportedHeight(content.initialHeight) ?? 200; const [autoHeight, setAutoHeight] = useState(null); const sandboxFunctions = useSandboxFunctions();