-
-
Local editor — scenes are not saved.
-
- Open recent scenes
-
-
- ·
+
+
+ Blank canvas — saved scenes are under Scenes (not this page).
- Create new
+ Open saved scenes
diff --git a/apps/editor/components/scene-loader.tsx b/apps/editor/components/scene-loader.tsx
index 9b3b6797bf..fb891f1cbd 100644
--- a/apps/editor/components/scene-loader.tsx
+++ b/apps/editor/components/scene-loader.tsx
@@ -12,8 +12,9 @@ import {
import { Hammer, Layers } from 'lucide-react'
import Image from 'next/image'
import Link from 'next/link'
-import { useRouter } from 'next/navigation'
+import { useRouter, useSearchParams } from 'next/navigation'
import { useCallback, useEffect, useRef, useState } from 'react'
+import { cn } from '@/lib/utils'
import { BuildTab } from './build-tab'
import { CommunityViewerToolbarLeft, CommunityViewerToolbarRight } from './viewer-toolbar'
@@ -92,14 +93,27 @@ function sceneGraphSignature(graph: SceneGraphWithCollections): string {
})
}
+/**
+ * `?disable=postFx` is read at post-processing module load, so it only takes
+ * effect on a full page load. Reading it here as well lets the flag survive a
+ * client-side navigation, since `disablePostFx` is a live prop.
+ */
+function isLightPreviewQuery(searchParams: URLSearchParams): boolean {
+ const disable = searchParams.get('disable') ?? ''
+ return disable.split(',').some((p) => p.trim() === 'postFx')
+}
+
export function SceneLoader({ initialScene, meta }: SceneLoaderProps) {
const router = useRouter()
+ const searchParams = useSearchParams()
const versionRef = useRef(meta.version)
const lastRemoteGraphJsonRef = useRef
(null)
const suppressRemoteSaveUntilRef = useRef(0)
const [conflict, setConflict] = useState(false)
const [saveError, setSaveError] = useState(null)
+ const lightPreview = isLightPreviewQuery(searchParams)
+
const handleLoad = useCallback(async () => initialScene, [initialScene])
const handleSave = useCallback(
@@ -224,6 +238,20 @@ export function SceneLoader({ initialScene, meta }: SceneLoaderProps) {