Commit Graph
399 Commits
Author SHA1 Message Date
Dariusz L e667c1cf93 Resolve upstream prompt text from string nodes and preserve linked prompts in metadata view 2026-10-27 22:03:57 +01:00
Dariusz L 0094c4ae84 Prevent non-model files from appearing as fuzzy match candidates
- Filter non-model files in scanner when folder_paths category extensions are empty
- Skip candidates with known non-model extensions in find_matches
- Add .engine, .patch, and .tflite to MODEL_EXTENSIONS
- Add unit tests for empty extension directory scanning and matcher candidate filtering
2026-10-27 21:11:11 +01:00
Dariusz L f7dfe3d8e5 Enhance download resilience with HTTP 416 recovery, stall detection, and network guard
- Recover completed .part files on HTTP 416 without deleting and redownloading
- Add stream stall detection and automatic reconnect for interrupted socket reads
- Implement persistent download state store and pause/resume lifecycle controls
- Add RateLimitCoordinator and ConnectivityGuard circuit breaker for requests
- Support proxy_url configuration and validate aria2 proxy settings
- Add unit tests for 416 recovery, stall reconnect, state store, and network guard
2026-10-26 19:26:50 +01:00
Dariusz L d9286b53d5 Retain interrupted download progress cards and add in-place retry action
- Keep failed or interrupted downloads in active downloads queue instead of dismissing immediately
- Present interrupted state with error tooltip, distinct status chip, and progress percentage
- Add in-place Retry download play action that resumes downloading from existing partial files
- Support dismissing interrupted downloads via cancel button
- Update CSS styling and unit tests for download action handlers and progress states
2026-10-26 16:42:56 +01:00
Dariusz L c62edd755c Improve aria2 and Python download robustness and retry handling
- Drain aria2 daemon stderr in a background thread to prevent Windows pipe buffer saturation and deadlock
- Promote critical disk write and permission errors from aria2 stderr to warnings
- Automatically refresh expired signed CDN URLs and resume downloads via aria2 continue=true
- Shield addUri against mid-registration cancellations to prevent orphaned downloads
- Retry Range requests directly on target URL when redirects drop the Range header in Python downloads
- Add auto-reconnect stream loop on transient socket disruptions with seamless partial-hash resumption
- Increase default download chunk size to 4MB for improved I/O throughput
- Parse HTTP 429 Retry-After headers for informative rate limit reporting
- Add unit test suite covering new aria2 and Python downloader resilience behaviors
2026-10-26 15:33:13 +01:00
Dariusz L 59bc928f8e Verify aria2 download SHA256 in background to avoid blocking at 100%
- Omit blocking checksum and check-integrity options from aria2 transfers to prevent long pauses at 100% on large models
- Run SHA-256 integrity verification asynchronously in a background thread via Python hashlib
- Update download progress and metadata sidecars upon background verification completion or mismatch
- Add unit tests for aria2 option omission and background verification
2026-10-26 14:27:44 +01:00
Dariusz L 55197621eb Support Smart Model Loader Nova [SML2] nodes (#6)
Add custom node adapter for ComfyUI_SmartModelLoader_Nova suite:
- Support 'Smart Model Loader [SML2]', 'CLIP Loader [SML2]', and 'LoRA Stack [SML2]'
- Parse and serialize canonical JSON configuration widget
- Extract diffusion models, VAE, CLIP text encoders, and LoRAs with strengths
- Enable model resolution by hash using per-resource SHA256 stored in the node
- Update model paths and SHA256 checksums in canonical JSON format during relinking
- Add unit and end-to-end integration tests
2026-10-25 18:55:24 +01:00
Dariusz L 3af7036551 Support resuming partial downloads and preserve temporary files on network errors 2026-10-25 18:05:29 +01:00
Dariusz L 794083b212 Support clipboard pasting in Metadata tab and resolve Civitai model filenames
- 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
2026-10-16 22:57:04 +02:00
Dariusz L 7705cfc688 Make metadata inspector sections collapsible and normalize spacing 2026-10-16 18:26:07 +02:00
Dariusz L 1cdee997d1 Add multi-selection and copying for model chips in Loaded Models and Metadata
- 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.
2026-10-16 15:54:46 +02:00
Dariusz L f5fbf5c542 Add searchable base model path mapping picker 2026-10-05 20:05:19 +02:00
Dariusz L 22f4cbcdee Add configurable download sound and improve cancellation retries 2026-10-05 19:49:23 +02:00
Dariusz L 53a97e8a5b Refresh metadata prompt previews when workflow text changes 2026-10-05 18:27:20 +02:00
Dariusz L b0b466cfc0 Add removable model search results and restore re-added links 2026-10-05 17:57:22 +02:00
Dariusz L a1935b89e4 Support linked models from Civitai image URLs with page fallback 2026-10-05 17:41:13 +02:00
Dariusz L 67b7e4a454 Add copy and resize controls to prompt previews 2026-10-05 16:11:05 +02:00
Dariusz L 3829f95960 Improve image metadata transfer guidance and prompt candidate ordering 2026-09-17 00:48:00 +02:00
Dariusz L 2d6394be5c Add image metadata prompt transfer and keep transfer nodes selectable 2026-09-17 00:05:43 +02:00
Dariusz L 4054be2a04 Prefer HuggingFace direct download URLs and preserve them through selection 2026-09-16 20:14:43 +02:00
Dariusz L dca6bc93fb Improve filename confidence and HuggingFace partial matching
Use order-insensitive token comparison in calculate_filename_confidence
so variant names with reordered tokens (e.g., int8_convrot vs convrot_int8)
score higher. Replace first-match partial matching in HuggingFace source with
best-match selection based on filename confidence, and surface confidence in
search results.
2026-09-16 19:55:09 +02:00
Dariusz L 9c9f2f5482 Show spinner while applying queued model 2026-09-14 15:59:44 +02:00
Dariusz L 5d6ac6c451 Show queue counts on toggle icon 2026-09-14 15:35:38 +02:00
Dariusz L ababf330bc Show metadata transfer apply progress 2026-09-14 15:24:52 +02:00
Dariusz L bbe9c5485e Prevent metadata transfer UI flicker 2026-09-14 01:42:01 +02:00
Dariusz L aa6c1fdc3d Add metadata transfer undo 2026-09-14 01:25:10 +02:00
Dariusz L 5b86cffe60 Improve metadata action button contrast 2026-09-14 00:58:13 +02:00
Dariusz L b5a2209854 Prevent model tooltip preview flicker 2026-09-14 00:42:48 +02:00
Dariusz L 346f93f1d6 Prevent workflow refresh flicker in model tabs 2026-09-14 00:25:07 +02:00
Dariusz L 1672460801 Refresh metadata targets with live workflow changes 2026-09-14 00:13:54 +02:00
Dariusz L 552ef683da Unify metadata workflow cache and category handling 2026-09-13 23:09:22 +02:00
Dariusz L 21245569c7 Fix transfer model actions for unselected nodes 2026-09-13 22:18:10 +02:00
Dariusz L d1812fa46f Add metadata workflow model transfer 2026-09-13 21:38:52 +02:00
Dariusz L 3a106e8d67 feat: add workflow metadata transfer preview 2026-09-13 16:10:58 +02:00
Dariusz L 18ef647c83 Extract Civitai metadata from image EXIF and improve subgraph widget resolution 2026-09-12 18:34:02 +02:00
Dariusz L 74e4b190a9 Add image metadata tab and backend workflow normalization 2026-09-12 16:50:40 +02:00
Dariusz L 50b157e72b Fix publish command invocation
Run node publishing directly through the Comfy CLI without the external environment wrapper, and update the workflow test to prevent regressions.
2026-09-12 13:58:11 +02:00
Dariusz L 62c04ab3ac fix(search): exclude CLIP and VAE from LoRA workflow fallback base model detection 2026-09-10 15:02:06 +02:00
Dariusz L cf5c73c2c8 Make batch source search sequential per source and independent across sources
Refactor searchMissingBatch to schedule each source independently via a
per-source promise chain (scheduleSource) instead of processing all targets
in a single serial loop. This keeps source ordering intact while allowing
different sources to advance in parallel across models.

Also update searchOnline to accept scheduleSource and emit a pending UI
state for queued searches, split pending/running source colors in CSS, and
add tests covering independent batch source progression plus error/cancel
survival.
2026-09-10 14:49:28 +02:00
Dariusz L 9f9b3da12c Use getMissingModelDomKey for search UI element IDs
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.
2026-09-10 14:30:33 +02:00
Dariusz L 9f537eaef0 Optimize CivitAI lookups by caching model data and skipping unnecessary version requests
Reuse model metadata across _find_civitai_file_in_model calls within a single search, avoid resolve_urn when modelVersions already contains usable file lists, and add tests for request-count behavior.
2026-09-10 02:24:24 +02:00
Dariusz L 63050819fe fix: match workflow hashes by model path instead of widget position 2026-09-10 02:12:36 +02:00
Dariusz L b93f63e68a fix: keep Apply button disabled during queued resolution and re-enable on failure 2026-09-10 01:16:31 +02:00
Dariusz L 248ccea2ec Save metadata on SHA256-mismatched downloads and verify reused hash behavior 2026-09-10 00:58:35 +02:00
Dariusz L 2d1bc22909 frontend: ignore stale local-match refresh responses after workflow switch 2026-09-10 00:51:19 +02:00
Dariusz L 27ce316c67 perf: optimize hash cache building with in-memory dir entries and thread pool 2026-09-08 18:43:51 +02:00
Dariusz L ea3b987d6a frontend: prefer workflow base model over incompatible archive metadata in auto mode 2026-08-25 04:36:37 +02:00
Dariusz L f358df46ae Treat upscale categories as Upscaler for auto base model resolution 2026-08-25 03:26:03 +02:00
Dariusz L c5371e7165 feat: prefer active workflow widgets over model metadata for base model detection 2026-08-25 03:21:42 +02:00
Dariusz L 1eb3af32be Ignore stale embedded model metadata when a node exposes an explicit model widget 2026-08-25 03:07:41 +02:00