fix: tour -- block runComboSweep, the real gap round 5's sweep found

Round 5's exhaustive sweep of store.js's Store export found the serious
one: runComboSweep ("Run sweep" in the Settings window's "H3 Combo Sweep"
panel) reaches a real ComfyUI job queue completely outside every mock and
guard built so far. It calls window.GenerateBridge -> app/shell/session.js's
real queue-and-poll pipeline directly -- a separate module tree from
window.MovieEditorAPI that patchApi() never touches, and with zero
__FUNPACK_TOUR__ awareness anywhere in that chain. The "models-modal" tour
step spotlights the entire .settings-win element (sidebar included), so
the Combo Sweep panel is genuinely openable and runnable mid-tour -- not
theoretical.

This is a fourth caller of the same generation funnel generate/
generateMontage/generateSelected already block, just reached through
Settings instead of the timeline -- the kind of sibling path this whole
review chain keeps finding one at a time. Also closed renameMedia, a
second dormant landmine of the exact shape saveClipToMediaBin was
(currently inert -- API.renameMedia is a stub -- but already reachable
from the media bin's rename control).

Verified live: both return the block toast directly (confirmed the exact
Generate toast fires for runComboSweep, not a queued job), zero
prompt-queue network requests, full tour sequence still 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:51:28 +03:00
co-authored by Claude Sonnet 5
parent cd1d07d96c
commit 37574ac44c
+18
View File
@@ -352,6 +352,22 @@
// through commit(), so the store.js guard doesn't cover them.
"saveShortcut", "deleteShortcut", "addCategory", "importShortcuts", "clearShortcuts",
"saveTransition", "deleteTransition", "importTransitions", "clearTransitions",
// A fourth caller of the generation funnel, alongside generate/
// generateMontage/generateSelected above -- but reached through the
// Settings window's "H3 Combo Sweep" panel (Learning group), not the
// timeline. Its "models-modal" tour step spotlights the WHOLE
// .settings-win element (sidebar included), so this panel is openable
// and runnable mid-tour. Unlike generate/renderFinal/etc., it doesn't
// go through window.MovieEditorAPI at all -- it calls
// window.GenerateBridge -> app/shell/session.js's real queue-and-poll
// pipeline directly, which patchApi() never touches (that only
// patches MovieEditorAPI) and which has no tour-mode awareness of its
// own -- so this needed its own block, not just a mock on API.generate.
"runComboSweep",
// Currently harmless (API.renameMedia is itself a stub -- "media has
// no name field in v5"), but the button already renders in the tour's
// media bin. Same "block it now" reasoning as saveClipToMediaBin.
"renameMedia",
];
const labels = {
generate: "Generate",
@@ -399,6 +415,8 @@
deleteTransition: "Delete transition",
importTransitions: "Import transitions",
clearTransitions: "Clear transitions",
runComboSweep: "Generate",
renameMedia: "Rename media",
};
blocked.forEach((name) => {
if (typeof Store[name] !== "function") return;