fix: tour -- also block Save video, a dormant landmine round 2 flagged

Round 2's review of the syncFromPreview fix came back clean but flagged an
adjacent, currently-dormant gap while tracing the same pattern: the "Save
video" button (Store.saveClipToMediaBin -> API.importClipToMediaBin) is
neither in patchStore()'s block list nor patchApi()'s mock list, and it
already renders during the tour (tour-s2 satisfies
clipSaveableToMediaBin()). It's harmless today only because
importClipToMediaBin is itself a stub ("no render/stitch stage yet") --
the moment that stage lands, this becomes a real, unblocked PUT during the
tour with nothing prompting anyone to notice. Closing it now with the same
established pattern rather than leaving it for a future regression.

Verified live: Store.saveClipToMediaBin now returns the block toast
directly, and a full tour run completes with zero thrown errors.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
digital-garbage
2026-09-15 22:34:34 +03:00
co-authored by Claude Sonnet 5
parent c020ee8ca8
commit da04063a77
+7 -1
View File
@@ -344,7 +344,7 @@
"generate", "generateMontage", "generateSelected", "renderFinal", "exportSelected",
"saveSelectedToMediaBin", "commit", "newProject", "loadProject", "deleteProject",
"importProject", "downloadProject", "uploadMedia", "deleteMedia", "deleteMediaMany",
"interrupt", "resetStudioSession", "syncFromPreview",
"interrupt", "resetStudioSession", "syncFromPreview", "saveClipToMediaBin",
];
const labels = {
generate: "Generate",
@@ -369,6 +369,12 @@
// call) without going through anything else already on this list, so
// it needs its own block rather than relying on "commit" to cover it.
syncFromPreview: "Sync scenes from preview",
// Not reachable via a real network call today -- API.importClipToMediaBin
// is itself a stub ("no render/stitch stage yet") -- but the button
// already renders during the tour (tour-s2 satisfies
// clipSaveableToMediaBin()), so this needs blocking now rather than
// whenever that stage lands and the stub silently becomes a real PUT.
saveClipToMediaBin: "Save video",
};
blocked.forEach((name) => {
if (typeof Store[name] !== "function") return;