diff --git a/lib/features/chat/providers/chat_providers.dart b/lib/features/chat/providers/chat_providers.dart index ef05973..f601dd6 100644 --- a/lib/features/chat/providers/chat_providers.dart +++ b/lib/features/chat/providers/chat_providers.dart @@ -2313,7 +2313,7 @@ Future cloneConversation(WidgetRef ref, String conversationId) async { } // Regenerate last message -final regenerateLastMessageProvider = Provider((ref) { +final regenerateLastMessageProvider = Provider Function()>((ref) { return () async { final messages = ref.read(chatMessagesProvider); if (messages.length < 2) return; diff --git a/lib/features/chat/views/chat_page.dart b/lib/features/chat/views/chat_page.dart index 1b1ae8f..15b5e34 100644 --- a/lib/features/chat/views/chat_page.dart +++ b/lib/features/chat/views/chat_page.dart @@ -934,6 +934,16 @@ class _ChatPageState extends ConsumerState { } try { + // If assistant message has generated images and it's the last message, + // use image-only regenerate flow instead of text SSE regeneration + if (message.role == 'assistant' && + (message.files?.any((f) => f['type'] == 'image') == true) && + messageIndex == messages.length - 1) { + final regenerateImages = ref.read(regenerateLastMessageProvider); + await regenerateImages(); + return; + } + // Remove the assistant message we want to regenerate ref.read(chatMessagesProvider.notifier).removeLastMessage();