Three fixes from the user's use of the current-node panel: - ⇄ Compare on a saved set listed the whole workflow's values. It now compares that node alone: a copy of the node holding the set's values, nothing wired, against the canvas, under the node's id so the two pair (a set's workflow numbered otherwise, with two prompt nodes, paired neither). compareParams takes `only` for this; the comparison window takes `nodeId` and leaves out the structure badge. Every set can now be compared; the unused "could not read the set's workflow" text is gone. - The Change model picker drew cards of its own: full-size covers and videos without a still, so most showed blank, and only file names. It now shows the models page's card face (modelCardFace, split out of ui_grid.js): the cover thumbnail, a video's still until pointed at, the base badge, version, readable name and file name; "current" and the chosen outline stay. Versions are not folded. Its type and base chips and their texts are gone. - In the generated-pictures gallery (current node, View all), once scrolled, "Close gallery" opened the picture scrolled up under it: Chrome's hit-testing again (lessons.md). Its scroll box and the picker's card area get clip-path: inset(0). Checked in an isolated ComfyUI: the prompt node's compare lists only its text; the picker shows covers and names, selects, replaces; the models page's cards keep their buttons and open the details; a 13-step scroll of the gallery leaves every click on the close button. Full suite and structure check pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Architecture Topic Guide
Start with the repository-root ARCHITECTURE.md, then
open only the topic needed for the current task.
ui-flows.md: the UI map's hand-written part, in Chinese: what each part of a page is for, what a click does and why, and one name per thing (a glossary the structure check enforces). Where a word on screen is drawn and what it calls comes from the code:node tools/ui_map.mjs find <words>(tools/ui_map.mjs, its indextools/ui_map_scan.mjs;buildwrites the whole map to the untrackeddocs/ui-map.md).backend.md: Python routes, filesystem safety, persistence, scan state, model sidecars, and backend performance.frontend.md: extension bootstrap, UI ownership, localization, media lifecycle, panel state, and graph mutations.recipes.md: Workflow Recipes, packages, galleries, Parameter Notebooks, prompt roles, and recipe-to-model transitions.material-library.md: saved prompts and node values (material files), keeping an output image, and dragging prompts onto the canvas.recipe-model-lifecycle.md: authoritative model fields, Hash synchronization, local matching, partial append, and note privacy.model-resolution.md: model provenance, Model Check, hash injection, model scanning, and recovery policy.../decisions/README.md: concise records of product and architectural decisions that still explain current behavior.
These documents describe current contracts rather than implementation history.
For exact changes, use Git history. For user-visible releases, use
CHANGELOG.md. For recurring implementation traps, use
lessons.md.