diff --git a/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx b/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx index 74ff62f4..bccba844 100644 --- a/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx +++ b/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx @@ -7,13 +7,39 @@ import { geminiSettings } from '../../utils/settings-manager'; import { Tooltip, Select } from 'tdesign-react'; import { InfoCircleIcon } from 'tdesign-icons-react'; -export const IMAGE_MODEL_OPTIONS = [ +// VIP models - shown at top +export const IMAGE_MODEL_VIP_OPTIONS = [ + { label: 'gemini-3-pro-image-preview-vip (nano-banana-2-vip)', value: 'gemini-3-pro-image-preview-vip' }, + { label: 'gemini-3-pro-image-preview-2k-vip (nano-banana-2-2k-vip)', value: 'gemini-3-pro-image-preview-2k-vip' }, + { label: 'gemini-3-pro-image-preview-4k-vip (nano-banana-2-4k-vip)', value: 'gemini-3-pro-image-preview-4k-vip' }, + { label: 'gemini-2.5-flash-image-vip (nano-banana-vip)', value: 'gemini-2.5-flash-image-vip' }, +]; + +// Additional models - shown in "More" section +export const IMAGE_MODEL_MORE_OPTIONS = [ { label: 'gemini-3-pro-image-preview (nano-banana-2)', value: 'gemini-3-pro-image-preview' }, + { label: 'gemini-2.5-flash-image (nano-banana)', value: 'gemini-2.5-flash-image' }, { label: 'gemini-3-pro-image-preview-hd (nano-banana-2-hd)', value: 'gemini-3-pro-image-preview-hd' }, { label: 'gemini-3-pro-image-preview-2k (nano-banana-2-2k)', value: 'gemini-3-pro-image-preview-2k' }, { label: 'gemini-3-pro-image-preview-4k (nano-banana-2-4k)', value: 'gemini-3-pro-image-preview-4k' }, - { label: 'gemini-2.5-flash-image-vip (nano-banana-vip)', value: 'gemini-2.5-flash-image-vip' }, - { label: 'gemini-2.5-flash-image (nano-banana)', value: 'gemini-2.5-flash-image' }, +]; + +// Combined options for backward compatibility (flat list) +export const IMAGE_MODEL_OPTIONS = [ + ...IMAGE_MODEL_VIP_OPTIONS, + ...IMAGE_MODEL_MORE_OPTIONS, +]; + +// Grouped options for Select with "More" section +export const IMAGE_MODEL_GROUPED_OPTIONS = [ + { + group: '推荐', + children: IMAGE_MODEL_VIP_OPTIONS, + }, + { + group: '更多', + children: IMAGE_MODEL_MORE_OPTIONS, + }, ]; export const VIDEO_MODEL_OPTIONS = [ @@ -44,7 +70,7 @@ export const SettingsDialog = ({ const config = geminiSettings.get(); setApiKey(config.apiKey || ''); setBaseUrl(config.baseUrl || 'https://api.tu-zi.com/v1'); - setImageModelName(config.imageModelName || 'gemini-2.5-flash-image-vip'); + setImageModelName(config.imageModelName || 'gemini-3-pro-image-preview-vip'); setVideoModelName(config.videoModelName || 'veo3'); } }, [appState.openSettings]); @@ -54,7 +80,7 @@ export const SettingsDialog = ({ geminiSettings.update({ apiKey: apiKey.trim(), baseUrl: baseUrl.trim() || 'https://api.tu-zi.com/v1', - imageModelName: imageModelName.trim() || 'gemini-2.5-flash-image-vip', + imageModelName: imageModelName.trim() || 'gemini-3-pro-image-preview-vip', videoModelName: videoModelName.trim() || 'veo3', }); @@ -120,10 +146,10 @@ export const SettingsDialog = ({ className="settings-dialog__select" value={imageModelName} onChange={(value) => setImageModelName(value as string)} - options={IMAGE_MODEL_OPTIONS} + options={IMAGE_MODEL_GROUPED_OPTIONS} filterable creatable - placeholder="gemini-2.5-flash-image" + placeholder="gemini-3-pro-image-preview-vip" />
diff --git a/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx b/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx index b33e5db6..1663e688 100644 --- a/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx +++ b/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx @@ -7,7 +7,7 @@ import { useTaskQueue } from '../../hooks/useTaskQueue'; import { TaskType } from '../../types/task.types'; import { MessagePlugin, Select } from 'tdesign-react'; import { useGenerationHistory } from '../../hooks/useGenerationHistory'; -import { IMAGE_MODEL_OPTIONS } from '../settings-dialog/settings-dialog'; +import { IMAGE_MODEL_GROUPED_OPTIONS } from '../settings-dialog/settings-dialog'; import { useGenerationState, useKeyboardShortcuts, @@ -225,7 +225,7 @@ const AIImageGeneration = ({ // Get current image model from settings const settings = geminiSettings.get(); - const currentImageModel = settings.imageModelName || 'gemini-2.5-flash-image-vip'; + const currentImageModel = settings.imageModelName || 'gemini-3-pro-image-preview-vip'; for (let i = 0; i < count; i++) { const taskParams = { @@ -363,7 +363,7 @@ const AIImageGeneration = ({