# 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