diff --git a/next.config.ts b/next.config.ts index d2233680..ff701a46 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,7 +1,7 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { - reactStrictMode: true, + reactStrictMode: false, output: "standalone", allowedDevOrigins: ["192.168.77.32"], experimental: { diff --git a/src/components/nodes/GenerateImageNode.tsx b/src/components/nodes/GenerateImageNode.tsx index 4c2ceabe..2756ea9b 100644 --- a/src/components/nodes/GenerateImageNode.tsx +++ b/src/components/nodes/GenerateImageNode.tsx @@ -131,11 +131,7 @@ export function GenerateImageNodeView({ id, data, selected }: GenerateImageNodeV const [displayFallbackImage, setDisplayFallbackImage] = useState(null); const displayImage = displayFallbackImage || preferredDisplayImage; const adaptiveOutputImage = useAdaptiveImageSrc(displayImage, id); - const outputImageSrc = adaptiveOutputImage - ? imageRetryNonce > 0 && /^https?:\/\//i.test(adaptiveOutputImage) && !adaptiveOutputImage.includes("?") - ? `${adaptiveOutputImage}${adaptiveOutputImage.includes("?") ? "&" : "?"}canvasRetry=${imageRetryNonce}` - : adaptiveOutputImage - : null; + const outputImageSrc = adaptiveOutputImage; const updateNodeData = useWorkflowStore((state) => state.updateNodeData); const popiserverImageModels = useModelStore((state) => state.byKind.image); // Use stable selector for API keys to prevent unnecessary re-fetches diff --git a/src/components/nodes/GenerateVideoNode.tsx b/src/components/nodes/GenerateVideoNode.tsx index 630c525a..c1211583 100644 --- a/src/components/nodes/GenerateVideoNode.tsx +++ b/src/components/nodes/GenerateVideoNode.tsx @@ -56,6 +56,7 @@ const VIDEO_BASIC_PARAMETER_NAMES = [ ...VIDEO_DURATION_PARAMETER_NAMES, ...VIDEO_RESOLUTION_PARAMETER_NAMES, ]; +const VIDEO_LOAD_RETRY_DELAYS_MS = [600, 1600]; function isSameSelectedModel(a: SelectedModel | undefined, b: SelectedModel | undefined): boolean { return Boolean(a?.provider && b?.provider && a.provider === b.provider && a.modelId === b.modelId); @@ -159,6 +160,7 @@ export function GenerateVideoNodeView({ id, data, selected }: GenerateVideoNodeV const [isBrowseDialogOpen, setIsBrowseDialogOpen] = useState(false); const [isLoadingCarouselVideo, setIsLoadingCarouselVideo] = useState(false); const [isPreviewOpen, setIsPreviewOpen] = useState(false); + const [videoRetryNonce, setVideoRetryNonce] = useState(0); const [settingsTab, setSettingsTab] = useState<"primary" | "fallback">("primary"); const showFallbackSettings = !popiProviderMode && !!nodeData.fallbackModel; @@ -171,6 +173,10 @@ export function GenerateVideoNodeView({ id, data, selected }: GenerateVideoNodeV const videoBlobUrl = useVideoBlobUrl(nodeData.outputVideo ?? null); const videoAutoplayRef = useVideoAutoplay(id, selected); + useEffect(() => { + setVideoRetryNonce(0); + }, [videoBlobUrl]); + // Inline parameters infrastructure const { inlineParametersEnabled } = useInlineParameters(); // Video generation settings now live in the selected-node composer. Rendering @@ -938,13 +944,23 @@ export function GenerateVideoNodeView({ id, data, selected }: GenerateVideoNodeV <>