- Add paste handler (Ctrl+V) in Metadata tab for workflow JSON, images, and Civitai image URLs/HTML
- Resolve authentic .safetensors filenames and local ComfyUI model paths via Civitai modelVersionId
- Normalize prompt <lora:...> tags to authentic filenames and enrich transfer/loaded chip labels
- Replace robotic AI phrasing and defensive disclaimers in inspector shell, clear button, and copy button tooltips.
- Remove duplicate instructions and streamline prompt and model transfer help tooltips.
- Clarify prompt role hints and incompatible model match descriptions.
- Enable multi-selection on model chips with click, Ctrl+click (toggle/add), Shift+click (range from anchor), and Ctrl+Shift+click.
- Add keyboard shortcuts: Ctrl+C to copy selected model tokens to clipboard with feedback, Ctrl+A to select all visible chips, and Escape to clear selection.
- Add a subtle green outline and background highlight for selected chips (.is-selected).
- Add a 'Selected' mode button to the copy toolbar that dynamically appears when chips are selected and syncs token count and preview text.
- Stop click event propagation on chips and clean up prior selection instances during tab switching and re-rendering to prevent ghost listeners and bubbling conflicts between tabs.
- Add comprehensive Node test suite covering selection operations, keyboard shortcuts, DOM rendering, and tab transitions.
Replace inline node_id/widget_index DOM key construction with the
centralized getMissingModelDomKey helper across search panel and
missing browser methods. This keeps search results and button IDs
stable when the same model appears in multiple workflows/widgets.
Also adds a regression test verifying that search progress stays
with its model when switching between shared widgets.
Add a success color token and replace scattered textContent assignments
with setElementStatusText / setStatusMode so local DB, base models,
HF index, and cache-clearing statuses consistently use is-pending,
is-valid, and is-invalid classes.
In missing_browser_methods.js, apply the saved split before the first paint when
the docked panel is narrower than the last layout, instead of waiting one
animation frame. Also tighten fast-width estimation by trying
getBoundingClientRect().width when clientWidth/offsetWidth are unavailable, and
measure from the observed resize host rather than the browser element itself.