From 30b080efbd5c255027a57541fa9b069badffd1b7 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Thu, 17 Jul 2025 13:39:11 +0800 Subject: [PATCH] fix: handle optional list length in DraggableVirtualList and update padding in QuickPanel --- .../CodeBlockView/HtmlArtifactsPopup.tsx | 3 +- .../components/DraggableList/virtual-list.tsx | 2 +- .../src/components/QuickPanel/view.tsx | 2 +- src/renderer/src/config/prompts.ts | 1 + src/renderer/src/i18n/locales/en-us.json | 8 +- src/renderer/src/i18n/locales/ja-jp.json | 8 +- src/renderer/src/i18n/locales/ru-ru.json | 8 +- src/renderer/src/i18n/locales/zh-cn.json | 14 ++- src/renderer/src/i18n/locales/zh-tw.json | 10 +- .../src/pages/home/Inputbar/Inputbar.tsx | 2 +- .../pages/knowledge/items/KnowledgeUrls.tsx | 6 +- src/renderer/src/pages/memory/index.tsx | 2 - .../AssistantMemorySettings.tsx | 7 +- .../MemorySettings/MemorySettings.tsx | 112 +++++++++++------- .../src/pages/translate/TranslatePage.tsx | 16 +-- 15 files changed, 115 insertions(+), 86 deletions(-) diff --git a/src/renderer/src/components/CodeBlockView/HtmlArtifactsPopup.tsx b/src/renderer/src/components/CodeBlockView/HtmlArtifactsPopup.tsx index 5e491c4052..98c90d4faf 100644 --- a/src/renderer/src/components/CodeBlockView/HtmlArtifactsPopup.tsx +++ b/src/renderer/src/components/CodeBlockView/HtmlArtifactsPopup.tsx @@ -226,10 +226,11 @@ const StyledModal = styled(Modal)<{ $isFullscreen?: boolean }>` } .ant-modal-header { - padding: 10px 12px !important; + padding: 10px !important; border-bottom: 1px solid var(--color-border); background: var(--color-background); margin-bottom: 0 !important; + border-radius: 0 !important; } ` diff --git a/src/renderer/src/components/DraggableList/virtual-list.tsx b/src/renderer/src/components/DraggableList/virtual-list.tsx index b8e51642e9..78b4c4a697 100644 --- a/src/renderer/src/components/DraggableList/virtual-list.tsx +++ b/src/renderer/src/components/DraggableList/virtual-list.tsx @@ -82,7 +82,7 @@ function DraggableVirtualList({ const parentRef = useRef(null) const virtualizer = useVirtualizer({ - count: list.length, + count: list?.length ?? 0, getScrollElement: useCallback(() => parentRef.current, []), getItemKey: itemKey, estimateSize: useCallback(() => 50, []), diff --git a/src/renderer/src/components/QuickPanel/view.tsx b/src/renderer/src/components/QuickPanel/view.tsx index 37fefdf3b2..dae10e9260 100644 --- a/src/renderer/src/components/QuickPanel/view.tsx +++ b/src/renderer/src/components/QuickPanel/view.tsx @@ -611,7 +611,7 @@ const QuickPanelContainer = styled.div<{ left: 0; right: 0; width: 100%; - padding: 0 30px 0 30px; + padding: 0 35px 0 35px; transform: translateY(-100%); transform-origin: bottom; transition: max-height 0.2s ease; diff --git a/src/renderer/src/config/prompts.ts b/src/renderer/src/config/prompts.ts index ead2dc1333..1e6d3bf60b 100644 --- a/src/renderer/src/config/prompts.ts +++ b/src/renderer/src/config/prompts.ts @@ -410,6 +410,7 @@ export const REFERENCE_PROMPT = `Please answer the question based on the referen - Please cite the context at the end of sentences when appropriate. - Please use the format of citation number [number] to reference the context in corresponding parts of your answer. - If a sentence comes from multiple contexts, please list all relevant citation numbers, e.g., [1][2]. Remember not to group citations at the end but list them in the corresponding parts of your answer. +- If all reference content is not relevant to the user's question, please answer based on your knowledge. ## My question is: diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 20aa889fff..2a3bdd8c31 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -460,7 +460,8 @@ "swap": "Swap", "topics": "Topics", "warning": "Warning", - "you": "You" + "you": "You", + "i_know": "I know" }, "docs": { "title": "Docs" @@ -2308,7 +2309,7 @@ }, "provider": "OCR Provider", "provider_placeholder": "Choose an OCR provider", - "title": "OCR" + "title": "OCR Settings" }, "preprocess": { "provider": "Pre Process Provider", @@ -2557,7 +2558,8 @@ "please_select_embedding_model": "Please select an embedding model", "select_embedding_model_placeholder": "Select Embedding Model", "embedding_dimensions": "Embedding Dimensions", - "stored_memories": "Stored Memories" + "stored_memories": "Stored Memories", + "global_memory_description": "To use memory features, please enable global memory in assistant settings." } } } diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index a58faf34f2..0bf8f99735 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -460,7 +460,8 @@ "swap": "交換", "topics": "トピック", "warning": "警告", - "you": "あなた" + "you": "あなた", + "i_know": "わかりました" }, "docs": { "title": "ドキュメント" @@ -2455,6 +2456,7 @@ "visualization": "可視化" }, "memory": { + "title": "グローバルメモリ", "add_memory": "メモリーを追加", "edit_memory": "メモリーを編集", "memory_content": "メモリー内容", @@ -2476,7 +2478,6 @@ "user": "ユーザー", "content": "内容", "score": "スコア", - "title": "メモリー", "memories_description": "{{total}}件中{{count}}件のメモリーを表示", "search_placeholder": "メモリーを検索...", "start_date": "開始日", @@ -2557,7 +2558,8 @@ "please_select_embedding_model": "埋め込みモデルを選択してください", "select_embedding_model_placeholder": "埋め込みモデルを選択", "embedding_dimensions": "埋め込み次元", - "stored_memories": "保存された記憶" + "stored_memories": "保存された記憶", + "global_memory_description": "メモリ機能を使用するには、アシスタント設定でグローバルメモリを有効にしてください。" } } } diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index f9831b64ef..bf053db843 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -460,7 +460,8 @@ "swap": "Поменять местами", "topics": "Топики", "warning": "Предупреждение", - "you": "Вы" + "you": "Вы", + "i_know": "Я понял" }, "docs": { "title": "Документация" @@ -2455,6 +2456,7 @@ "visualization": "Визуализация" }, "memory": { + "title": "Глобальная память", "add_memory": "Добавить память", "edit_memory": "Редактировать память", "memory_content": "Содержимое памяти", @@ -2531,7 +2533,6 @@ "total_memories": "всего воспоминаний", "default": "По умолчанию", "custom": "Пользовательский", - "title": "Воспоминания", "description": "Память позволяет хранить и управлять информацией о ваших взаимодействиях с ассистентом. Вы можете добавлять, редактировать и удалять воспоминания, а также фильтровать и искать их.", "global_memory_enabled": "Глобальная память включена", "global_memory": "Глобальная память", @@ -2557,7 +2558,8 @@ "please_select_embedding_model": "Пожалуйста, выберите модель для внедрения", "select_embedding_model_placeholder": "Выберите модель внедрения", "embedding_dimensions": "Размерность вложения", - "stored_memories": "Запасённые воспоминания" + "stored_memories": "Запасённые воспоминания", + "global_memory_description": "Для использования функций памяти необходимо включить глобальную память в настройках ассистента." } } } diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index f520aee3d7..3c9ebb0f51 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -460,7 +460,8 @@ "swap": "交换", "topics": "话题", "warning": "警告", - "you": "用户" + "you": "用户", + "i_know": "我知道了" }, "docs": { "title": "帮助文档" @@ -2308,7 +2309,7 @@ }, "provider": "OCR 服务商", "provider_placeholder": "选择一个 OCR 服务商", - "title": "OCR" + "title": "OCR 文字识别" }, "preprocess": { "provider": "文档预处理服务商", @@ -2455,6 +2456,7 @@ "visualization": "可视化" }, "memory": { + "title": "全局记忆", "settings": "设置", "statistics": "统计", "search": "搜索", @@ -2464,8 +2466,8 @@ "memory_content": "记忆内容", "please_enter_memory": "请输入记忆内容", "memory_placeholder": "输入记忆内容...", - "user_id": "用户ID", - "user_id_placeholder": "输入用户ID(可选)", + "user_id": "用户 ID", + "user_id_placeholder": "输入用户 ID(可选)", "load_failed": "加载记忆失败", "add_success": "记忆添加成功", "add_failed": "添加记忆失败", @@ -2480,7 +2482,6 @@ "user": "用户", "content": "内容", "score": "分数", - "title": "记忆", "memories_description": "显示 {{count}} / {{total}} 条记忆", "search_placeholder": "搜索记忆...", "start_date": "开始日期", @@ -2557,7 +2558,8 @@ "please_select_embedding_model": "请选择嵌入模型", "select_embedding_model_placeholder": "选择嵌入模型", "embedding_dimensions": "嵌入维度", - "stored_memories": "已存储记忆" + "stored_memories": "已存储记忆", + "global_memory_description": "需要开启助手设置中的全局记忆才能使用" } } } diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index baaedbb2da..afc62bbcf8 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -460,7 +460,8 @@ "swap": "交換", "topics": "話題", "warning": "警告", - "you": "您" + "you": "您", + "i_know": "我知道了" }, "docs": { "title": "說明文件" @@ -2308,7 +2309,7 @@ }, "provider": "OCR 供應商", "provider_placeholder": "選擇一個OCR服務提供商", - "title": "光學字符識別" + "title": "OCR 文字識別" }, "preprocess": { "provider": "前置處理供應商", @@ -2455,6 +2456,7 @@ "visualization": "視覺化" }, "memory": { + "title": "全域記憶", "add_memory": "新增記憶", "edit_memory": "編輯記憶", "memory_content": "記憶內容", @@ -2476,7 +2478,6 @@ "user": "使用者", "content": "內容", "score": "分數", - "title": "記憶", "memories_description": "顯示 {{count}} / {{total}} 條記憶", "search_placeholder": "搜尋記憶...", "start_date": "開始日期", @@ -2557,7 +2558,8 @@ "please_select_embedding_model": "請選擇一個嵌入模型", "select_embedding_model_placeholder": "選擇嵌入模型", "embedding_dimensions": "嵌入維度", - "stored_memories": "儲存的記憶" + "stored_memories": "儲存的記憶", + "global_memory_description": "需要開啟助手設定中的全域記憶才能使用" } } } diff --git a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx index 5c1acab130..94dcd72ee8 100644 --- a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx +++ b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx @@ -960,7 +960,7 @@ const InputBarContainer = styled.div` border: 0.5px solid var(--color-border); transition: all 0.2s ease; position: relative; - border-radius: 20px; + border-radius: 17px; padding-top: 8px; // 为拖动手柄留出空间 background-color: var(--color-background-opacity); diff --git a/src/renderer/src/pages/knowledge/items/KnowledgeUrls.tsx b/src/renderer/src/pages/knowledge/items/KnowledgeUrls.tsx index 4e3dcd80b0..eee852f957 100644 --- a/src/renderer/src/pages/knowledge/items/KnowledgeUrls.tsx +++ b/src/renderer/src/pages/knowledge/items/KnowledgeUrls.tsx @@ -6,7 +6,7 @@ import { useKnowledge } from '@renderer/hooks/useKnowledge' import FileItem from '@renderer/pages/files/FileItem' import { getProviderName } from '@renderer/services/ProviderService' import { KnowledgeBase, KnowledgeItem } from '@renderer/types' -import { Button, Dropdown, message, Tooltip } from 'antd' +import { Button, Dropdown, Tooltip } from 'antd' import dayjs from 'dayjs' import { Plus } from 'lucide-react' import { FC } from 'react' @@ -72,7 +72,7 @@ const KnowledgeUrls: FC = ({ selectedBase }) => { if (!urlItems.find((item) => item.content === url.trim())) { addUrl(url.trim()) } else { - message.success(t('knowledge.url_added')) + window.message.success(t('knowledge.url_added')) } } catch (e) { // Skip invalid URLs silently @@ -143,7 +143,7 @@ const KnowledgeUrls: FC = ({ selectedBase }) => { label: t('common.copy'), onClick: () => { navigator.clipboard.writeText(item.content as string) - message.success(t('message.copied')) + window.message.success(t('message.copied')) } } ] diff --git a/src/renderer/src/pages/memory/index.tsx b/src/renderer/src/pages/memory/index.tsx index bd5af9ad52..e4ea9020ea 100644 --- a/src/renderer/src/pages/memory/index.tsx +++ b/src/renderer/src/pages/memory/index.tsx @@ -539,8 +539,6 @@ const MemoriesPage = () => { title: t('memory.delete_user_confirm_title'), content: t('memory.delete_user_confirm_content', { user: userId }), icon: , - okText: t('common.yes'), - cancelText: t('common.no'), okType: 'danger', onOk: async () => { try { diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantMemorySettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantMemorySettings.tsx index a424617f17..6fb3e30ef2 100644 --- a/src/renderer/src/pages/settings/AssistantSettings/AssistantMemorySettings.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantMemorySettings.tsx @@ -1,10 +1,11 @@ -import { InfoCircleOutlined, SettingOutlined } from '@ant-design/icons' +import { InfoCircleOutlined } from '@ant-design/icons' import { Box } from '@renderer/components/Layout' import MemoryService from '@renderer/services/MemoryService' import { selectGlobalMemoryEnabled, selectMemoryConfig } from '@renderer/store/memory' import { Assistant, AssistantSettings } from '@renderer/types' import { Alert, Button, Card, Space, Switch, Tooltip, Typography } from 'antd' import { useForm } from 'antd/es/form/Form' +import { Settings2 } from 'lucide-react' import { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' @@ -78,9 +79,7 @@ const AssistantMemorySettings: React.FC = ({ assistant, updateAssistant, - +