docs(mcp): add 10-agent research on scene-save workflow

10 parallel research agents (R1-R10) investigated whether MCP can save
scenes as saveable entities that the user later opens in the editor —
rather than injecting via a dev-only window.__pascalScene hook.

Key findings:
- Editor is already backend-agnostic via onLoad/onSave callbacks (R2,R7)
- Current persistence is localStorage-only, single key (R1)
- Zero dynamic routes and no backend code yet — env declared (R4,R5)
- File import exists as "Load Build" but lacks Zod validation (R6)
- MCP-written scenes load cleanly into the editor today (R6, Casa del
  Sol test already proved this)
- Best path: filesystem-handoff this week, Supabase in weeks 2-4,
  Supabase Realtime for live mode in Q2. Skip Yjs for now. (R8)
- 4-5 weeks to private beta, 10-14 to GA (R9)
- 10 high-value ideas ranked; "photo -> scene" is the unblocker (R10)

SYNTHESIS.md pulls all 10 reports together with the recommended
implementation plan.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Adrian Perez
2026-04-18 18:47:36 +02:00
co-authored by Claude Opus 4.7
parent bdb47a6e5d
commit 42bd05db9c
11 changed files with 1463 additions and 0 deletions
@@ -0,0 +1,38 @@
# R4 — Routing & URLs
## TL;DR
**Zero dynamic routes today.** Every user lands on `/` which hardcodes `projectId="local-editor"`.
## Route tree
```
apps/editor/app/
├── page.tsx (Home: <Editor projectId="local-editor">)
├── layout.tsx
├── privacy/page.tsx
├── terms/page.tsx
├── api/health/route.ts
└── fonts/
```
- No `[id]`, `[projectId]`, `[sceneId]`, or `[[...slug]]` segments.
- No middleware.
- No `rewrites()` / `redirects()` in `next.config.ts`.
- No query-param driven state.
- No hash routing.
## Latent expectation (dead code)
`packages/editor/src/components/ui/action-menu/view-toggles.tsx:79`:
```ts
const projectId = window.location.pathname.split('/editor/')[1]?.split('/')[0]
```
Code expects URLs of shape `/editor/<projectId>/…`. No such routes exist. Falls through to `undefined` gracefully today but signals a planned structure.
## Options to add
| Option | Route | Effort |
|---|---|---|
| A | `/?sceneId=<id>` — reuse `/` + `useSearchParams` | XS |
| B | `/editor/[projectId]` | S |
| C | `/editor/[projectId]/[sceneId]` | M |
| D | `/scene/[id]` — flat, project-agnostic | S |
Recommended: **B for projects, `/scene/[id]` short-link for sharing**. Matches the latent expectation in view-toggles.tsx.