From c8c0d22787bc11a3b4b4900c332df7f6d3d4ae1f Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 19 Aug 2025 10:40:45 +0800 Subject: [PATCH] refactor(Inputbar): remove MentionModelsInput and KnowledgeBaseInput components; update InputbarTools and Inputbar to handle model mentions and knowledge base selections directly. Update icons to use Hammer instead of SquareTerminal in various components. Enhance i18n translations for clear actions across multiple languages. --- .../src/components/Tab/TabContainer.tsx | 4 +- src/renderer/src/i18n/locales/en-us.json | 5 +++ src/renderer/src/i18n/locales/ja-jp.json | 5 +++ src/renderer/src/i18n/locales/ru-ru.json | 5 +++ src/renderer/src/i18n/locales/zh-cn.json | 5 +++ src/renderer/src/i18n/locales/zh-tw.json | 5 +++ src/renderer/src/i18n/translate/el-gr.json | 11 ++++- src/renderer/src/i18n/translate/es-es.json | 11 ++++- src/renderer/src/i18n/translate/fr-fr.json | 11 ++++- src/renderer/src/i18n/translate/pt-pt.json | 11 ++++- .../src/pages/home/Inputbar/Inputbar.tsx | 30 +------------ .../src/pages/home/Inputbar/InputbarTools.tsx | 12 +++-- .../home/Inputbar/KnowledgeBaseButton.tsx | 25 ++++++++--- .../pages/home/Inputbar/MCPToolsButton.tsx | 12 ++--- .../home/Inputbar/MentionModelsButton.tsx | 27 +++++++++++- .../home/Inputbar/MentionModelsInput.tsx | 44 ------------------- .../src/pages/settings/SettingsPage.tsx | 4 +- 17 files changed, 128 insertions(+), 99 deletions(-) delete mode 100644 src/renderer/src/pages/home/Inputbar/MentionModelsInput.tsx diff --git a/src/renderer/src/components/Tab/TabContainer.tsx b/src/renderer/src/components/Tab/TabContainer.tsx index 49882506ca..4fdeff7e72 100644 --- a/src/renderer/src/components/Tab/TabContainer.tsx +++ b/src/renderer/src/components/Tab/TabContainer.tsx @@ -14,6 +14,7 @@ import { Tooltip } from 'antd' import { FileSearch, Folder, + Hammer, Home, Languages, LayoutGrid, @@ -22,7 +23,6 @@ import { Palette, Settings, Sparkle, - SquareTerminal, Sun, Terminal, X @@ -53,7 +53,7 @@ const getTabIcon = (tabId: string): React.ReactNode | undefined => { case 'knowledge': return case 'mcp': - return + return case 'files': return case 'settings': diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 7b76898796..0290fb3cb4 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -2703,6 +2703,11 @@ }, "input": { "auto_translate_with_space": "Quickly translate with 3 spaces", + "clear": { + "all": "[to be translated]:清除", + "knowledge_base": "Clear selected knowledge bases", + "models": "Clear all models" + }, "show_translate_confirm": "Show translation confirmation dialog", "target_language": { "chinese": "Simplified Chinese", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index b3cecefdfb..7fedf85666 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -2703,6 +2703,11 @@ }, "input": { "auto_translate_with_space": "スペースを3回押して翻訳", + "clear": { + "all": "[to be translated]:清除", + "knowledge_base": "選択された知識ベースをクリア", + "models": "すべてのモデルをクリア" + }, "show_translate_confirm": "翻訳確認ダイアログを表示", "target_language": { "chinese": "簡体字中国語", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index fb9e1fb802..88305e6dd4 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -2703,6 +2703,11 @@ }, "input": { "auto_translate_with_space": "Быстрый перевод с помощью 3-х пробелов", + "clear": { + "all": "[to be translated]:清除", + "knowledge_base": "Очистить выбранные базы знаний", + "models": "Очистить все модели" + }, "show_translate_confirm": "Показать диалоговое окно подтверждения перевода", "target_language": { "chinese": "Китайский упрощенный", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 9b7d947a13..2207714dba 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -2703,6 +2703,11 @@ }, "input": { "auto_translate_with_space": "3 个空格快速翻译", + "clear": { + "all": "清除", + "knowledge_base": "清除选中的知识库", + "models": "清除@的所有模型" + }, "show_translate_confirm": "显示翻译确认对话框", "target_language": { "chinese": "简体中文", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 4f148057ee..366560bbb8 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -2703,6 +2703,11 @@ }, "input": { "auto_translate_with_space": "快速敲擊 3 次空格翻譯", + "clear": { + "all": "[to be translated]:清除", + "knowledge_base": "清除選中的知識庫", + "models": "清除@的所有模型" + }, "show_translate_confirm": "顯示翻譯確認對話框", "target_language": { "chinese": "簡體中文", diff --git a/src/renderer/src/i18n/translate/el-gr.json b/src/renderer/src/i18n/translate/el-gr.json index 7fe1a72273..1c02ec896a 100644 --- a/src/renderer/src/i18n/translate/el-gr.json +++ b/src/renderer/src/i18n/translate/el-gr.json @@ -1578,6 +1578,7 @@ "style_type_tip": "Ο τύπος στυλ για την επεξεργασμένη εικόνα, ισχύει μόνο για την έκδοση V_2 και νεότερες" }, "generate": { + "height": "Ύψος", "magic_prompt_option_tip": "Έξυπνη βελτιστοποίηση της προτροπής για βελτίωση των αποτελεσμάτων", "model_tip": "Έκδοση μοντέλου: Το V2 είναι το τελευταίο μοντέλο διεπαφής, το V2A είναι γρήγορο μοντέλο, το V_1 είναι το αρχικό μοντέλο και το _TURBO είναι η επιταχυνόμενη έκδοση", "negative_prompt_tip": "Περιγράψτε στοιχεία που δεν θέλετε να εμφανίζονται στην εικόνα, υποστηρίζεται μόνο στις εκδόσεις V_1, V_1_TURBO, V_2 και V_2_TURBO", @@ -1585,8 +1586,11 @@ "person_generation": "Δημιουργία προσώπου", "person_generation_tip": "Επιτρέπει στο μοντέλο να δημιουργεί εικόνες προσώπων", "rendering_speed_tip": "Ελέγχει την ισορροπία μεταξύ ταχύτητας και ποιότητας απόδοσης, ισχύει μόνο για την έκδοση V_3", + "safety_tolerance": "Ασφάλεια", + "safety_tolerance_tip": "Έλεγχος της ασφάλειας της δημιουργίας εικόνας, ισχύει μόνο για την έκδοση FLUX.1-Kontext-pro", "seed_tip": "Ελέγχει την τυχαιότητα της δημιουργίας εικόνας, χρησιμοποιείται για να επαναληφθεί το ίδιο αποτέλεσμα", - "style_type_tip": "Στυλ δημιουργίας εικόνας, ισχύει μόνο για την έκδοση V_2 και μεταγενέστερες" + "style_type_tip": "Στυλ δημιουργίας εικόνας, ισχύει μόνο για την έκδοση V_2 και μεταγενέστερες", + "width": "Πλάτος" }, "generated_image": "Δημιουργία εικόνας", "go_to_settings": "Πηγαίνετε στις ρυθμίσεις", @@ -2699,6 +2703,11 @@ }, "input": { "auto_translate_with_space": "Μετάφραση με τρεις γρήγορες πιστώσεις", + "clear": { + "all": "Εκκαθάριση", + "knowledge_base": "Εκκαθάριση επιλεγμένων βάσεων γνώσης", + "models": "Εκκαθάριση όλων των μοντέλων" + }, "show_translate_confirm": "Εμφάνιση παραθύρου επιβεβαίωσης μετάφρασης", "target_language": { "chinese": "Σινογραμματικό", diff --git a/src/renderer/src/i18n/translate/es-es.json b/src/renderer/src/i18n/translate/es-es.json index c6a3539626..e3c0fe8086 100644 --- a/src/renderer/src/i18n/translate/es-es.json +++ b/src/renderer/src/i18n/translate/es-es.json @@ -1578,6 +1578,7 @@ "style_type_tip": "Estilo de la imagen editada, solo aplicable para la versión V_2 y posteriores" }, "generate": { + "height": "Altura", "magic_prompt_option_tip": "Optimización inteligente de indicaciones para mejorar los resultados de generación", "model_tip": "Versión del modelo: V2 es el modelo más reciente de la interfaz, V2A es un modelo rápido, V_1 es el modelo inicial y _TURBO es la versión acelerada", "negative_prompt_tip": "Describe elementos que no deseas en la imagen. Solo compatible con las versiones V_1, V_1_TURBO, V_2 y V_2_TURBO", @@ -1585,8 +1586,11 @@ "person_generation": "Generar Persona", "person_generation_tip": "Permite que el modelo genere imágenes de personas", "rendering_speed_tip": "Controla el equilibrio entre velocidad y calidad de renderizado, solo aplicable a la versión V_3", + "safety_tolerance": "Tolerancia de seguridad", + "safety_tolerance_tip": "Controla la tolerancia de seguridad en la generación de imágenes, solo aplicable a la versión FLUX.1-Kontext-pro", "seed_tip": "Controla la aleatoriedad en la generación de imágenes, útil para reproducir resultados idénticos", - "style_type_tip": "Estilo de generación de imágenes, solo aplicable para la versión V_2 y posteriores" + "style_type_tip": "Estilo de generación de imágenes, solo aplicable para la versión V_2 y posteriores", + "width": "Ancho" }, "generated_image": "Generar imagen", "go_to_settings": "Ir a configuración", @@ -2699,6 +2703,11 @@ }, "input": { "auto_translate_with_space": "Traducir con tres espacios rápidos", + "clear": { + "all": "Limpiar", + "knowledge_base": "Limpiar bases de conocimiento seleccionadas", + "models": "Limpiar todos los modelos" + }, "show_translate_confirm": "Mostrar diálogo de confirmación de traducción", "target_language": { "chinese": "Chino simplificado", diff --git a/src/renderer/src/i18n/translate/fr-fr.json b/src/renderer/src/i18n/translate/fr-fr.json index 21532f89e6..5af2601e4e 100644 --- a/src/renderer/src/i18n/translate/fr-fr.json +++ b/src/renderer/src/i18n/translate/fr-fr.json @@ -1578,6 +1578,7 @@ "style_type_tip": "Style de l'image après édition, uniquement applicable aux versions V_2 et ultérieures" }, "generate": { + "height": "Hauteur", "magic_prompt_option_tip": "Интеллектуальная оптимизация подсказок для улучшения результатов генерации", "model_tip": "Версия модели: V2 — это последняя модель API, V2A — быстрая модель, V_1 — первое поколение модели, _TURBO — ускоренная версия", "negative_prompt_tip": "Описывает элементы, которые вы не хотите видеть на изображении. Поддерживается только версиями V_1, V_1_TURBO, V_2 и V_2_TURBO", @@ -1585,8 +1586,11 @@ "person_generation": "Générer un personnage", "person_generation_tip": "Autoriser le modèle à générer des images de personnages", "rendering_speed_tip": "Contrôler l'équilibre entre la vitesse et la qualité du rendu, uniquement applicable à la version V_3", + "safety_tolerance": "Tolérance de sécurité", + "safety_tolerance_tip": "Contrôle la tolérance de sécurité dans la génération d'images, uniquement applicable à la version FLUX.1-Kontext-pro", "seed_tip": "Контролирует случайность генерации изображения, используется для воспроизведения одинаковых результатов", - "style_type_tip": "Стиль генерации изображения, применим к версии V_2 и выше" + "style_type_tip": "Стиль генерации изображения, применим к версии V_2 и выше", + "width": "Largeur" }, "generated_image": "Image générée", "go_to_settings": "Aller aux paramètres", @@ -2699,6 +2703,11 @@ }, "input": { "auto_translate_with_space": "Traduire en frappant rapidement 3 fois l'espace", + "clear": { + "all": "Effacer", + "knowledge_base": "Effacer les bases de connaissances sélectionnées", + "models": "Effacer tous les modèles" + }, "show_translate_confirm": "Afficher la boîte de dialogue de confirmation de traduction", "target_language": { "chinese": "Chinois simplifié", diff --git a/src/renderer/src/i18n/translate/pt-pt.json b/src/renderer/src/i18n/translate/pt-pt.json index 2333bd089a..162d9ae011 100644 --- a/src/renderer/src/i18n/translate/pt-pt.json +++ b/src/renderer/src/i18n/translate/pt-pt.json @@ -1578,6 +1578,7 @@ "style_type_tip": "Estilo da imagem editada, disponível apenas para a versão V_2 ou superior" }, "generate": { + "height": "[to be translated]:高度", "magic_prompt_option_tip": "Otimização inteligente do prompt para melhorar os resultados da geração", "model_tip": "Versão do modelo: V2 é o modelo mais recente da interface, V2A é o modelo rápido, V_1 é o modelo de primeira geração e _TURBO é a versão acelerada", "negative_prompt_tip": "Descreve elementos que você não deseja ver nas imagens; suportado apenas nas versões V_1, V_1_TURBO, V_2 e V_2_TURBO", @@ -1585,8 +1586,11 @@ "person_generation": "Gerar Personagem", "person_generation_tip": "Permite que o modelo gere imagens de personagens", "rendering_speed_tip": "Controla o equilíbrio entre velocidade e qualidade de renderização, aplicável apenas à versão V_3", + "safety_tolerance": "[to be translated]:安全容忍度", + "safety_tolerance_tip": "[to be translated]:控制图像生成的安全容忍度,仅适用于 FLUX.1-Kontext-pro 版本", "seed_tip": "Controla a aleatoriedade na geração das imagens, usado para reproduzir resultados idênticos", - "style_type_tip": "Estilo de geração da imagem, aplicável apenas às versões V_2 e superiores" + "style_type_tip": "Estilo de geração da imagem, aplicável apenas às versões V_2 e superiores", + "width": "[to be translated]:宽度" }, "generated_image": "Imagem gerada", "go_to_settings": "Ir para configurações", @@ -2699,6 +2703,11 @@ }, "input": { "auto_translate_with_space": "Traduzir com três espaços rápidos", + "clear": { + "all": "[to be translated]:清除", + "knowledge_base": "[to be translated]:清除选中的知识库", + "models": "[to be translated]:清除@的所有模型" + }, "show_translate_confirm": "Mostrar diálogo de confirmação de tradução", "target_language": { "chinese": "Chinês simplificado", diff --git a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx index 0d571f9396..f41b56b94b 100644 --- a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx +++ b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx @@ -58,8 +58,6 @@ import styled from 'styled-components' import NarrowLayout from '../Messages/NarrowLayout' import AttachmentPreview from './AttachmentPreview' import InputbarTools, { InputbarToolsRef } from './InputbarTools' -import KnowledgeBaseInput from './KnowledgeBaseInput' -import MentionModelsInput from './MentionModelsInput' import SendMessageButton from './SendMessageButton' import TokenCount from './TokenCount' @@ -439,11 +437,6 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic, topic }) = } } - if (enableBackspaceDeleteModel && event.key === 'Backspace' && text.trim() === '' && mentionedModels.length > 0) { - setMentionedModels((prev) => prev.slice(0, -1)) - return event.preventDefault() - } - if (enableBackspaceDeleteModel && event.key === 'Backspace' && text.trim() === '' && files.length > 0) { setFiles((prev) => prev.slice(0, -1)) return event.preventDefault() @@ -766,19 +759,6 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic, topic }) = setSelectedKnowledgeBases(bases ?? []) } - const handleRemoveModel = (model: Model) => { - setMentionedModels(mentionedModels.filter((m) => m.id !== model.id)) - } - - const handleRemoveKnowledgeBase = (knowledgeBase: KnowledgeBase) => { - const newKnowledgeBases = assistant.knowledge_bases?.filter((kb) => kb.id !== knowledgeBase.id) - updateAssistant({ - ...assistant, - knowledge_bases: newKnowledgeBases - }) - setSelectedKnowledgeBases(newKnowledgeBases ?? []) - } - const onEnableGenerateImage = () => { updateAssistant({ ...assistant, enableGenerateImage: !assistant.enableGenerateImage }) } @@ -858,15 +838,6 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic, topic }) = className={classNames('inputbar-container', inputFocus && 'focus', isFileDragging && 'file-dragging')} ref={containerRef}> {files.length > 0 && } - {selectedKnowledgeBases.length > 0 && ( - - )} - {mentionedModels.length > 0 && ( - - )}