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}
+
+ ),
+}