From d8f68a6056b57258eab3b011fe71a5e74fca56c7 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Mon, 3 Nov 2025 15:12:58 +0800 Subject: [PATCH] feat: initialize painting model with first available option and update default provider to 'cherryin' --- .../src/pages/paintings/NewApiPage.tsx | 7 +++++++ .../pages/paintings/PaintingsRoutePage.tsx | 20 +++++++++---------- src/renderer/src/store/migrate.ts | 1 + src/renderer/src/store/settings.ts | 2 +- src/renderer/src/types/index.ts | 2 +- 5 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/renderer/src/pages/paintings/NewApiPage.tsx b/src/renderer/src/pages/paintings/NewApiPage.tsx index eae48e5316..86571f446e 100644 --- a/src/renderer/src/pages/paintings/NewApiPage.tsx +++ b/src/renderer/src/pages/paintings/NewApiPage.tsx @@ -482,6 +482,13 @@ const NewApiPage: FC<{ Options: string[] }> = ({ Options }) => { } }, []) + // if painting.model is not set, set it to the first model in modelOptions + useEffect(() => { + if (!painting.model && modelOptions.length > 0) { + updatePaintingState({ model: modelOptions[0].value }) + } + }, [modelOptions, painting.model, updatePaintingState]) + return ( diff --git a/src/renderer/src/pages/paintings/PaintingsRoutePage.tsx b/src/renderer/src/pages/paintings/PaintingsRoutePage.tsx index 9c516560b6..aedd7a418e 100644 --- a/src/renderer/src/pages/paintings/PaintingsRoutePage.tsx +++ b/src/renderer/src/pages/paintings/PaintingsRoutePage.tsx @@ -3,6 +3,7 @@ import { isNewApiProvider } from '@renderer/config/providers' import { useAllProviders } from '@renderer/hooks/useProvider' import { useAppDispatch } from '@renderer/store' import { setDefaultPaintingProvider } from '@renderer/store/settings' +import { updateTab } from '@renderer/store/tabs' import type { PaintingProvider, SystemProviderId } from '@renderer/types' import type { FC } from 'react' import { useEffect, useMemo, useState } from 'react' @@ -25,11 +26,11 @@ const PaintingsRoutePage: FC = () => { const provider = params['*'] const dispatch = useAppDispatch() const providers = useAllProviders() - const Options = useMemo(() => { - return [...BASE_OPTIONS, ...providers.filter((p) => isNewApiProvider(p)).map((p) => p.id)] - }, [providers]) const [ovmsStatus, setOvmsStatus] = useState<'not-installed' | 'not-running' | 'running'>('not-running') + const Options = useMemo(() => [...BASE_OPTIONS, ...providers.filter(isNewApiProvider).map((p) => p.id)], [providers]) + const newApiProviders = useMemo(() => providers.filter(isNewApiProvider), [providers]) + useEffect(() => { const checkStatus = async () => { const status = await window.api.ovms.getStatus() @@ -44,25 +45,24 @@ const PaintingsRoutePage: FC = () => { logger.debug(`defaultPaintingProvider: ${provider}`) if (provider && validOptions.includes(provider)) { dispatch(setDefaultPaintingProvider(provider as PaintingProvider)) + dispatch(updateTab({ id: 'paintings', updates: { path: `/paintings/${provider}` } })) } }, [provider, dispatch, validOptions]) return ( - } /> + } /> } /> } /> } /> } /> } /> } /> - {/* new-api family providers are mounted dynamically below */} - {providers - .filter((p) => isNewApiProvider(p)) - .map((p) => ( - } /> - ))} } /> + {/* new-api family providers are mounted dynamically below */} + {newApiProviders.map((p) => ( + } /> + ))} ) } diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index a96f81e2d0..1a6d32106c 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -2788,6 +2788,7 @@ const migrateConfig = { try { addProvider(state, 'sophnet') state.llm.providers = moveProvider(state.llm.providers, 'sophnet', 17) + state.settings.defaultPaintingProvider = 'cherryin' return state } catch (error) { logger.error('migrate 170 error', error as Error) diff --git a/src/renderer/src/store/settings.ts b/src/renderer/src/store/settings.ts index eccaf733d8..45f521b3df 100644 --- a/src/renderer/src/store/settings.ts +++ b/src/renderer/src/store/settings.ts @@ -390,7 +390,7 @@ export const initialState: SettingsState = { localBackupSyncInterval: 0, localBackupMaxBackups: 0, localBackupSkipBackupFile: false, - defaultPaintingProvider: 'zhipu', + defaultPaintingProvider: 'cherryin', s3: { endpoint: '', region: '', diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index 28e0aff882..2026a935ab 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -280,7 +280,7 @@ export type PaintingParams = { providerId?: string } -export type PaintingProvider = 'zhipu' | 'aihubmix' | 'silicon' | 'dmxapi' | 'new-api' | 'ovms' +export type PaintingProvider = 'zhipu' | 'aihubmix' | 'silicon' | 'dmxapi' | 'new-api' | 'ovms' | 'cherryin' export interface Painting extends PaintingParams { model?: string