diff --git a/apps/web/src/components/ChatView.tsx b/apps/web/src/components/ChatView.tsx index e001dad666d804439c081614384449b2a22bee2b..38a53eff064dd3be29550185909c5a6c71897ad6 100644 --- a/apps/web/src/components/ChatView.tsx +++ b/apps/web/src/components/ChatView.tsx @@ -252,7 +252,8 @@ import { setActivePreviewTab, useThreadPreviewState, } from "../previewStateStore"; -import { BrowserSettingsReadError } from "../browser/openFileInPreview"; +import { BrowserSettingsReadError, openUrlInPreview } from "../browser/openFileInPreview"; +import { resolveDiscoveredServerUrl } from "../browser/browserTargetResolver"; import { previewRuntimeTabId } from "../browser/previewRuntimeTabId"; import { addBrowserSurface } from "./preview/addBrowserSurface"; import { closePreviewSession } from "./preview/closePreviewSession"; @@ -4892,12 +4893,32 @@ export default function ChatView(props: ChatViewProps) { data: `${script.command}\r`, }, }); - if (writeResult._tag === "Failure" && !isAtomCommandInterrupted(writeResult)) { - const error = squashAtomCommandFailure(writeResult); - setThreadError( - activeThreadId, - error instanceof Error ? error.message : `Failed to run script "${script.name}".`, - ); + if (writeResult._tag === "Failure") { + if (!isAtomCommandInterrupted(writeResult)) { + const error = squashAtomCommandFailure(writeResult); + setThreadError( + activeThreadId, + error instanceof Error ? error.message : `Failed to run script "${script.name}".`, + ); + } + return; + } + if (script.autoOpenPreview && script.previewUrl && isPreviewSupportedInRuntime()) { + const previewResult = await openUrlInPreview({ + threadRef: activeThreadRef, + url: resolveDiscoveredServerUrl(activeThreadRef.environmentId, script.previewUrl), + openPreview, + }); + if (previewResult._tag === "Failure" && !isAtomCommandInterrupted(previewResult)) { + const error = squashAtomCommandFailure(previewResult); + toastManager.add( + stackedThreadToast({ + type: "error", + title: "Could not open preview", + description: error instanceof Error ? error.message : "An unexpected error occurred.", + }), + ); + } } }, [ @@ -4913,6 +4934,7 @@ export default function ChatView(props: ChatViewProps) { setLastInvokedScriptByProjectId, environmentId, openTerminal, + openPreview, activeKnownTerminalIds, allocatableActiveTerminalIds, runningTerminalIds,