Bug fixes:
- Fix menu button not appearing: Use app.registerExtension() for proper
ComfyUI initialization timing. The button now appears in the top bar
next to the Manager button.
- Fix source_hint incorrectly saved as source_url: Pattern-matched hints
like "Lightricks/LTX-Video" are not valid URLs and should not be used
for update checks.
- Fix deprecated tempfile.mktemp(): Use secure mkstemp() instead to avoid
race conditions.
- Add os import for file descriptor handling in update_scheduler.py
Test improvements:
- Update Playwright tests to hover over UI to reveal ComfyUI menu
- All 26 tests now passing (17 unit + 9 UI)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fixed filter that was skipping models with sources (should still check them)
- Now marks all processed models with last_checked timestamp
- Fixed JS status display to properly detect checked vs unchecked models
- Models without valid URLs still get marked as checked (skipped)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Merged "Lookup Sources" and "Check Updates" into one button
- Now processes models concurrently (5 at a time by default)
- Single click: hashes files, finds sources, checks for updates
- 10 models processed in ~2 seconds vs sequential approach
Simpler UX with faster performance through asyncio.gather().
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When CivitAI hash lookup fails, now tries:
1. Pattern matching for known model families (Gemma, CLIP, SAM, YOLO, etc.)
2. HuggingFace API search by filename
This identifies sources for models from HuggingFace, GitHub, and other
repositories that aren't on CivitAI.
Also fixed lookup getting stuck on hint results by properly filtering
out already-checked models regardless of source_type.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Models marked with source_type="not_found" were being
re-selected for lookup since they still had no source_url.
Now filtering excludes these already-checked models.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added lookup_civitai_by_hash() to query CivitAI API by file hash
- Modified lookup-sources endpoint to process one model at a time
- UI now shows real-time progress with found/not-found counts
- Added Stop button to cancel ongoing lookup
- Computes SHA256 hashes for models that don't have them
This allows identifying models that were downloaded outside of
tracked sources and finding their CivitAI pages automatically.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
A custom node extension for ComfyUI that provides:
- Model version tracking for HuggingFace and CivitAI
- Automatic model updates with configurable scheduling
- Multi-GPU synchronization with VRAM-based filtering
- Metadata management with hash verification
Features:
- SQLite database for model metadata storage
- REST API endpoints for all operations
- Web UI panel integrated into ComfyUI menu
- Background scheduler for automatic update checks
- rsync-based sync to remote machines
- VRAM estimation for model filtering
Tests:
- 17 unit tests covering all library modules
- Playwright integration tests for UI verification
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>