Detect ComfyUI-AIR URNs in workflows, resolve them to expected filenames via the CivitAI API, and prefer those filenames for matching.
Key changes:
- core/workflow_analyzer.py: added URN_REGEX, URN_TYPE_MAP, is_model_filename() now recognizes URNs, and get_node_model_info() emits structured URN info (is_urn, urn fields, category, exists=False).
- core/sources/civitai.py: added resolve_urn(model_id, version_id) with caching, API fetch of model/version and primary file, and result shaping (model_name, version_name, expected_filename, files).
- core/linker.py: import resolve_urn and call it for missing URNs, attach civitai_info/expected_filename, and prefer expected_filename as matching target; cleaned up deduplication logic.
- web/linker.js: UI shows URN original plus resolved CivitAI model/version labels where available.
- TODO.md: added plan/notes for URN detection and next steps.
This improves detection and fuzzy matching for models referenced by URNs so missing model resolution is more accurate. Further matcher and updater enhancements remain TODOs.
- Add CSS variables and global styles with custom scrollbar
- Implement two-column layout (Local Matches / Download)
- Add confidence badges with color coding
- Smart filename truncation with hover tooltips
- Consistent button styling with icons
- Sticky footer with backdrop blur
- Status alert containers for errors/success
- Best match highlighting for 95%+ confidence
- Hide Auto-Link button when no 100% matches
- Fix race condition in auto-resolve flow
- Wider dialog (1100px) for full filenames
- Add Download All Missing button to download models without local matches
- Button toggles to Cancel All (N) during active downloads
- Fix notification showing null for info type messages
- Preserve download state when dialog is closed and reopened
- Show downloads in progress message instead of all available during downloads
Use ComfyButton/ComfyButtonGroup component system with dynamic imports to properly integrate with the new ComfyUI menu. Falls back to floating button for legacy versions.
Resolves ValueError: too many values to unpack when folder_paths returns 3-tuples.
- Handles both 2-tuple and 3-tuple formats from folder_paths
- Normalizes extensions to set with proper type handling
- Adds better error handling for unexpected formats
- Credit: @gontz