diff --git a/joi/src/core/Select/index.tsx b/joi/src/core/Select/index.tsx index a8c3df528..ae5111fc1 100644 --- a/joi/src/core/Select/index.tsx +++ b/joi/src/core/Select/index.tsx @@ -7,7 +7,7 @@ import './styles.scss' import { twMerge } from 'tailwind-merge' type Props = { - options?: { name: string; value: string }[] + options?: { name: string; value: string; recommend?: boolean }[] open?: boolean block?: boolean value?: string @@ -62,9 +62,16 @@ const Select = ({ className="select__item" value={item.value} > - - {item.name} - +
+ + {item.name} + + {item.recommend && ( + + Recommended + + )} +
diff --git a/web/helpers/atoms/App.atom.ts b/web/helpers/atoms/App.atom.ts index 54905a5b0..1d9b9e31b 100644 --- a/web/helpers/atoms/App.atom.ts +++ b/web/helpers/atoms/App.atom.ts @@ -10,6 +10,13 @@ export const defaultJanDataFolderAtom = atom('') export const LocalEngineDefaultVariantAtom = atom('') +export const RecommendEngineVariantAtom = atomWithStorage( + 'recommendEngineVariant', + '', + undefined, + { getOnInit: true } +) + const SHOW_RIGHT_PANEL = 'showRightPanel' // Store panel atom diff --git a/web/screens/Settings/Engines/LocalEngineSettings.tsx b/web/screens/Settings/Engines/LocalEngineSettings.tsx index 49ef2fbec..e8e375b90 100644 --- a/web/screens/Settings/Engines/LocalEngineSettings.tsx +++ b/web/screens/Settings/Engines/LocalEngineSettings.tsx @@ -29,7 +29,10 @@ import ExtensionSetting from '../ExtensionSetting' import DeleteEngineVariant from './DeleteEngineVariant' -import { LocalEngineDefaultVariantAtom } from '@/helpers/atoms/App.atom' +import { + LocalEngineDefaultVariantAtom, + RecommendEngineVariantAtom, +} from '@/helpers/atoms/App.atom' import { showScrollBarAtom } from '@/helpers/atoms/Setting.atom' const os = () => { switch (PLATFORM) { @@ -60,6 +63,10 @@ const LocalEngineSettings = ({ engine }: { engine: InferenceEngine }) => { >(new Map()) const { stopModel } = useActiveModel() + const [recommendEngineVariant, setRecommendEngineVariant] = useAtom( + RecommendEngineVariantAtom + ) + const isEngineUpdated = latestReleasedEngine && latestReleasedEngine.some((item) => @@ -85,6 +92,7 @@ const LocalEngineSettings = ({ engine }: { engine: InferenceEngine }) => { .map((x: any) => ({ name: x.name, value: x.name, + recommend: recommendEngineVariant === x.name, })) const installedEngineByVersion = installedEngines?.filter( @@ -107,7 +115,10 @@ const LocalEngineSettings = ({ engine }: { engine: InferenceEngine }) => { if (defaultEngineVariant?.variant) { setSelectedVariants(defaultEngineVariant.variant || '') } - }, [defaultEngineVariant, setSelectedVariants]) + if (!recommendEngineVariant.length) { + setRecommendEngineVariant(defaultEngineVariant?.variant || '') + } + }, [defaultEngineVariant, setSelectedVariants, setRecommendEngineVariant]) const handleEngineUpdate = useCallback( async (event: { id: string; type: DownloadEvent; percent: number }) => {