From 2879198dec7fc91b666791c19a3665ace6845607 Mon Sep 17 00:00:00 2001 From: "soroush.asadi" Date: Sun, 7 Jun 2026 07:27:53 +0330 Subject: [PATCH] fix(studio): accept numeric scene/content ids (template inputs now load) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit THE bug behind 'nothing changed': parseScene required a STRING id, but the V2 relational scene assembly serializes numeric ids (scene 23, content 136) — so every template scene was rejected → 0 scenes → studio fell back to its default 2-layer title/subtitle. Coerce numeric ids to string. Verified: insta-promo project now parses 1 scene / 6 layers (frl_c1t1-t4 text + frl_c1m1/m2 media). Co-Authored-By: Claude Opus 4.8 --- src/lib/studio-scene-data.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/lib/studio-scene-data.ts b/src/lib/studio-scene-data.ts index f453aab..5deca1f 100644 --- a/src/lib/studio-scene-data.ts +++ b/src/lib/studio-scene-data.ts @@ -90,7 +90,15 @@ function layersFromContents(contents: unknown[]): Layer[] { function parseScene(value: unknown): Scene | null { if (!isRecord(value)) return null; - if (typeof value.id !== "string") return null; + // Studio's own save format uses string ids; the V2 relational assembly uses numeric + // ids — accept both (coerce to string). + const id = + typeof value.id === "string" + ? value.id + : typeof value.id === "number" + ? String(value.id) + : null; + if (id === null) return null; const name = typeof value.name === "string" ? value.name @@ -120,7 +128,7 @@ function parseScene(value: unknown): Scene | null { : "none"; return { - id: value.id, + id, name, duration: typeof value.duration === "number"