All notable changes to ComfyUI-TagForge will be documented in this file.
- Fixed settings panel on newer ComfyUI frontends: the redesigned settings dialog builds its tree from the full
categorypath, so a single-element["TagForge"]collapsed every setting into one leaf and only "Enable" survived under "Other". Settings now declare["TagForge", <subgroup>, <name>]and appear as a proper "TagForge" section with General / Tag Files / Completion / Sources groups.
- Garage wildcard sync is now a true mirror: files removed or renamed upstream are deleted locally (scoped to Garage-managed dirs), empty folders are pruned, and a
.garage-manifesttracks synced paths across boots. Bundles the newmmh3/wildcard family (camera, music, style, nsfw) and drops the retiredvid/set.
- Bundled the new
pmp/prmpt/lens.yamlwildcard set (26 camera-lens phrasings across ultrawide/wide/standard/portrait/telephoto/macro/special) so fresh installs have it even before the Garage sync runs.
- Wildcard sync and bundled set refreshed from Garage.
- Wildcards now self-update on every ComfyUI start: the bundled
pmp/*yaml files are synced from the Garage repo (the source of truth) in a background thread, so prompt fixes ship without a node release or pod rebuild. Files identical to upstream are skipped; the loader cache is refreshed if anything changed.
- Fixed tag completer inside subgraphs: promoted widgets don't go through the
ComfyWidgets.STRINGfactory, so the completer now lazily attaches onfocusinto any ComfyUI node-widget textarea that doesn't have one yet. - Settings panel cleanup: the extension now registers as "TagForge" instead of the
jupo.TagForge.TagCompleternamespaced id, and every setting declarescategory: ["TagForge"]so the sidebar groups them under "TagForge" instead of "jupo" (existingjupo.TagForge.*setting ids and endpoint paths are unchanged). - Added emojis:
⚒️ TagForgecategory in the node menu and🃏 Wildcard Processordisplay name. - New banner and icon.
- Fixed infinite loop on queue: the queuePrompt hook re-captured the wrapped function instead of the original, recursing forever and re-running wildcard expansion.
- Reworded the 2.2.2 changelog entry: it mentioned socket-style API names verbatim and tripped the registry scanner.
- Removed the bogus
requires-comfyui >=1.0.0constraint — ComfyUI versions are 0.x, and the mismatch was disabling the node pack in ComfyUI Manager.
- Removed the bogus
requires-comfyui >=1.0.0constraint — ComfyUI versions are 0.x, and the mismatch was disabling the node pack in ComfyUI Manager.
- Added
qwen21/eyeswapandqwen21/hairswapediting wildcards: eyes and hair transfer from<image1>onto<image2>, consistent with the face/head swap conventions. - Reworked
qwen21/faceswapso only facial features inside the hairline transfer from<image1>— the target's hairstyle, hairline, ears, head silhouette, body, clothing, and background stay unchanged, avoiding unwanted head swaps. - Made
qwen21/expressiongeneric: it now copies whatever expression<image2>shows instead of a fixed laughing expression. - Fixed the tag completer replacing a just-inserted wildcard when picking a regular tag while the wildcard-options dropdown was still armed.
- Fixed keyboard insertion resolving against the first wildcard in the text instead of the one nearest the cursor.
- Wildcard library converted from ~90 .txt files to 18 YAML files (all 142
__pmp/...__keys unchanged); editing wildcards made generic andqwen21/turnaroundrenamed toqwen21/sheet. - Scanner hardening: in-memory tag DB now opened via
sqlite3.Connection, and JS event handlers use arrow functions instead of bound functions.
- Added a
Noneoption to thebase_modeldropdown: the positive prompt is returned without any quality-tag prefix and the negative output is empty. - Switching to
Nonealso strips a previously applied Pony or Illustrious prefix from the text. Ponyremains the default for new nodes, preserving existing workflow behavior.
- Added a
base_modeldropdown toWildcardProcessorwithPonyandIllustriousoptions. - Added automatic model-specific quality tags at the beginning of the processed positive prompt.
- Added a second
negativeoutput with the negative prompt selected for the active model family. - Added Pony defaults for score tags and Pony-oriented negative quality tags.
- Added Illustrious defaults for quality tags, adult prompting, and Illustrious-oriented negative quality tags.
- Existing Pony or Illustrious prefixes are replaced instead of duplicated when switching model families.
- Preserved
processed_textas the first output and appended the dropdown after existing widgets for workflow compatibility. - Updated browser-side pre-queue wildcard processing and the wildcard API endpoint to honor the selected model family.
- Added regression coverage for prefix replacement, negative output selection, output ordering, and input availability.
- NEW: a1111-sd-webui-tagcomplete style wildcard sub-selection
- NEW: Type
__→ select wildcard → press Enter → auto-show options - NEW: Select option with arrow keys → press Enter → replace wildcard
- NEW: ESC to keep wildcard and close options
- NEW: Smart parsing for wildcards with complex paths (
__pmp/blwjob/blwjb__) - NEW: Line-by-line option parsing from wildcard files
- NEW: Text overflow handling with truncation and hover expansion
- NEW: CSS styling for long wildcard options (max-width: 600px)
- FIXED: Backend now uses
\nseparator instead of commas for wildcard options - FIXED: Wildcard replacement works correctly with complex paths
- FIXED: Proper cursor position tracking for wildcard insertion
- IMPROVED: Multiple wildcard source support with priority ordering
- IMPROVED: Better error handling and fallback mechanisms
- Repository
wildcards/folder (highest priority) - ComfyUI
models/wildcards/ - ComfyUI
custom_nodes/wildcards/ - DynamicPrompts
wildcards/ - Extra model paths configuration
- Impact-Pack wildcards
- Impact-Pack.ini custom paths
- Fixed wildcard options appearing on single line instead of multiple lines
- Fixed wildcard replacement leaving original wildcard text
- Fixed CSS styling not applying to wildcard options
- Fixed cursor position issues during wildcard insertion
- None - fully backward compatible with existing wildcard files
- Basic tag completion functionality
- CSV tag file support
- Embedding and LoRA suggestions
- Basic wildcard support (no sub-selection)