diff --git a/docs/IMAGE_GENERATION_CHANGELOG.md b/docs/IMAGE_GENERATION_CHANGELOG.md index 633cc4cf..b15e0794 100644 --- a/docs/IMAGE_GENERATION_CHANGELOG.md +++ b/docs/IMAGE_GENERATION_CHANGELOG.md @@ -147,7 +147,7 @@ - Queue number (1, 2, 3...) - Label (Featured Image, In-Article Image 1, etc.) - Content title - - Status: "⏳ Pending" + - Status: "Pending" (with TimeIcon) - Progress: 0% - Thumbnail placeholder: "No image" @@ -272,5 +272,46 @@ Example: --- +--- + +## Stage 1 Cleanup: Removed Duplicate/Unused Code + +**Date:** 2025-01-XX +**Status:** Completed + +### Changes Made: + +1. **Removed Image Generation Code from ProgressModal** + - Removed all code related to `generate_images_from_prompts` function + - **Kept** code for `generate_image_prompts` (image prompt generation) - this is different and still uses ProgressModal + - Removed step definitions for image generation from prompts + - Removed success message handling for image generation + - Removed subtitle and message formatting for image generation + +2. **Removed ImageQueue from useProgressModal** + - Removed `ImageQueueItem` interface (now only in ImageQueueModal) + - Removed `imageQueue` state from useProgressModal hook + - Removed image queue extraction from task progress meta + - Removed image queue from return interface + - **Reason:** ImageQueueModal handles its own queue state, no need for duplicate + +3. **Updated Changelog** + - Fixed emoji reference to use icon description instead + +### Files Modified: +- ✅ `frontend/src/components/common/ProgressModal.tsx` (CLEANED - removed image generation code) +- ✅ `frontend/src/hooks/useProgressModal.ts` (CLEANED - removed imageQueue) +- ✅ `docs/IMAGE_GENERATION_CHANGELOG.md` (UPDATED) + +### What Was Kept: +- ✅ **Image Prompt Generation** (`generate_image_prompts`) - Still uses ProgressModal (not touched) +- ✅ **ImageQueueModal** - Our new modal for image generation from prompts + +### What Was Removed: +- ❌ **Image Generation from Prompts** code in ProgressModal (duplicate, not needed) +- ❌ **ImageQueue** state in useProgressModal (duplicate, not needed) + +--- + **End of Stage 1 Changelog** diff --git a/frontend/src/components/common/ProgressModal.tsx b/frontend/src/components/common/ProgressModal.tsx index a66d41c8..2a047fad 100644 --- a/frontend/src/components/common/ProgressModal.tsx +++ b/frontend/src/components/common/ProgressModal.tsx @@ -73,15 +73,8 @@ const getSuccessMessage = (functionId?: string, title?: string, stepLogs?: any[] } return 'Article drafted successfully.'; } - // Check for image generation from prompts FIRST (more specific) - if (funcName.includes('image') && funcName.includes('from')) { - // Image generation from prompts - const imageCount = extractCount(/(\d+)\s+image/i, stepLogs || []); - if (imageCount) { - return `${imageCount} image${imageCount !== '1' ? 's' : ''} generated successfully`; - } - return 'Images generated successfully'; - } else if (funcName.includes('image') && (funcName.includes('prompt') || funcName.includes('extract'))) { + // Image prompt generation (generate_image_prompts) + if (funcName.includes('image') && (funcName.includes('prompt') || funcName.includes('extract'))) { // Image prompt generation // Try to extract from SAVE step message first (most reliable) const saveStepLog = stepLogs?.find(log => log.stepName === 'SAVE'); @@ -166,17 +159,8 @@ const getStepsForFunction = (functionId?: string, title?: string): Array<{phase: ]; } - // Check for image generation from prompts FIRST (more specific) - if (funcName.includes('image') && funcName.includes('from')) { - // Image generation from prompts - return [ - { phase: 'INIT', label: 'Validating image prompts' }, - { phase: 'PREP', label: 'Preparing image generation queue' }, - { phase: 'AI_CALL', label: 'Generating images with AI' }, - { phase: 'PARSE', label: 'Processing image URLs' }, - { phase: 'SAVE', label: 'Saving image URLs' }, - ]; - } else if (funcName.includes('image') && (funcName.includes('prompt') || funcName.includes('extract'))) { + // Image prompt generation (generate_image_prompts) + if (funcName.includes('image') && (funcName.includes('prompt') || funcName.includes('extract'))) { // Image prompt generation return [ { phase: 'INIT', label: 'Checking content and image slots' }, @@ -392,55 +376,6 @@ export default function ProgressModal({ return `${articleCount} article${articleCount !== '1' ? 's' : ''} created`; } } - } else if (funcName.includes('image') && funcName.includes('from')) { - // Image generation from prompts - if (stepPhase === 'PREP') { - // Extract image count from PREP step message - const imageCount = extractCount(/(\d+)\s+image/i); - if (imageCount) { - return `Preparing to generate ${imageCount} image${imageCount !== '1' ? 's' : ''}`; - } - if (stepLog?.message) { - const match = stepLog.message.match(/Preparing to generate (\d+)\s+image/i); - if (match && match[1]) { - return `Preparing to generate ${match[1]} image${match[1] !== '1' ? 's' : ''}`; - } - } - return 'Preparing image generation queue'; - } else if (stepPhase === 'AI_CALL') { - // Extract current image number from message - const match = stepLog?.message?.match(/Generating.*image (\d+)/i); - if (match && match[1]) { - return `Generating image ${match[1]} with AI`; - } - return 'Generating images with AI'; - } else if (stepPhase === 'PARSE') { - // Extract image count from PARSE step - const imageCount = extractCount(/(\d+)\s+image/i); - if (imageCount) { - return `${imageCount} image${imageCount !== '1' ? 's' : ''} generated successfully`; - } - if (stepLog?.message) { - const match = stepLog.message.match(/(\d+)\s+image.*generated/i); - if (match && match[1]) { - return `${match[1]} image${match[1] !== '1' ? 's' : ''} generated successfully`; - } - } - return 'Processing image URLs'; - } else if (stepPhase === 'SAVE') { - // Extract image count from SAVE step - const imageCount = extractCount(/(\d+)\s+image/i); - if (imageCount) { - return `Saving ${imageCount} image${imageCount !== '1' ? 's' : ''}`; - } - if (stepLog?.message) { - const match = stepLog.message.match(/Saved image (\d+)/i); - if (match && match[1]) { - return `Saving image ${match[1]}`; - } - } - return 'Saving image URLs'; - } } else if (funcName.includes('image') && (funcName.includes('prompt') || funcName.includes('extract'))) { // Image prompt generation if (stepPhase === 'PREP') { @@ -658,30 +593,17 @@ export default function ProgressModal({ } else if (funcName.includes('idea')) { // For idea generation, use fixed heading return 'Generating Content Ideas & Outline'; - } else if (funcName.includes('image') && funcName.includes('from')) { - // For image generation from prompts - return 'Generate Images'; } else if (funcName.includes('image') && (funcName.includes('prompt') || funcName.includes('extract'))) { // For image prompt generation return 'Smart Image Prompts'; - } else if (funcName.includes('image')) { - // Fallback for other image functions - return 'Generate Images'; } return title; })()} - {/* Subtitle for image functions */} + {/* Subtitle for image prompt generation */} {(() => { const funcName = (functionId || title || '').toLowerCase(); - if (funcName.includes('image') && funcName.includes('from')) { - // Image generation from prompts - return ( -
- Generating images from prompts using AI -
- ); - } else if (funcName.includes('image') && (funcName.includes('prompt') || funcName.includes('extract'))) { + if (funcName.includes('image') && (funcName.includes('prompt') || funcName.includes('extract'))) { // Image prompt generation return (@@ -693,22 +615,7 @@ export default function ProgressModal({ })()} {!showSuccess && status !== 'completed' && (
- {(() => { - const funcName = (functionId || title || '').toLowerCase(); - // For image generation, show a more specific message - if (funcName.includes('image') && funcName.includes('from')) { - // Get current step message from step logs - const currentStepLog = stepLogs.find(log => log.stepName === currentPhase); - if (currentStepLog?.message) { - return currentStepLog.message; - } - // Fallback to step label - const currentStep = steps.find(s => s.phase === currentPhase); - return currentStep?.label || 'Generating images...'; - } - // For other functions, use the message prop - return message; - })()} + {message}
)} {status === 'completed' && !allStepsVisuallyCompleted && ( diff --git a/frontend/src/hooks/useProgressModal.ts b/frontend/src/hooks/useProgressModal.ts index 127993e8..827cdcee 100644 --- a/frontend/src/hooks/useProgressModal.ts +++ b/frontend/src/hooks/useProgressModal.ts @@ -14,17 +14,6 @@ export interface ProgressState { }; } -export interface ImageQueueItem { - image_id: number; - index: number; - label: string; - content_title: string; - status: 'pending' | 'processing' | 'completed' | 'failed'; - progress: number; - image_url: string | null; - error: string | null; -} - export interface UseProgressModalReturn { progress: ProgressState; isOpen: boolean; @@ -43,7 +32,6 @@ export interface UseProgressModalReturn { message: string; timestamp?: number; }>; // Step logs for debugging - imageQueue?: ImageQueueItem[]; // Image queue for image generation } export function useProgressModal(): UseProgressModalReturn { @@ -66,9 +54,6 @@ export function useProgressModal(): UseProgressModalReturn { timestamp?: number; }>>([]); - // Image queue state for image generation - const [imageQueue, setImageQueue] = useState