8 Commits
Author SHA1 Message Date
limbicnation ebbb25a2a3 Add dual-stream prompt refiner node
Add PromptDualStreamRefinerNode that produces a positive and negative
prompt pair in a single pass via Ollama, intended for the shipped Q8
GGUF of qwen2-5-7b-dual-stream-prompt-lora. Reuses OllamaClient for
streaming, timeouts, progress, and llama-runner crash handling, and
parses Positive/Negative output defensively across label variants.

Includes config/Modelfile.dualstream, unit tests, node registration,
and a corrected implementation plan replacing the invalid local
transformers/PEFT approach.
2026-06-10 22:10:16 +02:00
limbicnationandClaude Opus 4.7 e8d781d737 feat: add registration safety guards (mapping self-check + contract tests)
Direct response to the v1.1.6 packaging gap, where the prompt-chain nodes
(combiner, refiner, negative) were authored under nodes/ but never wired
into NODE_CLASS_MAPPINGS, so they silently failed to ship.

- __init__.py now raises RuntimeError at import time if NODE_CLASS_MAPPINGS
  and NODE_DISPLAY_NAME_MAPPINGS drift apart. ComfyUI startup logs surface
  the mismatch instead of dropping the node from the menu silently.
- New tests/unit/test_node_registration.py contract suite (8 tests):
  * Expected 5 keys are registered.
  * Display names cover every class.
  * Each registered class satisfies the ComfyUI node interface
    (INPUT_TYPES classmethod, RETURN_TYPES, FUNCTION, CATEGORY,
    and the FUNCTION attribute resolves to a callable method).
  * Every nodes/*_node.py module on disk is reachable from the mapping —
    this is the regression guard that would have caught v1.1.6.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-30 06:14:55 +02:00
limbicnation 89c8341612 feat: add prompt chain nodes + test infrastructure
Phase 1 — Foundation Hardening:
- Extract ollama_client.py adapter from PromptGeneratorNode
- Add pytest suite (29 tests, 70% coverage gate)
- Unify style sources into config/styles.yaml
- Extend CI with pytest + coverage

Phase 2 — Prompt Chain Nodes:
- PromptRefinerNode: iterative LLM refinement (1-3 passes)
- NegativePromptNode: style-aware negative prompt generation
- PromptCombinerNode: blend/concat/weighted_average modes

New graph target:
  PromptGenerator -> PromptRefiner -> PromptCombiner -> CLIP
                          ^
  NegativePrompt ---------+

Closes roadmap phases 1.1-2.3
2026-04-27 07:00:58 +02:00
limbicnation 26eba3e38c fix: prefix node keys with Limbicnation_ to resolve naming conflict
NODE_CLASS_MAPPINGS keys PromptGenerator and StyleApplier conflicted
with 3 other packages. Prefixed with Limbicnation_ to match PublisherId.
Bumped version to 1.2.0.
2026-03-09 02:37:06 +01:00
limbicnation 0829dfd336 fix: address code review findings for style system consolidation 2026-02-27 06:10:03 +01:00
limbicnation 272eb01b6c feat: consolidate style system to 9 styles across both nodes 2026-02-27 05:33:48 +01:00
limbicnation 45cebe95b4 feat(nodes): add StyleApplierNode and still_image style (v1.0.5)
- Add StyleApplierNode for Cinematic/Still Image style keywords
- Add style_presets.py with keyword-based style system
- Add still_image to PromptGeneratorNode dropdown and templates
- Update templates.yaml with still_image template
- Bump version to 1.0.5
2026-01-28 02:13:14 +01:00
limbicnation a2431e37a7 feat: Add ComfyUI Prompt Generator node
- PromptGeneratorNode with 7 style presets (cinematic, anime, photorealistic, fantasy, abstract, cyberpunk, sci-fi)
- Temperature and Top-P sampling controls via Ollama API
- Optional emphasis (focus area) and mood inputs
- Reasoning toggle to show/hide model's thinking process
- Jinja2 templating for customizable style templates
- Graceful fallback when optional dependencies unavailable
- ComfyUI Registry ready (pyproject.toml configured)
2025-12-13 00:11:52 +01:00