* feat(nodes): let a link drive the prompt text of every PromptManager node The Focused, Split and Pair editors hide their widgets, and ComfyUI only draws a widget's input socket while the widget is visible. `text` (and the Pair's `negative_text`) therefore had no socket, and a STRING link dropped on the editor fell through to the first free STRING input, `prepend_text`, which is how #342's workflow was wired. - Detach those inputs from their hidden widgets on create and after a workflow load, so they are ordinary sockets in Classic and Nodes 2.0. The schema, widget order and saved values are unchanged. - A STRING link dropped on the editor body fills the main prompt, then the negative, before the frontend's own choice. - Each editor says when its text comes from a link; the typed text is kept for disconnect. The Classic nodes now save the typed text under a link instead of null, and "use prompt" no longer overwrites it while linked. - Real-host tests: mouse drags in both renderers, a workflow saved before this change, and executions proving the linked text is saved, counted, recorded in history and linked to the run's image. Closes #343 * test(coverage): floor for the linked-text module * test(nodes): PromptSearchList text takes a dragged link like a core widget * fix(nodes): linked text review round for #343 - A legacy frontend Primitive linked to an editor's text or the Pair's negative now runs with its value: the graphToPrompt wrapper and the queue hook fill it in (through virtual reroutes), in new and pre-#343 workflows. - Moving a linked text and releasing it on the editor keeps it on `text`: a link being moved counts as free, as the frontend counts it. - A link dropped on a prompt box (or its link note) fills that box's input, so the Pair's Negative prompt box takes `negative_text` (Classic through getInputOnPos, Nodes 2.0 through the box's slot key). - Only exact STRING links are steered; wildcards keep the frontend choice. - A linked Classic text box gives its row back and gets it back on disconnect; the PromptManagerText note uses the theme colour. - The metadata parsers map positional widget values through the widget table when an editor's widget-bound inputs do not line up with it. - Real-host cases for the legacy Primitive (new and saved workflows, a real Run), the moved link, the Negative box, paste/clone/undo and Split. * fix(nodes): resolve a legacy Primitive's text like the host, once per run (#343) - Inputs still bound to their widget (Classic PromptManager/PromptManagerText) are left as the host resolved them; the injection no longer overwrites them. - For the editors' detached text inputs, the Primitive's value goes through its "Run widget replace on values" replacement and the hidden widget's own serializer, so {a|b} wildcards and %date% tokens resolve as on main. - Each queued output is filled once (graphToPrompt wrapper, or the queue hook for an output that did not come through it): a wildcard is drawn once. - Editors inside subgraphs are found under their <subgraph>:<inner> id. - Real-host runPrompt installs its request route before the run starts. - Shared parser case pins the widget-table fallback for a core KSampler. * fix(nodes): pin the Classic wildcard behaviour and match queued ids by type (#343) - Classic PromptManager/PromptManagerText expose _pmTextSerializerReady, settled once their own text serializer is installed; the real-host specs wait on it and assert the Classic text is queued as written, as on main. - The Primitive fill only touches an output entry whose class_type matches the graph node at that id. - TESTING.md notes the host's harmless "Invalid widget" warning per Run.
627 lines
12 KiB
JSON
627 lines
12 KiB
JSON
{
|
|
"admin.js": {
|
|
"lines": 32,
|
|
"branches": 61,
|
|
"functions": 27,
|
|
"statements": 32
|
|
},
|
|
"api-client.js": {
|
|
"lines": 98,
|
|
"branches": 96,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"cache-ownership.js": {
|
|
"lines": 94,
|
|
"branches": 89,
|
|
"functions": 98,
|
|
"statements": 94
|
|
},
|
|
"classic-node.js": {
|
|
"lines": 98,
|
|
"branches": 79,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"comfy-metadata.js": {
|
|
"lines": 97,
|
|
"branches": 92,
|
|
"functions": 98,
|
|
"statements": 97
|
|
},
|
|
"data-actions.js": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"focused-node.js": {
|
|
"lines": 97,
|
|
"branches": 87,
|
|
"functions": 90,
|
|
"statements": 97
|
|
},
|
|
"gallery-settings.js": {
|
|
"lines": 98,
|
|
"branches": 94,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"gallery.js": {
|
|
"lines": 45,
|
|
"branches": 66,
|
|
"functions": 48,
|
|
"statements": 45
|
|
},
|
|
"html-escape.js": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"image-helpers.js": {
|
|
"lines": 96,
|
|
"branches": 91,
|
|
"functions": 98,
|
|
"statements": 96
|
|
},
|
|
"list-state.js": {
|
|
"lines": 98,
|
|
"branches": 92,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"metadata-autocomplete.js": {
|
|
"lines": 98,
|
|
"branches": 82,
|
|
"functions": 85,
|
|
"statements": 98
|
|
},
|
|
"png-metadata.js": {
|
|
"lines": 98,
|
|
"branches": 96,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"prompt-bridge-adapter.js": {
|
|
"lines": 98,
|
|
"branches": 93,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"prompt-bridge-host.js": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"prompt-library.js": {
|
|
"lines": 98,
|
|
"branches": 94,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"prompt-list-sort.js": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"scan-progress.js": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"shared/toolkit/core.js": {
|
|
"lines": 98,
|
|
"branches": 96,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"shared/toolkit/prompt-bridge.js": {
|
|
"lines": 98,
|
|
"branches": 94,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"shared/toolkit/suggestions.js": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"sse-stream.js": {
|
|
"lines": 98,
|
|
"branches": 90,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"tag-autocomplete.js": {
|
|
"lines": 98,
|
|
"branches": 94,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"tags-page.js": {
|
|
"lines": 57,
|
|
"branches": 48,
|
|
"functions": 56,
|
|
"statements": 57
|
|
},
|
|
"text-links.js": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"theme-bridge.js": {
|
|
"lines": 90,
|
|
"branches": 53,
|
|
"functions": 98,
|
|
"statements": 90
|
|
},
|
|
"view-router.js": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/activity-job-view.mjs": {
|
|
"lines": 97,
|
|
"branches": 87,
|
|
"functions": 98,
|
|
"statements": 97
|
|
},
|
|
"workspace/activity-kinds.mjs": {
|
|
"lines": 98,
|
|
"branches": 95,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/activity-scan.mjs": {
|
|
"lines": 96,
|
|
"branches": 87,
|
|
"functions": 98,
|
|
"statements": 96
|
|
},
|
|
"workspace/activity-store.mjs": {
|
|
"lines": 98,
|
|
"branches": 96,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/activity.mjs": {
|
|
"lines": 96,
|
|
"branches": 91,
|
|
"functions": 98,
|
|
"statements": 96
|
|
},
|
|
"workspace/file-inspector.mjs": {
|
|
"lines": 96,
|
|
"branches": 93,
|
|
"functions": 93,
|
|
"statements": 96
|
|
},
|
|
"workspace/heading.mjs": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/history-media.mjs": {
|
|
"lines": 98,
|
|
"branches": 86,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/history-state.mjs": {
|
|
"lines": 97,
|
|
"branches": 91,
|
|
"functions": 98,
|
|
"statements": 97
|
|
},
|
|
"workspace/history.mjs": {
|
|
"lines": 97,
|
|
"branches": 87,
|
|
"functions": 98,
|
|
"statements": 97
|
|
},
|
|
"workspace/icons.mjs": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/image-card.mjs": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/image-layout.mjs": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/image-tagging-state.mjs": {
|
|
"lines": 98,
|
|
"branches": 94,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/image-tagging.mjs": {
|
|
"lines": 97,
|
|
"branches": 92,
|
|
"functions": 88,
|
|
"statements": 97
|
|
},
|
|
"workspace/images-category.mjs": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/images-export.mjs": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/images-favorites.mjs": {
|
|
"lines": 98,
|
|
"branches": 94,
|
|
"functions": 85,
|
|
"statements": 98
|
|
},
|
|
"workspace/images-selection.mjs": {
|
|
"lines": 98,
|
|
"branches": 93,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/images-state.mjs": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/images-tagging-bulk.mjs": {
|
|
"lines": 98,
|
|
"branches": 93,
|
|
"functions": 86,
|
|
"statements": 98
|
|
},
|
|
"workspace/images-tagging-review.mjs": {
|
|
"lines": 98,
|
|
"branches": 93,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/images-tagging.mjs": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/images.mjs": {
|
|
"lines": 97,
|
|
"branches": 89,
|
|
"functions": 98,
|
|
"statements": 97
|
|
},
|
|
"workspace/index.mjs": {
|
|
"lines": 98,
|
|
"branches": 97,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/inspect.mjs": {
|
|
"lines": 98,
|
|
"branches": 92,
|
|
"functions": 93,
|
|
"statements": 98
|
|
},
|
|
"workspace/inspection-state.mjs": {
|
|
"lines": 98,
|
|
"branches": 94,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/library-editor-state.mjs": {
|
|
"lines": 96,
|
|
"branches": 92,
|
|
"functions": 98,
|
|
"statements": 96
|
|
},
|
|
"workspace/library-editor.mjs": {
|
|
"lines": 98,
|
|
"branches": 93,
|
|
"functions": 92,
|
|
"statements": 98
|
|
},
|
|
"workspace/library-layout.mjs": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/library-location.mjs": {
|
|
"lines": 94,
|
|
"branches": 91,
|
|
"functions": 93,
|
|
"statements": 94
|
|
},
|
|
"workspace/library-state.mjs": {
|
|
"lines": 98,
|
|
"branches": 95,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/library.mjs": {
|
|
"lines": 96,
|
|
"branches": 85,
|
|
"functions": 96,
|
|
"statements": 96
|
|
},
|
|
"workspace/local-inspection.mjs": {
|
|
"lines": 98,
|
|
"branches": 91,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/local-parameters.mjs": {
|
|
"lines": 98,
|
|
"branches": 94,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/local-projection.mjs": {
|
|
"lines": 97,
|
|
"branches": 96,
|
|
"functions": 98,
|
|
"statements": 97
|
|
},
|
|
"workspace/local-resolver-stages.mjs": {
|
|
"lines": 95,
|
|
"branches": 93,
|
|
"functions": 98,
|
|
"statements": 95
|
|
},
|
|
"workspace/local-resolver-support.mjs": {
|
|
"lines": 96,
|
|
"branches": 81,
|
|
"functions": 98,
|
|
"statements": 96
|
|
},
|
|
"workspace/local-resolver.mjs": {
|
|
"lines": 96,
|
|
"branches": 86,
|
|
"functions": 98,
|
|
"statements": 96
|
|
},
|
|
"workspace/local-semantics.mjs": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/local-session.mjs": {
|
|
"lines": 98,
|
|
"branches": 92,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/local-video.mjs": {
|
|
"lines": 98,
|
|
"branches": 94,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/maintenance-review.mjs": {
|
|
"lines": 94,
|
|
"branches": 86,
|
|
"functions": 90,
|
|
"statements": 94
|
|
},
|
|
"workspace/media-viewer.mjs": {
|
|
"lines": 98,
|
|
"branches": 93,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/plural.mjs": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/preferences.mjs": {
|
|
"lines": 98,
|
|
"branches": 96,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/prompt-blocks.mjs": {
|
|
"lines": 98,
|
|
"branches": 95,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/prompt-inspector.mjs": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/prompt-sender.mjs": {
|
|
"lines": 98,
|
|
"branches": 91,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/py-json.mjs": {
|
|
"lines": 97,
|
|
"branches": 92,
|
|
"functions": 98,
|
|
"statements": 97
|
|
},
|
|
"workspace/recorded-run.mjs": {
|
|
"lines": 95,
|
|
"branches": 83,
|
|
"functions": 80,
|
|
"statements": 95
|
|
},
|
|
"workspace/review-state.mjs": {
|
|
"lines": 96,
|
|
"branches": 84,
|
|
"functions": 98,
|
|
"statements": 96
|
|
},
|
|
"workspace/review.mjs": {
|
|
"lines": 98,
|
|
"branches": 89,
|
|
"functions": 93,
|
|
"statements": 98
|
|
},
|
|
"workspace/saved-views.mjs": {
|
|
"lines": 98,
|
|
"branches": 95,
|
|
"functions": 95,
|
|
"statements": 98
|
|
},
|
|
"workspace/state.mjs": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/system-appearance.mjs": {
|
|
"lines": 98,
|
|
"branches": 93,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/system-backups.mjs": {
|
|
"lines": 95,
|
|
"branches": 88,
|
|
"functions": 94,
|
|
"statements": 95
|
|
},
|
|
"workspace/system-controls.mjs": {
|
|
"lines": 98,
|
|
"branches": 89,
|
|
"functions": 89,
|
|
"statements": 98
|
|
},
|
|
"workspace/system-integrations.mjs": {
|
|
"lines": 96,
|
|
"branches": 88,
|
|
"functions": 91,
|
|
"statements": 96
|
|
},
|
|
"workspace/system-maintenance.mjs": {
|
|
"lines": 93,
|
|
"branches": 80,
|
|
"functions": 92,
|
|
"statements": 93
|
|
},
|
|
"workspace/system-overview.mjs": {
|
|
"lines": 96,
|
|
"branches": 92,
|
|
"functions": 98,
|
|
"statements": 96
|
|
},
|
|
"workspace/system-sources.mjs": {
|
|
"lines": 98,
|
|
"branches": 88,
|
|
"functions": 95,
|
|
"statements": 98
|
|
},
|
|
"workspace/system-state.mjs": {
|
|
"lines": 98,
|
|
"branches": 94,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/system-thumbnails.mjs": {
|
|
"lines": 98,
|
|
"branches": 95,
|
|
"functions": 83,
|
|
"statements": 98
|
|
},
|
|
"workspace/system.mjs": {
|
|
"lines": 98,
|
|
"branches": 92,
|
|
"functions": 86,
|
|
"statements": 98
|
|
},
|
|
"workspace/theme.mjs": {
|
|
"lines": 98,
|
|
"branches": 93,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/thumbnail-review.mjs": {
|
|
"lines": 98,
|
|
"branches": 93,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/thumbnail-support.mjs": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/toast.mjs": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/toolbar.mjs": {
|
|
"lines": 96,
|
|
"branches": 96,
|
|
"functions": 98,
|
|
"statements": 96
|
|
},
|
|
"workspace/topbar.mjs": {
|
|
"lines": 98,
|
|
"branches": 98,
|
|
"functions": 83,
|
|
"statements": 98
|
|
},
|
|
"workspace/viewer-state.mjs": {
|
|
"lines": 98,
|
|
"branches": 95,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/vocabulary-dialog.mjs": {
|
|
"lines": 98,
|
|
"branches": 88,
|
|
"functions": 95,
|
|
"statements": 98
|
|
},
|
|
"workspace/vocabulary-state.mjs": {
|
|
"lines": 98,
|
|
"branches": 96,
|
|
"functions": 98,
|
|
"statements": 98
|
|
},
|
|
"workspace/vocabulary.mjs": {
|
|
"lines": 98,
|
|
"branches": 91,
|
|
"functions": 93,
|
|
"statements": 98
|
|
},
|
|
"workspace/workspace-dialogs.mjs": {
|
|
"lines": 97,
|
|
"branches": 95,
|
|
"functions": 98,
|
|
"statements": 97
|
|
}
|
|
}
|