# Advanced Generation Settings ## Overview The QuickGenerateBar now includes advanced settings that allow users to customize image generation parameters beyond just the prompt and model selection. These settings are accessible via a settings icon (⚙️) in the generation bar. ## Features ### 1. Image Count (Batch Generation) - Generate 1-5 images at once with a single prompt - Each image uses a different random seed for variety - Progress indicator shows "Generiere Bild X/Y..." during batch generation - Success toast shows total count: "X Bilder erfolgreich generiert!" **Default**: 1 image ### 2. Aspect Ratio Selector Choose from three preset aspect ratios: - **Quadratisch** (Square): 1024×1024px - **Hochformat** (Portrait): 832×1216px - **Querformat** (Landscape): 1216×832px Visual preview boxes show the relative dimensions. **Default**: Square (1024×1024) ### 3. Steps Slider Control the number of diffusion steps (quality vs. speed): - **Range**: 20-150 steps (increments of 5) - Lower values = faster generation, potentially lower quality - Higher values = slower generation, higher quality/detail - Visual labels: "Schnell" (20) → "Höchste Qualität" (150) **Default**: 50 steps ### 4. Guidance Scale Slider Control how closely the AI follows the prompt: - **Range**: 1-20 (increments of 0.5) - Lower values = more creative/artistic interpretation - Higher values = stricter adherence to prompt - Visual labels: "Kreativ" (1) → "Präzise" (20) - Helper text: "Höhere Werte folgen dem Prompt genauer, niedrigere sind kreativer" **Default**: 7.5 ## UI/UX Details ### Settings Button - **Location**: Between prompt input and Generate button - **Icon**: Gear/settings icon (⚙️) - **Badge**: Blue pulsing dot appears when any setting differs from defaults - **State**: Disabled during generation ### Modal Layout - **Style**: Glass-blur modal (white/95 with backdrop-blur-xl) - **Size**: max-w-2xl centered - **Close**: ESC key or close button (×) - **Actions**: Cancel (gray) or Übernehmen (blue) ### Visual Feedback The settings button shows a blue pulsing badge when: - Image count > 1 - Aspect ratio ≠ Square - Steps ≠ 50 - Guidance scale ≠ 7.5 ## Implementation Details ### Files Modified 1. **`lib/components/generate/AdvancedSettingsModal.svelte`** (NEW) - Self-contained modal component - Local state management with $effect() for props sync - Exports `AdvancedSettings` and `AspectRatio` types 2. **`lib/components/gallery/QuickGenerateBar.svelte`** - Added `showAdvancedSettings` state - Added `advancedSettings` state with defaults - Added `hasCustomSettings` derived state for badge - Updated `handleQuickGenerate()` to: - Loop through imageCount - Pass width, height, steps, guidance_scale to API - Show progress per image - Added settings button with badge indicator - Integrated AdvancedSettingsModal component 3. **`lib/api/generate.ts`** - Extended `GenerateImageParams` interface: ```typescript export interface GenerateImageParams { prompt: string; model_id: string; negative_prompt?: string; width?: number; // NEW height?: number; // NEW steps?: number; // NEW guidance_scale?: number; // NEW } ``` ### API Integration The advanced settings are passed directly to the edge function: ```typescript const result = await generateImage({ prompt: prompt.trim(), model_id: selectedModelId, width: advancedSettings.aspectRatio.width, height: advancedSettings.aspectRatio.height, steps: advancedSettings.steps, guidance_scale: advancedSettings.guidanceScale }); ``` **Note**: The edge function (`supabase/functions/generate-image/index.ts`) must handle these parameters and pass them to the image generation API (Replicate, Stability AI, etc.). ### Batch Generation Flow When `imageCount > 1`: 1. Loop from 0 to imageCount 2. For each iteration: - Update progress: `Generiere Bild ${i + 1}/${totalImages}...` - Call `generateImage()` with same params - Poll for completion: `Verarbeite Bild ${i + 1}/${totalImages}...` - Increment completedImages counter 3. Show success toast with total count 4. Trigger `onGenerated()` callback to refresh gallery ## Future Enhancements Potential additions inspired by mobile app: - [ ] Tag input for organizing generated images - [ ] Negative prompt field - [ ] Seed input for reproducible generations - [ ] Style presets (e.g., "Photorealistic", "Artistic", "Anime") - [ ] Rate limit indicator - [ ] Batch progress tracker with individual image status - [ ] Save/load preset configurations - [ ] Advanced toggle (show/hide extra options) ## Testing ### Manual Test Cases 1. **Default Generation** - Open generate bar - Enter prompt - Click Generate - Verify: 1 square image at default quality 2. **Custom Aspect Ratio** - Click settings icon - Select Portrait - Click Übernehmen - Verify: Badge appears on settings button - Generate image - Verify: Image is 832×1216 3. **Batch Generation** - Open settings - Select 3 images - Click Übernehmen - Generate - Verify: Progress shows "Bild 1/3", "Bild 2/3", "Bild 3/3" - Verify: Toast shows "3 Bilder erfolgreich generiert!" - Verify: 3 images appear in gallery 4. **Settings Persistence** - Set custom values in modal - Close modal - Re-open modal - Verify: Values are still set 5. **Settings Reset** - Set custom values - Generate image - Verify: Badge still shows on settings button - Open modal - Change all back to defaults - Verify: Badge disappears 6. **Keyboard Navigation** - Open modal with click - Press ESC - Verify: Modal closes ## Design Inspiration Based on mobile app's `QuickGenerateBar.tsx` which includes: - ImageCountSelector with pill/counter/compact styles - AspectRatioSelector with visual previews - Slider controls for steps and guidance - Tag input for organization - Rate limiting display - Batch progress tracking The web implementation follows similar patterns while adapting to: - Desktop-first layout with responsive mobile view - Glass-blur aesthetic matching existing UI - Svelte 5 runes instead of React hooks - Simpler initial feature set (can expand later)