- Add /ollama/models API route that proxies requests to Ollama
- Auto-fetch models when client is connected (no workflow execution needed)
- Update JavaScript to call ComfyUI API instead of Ollama directly
- Eliminates CORS browser restrictions
- Much better UX - models appear instantly on connection
- Add api.py with setup_api_routes() function
- Add tests for API module (31 tests passing)
- Update README with auto-fetch feature and technical details
- Remove ARCHITECTURE.md and TESTING.md (outdated/duplicate docs)
- Simplify README.md to focus on current 4-node architecture
- Update CHANGELOG.md to reflect v1.0.0 release
- Update web/README.md to match current implementation
- Remove legacy _OLLAMA_MODELS global from state.py
- Remove logs/ directory from repo, add to .gitignore
- All 29 tests still passing
- Removed all fetch() calls to Ollama API from JavaScript
- JavaScript cannot call Ollama due to CORS restrictions
- Models must be fetched by Python backend via workflow execution
- User must set refresh=true and execute workflow to fetch models
- Simplified JavaScript to only update dropdowns from execution results
- All 29 tests passing
- Moved console.log after import statements (ES6 modules requirement)
- Changed arrow function + bind to async function with self variable
- This fixes 'SyntaxError: missing ) after argument list'
- JavaScript should now load properly in ComfyUI
- All tests passing
- Added IS_CHANGED method to OllamaModelSelector
- Forces re-evaluation when refresh=true or cache changes
- Returns hash of cached models to detect changes
- Added console logs at top of JS file to verify it loads
- This should help ComfyUI know when to update the node
- All 12 tests passing
- Log when onExecuted is called
- Log all message keys and full message JSON
- Log models_json value and parsed models
- Log dropdown update result
- Warn if models_json is missing or models failed to parse
- This will help diagnose why dropdown isn't updating after execution
- Added checkAndFetchModels() helper that checks for existing connections
- Hook into onNodeCreated to check after node is added
- Hook into onConfigure to check when workflow is loaded
- Hook into onAdded to check when node added to graph
- This fixes issue where connections made during workflow load don't trigger events
- All 12 tests passing
- Added detailed console logging throughout connection flow
- Hook into onConnectInput as backup to onConnectionsChange
- Log all connection events (type, index, connected, link_info)
- Log widget states, endpoint values, and API responses
- This will help diagnose why dropdown isn't updating
- Changed default placeholder from empty string to '<connect client to fetch>'
- Enhanced updateModelDropdown with detailed logging
- Force widget type to 'combo' to ensure proper display
- Added multiple UI refresh calls (setDirtyCanvas, graph.change)
- Force widget size recalculation with computeSize and onResize
- All 29 tests passing
- OllamaModelSelector auto-fetches models on client connection
- Direct Ollama API call from JavaScript (fetch to /api/tags)
- Instant dropdown update without workflow execution
- Auto-updates downstream Load/Unload nodes
- All 29 tests passing
Changes:
- Changed OllamaModelSelector model input from STRING to COMBO
- Model dropdown now populates with cached models on node creation
- Updated JavaScript to work with native COMBO widgets
- Added graph.change() trigger for immediate UI updates
- Added CHANGELOG.md to track changes
The dropdown now:
1. Displays as a dropdown from the start (no STRING conversion)
2. Shows cached models if available
3. Updates when executed with refresh=true
4. Propagates to downstream Load/Unload nodes
Fixes issue where users had to execute the node before seeing
the dropdown appear. Now it's visible immediately upon connecting
the client node.
All 29 tests passing.
- Parse models_json input and convert model field to dropdown
- Automatically populate dropdown when connected to Refresh node
- Convert STRING input to COMBO widget dynamically
- Revert to text input when disconnected
- Hook into onConnectionsChange, onExecuted, and onConfigure
- Restore dropdown state when loading saved workflows
- Works for both OllamaLoadSelectedModel and OllamaUnloadSelectedModel
- All 29 tests passing
Features:
- Connect models_json from Refresh → Load/Unload
- Model field becomes dropdown with available models
- Auto-updates when Refresh node executes
- Manual text entry still available when not connected
- Cleaner UX than typing model names manually
- Add null check for inputEl before setting properties
- Prevents 'Cannot set properties of undefined' error
- Widget might not be fully initialized when onNodeCreated runs
- Fixes workflow loading error in ComfyUI
- Remove models_display STRING output (no longer needed)
- Create custom ComfyUI JavaScript extension (web/ollama_widgets.js)
- Widget displays models directly on OllamaRefreshModelList node
- Custom styling: dark theme, monospace font, scrollable
- Add WEB_DIRECTORY to __init__.py for ComfyUI integration
- Widget created dynamically when node executes
- Shows formatted model list with count and separators
- Add web/README.md documenting the custom widget
- Update tests for new ui data structure
- All 29 tests passing
Features:
- No extra nodes needed for visualization
- Read-only display widget
- Auto-sizing based on content
- Persistent across workflow saves
- Custom CSS styling with dark theme