diff --git a/src/renderer/src/aiCore/clients/anthropic/AnthropicAPIClient.ts b/src/renderer/src/aiCore/clients/anthropic/AnthropicAPIClient.ts index 465cdff5ac..2e148c6e53 100644 --- a/src/renderer/src/aiCore/clients/anthropic/AnthropicAPIClient.ts +++ b/src/renderer/src/aiCore/clients/anthropic/AnthropicAPIClient.ts @@ -192,7 +192,7 @@ export class AnthropicAPIClient extends BaseApiClient< const parts: MessageParam['content'] = [ { type: 'text', - text: getMainTextContent(message) + text: await this.getMessageContent(message) } ] diff --git a/src/renderer/src/config/models.ts b/src/renderer/src/config/models.ts index d9453cea34..6bd366617b 100644 --- a/src/renderer/src/config/models.ts +++ b/src/renderer/src/config/models.ts @@ -2469,6 +2469,10 @@ export function isGeminiReasoningModel(model?: Model): boolean { return false } + if (model.id.startsWith('gemini') && model.id.includes('thinking')) { + return true + } + if (model.id.includes('gemini-2.5')) { return true } diff --git a/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx b/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx index 2cdc9a684c..b20b62bbc9 100644 --- a/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx +++ b/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx @@ -31,7 +31,7 @@ const MessageErrorInfo: React.FC<{ block: ErrorMessageBlock }> = ({ block }) => } const Alert = styled(AntdAlert)` - margin: 0.5rem 0; + margin: 0.5rem 0 !important; padding: 10px; font-size: 12px; ` diff --git a/src/renderer/src/pages/home/Messages/CitationsList.tsx b/src/renderer/src/pages/home/Messages/CitationsList.tsx index 0c40f83ed6..8929ffd89c 100644 --- a/src/renderer/src/pages/home/Messages/CitationsList.tsx +++ b/src/renderer/src/pages/home/Messages/CitationsList.tsx @@ -53,17 +53,21 @@ const CitationsList: React.FC = ({ citations }) => { if (!count) return null const popoverContent = ( - +
{citations.map((citation) => ( {citation.type === 'websearch' ? ( - + + + ) : ( - + + + )} ))} - +
) return ( @@ -184,9 +188,7 @@ const KnowledgeCitation: React.FC<{ citation: Citation }> = ({ citation }) => { {citation.number} {citation.content && } - - {citation.content && truncateText(citation.content, 100)} - + {citation.content && citation.content} ) @@ -196,7 +198,7 @@ const OpenButton = styled(Button)` display: flex; align-items: center; padding: 3px 8px; - margin-bottom: 8px; + margin: 8px 0; align-self: flex-start; font-size: 12px; background-color: var(--color-background-soft); @@ -318,10 +320,15 @@ const WebSearchCardContent = styled.div` ` const PopoverContent = styled.div` - max-width: min(340px, 60vw); + max-width: min(400px, 60vw); max-height: 60vh; padding: 0 12px; ` + +const KnowledgePopoverContent = styled(PopoverContent)` + max-width: 800px; +` + const PopoverContentItem = styled.div` border-bottom: 0.5px solid var(--color-border); &:last-child { diff --git a/src/renderer/src/pages/knowledge/components/KnowledgeSearchPopup.tsx b/src/renderer/src/pages/knowledge/components/KnowledgeSearchPopup.tsx index f9018d7f49..21be188ffc 100644 --- a/src/renderer/src/pages/knowledge/components/KnowledgeSearchPopup.tsx +++ b/src/renderer/src/pages/knowledge/components/KnowledgeSearchPopup.tsx @@ -4,9 +4,9 @@ import { HStack } from '@renderer/components/Layout' import { TopView } from '@renderer/components/TopView' import { searchKnowledgeBase } from '@renderer/services/KnowledgeService' import { FileType, KnowledgeBase } from '@renderer/types' -import { Divider, Input, List, message, Modal, Spin, Tooltip, Typography } from 'antd' +import { Divider, Input, InputRef, List, message, Modal, Spin, Tooltip, Typography } from 'antd' import { Search } from 'lucide-react' -import { useState } from 'react' +import { useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' @@ -26,6 +26,7 @@ const PopupContainer: React.FC = ({ base, resolve }) => { const [results, setResults] = useState>([]) const [searchKeyword, setSearchKeyword] = useState('') const { t } = useTranslation() + const searchInputRef = useRef(null) const handleSearch = async (value: string) => { if (!value.trim()) { @@ -82,6 +83,12 @@ const PopupContainer: React.FC = ({ base, resolve }) => { } } + useEffect(() => { + if (searchInputRef.current) { + searchInputRef.current.focus() + } + }, []) + return ( = ({ base, resolve }) => { }}>