From 03c0b2dcd9cb550ccce44f00ee414eb4fb1db9c7 Mon Sep 17 00:00:00 2001 From: digital-garbage <133010426+digital-garbage@users.noreply.github.com> Date: Wed, 12 Aug 2026 14:41:02 +0300 Subject: [PATCH] fix(onboarding): setup panes open over the wizard instead of replacing it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The wizard sat at z-index 800, above .modal-overlay (500) and below .fw (4000), so "Open Models…" opened behind it and did nothing visible, and the extras step worked around that by closing the wizard first — which dropped you into a half-finished editor. It now sits at 400: Models, Settings and the Composer layer over it the way they layer over the editor, and closing one returns to the step. Prompt splits called Composer.open(), which does not exist; the export is toggle(). Also: MiniMax H3 no longer pulls in ComfyUI-LTXVideo. LTXFloatToInt only converted the project's frame rate for user slots, and H3's rate is fixed at 24 by the model, so an LTX pack was a hard requirement of a pipeline with no use for it. Core producers are now filtered by what the family's graph actually built. The Cutting Room brand links to the hub, as Easy Gen's already did. Co-Authored-By: Claude Opus 5 --- movie_editor/backend/builder.py | 9 ++++++++- movie_editor/frontend/index.html | 2 +- movie_editor/frontend/onboarding.js | 7 +++++-- movie_editor/frontend/styles.css | 9 ++++++++- movie_editor/tests/test_builder.py | 18 ++++++++++++++++++ 5 files changed, 40 insertions(+), 5 deletions(-) diff --git a/movie_editor/backend/builder.py b/movie_editor/backend/builder.py index 793e5d58..deaaf4d2 100644 --- a/movie_editor/backend/builder.py +++ b/movie_editor/backend/builder.py @@ -116,6 +116,9 @@ CORE_PRODUCERS: list[tuple[str, int, str]] = [ # (core_id, output_index, type) # concat and the latent slot feeds the sampler directly. # * LTXVAudioVAEDecode reads `audio_vae.first_stage_model.output_sample_rate`, which # H3's audio VAE does not define — it would raise. Core's VAEDecodeAudio is generic. +# * LTXFloatToInt only exists to offer an INT copy of the project's frame rate to user +# slots. H3's frame rate is fixed at 24 by the model, so there is nothing to convert — +# and keeping it made an LTX node pack a hard requirement of a non-LTX pipeline. # # Anything not listed here is shared, so a fix to the core graph reaches both families. DEFAULT_FAMILY = "ltxav" @@ -124,7 +127,7 @@ FAMILIES: dict[str, dict] = { "ltxav": {"label": "LTX-2 / LTXAV"}, "minimax_h3": { "label": "MiniMax H3 (Hailuo)", - "drop": ("cond", "concat"), + "drop": ("cond", "concat", "f2i"), "core": {"audiodec": "VAEDecodeAudio"}, "links": { # positive/negative come straight from Studio, with no LTXVConditioning between @@ -976,7 +979,11 @@ def _resolve_target(target: str, port_to_core, slot_node_id) -> Optional[tuple[s def _producers(graph, slots, slot_node_id, slot_def, object_info): """type -> list of (node_id, output_index). Slots + core producers.""" out: dict[str, list] = {} + # Only what this family's core actually built — offering a producer the graph dropped + # would auto-wire a slot to a node that is not there. for cid, oidx, t in CORE_PRODUCERS: + if cid not in graph: + continue out.setdefault(t, []).append((cid, oidx)) for s in slots: nd = slot_def[s["id"]] diff --git a/movie_editor/frontend/index.html b/movie_editor/frontend/index.html index 84562601..d40c0f54 100644 --- a/movie_editor/frontend/index.html +++ b/movie_editor/frontend/index.html @@ -48,7 +48,7 @@