Files
Maxed-Out-99 58066adbde Add animated live preview panel and LTX fallback
This adds an opt-in sampler preview system that streams animated frames through a docked panel, saves finished previews to output/live_previews, and includes an automatic taeltx fallback for LTX 2.3. It also updates the schema dump for newer ComfyUI cores, wires the shared live preview hooks into startup, and switches the project docs/license metadata to GPL-3.0.
2026-09-29 11:46:04 -07:00

73 lines
4.3 KiB
Markdown

# web/ — frontend layer map
ComfyUI serves this whole directory as `WEB_DIRECTORY` and auto-loads every
`.js` it finds; `index.js` ALSO imports everything explicitly (ES modules
dedupe, so double-loading is harmless) — keep new files listed in `index.js`
so loading never depends on the server's glob behavior. `scripts/check_web.py`
enforces this.
## Layers
- **`lib/`** — shared library, originally derived from rgthree-comfy's module
split and renamed with the `mxd_` prefix. These are complementary layers,
NOT duplicates — don't merge them:
- `mxd_runtime.js` — singleton runtime; patches `app.loadApiJson`, canvas
copy/paste tracking, toast messages.
- `mxd_utils.js` — LiteGraph graph/topology helpers (connection layout,
node traversal). Imports from `mxd_shared_utils.js`.
- `mxd_shared_utils.js` — generic helpers (debounce, resolver, array ops,
`injectCss`).
- `mxd_utils_dom.js` / `mxd_utils_canvas.js` / `mxd_utils_widgets.js` /
`mxd_utils_menu.js` — DOM building, canvas drawing primitives, custom
widget classes, model/lora chooser menus.
- `mxd_base_node.js` — `MxdBaseNode` / `MxdBaseServerNode` +
`registerForOverride` machinery (how MXD classes replace the stock
LiteGraph node class for a Python node).
- `mxd_dialog.js` → `mxd_dialog_info.js` — dialog base → model-info dialogs.
CSS is injected LAZILY: the first opened info dialog calls `injectCss` on
`mxd_dialog_base.css` (which `@import`s dialog/buttons/menu css) and
`mxd_dialog_model_info.css`. CSS must stay in `lib/` next to
`mxd_dialog_info.js` (paths derive from its `import.meta.url`).
- `mxd_api.js` / `mxd_model_info_service.js` / `mxd_model_row_widget.js` /
`mxd_smart_search.js` / `mxd_menu.js` / `mxd_svgs.js`.
- **`nodes/`** — one extension file per node/feature. Each registers via
`app.registerExtension` and targets Python node names in
`beforeRegisterNodeDef` (names must match `NODE_CLASS_MAPPINGS` keys).
- `power_lora_base.js` — shared base for the lora loader: node machinery,
header row, single-strength row widget. `power_lora_loader.js` adds the
dual model/clip strength mode. Rows are canvas-drawn in both classic and
Nodes 2.0; `mxd_nodes2.js` supplies the width and repaint shims that make
that work. Serialization shapes are frozen (see the AGENTS.md contract).
- `better_combos.js` — folder-tree/grid combo display for the MXD latent
loaders (adapted from pysssss; scoped to MXD nodes only; keeps its BOM).
- `run_folder.js` — wraps `app.queuePrompt` for multi-run loops driven by
the `run_folder` toggle on folder loaders (uses `/mxd/latents/files`).
All active nodes advance together in one pass.
A toggled-on node only drives the loop if it would actually execute:
not muted/bypassed, and wired forward into an output node. Otherwise a
stray disconnected loader would multiply the queue for nothing.
- `prompt_spellcheck.js` — right-click spelling suggestions in any prompt
textarea, using the vendored dictionary in `vendor/spellcheck/`. Also
ships standalone as the Spell-Check-MXD pack; both copies claim the shared
`window.__mxdPromptSpellcheckActive` flag so installing both attaches it
once. If you rename that flag, rename it in BOTH repos.
- `video_preview.js` / `live_preview_panel.js` — disabled-by-default animated
sampler previews and the persistent docked preview panel. The frontend
writes per-queue flags consumed by `system/live_preview.py`; LTX 2.3 falls
back to the tiny decoder in `nodes/ltx/preview.py`.
- **`vendor/zip_loader/`** — vendored drag-drop zip workflow importer +
bundled `jszip.min.js` (never lint/format the min file).
- **`vendor/spellcheck/`** — vendored `nspell` browser bundle and English
Hunspell dictionary used by `nodes/prompt_spellcheck.js` for fully offline
right-click spelling suggestions in prompt textareas.
## Conventions
- Imports of `../../../scripts/app.js` (and api.js/ui.js/widgets.js) are
ComfyUI-served URLs — the number of `../` depends on the file's depth under
`web/`. Files in `lib/` and `nodes/` use three `../`.
- UTF-8 without BOM (exception: `nodes/better_combos.js`).
- After ANY web change run:
`C:\Users\user\Documents\ComfyUI\.venv\Scripts\python.exe scripts/check_web.py`