diff --git a/web/screens/Hub/ModelList/ModelHeader/index.tsx b/web/screens/Hub/ModelList/ModelHeader/index.tsx index 3a88a93d8..fea3dd3a6 100644 --- a/web/screens/Hub/ModelList/ModelHeader/index.tsx +++ b/web/screens/Hub/ModelList/ModelHeader/index.tsx @@ -1,4 +1,4 @@ -import { useCallback } from 'react' +import { useCallback, useMemo } from 'react' import { ModelSource } from '@janhq/core' @@ -20,6 +20,8 @@ import { toGigabytes } from '@/utils/converter' import { extractModelName } from '@/utils/modelSource' +import { fuzzySearch } from '@/utils/search' + import { mainViewStateAtom } from '@/helpers/atoms/App.atom' import { assistantsAtom } from '@/helpers/atoms/Assistant.atom' import { serverEnabledAtom } from '@/helpers/atoms/LocalServer.atom' @@ -66,6 +68,11 @@ const ModelItemHeader = ({ model, onSelectedModel }: Props) => { const isDownloaded = downloadedModels.some((md) => model.models.some((m) => m.id === md.id) ) + const defaultModel = useMemo(() => { + return model.models?.find( + (e) => e.id.includes('q4-km') || fuzzySearch('q4km', e.id) + ) + }, [model]) let downloadButton = (
@@ -76,19 +83,21 @@ const ModelItemHeader = ({ model, onSelectedModel }: Props) => { Download
({ name: (
{e.id} - - Default - + {e.id === defaultModel?.id && ( + + Default + + )}
), value: e.id, diff --git a/web/screens/Hub/ModelList/ModelItem/index.tsx b/web/screens/Hub/ModelList/ModelItem/index.tsx index b2f0b7e8a..42e1b74f2 100644 --- a/web/screens/Hub/ModelList/ModelItem/index.tsx +++ b/web/screens/Hub/ModelList/ModelItem/index.tsx @@ -10,6 +10,8 @@ import ModelLabel from '@/containers/ModelLabel' import ModelItemHeader from '@/screens/Hub/ModelList/ModelHeader' +import { markdownComponents } from '@/screens/Thread/ThreadCenterPanel/TextMessage/MarkdownUtils' + import { toGigabytes } from '@/utils/converter' import { extractDescription } from '@/utils/modelSource' import '@/styles/components/model.scss' @@ -31,7 +33,10 @@ const ModelItem: React.FC = ({ model, onSelectedModel }) => {
- + {extractDescription(model.metadata?.description) || '-'}
diff --git a/web/screens/Thread/ThreadCenterPanel/TextMessage/MarkdownTextMessage.tsx b/web/screens/Thread/ThreadCenterPanel/TextMessage/MarkdownTextMessage.tsx index c54777519..aeebf0c60 100644 --- a/web/screens/Thread/ThreadCenterPanel/TextMessage/MarkdownTextMessage.tsx +++ b/web/screens/Thread/ThreadCenterPanel/TextMessage/MarkdownTextMessage.tsx @@ -20,6 +20,8 @@ import { useClipboard } from '@/hooks/useClipboard' import { getLanguageFromExtension } from '@/utils/codeLanguageExtension' +import { markdownComponents } from './MarkdownUtils' + interface Props { text: string isUser?: boolean @@ -222,6 +224,7 @@ export const MarkdownTextMessage = memo( wrapCodeBlocksWithoutVisit, ].filter((e) => !!e) as PluggableList } + components={markdownComponents} > {preprocessMarkdown(text)} diff --git a/web/screens/Thread/ThreadCenterPanel/TextMessage/MarkdownUtils.tsx b/web/screens/Thread/ThreadCenterPanel/TextMessage/MarkdownUtils.tsx new file mode 100644 index 000000000..c720dded5 --- /dev/null +++ b/web/screens/Thread/ThreadCenterPanel/TextMessage/MarkdownUtils.tsx @@ -0,0 +1,14 @@ +import { Components } from 'react-markdown' + +export const markdownComponents: Partial = { + a: ({ href, children, ...props }) => ( + + {children} + + ), +}