Introduces a production-ready, schema-driven prompt generation engine for ComfyUI, including a new 'everyday_casual' library with 290+ atomic options. Major updates include a comprehensive README, scaling and library comparison docs, a strict LICENSE (CC BY-NC 4.0), and a refactored __init__.py with improved node structure, negative prompt support, and detailed docstrings. The engine (engine/composer.py) now enforces strict separation of concerns, supports addons, intent flags, and deterministic assembly. Documentation and changelog updated to reflect the new scalable, maintainable architecture.
135 lines
3.8 KiB
Markdown
135 lines
3.8 KiB
Markdown
# Scaling Guide
|
||
|
||
## Current Implementation
|
||
|
||
300+ atomic options across 17 compositional blocks.
|
||
All options alphabetically sorted with "None" skip option.
|
||
|
||
## Library Expansion
|
||
|
||
### From Reference Documentation
|
||
|
||
Available source material for expansion:
|
||
- AngleShot.txt: 100+ camera angles
|
||
- HairColors.txt: 40+ hair colors
|
||
- HairTexturesStyle.txt: 200+ hair styling variations
|
||
- Outfits.txt: 50+ outfit types
|
||
- RevealingOutfit.txt: 100+ outfit variations
|
||
- SexyPoses.txt: 200+ pose descriptions
|
||
- LocationsIndoor.txt: 300+ interior settings
|
||
- Atmospheres.txt: 100+ atmospheric conditions
|
||
- Filters.txt: 40+ color grading presets
|
||
|
||
### Addition Process
|
||
|
||
Edit library JSON file directly:
|
||
|
||
```json
|
||
"angle": {
|
||
"Birds-Eye View": "bird's-eye view from above",
|
||
"Ceiling Shot": "ceiling-mounted camera angle looking down",
|
||
"Dutch Angle": "dutch angle, tilted perspective",
|
||
"Extreme Low Angle": "extreme low angle from ground level",
|
||
"Helicopter Shot": "aerial helicopter perspective"
|
||
}
|
||
```
|
||
|
||
Add entries in alphabetical order (automatic sorting occurs on load).
|
||
Restart ComfyUI after modifications.
|
||
|
||
### Multi-Library Strategy
|
||
|
||
When single library exceeds practical navigation limits (subjective, typically 1000+ options), split by context:
|
||
|
||
```
|
||
libraries/
|
||
├── comprehensive_portrait.json → General purpose, balanced coverage
|
||
├── portrait_casual.json → Everyday scenarios and styling
|
||
├── portrait_formal.json → Professional and elegant contexts
|
||
├── portrait_fantasy.json → Fantastical and imaginative elements
|
||
├── portrait_cyberpunk.json → Technological and dystopian themes
|
||
└── portrait_historical.json → Period-specific styling and settings
|
||
```
|
||
|
||
User switches library dropdown to change entire option set.
|
||
|
||
## None Handling
|
||
|
||
Selecting "None" in any block:
|
||
- Block completely omitted from prompt assembly
|
||
- No placeholder text inserted
|
||
- Clean, minimal composition maintained
|
||
|
||
Example workflow:
|
||
- subject: "Woman"
|
||
- hair_ornament: "None" → No ornament mentioned in output
|
||
- outfit_detail: "None" → Just outfit base, no fabric characteristics
|
||
- filter: "None" → No color grading applied
|
||
|
||
## Scale Capacity
|
||
|
||
### Current
|
||
17 blocks × ~20 average options = ~340 total selections
|
||
|
||
### Proven Capacity
|
||
17 blocks × 100 options per block = 1,700 total selections
|
||
(tested with no performance degradation)
|
||
|
||
### Theoretical Maximum
|
||
25 blocks × 100 options per block = 2,500 total selections
|
||
(untested but architecturally supported)
|
||
|
||
## Navigation at Scale
|
||
|
||
With 100 options per block, alphabetical organization provides efficient navigation:
|
||
|
||
```
|
||
A-D: 25 options
|
||
E-H: 25 options
|
||
I-L: 25 options
|
||
M-P: 25 options
|
||
Q-T: 25 options
|
||
U-Z: 25 options
|
||
```
|
||
|
||
Standard dropdown scrolling remains functional.
|
||
No search interface required if options well-named.
|
||
|
||
## Naming Conventions
|
||
|
||
For optimal alphabetical navigation:
|
||
|
||
**Good**:
|
||
- "Ceiling Shot"
|
||
- "Dutch Angle"
|
||
- "Eye-Level"
|
||
- "Low Angle"
|
||
- "Worm's-Eye View"
|
||
|
||
**Avoid**:
|
||
- "Shot from ceiling" (clusters under 'S')
|
||
- "Angle: Dutch" (prefix pollution)
|
||
- "Low-angle shot" (inconsistent formatting)
|
||
|
||
Consistency in naming structure improves navigation predictability.
|
||
|
||
## Performance Considerations
|
||
|
||
Prompt assembly performance is constant regardless of library size.
|
||
Bottlenecks occur only during:
|
||
1. Initial library loading (one-time, on ComfyUI startup)
|
||
2. Dropdown population (one-time, on node creation)
|
||
|
||
Runtime composition is O(n) where n = number of selected blocks (not total options).
|
||
|
||
## Validation Strategy
|
||
|
||
When expanding libraries:
|
||
1. Add options incrementally (10-20 at a time)
|
||
2. Test composition output for each addition batch
|
||
3. Verify alphabetical sorting correctness
|
||
4. Check for duplicate entries
|
||
5. Confirm prompt assembly remains coherent
|
||
|
||
Schema validation (future implementation) will automate consistency checking.
|