Files
BrekelandClaude Opus 5.5 b656609f88 Add Queue ETA node
Estimates how long the rest of the ComfyUI queue will take, learned from how
long previous runs of each workflow took, and can shut the PC down once the
queue is done.

- Server-side tracker wraps the prompt queue, so timing keeps running when the
  browser tab is closed or reloaded
- Run times are kept per workflow type (hash of the nodes that run and their
  links, widget values ignored), the estimate is the median of the last 10 runs
- Node panel shows items left, time left, ETA, progress bar and a per-workflow
  table, with a Reset button and per-workflow reset in the right-click menu
- Stats persist to user/brekel_queue_eta.json, nothing is stored in the workflow
- Optional shutdown when the queue is done: 5 minute countdown with a cancel
  button, never remembered, cancelled again when new work is queued
- One console line with the stats per finished prompt
- Version 1.5.0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 13:33:57 +02:00

58 lines
2.8 KiB
Python

# Import the mappings from the new prompt chooser node
from .brekel_prompt_chooser import NODE_CLASS_MAPPINGS as CHOOSER_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as CHOOSER_NAME_MAPPINGS
# Import the mappings from the line-based prompt chooser node
from .brekel_prompt_line_chooser import NODE_CLASS_MAPPINGS as LINE_CHOOSER_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as LINE_CHOOSER_NAME_MAPPINGS
# Import the mappings from the first node file using aliases to avoid name conflicts
from .brekel_auto_prompt_generator import NODE_CLASS_MAPPINGS as AUTO_PROMPT_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as AUTO_PROMPT_NAME_MAPPINGS
# Import the mappings from the second node file using different aliases
from .brekel_enhance_prompt import NODE_CLASS_MAPPINGS as ENHANCE_PROMPT_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as ENHANCE_PROMPT_NAME_MAPPINGS
# Import the mappings from the new resolution selector node
from .brekel_resolution_selector import NODE_CLASS_MAPPINGS as RESOLUTION_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as RESOLUTION_NAME_MAPPINGS
# Import the mappings from the new load image node
from .brekel_load_image import NODE_CLASS_MAPPINGS as LOAD_IMAGE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as LOAD_IMAGE_NAME_MAPPINGS
# Import the mappings from the new save image node
from .brekel_save_image import NODE_CLASS_MAPPINGS as SAVE_IMAGE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as SAVE_IMAGE_NAME_MAPPINGS
# Import the mappings from the directory-based lora loader node
from .brekel_lora_loader import NODE_CLASS_MAPPINGS as LORA_LOADER_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as LORA_LOADER_NAME_MAPPINGS
# Import the mappings from the queue ETA node (this also starts timing the queue)
from .brekel_queue_eta import NODE_CLASS_MAPPINGS as QUEUE_ETA_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as QUEUE_ETA_NAME_MAPPINGS
# Merge the class mappings from all files into one dictionary
NODE_CLASS_MAPPINGS = {
**CHOOSER_CLASS_MAPPINGS,
**LINE_CHOOSER_CLASS_MAPPINGS,
**AUTO_PROMPT_CLASS_MAPPINGS,
**ENHANCE_PROMPT_CLASS_MAPPINGS,
**RESOLUTION_CLASS_MAPPINGS,
**LOAD_IMAGE_CLASS_MAPPINGS,
**SAVE_IMAGE_CLASS_MAPPINGS,
**LORA_LOADER_CLASS_MAPPINGS,
**QUEUE_ETA_CLASS_MAPPINGS,
}
# Merge the display name mappings from all files into one dictionary
NODE_DISPLAY_NAME_MAPPINGS = {
**CHOOSER_NAME_MAPPINGS,
**LINE_CHOOSER_NAME_MAPPINGS,
**AUTO_PROMPT_NAME_MAPPINGS,
**ENHANCE_PROMPT_NAME_MAPPINGS,
**RESOLUTION_NAME_MAPPINGS,
**LOAD_IMAGE_NAME_MAPPINGS,
**SAVE_IMAGE_NAME_MAPPINGS,
**LORA_LOADER_NAME_MAPPINGS,
**QUEUE_ETA_NAME_MAPPINGS,
}
# Tell ComfyUI where to find frontend JS extensions (viewport lock, etc.)
WEB_DIRECTORY = "./js"
# This tells Python what variables to export from this module
__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS", "WEB_DIRECTORY"]