- Track total tokens in _collect_subject_details to prevent overflow
- Add final safety truncation in _get_tokens_for_category
- Ensures setting 80 returns exactly 80, not 81
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- When set > 50: uses user's limit for all categories (more detail)
- When set < 50: caps all categories to user's limit (less detail)
- When default (50): uses category-specific limits
Also fixes subject_details subcategory limits to distribute evenly.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add mutually exclusive groups for contradictory tags (hair texture,
eye color, body type, skin tone, positions, facing direction)
- Filter generic Western clothing when ethnic wear (saree, kimono, etc.) detected
- Add category-specific token limits to prevent overwhelming:
- subject_details: 25 (was using default 50)
- environment: 15, lighting: 12 (important for scene recreation)
- Prioritize short tags (<30 chars) over long sentences in subject_details
(80% short tags, 20% long sentences for better image generation)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add STRUCTURED style that outputs each category on separate lines
- Fix '3d' token stripping - only strip booru patterns (1girl, 2boys)
- Increase max_tokens_per_category to 50 (was 5)
- Increase validator limits to preserve more information
- Preserve newlines throughout validation pipeline
- Disable truncation and duplicate removal by default
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds the assembler module that converts classified tokens into natural
language prompts:
- base.py: AssemblerConfig, AssembledPrompt, CategorySection classes
- rules.py: Phrase templates, gender detection, grammar helpers
- standard.py: StandardAssembler with NATURAL/TAGS/HYBRID styles
The assembler takes ClassifiedImage from Phase 3 and produces prompts
following the canonical category order.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>