163 lines
5.1 KiB
Markdown
163 lines
5.1 KiB
Markdown
# ComfyUI Documentation Compliance Fixes
|
|
|
|
## Overview
|
|
|
|
This document outlines the changes made to align the ComfyUI Queue Manager with the official ComfyUI custom node documentation and best practices.
|
|
|
|
## Changes Made
|
|
|
|
### 1. Menu Integration - Official Topbar Menu API
|
|
|
|
**Issue**: The previous implementation used custom menu detection and multiple fallback methods that didn't follow the official ComfyUI topbar menu API.
|
|
|
|
**Fix**:
|
|
- Created `web/queue_manager_menu.js` following the official API structure
|
|
- Uses `app.registerExtension()` with proper `commands` and `menuCommands` arrays
|
|
- Follows the exact pattern documented in the official ComfyUI documentation
|
|
|
|
**Before**:
|
|
```javascript
|
|
// Custom menu detection with multiple fallback methods
|
|
const menuContainer = this.findMenuContainer();
|
|
if (menuContainer) {
|
|
this.createMenuButton(menuContainer);
|
|
}
|
|
```
|
|
|
|
**After**:
|
|
```javascript
|
|
app.registerExtension({
|
|
name: "QueueManager",
|
|
commands: [
|
|
{
|
|
id: "queueManager.open",
|
|
label: "Open Queue Manager",
|
|
function: openQueueManager
|
|
}
|
|
],
|
|
menuCommands: [
|
|
{
|
|
path: ["Queue"],
|
|
commands: ["queueManager.open"]
|
|
}
|
|
]
|
|
});
|
|
```
|
|
|
|
### 2. Node Class Method Signatures
|
|
|
|
**Issue**: Used type hints and modern Python syntax that may not be compatible with all ComfyUI environments.
|
|
|
|
**Fix**:
|
|
- Removed type hints from class methods to match official examples
|
|
- Simplified method signatures to follow documented patterns
|
|
- Updated `VALIDATE_INPUTS` to return error strings instead of boolean (following official docs)
|
|
|
|
**Before**:
|
|
```python
|
|
@classmethod
|
|
def INPUT_TYPES(cls) -> dict[str, Any]: # noqa: N802
|
|
```
|
|
|
|
**After**:
|
|
```python
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
```
|
|
|
|
### 3. Web Directory Structure Simplification
|
|
|
|
**Issue**: Complex web extension registration with multiple files and custom routing.
|
|
|
|
**Fix**:
|
|
- Simplified to single extension file following official conventions
|
|
- Removed unnecessary `WEB_EXTENSIONS` configuration
|
|
- Streamlined `__init__.py` to export only required variables
|
|
|
|
**Before**:
|
|
```python
|
|
WEB_EXTENSIONS = [
|
|
{"name": "queue_manager_extension", "path": "queue_manager_extension.js"}
|
|
]
|
|
```
|
|
|
|
**After**:
|
|
```python
|
|
# Only export what's required by ComfyUI
|
|
__all__ = [
|
|
"NODE_CLASS_MAPPINGS",
|
|
"NODE_DISPLAY_NAME_MAPPINGS",
|
|
"WEB_DIRECTORY"
|
|
]
|
|
```
|
|
|
|
### 4. Extension File Consolidation
|
|
|
|
**Issue**: Multiple extension files (`queue_manager_extension.js`, `menu_extension.js`) with overlapping functionality.
|
|
|
|
**Fix**:
|
|
- Consolidated into single `queue_manager_menu.js` file
|
|
- Follows official extension structure with proper imports
|
|
- Uses standard ComfyUI extension hooks (`setup`, `beforeRegisterNodeDef`)
|
|
|
|
### 5. Error Handling in VALIDATE_INPUTS
|
|
|
|
**Issue**: Returned boolean values from `VALIDATE_INPUTS`.
|
|
|
|
**Fix**:
|
|
- Updated to return error message strings as documented
|
|
- Follows official pattern: return `True` for valid, error string for invalid
|
|
|
|
**Before**:
|
|
```python
|
|
if not isinstance(priority, int) or priority < -10 or priority > 10:
|
|
return False
|
|
```
|
|
|
|
**After**:
|
|
```python
|
|
if not isinstance(priority, int) or priority < -10 or priority > 10:
|
|
return "priority must be an integer between -10 and 10"
|
|
```
|
|
|
|
## Files Modified
|
|
|
|
1. `__init__.py` - Simplified exports and removed complex extension registration
|
|
2. `queue_manager_node.py` - Updated method signatures and validation
|
|
3. `web/queue_manager_menu.js` - New file following official API
|
|
4. `web/queue_manager_extension.js` - Removed (replaced by menu file)
|
|
5. `web/menu_extension.js` - Removed (consolidated into menu file)
|
|
6. Test files - Updated to reference new extension file
|
|
|
|
## Compliance Verification
|
|
|
|
The changes ensure compliance with:
|
|
|
|
- [Custom Node Overview](https://uithub.com/Comfy-Org/docs/blob/main/custom-nodes/overview.mdx)
|
|
- [Backend Server Properties](https://uithub.com/Comfy-Org/docs/blob/main/custom-nodes/backend/server_overview.mdx)
|
|
- [JavaScript Extensions](https://uithub.com/Comfy-Org/docs/blob/main/custom-nodes/js/javascript_overview.mdx)
|
|
- [Topbar Menu API](https://uithub.com/Comfy-Org/docs/blob/main/custom-nodes/js/javascript_topbar_menu.mdx)
|
|
- [Getting Started Walkthrough](https://uithub.com/Comfy-Org/docs/blob/main/custom-nodes/walkthrough.mdx)
|
|
|
|
## Testing
|
|
|
|
All existing tests have been updated to work with the new structure:
|
|
- Menu integration tests pass
|
|
- Extension file validation works
|
|
- Node registration follows official patterns
|
|
|
|
## Benefits
|
|
|
|
1. **Better Compatibility**: Follows official API patterns for maximum compatibility
|
|
2. **Simpler Maintenance**: Single extension file instead of multiple overlapping files
|
|
3. **Future-Proof**: Uses documented APIs that are less likely to break
|
|
4. **Standard Compliance**: Matches patterns used by other ComfyUI extensions
|
|
5. **Cleaner Code**: Removed complex fallback mechanisms in favor of standard approaches
|
|
|
|
## Migration Notes
|
|
|
|
For users upgrading:
|
|
- The menu item will now appear under "Queue" in the top menu bar
|
|
- Keyboard shortcut (Ctrl+Shift+Q) remains the same
|
|
- All functionality is preserved, just using official APIs
|
|
- No changes needed to existing workflows or configurations |