Commit Graph
302 Commits
Author SHA1 Message Date
Dariusz L 4f91accbab feat: improve model scan cache override, combo UX, and filename handling
- Add force_rescan end-to-end so callers can bypass the short-lived local model scan cache: backend entry in __init__.py and core/resolver.py, lifecycle_graph_methods forwards it through the workflow analysis body, and download_target_methods passes ?force=1 from the refresh flow.
- Rewrite combo dropdown lifecycle in missing_browser_methods with show/hide helpers, pointer-capture tracking, and a capture-phase outside-click listener so the list stays open during drag/hover and closes reliably otherwise.
- Animate refresh buttons (CSS keyframes + JS Web Animations) with reduced-motion fallback.
- Encode selected model path into the selected-bar data-model attribute and wire contextmenu so users can open the containing folder from the selection.
- Fix XSS risk in selected-bar label by escaping label HTML; change queue/selected Remove buttons to danger style.
- Increase max missing-browser model column width clamp from 430 to 820 and stop truncating missing-filename display; show full filename with tooltip instead.
- Update huggingface-author-index.json metadata timestamp/counts (1 file changed, 1 line).
2026-06-19 03:57:40 +02:00
Dariusz L 5f1e814751 feat: support subgraph-aware node location and widget model context
- workflow_analyzer: refactor widget category hint resolution and add widget name candidate extraction across widgets, inputs, proxyWidgets, and localized names; expose new helpers get_widget_name_candidates/get_widget_name_hint
- workflow_analyzer: add get_model_widget_category_hint and get_effective_model_category_hint to unify category fallback logic
- workflow_analyzer: include widget_name on model refs emitted by get_node_model_info
- workflow_analyzer: introduce promoted-widget context resolution (_build_promoted_widget_contexts, _find_promoted_widget_targets, etc.) and wire it into analyze_workflow_models so instance widgets and promoted widget locators are tracked with subgraph scope
- lifecycle_graph_methods: refactor locateNodeInGraph into subgraph-aware resolver using findLocateTarget/getGraphNodeById/findSubgraphById/findNodeInGraphTree; support targeting nodes inside specific subgraphs with proper canvas focus and notifications
- missing_browser_methods: use unified getMissingLocateTarget for locate button/display fields; pass subgraphId and isTopLevel to locateNodeInGraph; add promoted-widget-aware tooltips and canLocate handling
2026-06-19 01:39:15 +02:00
Dariusz L 6de0668c4b feat: add sams and ultralytics model categories
Add support for Two new model categories with full frontend and backend
integration:

- sams: maps sam, sam_model, sam_models → sams category
- ultralytics: maps ultralytics, ultralytics_bbox, ultralytics_segm, yolo → ultralytics category

Covers CATEGORY_MAP, settings templates/aliases, workflow_analyzer node hints,
download target resolution (JS), and folder detection.
2026-06-19 00:44:36 +02:00
Dariusz L 32d437df50 Expand model category and node type recognition
Add support for additional ComfyUI model types including diffusers, gligen,
style models (latent/regular upscale), audio encoders, background removal,
frame interpolation, geometry estimation, detection, model patches/photomaker,
and optical flow models.

Backend changes:
- Extend CATEGORY_MAP, URN_TYPE_MAP, and node type hints in workflow analyzer
  to cover dozens of new loader node types and singular/plural aliases.
- Add MODEL_OUTPUT_TYPE_TO_CATEGORY and get_node_output_category_hint() so
  loader output types can contribute category hints.
- Make widget name matching normalize underscores, hyphens, and spaces.
- Improve directory discovery to enumerate folders from folder_paths while
  filtering unsupported categories.
- Include folders as model entries in directory scanning (with a diffusers
  guard requiring model_index.json).

Frontend changes:
- Update download target category maps, display names, token name maps, and
  per-node widget index lists to match the expanded backend coverage.
2026-06-19 00:35:06 +02:00
Dariusz L 47d286620f feat: add configurable download path system with templates and mappings
Implements a new download path configuration UI and backend logic:
- Add Subfolder fill mode: Suggested (existing), Template, Manual
- Add Base Model Path Mappings to override detected base-model folders
- Add Default Root settings to control root directory per category
- Add Detect From Existing Folders button that infers templates and mappings from local model folders
- Add backend /model_resolver/root-directories and /model_resolver/path-template-suggestions routes
- Refactor resolver settings into core/settings.py for shared frontend/backend use
- Extract path template inference logic into core/path_templates.py
- Update download panel, context menu, and loading flow to use new path settings
2026-06-19 00:09:58 +02:00
Dariusz L 9399f52033 Preserve local matches and download target selections across workflow changes 2026-06-18 02:46:33 +02:00
Dariusz L c9dd0e47ac feat: improve model resolution for extensionless workflow values and add new node type support
- Add model_title match type for CivArchive and CivitAI sources, resolving
  extensionless workflow values by title similarity (threshold 82.0)
- Recognize new node types and widget indices across model categories
  (GGUF, CLIP, ControlNet, StyleModel, Hypernetwork, etc.)
- Scan known model combo widget indices even when the stored value has no
  file extension, treating non-placeholder strings as model references
- Strip known model extensions during workflow URL lookup so filename stems
  match regardless of extension
- Update HuggingFace author index metadata
2026-06-18 02:19:14 +02:00
Dariusz L 2f14026abc Fix: update badges, add GGUF model category mapping, rename panel title
- README.md: updated badge labelColor from 111827 to 1a1a1a for consistency
- core/workflow_analyzer.py: add LoaderGGUF and gguf_name mapping to diffusion_models
- web/resolver/model_resolver.js: rename panel title from 'Model Resolver' to 'Resolver'
2026-06-18 01:09:54 +02:00
Dariusz L 4943be89a9 Add responsive footer star link and update badge/metadata 2026-06-17 02:35:10 +02:00
Dariusz L a4d5bd4c5c feat(logging): add frontend/backend log controls, unify console logging
- Add frontend_logs_enabled/frontend_log_level and backend_logs_enabled/backend_log_level
  toggles and selectors in the Options panel (web/resolver/views/options_methods.js)
- Sync frontend logging settings from localStorage / server settings into the
  frontend logger on startup and settings load (download_target_methods.js)
- Apply backend logging settings from server settings in the Python backend
  (__init__.py), loading control state on startup and after saves
- Make frontend Logger resilient to stored configs that lack an 'enabled' flag
  and to legacy/invalid moduleSettings levels (logger.js)
- Guard default module logger level initialization against undefined settings
  (log_funcs.js)
- Replace scattered console.log/usages with module-level log.debug calls across
  resolve_download_methods.js, model_resolver.js, and workflow_state_methods.js
- Bump log system package version to 1.5.6 (core + web)
2026-06-17 01:51:29 +02:00
Dariusz L fa2002fc2a Add per-item Apply button to queued resolution selected bar
Refactor queue_methods.js to split applyPendingResolutions into
applyQueuedByKey (per-item) and applyPendingResolutionList (shared
implementation). Add an Apply button alongside the Remove button in
the selected resolution bar, wired to applyQueuedByKey with loading
state. Update CSS for .mr-selected-actions layout and .mr-btn-primary
styling in the detail pane.
2026-06-17 01:17:25 +02:00
Dariusz L 40b1108bd2 feat: expand multi-ref pending resolutions and fix race conditions in loaded/missing tabs
- Add getResolutionQueueKey, getResolutionNodeRefs, and expandPendingResolutionsForApply helpers in queue_methods.js so each queued resolution can carry multiple node refs and be fully resolved before apply.
- Store node_refs, is_lora_v2, original_lora_name, and nested_key on pending resolutions; expand them during apply, with a guard for empty selections.
- Introduce optimistic analysis updates (applyOptimisticAnalysisData + getOptimisticAnalysisDataAfterApply) so the missing/loaded views refresh immediately after apply, then refresh in the background via refreshAnalysisInBackground.
- Update notification messaging to reflect expanded reference counts.
- Fix race conditions in lifecycle_graph_methods.js and tabs_loaded_methods.js by assigning load tokens only after the async workflow-load path begins, so early returns no longer clobber the token and stale panels are suppressed.
- Minor README badge styling fixes: add labelColor=111827 and update the Python badge to an SVG-based asset.
2026-06-17 01:06:51 +02:00
Dariusz L d4d1715f8a fix(web): prevent stale workflow refreshes and improve signature detection
- Guard workflow-tab-click handler with setTimeout and generation ownership check to avoid stale state updates
- Add generation-based refresh cancellation so outdated retry attempts are discarded
- Expand workflow signature to detect more model reference types, normalize widget values, and include subgraph definitions
2026-06-17 00:29:59 +02:00
Dariusz L 4289e7eb17 Merge branch 'main' of https://github.com/Azornes/Comfyui-Model-Resolver 2026-06-16 23:41:22 +02:00
Dariusz L 3dda91a39b Improve model path resolution with scanner-based exact-case matching
Pass available_models through to the workflow analyzer, enabling
case-sensitive relative path lookups against scanned model data.
Normalize paths for comparison while preserving letter casing.
Skip irrelevant categories (custom_nodes, configs) upfront.
Fall back gracefully when no scanner data is available.
Also ignore the tests/ directory in .gitignore.
2026-06-16 23:39:16 +02:00
GitHub Action 7d61b39713 create clone count badge 2026-06-16 18:48:23 +00:00
Dariusz L 13214e5005 Delete CLONE.md 2026-06-16 20:47:53 +02:00
Dariusz L 80049410aa Add release links to issue templates 2026-06-16 20:46:18 +02:00
Dariusz L 92ed1d56c3 Merge branch 'main' of https://github.com/Azornes/Comfyui-Model-Resolver 2026-06-16 20:28:58 +02:00
Dariusz L bfb0d3b836 Update clone.yml 2026-06-16 20:28:38 +02:00
GitHub Action f1d81f1de8 create clone count badge 2026-06-16 18:19:00 +00:00
Dariusz L 131060764f Delete CLONE.md 2026-06-16 20:18:36 +02:00
Dariusz L b3569c8bf2 Merge branch 'main' of https://github.com/Azornes/Comfyui-Model-Resolver 2026-06-16 20:17:50 +02:00
GitHub Action b76e86ebe8 create clone count badge 2026-06-16 18:17:10 +00:00
Dariusz L 92270eef2a Delete CLONE.md 2026-06-16 20:16:41 +02:00
Dariusz L 7e418ebf5e Update clone.yml 2026-06-16 20:16:08 +02:00
GitHub Action 350b446875 create clone count badge 2026-06-16 18:13:38 +00:00
Dariusz L 83c49aaf81 Delete CLONE.md 2026-06-16 20:13:03 +02:00
Dariusz L 851a38b9b1 Merge branch 'main' of https://github.com/Azornes/Comfyui-Model-Resolver 2026-06-16 20:10:23 +02:00
Dariusz L 4889703c1c Update clone.yml 2026-06-16 20:06:06 +02:00
Dariusz L 23e8526f9f Update README.md 2026-06-16 20:06:00 +02:00
GitHub Action 902f6e1e63 create clone count badge 2026-06-16 17:55:29 +00:00
Dariusz L f52ba153ae Update clone.yml 2026-06-16 19:54:29 +02:00
Dariusz L 90e719f113 Add GitHub issue templates, FUNDING.yml, and clone count workflow 2026-06-16 19:40:37 +02:00
Dariusz L d533cda5e8 fix: preserve model_url fallback and add search download button icons with tooltips 2026-06-16 19:19:45 +02:00
Dariusz L 4c1424f8bf Merge branch 'main' of https://github.com/Azornes/Comfyui-Model-Resolver 2026-06-16 19:17:34 +02:00
Dariusz L 3c34fa330a Remove funding model placeholders from FUNDING.yml 2026-06-16 17:58:07 +02:00
Dariusz L 881e565df9 Fix funding model format for GitHub 2026-06-16 17:30:23 +02:00
Dariusz L 55948fd996 Update GitHub Sponsors username in FUNDING.yml 2026-06-16 17:10:06 +02:00
Dariusz L 7e6e08a4e7 refactor: simplify queue panel layout and unify tab styling with shared tab components 2026-06-12 18:42:26 +02:00
Dariusz L 406b6b2624 feat: add Downloads tab to queue panel and scope active downloads to current workflow 2026-06-12 18:21:24 +02:00
Dariusz L 38874f5d99 feat: centralize download progress UI state and re-render on view reconnect 2026-06-12 18:01:07 +02:00
Dariusz L 03c274a88d feat: extract token family prefixes as additional download candidates 2026-06-12 17:44:14 +02:00
Dariusz L f6c2d924a5 feat: show base directory only when subfolder values collide 2026-06-12 17:35:53 +02:00
Dariusz L 1cd9668db2 feat: track base_directory across download and subfolder flows; normalize clip to text_encoders 2026-06-12 17:23:59 +02:00
Dariusz L cb01596cf8 Add right-click folder context menu on category and subfolder inputs
Introduces helper methods to attach folder-open context menus to category/subfolder dropdowns:
- getDownloadTargetBaseDirectory / joinLocalPath / getDownloadTargetFolderContext
- setDownloadFolderContextTarget / syncDownloadTargetFolderContext

Also calls these methods after auto-fills, suggestions, and applying download target so the UI gets live right-click-open-folder support.
2026-06-12 17:08:11 +02:00
Dariusz L 91a998bea2 feat: generalize download subfolder suggestions for all model types
- Replace CivitAI-specific subfolder suggestion with broadened logic that derives candidates from model metadata, filename patterns, and existing folder structure
- Add getSuggestedModelSubfolderCandidates / getSuggestedExistingSubfolderByModelName helpers
- Normalize download category consistently via normalize_download_category in backend and frontend
- Backend now walks actual ComfyUI folder paths dynamically instead of hardcoded category mapping
- Rename frontend methods to applySuggestedDownloadSubfolder / forceSuggestedDownloadSubfolder
- Update Auto-fill subfolder tooltip to reflect expanded scope across all model categories
2026-06-12 17:02:28 +02:00
Dariusz L 7a1473b58e feat: normalize download category strings across backend and frontend
Add a shared normalize_download_category helper (with CATEGORY_MAP) in Python
and use it in get_download_directory to prefer redirected paths and to rank
diffusion_models above legacy unet folders. Mirror the same normalization in
the JS downloadTargetMethods, applying it consistently when coalescing
downloadDirectories, building dropdown keys, and reading/writing selections.
Also fix display labels to use 'diffusion_models' instead of 'unet'.
2026-06-12 16:42:58 +02:00
Dariusz L bbfd50a075 feat: expose download folder context through status indicators and notifications
Propagate the resolved download directory and file path from the backend
download flow into frontend progress UI: add \path\ and \directory\ fields
to download progress state, render right-clickable context menu entries on
progress bars and status messages, and allow opening the download folder
directly from completion or error notifications. Also update the HuggingFace
author index.
2026-06-12 16:32:48 +02:00
Dariusz L 98c4b10e90 chore: update HuggingFace author index and tighten model details CSS 2026-06-08 17:43:27 +02:00