# 📋 COMPREHENSIVE IMAGE MODELS IMPLEMENTATION PLAN ## Model Reference Summary | Model | AIR ID | Tier | Supported Dimensions (Square/Landscape) | |-------|--------|------|----------------------------------------| | **Hi Dream Full** | `runware:97@1` | Basic/Cheap | 1024×1024, 1280×768 (general diffusion) | | **Bria 3.2** | `bria:10@1` | Good Quality | 1024×1024, 1344×768 (16:9) or 1216×832 (3:2) | | **Nano Banana** | `google:4@2` | Premium | 1024×1024, 1376×768 (16:9) or 1264×848 (3:2) | --- ## TASK 1: Image Generation Progress Modal Width Increase **Files to modify:** - ImageQueueModal.tsx **Changes:** 1. Locate the modal container `max-w-*` or width class 2. Increase width by 50% (e.g., `max-w-2xl` → `max-w-4xl`, or explicit width) 3. Ensure responsive behavior is maintained for smaller screens --- ## TASK 2: Fix Duplicate In-Article Image Names (Unique Field Storage) **Files to modify:** - Backend: models.py (Images model) - Backend: generate_images.py - Backend: ai_processor.py **Issue:** First 2 in-article images may have duplicate field names causing overwrite **Changes:** 1. Ensure `position` field is properly enforced (0, 1, 2, 3) for in-article images 2. Update image creation logic to use unique combination: `content_id + image_type + position` 3. Add validation to prevent duplicate position values for same content 4. Ensure image storage generates unique filenames (timestamp + uuid + position) --- ## TASK 3: Image Settings Configuration - Remove Mobile Options **Files to modify:** - Frontend: Settings.tsx (Site Settings) - Frontend: Integration.tsx - Backend: global_settings_models.py **Changes:** 1. Remove `mobile_enabled` option from settings UI 2. Remove `mobile_image_size` option 3. Remove `IMAGE_TYPE_CHOICES` → `mobile` option 4. Clean up related state and form fields 5. Update `ImageSettings` interface to remove mobile fields --- ## TASK 4: Fixed Image Sizes Configuration **Specification:** - **Featured Image:** Fixed size (use primary model's best landscape dimension) - **In-Article Images:** - 2 × Square: `1024×1024` - 2 × Landscape: `1280×768` (for Hi Dream) / `1344×768` (for Bria/Nano Banana) **Files to modify:** - Backend: global_settings_models.py - Backend: ai_core.py - Backend: AI functions for image generation **Changes:** 1. Add constants for fixed sizes: ``` FEATURED_SIZE = "1792x1024" (landscape, prominent) SQUARE_SIZE = "1024x1024" LANDSCAPE_SIZE = model-dependent (see model config) ``` 2. Remove user-selectable size options where fixed 3. Update global settings with fixed defaults --- ## TASK 5: Update AI Function Calls - Alternating Square/Landscape Pattern **Files to modify:** - Backend: generate_images.py - Backend: ai_core.py (generate_image method) **Pattern:** Request 4 in-article images alternating: - Image 1 (position 0): **Square** 1024×1024 - Image 2 (position 1): **Landscape** 1280×768 or model-specific - Image 3 (position 2): **Square** 1024×1024 - Image 4 (position 3): **Landscape** 1280×768 or model-specific **Changes:** 1. Modify `extract_image_prompts` to include size specification per image 2. Update batch generation to pass correct dimensions based on position 3. Store `aspect_ratio` or `dimensions` in Images model for template use --- ## TASK 6: Content View Template - Image Layout Rules **Files to modify:** - Frontend: frontend/src/pages/Writer/components/ContentViewTemplate.tsx or similar template file **Layout Rules:** | Image Shape | Layout Style | |-------------|--------------| | **Single Square** | 50% content width, centered or left-aligned | | **Single Landscape** | 100% content width | | **2 Square Images** | Side by side (50% each) | | **Square + Landscape** | Display individually per above rules | **Changes:** 1. Add `aspect_ratio` or `dimensions` detection from image record 2. Create layout wrapper components: - `SingleSquareImage` (max-w-1/2) - `SingleLandscapeImage` (w-full) - `TwoSquareImages` (grid-cols-2) 3. Update in-article image rendering to use layout rules 4. Group consecutive square images for side-by-side display --- ## TASK 7: Backend AI Model Configuration Update ### 7A. Update Model Definitions in Database/Admin **Files to modify:** - Backend: models.py (AIModelConfig) - Backend: admin (Admin configuration) - Backend: New migration file **Changes:** 1. **Add/Update AIModelConfig records for 3 models:** | Model | Display Name | AIR ID | Tier | |-------|--------------|--------|------| | Hi Dream Full | "Hi Dream Full - Basic" | `runware:97@1` | Basic | | Bria 3.2 | "Bria 3.2 - Quality" | `bria:10@1` | Good | | Nano Banana | "Nano Banana - Premium" | `google:4@2` | Premium | 2. **Add new fields to AIModelConfig:** - `parameter_preset` (CharField with dropdown): quick config presets - `supported_sizes` (JSONField): checkboxes for valid dimensions - `one_liner_description` (CharField): brief model explainer ### 7B. Correct Parameter Configuration Per Model **Based on Runware Documentation:** #### **Hi Dream Full (runware:97@1)** - General Diffusion Model ```python { "model": "runware:97@1", "steps": 20, # Default, adjustable 1-100 "CFGScale": 7, # Default "scheduler": "Euler", # Default model scheduler "supported_dimensions": [ "1024x1024", # 1:1 square "1280x768", # ~5:3 landscape (close to 16:9) "768x1280", # ~3:5 portrait ] } ``` #### **Bria 3.2 (bria:10@1)** - Commercial-Ready ```python { "model": "bria:10@1", "steps": 8, # Bria default: 4-10 "supported_dimensions": [ "1024x1024", # 1:1 "1344x768", # 16:9 landscape "768x1344", # 9:16 portrait "1216x832", # 3:2 landscape "832x1216", # 2:3 portrait ], "providerSettings": { "bria": { "promptEnhancement": true, "enhanceImage": true, "medium": "photography", # or "art" "contentModeration": true } } } ``` #### **Nano Banana (google:4@2)** - Premium Quality ```python { "model": "google:4@2", "supported_dimensions": [ # 1K tier (default) "1024x1024", # 1:1 "1376x768", # 16:9 landscape (1K) "768x1376", # 9:16 portrait (1K) "1264x848", # 3:2 landscape (1K) # 2K tier (optional) "2048x2048", # 1:1 2K "2752x1536", # 16:9 2K ], "resolution": "1k" # or "2k", "4k" } ``` ### 7C. Admin Interface Enhancements **Files to modify:** - Backend: backend/igny8_core/admin/billing_admin.py or similar **Changes:** 1. **Add model edit form with:** - Dropdown for `parameter_preset` with explainer tooltip - Checkboxes for `supported_sizes` (multi-select) - TextField for `one_liner_description` 2. **Preset Dropdown Options:** ``` - "Speed Optimized" (fewer steps, lighter scheduler) - "Balanced" (default settings) - "Quality Focused" (more steps, CFG tuning) ``` 3. **Size Checkboxes:** ``` ☑ 1024×1024 (Square) ☑ 1280×768 (Landscape) ☐ 768×1280 (Portrait) ☑ 1344×768 (Wide Landscape) ``` ### 7D. Global Integration Settings Update **Files to modify:** - Backend: global_settings_models.py **Changes:** 1. Update `RUNWARE_MODEL_CHOICES`: ```python RUNWARE_MODEL_CHOICES = [ ('runware:97@1', 'Hi Dream Full - Basic'), ('bria:10@1', 'Bria 3.2 - Quality'), ('google:4@2', 'Nano Banana - Premium'), ] ``` 2. Add landscape size mapping per model: ```python MODEL_LANDSCAPE_SIZES = { 'runware:97@1': '1280x768', 'bria:10@1': '1344x768', 'google:4@2': '1376x768', } ``` 3. Add `default_square_size` = "1024x1024" (universal) ### 7E. AI Core Provider Settings **Files to modify:** - Backend: ai_core.py **Changes:** 1. Update `_generate_image_runware` to handle provider-specific settings 2. Add Bria-specific parameters when model is `bria:*` 3. Add Google-specific handling for `google:*` models 4. Implement model-aware dimension validation --- ## TASK 8: Frontend Integration Settings UI **Files to modify:** - Frontend: Integration.tsx - Frontend: Settings.tsx **Changes (for user override capability):** 1. **Model Selection Dropdown:** - Hi Dream Full (Basic - Fast & Cheap) - Bria 3.2 (Quality - Commercial Safe) - Nano Banana (Premium - Best Quality) 2. **Image Size Selection (if override enabled):** - Square: 1024×1024 (all models) - Landscape: Auto-detected based on model OR user override 3. **Remove options:** - Remove desktop/mobile toggle - Remove custom size inputs - Use fixed sizes from configuration --- ## MIGRATION FILE REQUIREMENTS Create migration: `0024_update_image_models_and_settings.py` **Operations:** 1. Add `parameter_preset`, `supported_sizes`, `one_liner_description` to AIModelConfig 2. Update existing model records with new data 3. Remove deprecated fields (mobile_image_size, etc.) 4. Set default values for new fields --- ## EXECUTION ORDER 1. **Phase 1 - Backend Models & Config** (Tasks 7A, 7B, 7D, 7E) ✅ 2. **Phase 2 - Backend Logic** (Tasks 2, 5) ✅ 3. **Phase 3 - Frontend Settings** (Tasks 3, 8) ✅ 4. **Phase 4 - UI Components** (Tasks 1, 6) ✅ 5. **Phase 5 - Testing & Migration** (Run migrations in Docker) --- ## VALIDATION CHECKLIST - [x] All 3 models configured with correct AIR IDs - [x] Parameter presets documented and selectable - [x] Image sizes correctly mapped per model - [x] No duplicate in-article images (unique storage) - [x] Modal width increased by 50% - [x] Mobile options removed from UI - [x] Alternating square/landscape pattern working - [x] Content template displays images per layout rules - [x] Global settings updated - [ ] Admin interface has model config dropdowns (optional enhancement) --- Completed: *Create comprehensive implementation plan* (1/1) This plan is ready for execution. The key technical findings are: **Model Specifications Confirmed:** | Model | AIR ID | Square | Landscape | Steps | |-------|--------|--------|-----------|-------| | Hi Dream Full | `runware:97@1` | 1024×1024 | 1280×768 | 20 | | Bria 3.2 | `bria:10@1` | 1024×1024 | 1344×768 | 20 (min 20, max 50) | | Nano Banana | `google:4@2` | 1024×1024 | 1376×768 | Auto |