From fbf82c39fdc4e49abc1d83fe6d360ad6d5e36bc7 Mon Sep 17 00:00:00 2001 From: n4ze3m Date: Fri, 10 Jan 2025 17:21:57 +0530 Subject: [PATCH 1/6] feat: Update manifest version to 1.4.2 --- wxt.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wxt.config.ts b/wxt.config.ts index 975795b..297ec16 100644 --- a/wxt.config.ts +++ b/wxt.config.ts @@ -51,7 +51,7 @@ export default defineConfig({ outDir: "build", manifest: { - version: "1.4.1", + version: "1.4.2", name: process.env.TARGET === "firefox" ? "Page Assist - A Web UI for Local AI Models" From 867204604b453a8df2a6070cdb60b5079528e6bd Mon Sep 17 00:00:00 2001 From: n4ze3m Date: Sat, 11 Jan 2025 20:58:45 +0530 Subject: [PATCH 2/6] feat: Add sidebar chat history and functionality --- src/assets/locale/ar/common.json | 3 +- src/assets/locale/da/common.json | 3 +- src/assets/locale/de/common.json | 3 +- src/assets/locale/en/common.json | 3 +- src/assets/locale/es/common.json | 3 +- src/assets/locale/fa/common.json | 3 +- src/assets/locale/fr/common.json | 3 +- src/assets/locale/it/common.json | 3 +- src/assets/locale/ja-JP/common.json | 3 +- src/assets/locale/ko/common.json | 8 ++-- src/assets/locale/ml/common.json | 3 +- src/assets/locale/no/common.json | 3 +- src/assets/locale/pt-BR/common.json | 3 +- src/assets/locale/ru/common.json | 3 +- src/assets/locale/sv/common.json | 5 ++- src/assets/locale/uk/common.json | 5 ++- src/assets/locale/zh/common.json | 3 +- src/components/Layouts/Layout.tsx | 28 +++++++++++- src/components/Option/Sidebar.tsx | 50 +++++++++++++--------- src/components/Sidepanel/Chat/header.tsx | 54 ++++++++++++++++++++++-- src/hooks/useMessage.tsx | 1 - 21 files changed, 146 insertions(+), 47 deletions(-) diff --git a/src/assets/locale/ar/common.json b/src/assets/locale/ar/common.json index 2f8e349..6c2d77a 100644 --- a/src/assets/locale/ar/common.json +++ b/src/assets/locale/ar/common.json @@ -124,5 +124,6 @@ }, "pin": "تثبيت", "unpin": "إلغاء التثبيت", - "generationInfo": "معلومات التوليد" + "generationInfo": "معلومات التوليد", + "sidebarChat": "دردشة الشريط الجانبي" } diff --git a/src/assets/locale/da/common.json b/src/assets/locale/da/common.json index de82642..9b2b30b 100644 --- a/src/assets/locale/da/common.json +++ b/src/assets/locale/da/common.json @@ -117,5 +117,6 @@ }, "pin": "Fastgør", "unpin": "Frigør", - "generationInfo": "Genererings Info" + "generationInfo": "Genererings Info", + "sidebarChat": "Sidepanel Chat" } \ No newline at end of file diff --git a/src/assets/locale/de/common.json b/src/assets/locale/de/common.json index 65b72ab..d6bb325 100644 --- a/src/assets/locale/de/common.json +++ b/src/assets/locale/de/common.json @@ -117,5 +117,6 @@ }, "pin": "Anheften", "unpin": "Losheften", - "generationInfo": "Generierungsinformationen" + "generationInfo": "Generierungsinformationen", + "sidebarChat": "Seitenleisten-Chat" } \ No newline at end of file diff --git a/src/assets/locale/en/common.json b/src/assets/locale/en/common.json index 6f14588..2268c8d 100644 --- a/src/assets/locale/en/common.json +++ b/src/assets/locale/en/common.json @@ -151,5 +151,6 @@ }, "pin": "Pin", "unpin": "Unpin", - "generationInfo": "Generation Info" + "generationInfo": "Generation Info", + "sidebarChat": "Sidebar Chat" } \ No newline at end of file diff --git a/src/assets/locale/es/common.json b/src/assets/locale/es/common.json index 210e043..4a3967c 100644 --- a/src/assets/locale/es/common.json +++ b/src/assets/locale/es/common.json @@ -116,5 +116,6 @@ }, "pin": "Fijar", "unpin": "Desfijar", - "generationInfo": "Información de Generación" + "generationInfo": "Información de Generación", + "sidebarChat": "Chat lateral" } \ No newline at end of file diff --git a/src/assets/locale/fa/common.json b/src/assets/locale/fa/common.json index 72301c7..8532074 100644 --- a/src/assets/locale/fa/common.json +++ b/src/assets/locale/fa/common.json @@ -110,5 +110,6 @@ }, "pin": "پین کردن", "unpin": "حذف پین", - "generationInfo": "اطلاعات تولید" + "generationInfo": "اطلاعات تولید", + "sidebarChat": "چت کناری" } \ No newline at end of file diff --git a/src/assets/locale/fr/common.json b/src/assets/locale/fr/common.json index d11ef8c..432c2c0 100644 --- a/src/assets/locale/fr/common.json +++ b/src/assets/locale/fr/common.json @@ -116,5 +116,6 @@ }, "pin": "Épingler", "unpin": "Désépingler", - "generationInfo": "Informations de génération" + "generationInfo": "Informations de génération", + "sidebarChat": "Chat latéral" } \ No newline at end of file diff --git a/src/assets/locale/it/common.json b/src/assets/locale/it/common.json index 6b08509..edcc2b8 100644 --- a/src/assets/locale/it/common.json +++ b/src/assets/locale/it/common.json @@ -116,5 +116,6 @@ }, "pin": "Fissa", "unpin": "Rimuovi", - "generationInfo": "Informazioni sulla Generazione" + "generationInfo": "Informazioni sulla Generazione", + "sidebarChat": "Chat Laterale" } \ No newline at end of file diff --git a/src/assets/locale/ja-JP/common.json b/src/assets/locale/ja-JP/common.json index 92ba8e0..dd2700b 100644 --- a/src/assets/locale/ja-JP/common.json +++ b/src/assets/locale/ja-JP/common.json @@ -116,5 +116,6 @@ }, "pin": "固定", "unpin": "固定解除", - "generationInfo": "生成情報" + "generationInfo": "生成情報", + "sidebarChat": "サイドバーチャット" } \ No newline at end of file diff --git a/src/assets/locale/ko/common.json b/src/assets/locale/ko/common.json index ed9e0b9..0e83e43 100644 --- a/src/assets/locale/ko/common.json +++ b/src/assets/locale/ko/common.json @@ -73,7 +73,8 @@ "numPredict": { "label": "최대 토큰 수 (num_predict)", "placeholder": "최대 토큰 수를 입력하세요 (예: 2048, 4096)" - }, "seed": { + }, + "seed": { "label": "시드", "placeholder": "시드 값을 입력하세요 (예: 1234)", "help": "모델 출력의 재현성" @@ -115,5 +116,6 @@ }, "pin": "고정", "unpin": "고정 해제", - "generationInfo": "생성 정보" -} + "generationInfo": "생성 정보", + "sidebarChat": "사이드바 채팅" +} \ No newline at end of file diff --git a/src/assets/locale/ml/common.json b/src/assets/locale/ml/common.json index cd6868d..ae5489a 100644 --- a/src/assets/locale/ml/common.json +++ b/src/assets/locale/ml/common.json @@ -115,6 +115,7 @@ }, "pin": "പിൻ ചെയ്യുക", "unpin": "അൺപിൻ ചെയ്യുക", - "generationInfo": "ജനറേഷൻ വിവരങ്ങൾ" + "generationInfo": "ജനറേഷൻ വിവരങ്ങൾ", + "sidebarChat": "സൈഡ്ബാർ ചാറ്റ്" } \ No newline at end of file diff --git a/src/assets/locale/no/common.json b/src/assets/locale/no/common.json index 1720d1f..24b51b5 100644 --- a/src/assets/locale/no/common.json +++ b/src/assets/locale/no/common.json @@ -117,5 +117,6 @@ }, "pin": "Fest", "unpin": "Løsne", - "generationInfo": "Generasjonsinformasjon" + "generationInfo": "Generasjonsinformasjon", + "sidebarChat": "Sidepanel-chat" } \ No newline at end of file diff --git a/src/assets/locale/pt-BR/common.json b/src/assets/locale/pt-BR/common.json index 660514d..4e1a15b 100644 --- a/src/assets/locale/pt-BR/common.json +++ b/src/assets/locale/pt-BR/common.json @@ -116,5 +116,6 @@ }, "pin": "Fixar", "unpin": "Desafixar", - "generationInfo": "Informações de Geração" + "generationInfo": "Informações de Geração", + "sidebarChat": "Chat Lateral" } \ No newline at end of file diff --git a/src/assets/locale/ru/common.json b/src/assets/locale/ru/common.json index 31291a0..cbdc13d 100644 --- a/src/assets/locale/ru/common.json +++ b/src/assets/locale/ru/common.json @@ -116,5 +116,6 @@ }, "pin": "Закрепить", "unpin": "Открепить", - "generationInfo": "Информация о генерации" + "generationInfo": "Информация о генерации", + "sidebarChat": "Боковой чат" } \ No newline at end of file diff --git a/src/assets/locale/sv/common.json b/src/assets/locale/sv/common.json index 4698dc7..6918290 100644 --- a/src/assets/locale/sv/common.json +++ b/src/assets/locale/sv/common.json @@ -121,5 +121,6 @@ }, "pin": "Fäst", "unpin": "Ta bort fäst", - "generationInfo": "Generationsinformation" -} + "generationInfo": "Generationsinformation", + "sidebarChat": "Sidofältschatt" +} \ No newline at end of file diff --git a/src/assets/locale/uk/common.json b/src/assets/locale/uk/common.json index 899e12b..b4773d4 100644 --- a/src/assets/locale/uk/common.json +++ b/src/assets/locale/uk/common.json @@ -121,5 +121,6 @@ }, "pin": "Прикріпити", "unpin": "Відкріпити", - "generationInfo": "Інформація про генерацію" -} + "generationInfo": "Інформація про генерацію", + "sidebarChat": "Бічний чат" +} \ No newline at end of file diff --git a/src/assets/locale/zh/common.json b/src/assets/locale/zh/common.json index 080776a..4d01d24 100644 --- a/src/assets/locale/zh/common.json +++ b/src/assets/locale/zh/common.json @@ -116,5 +116,6 @@ }, "pin": "置顶", "unpin": "取消置顶", - "generationInfo": "生成信息" + "generationInfo": "生成信息", + "sidebarChat": "侧边栏聊天" } \ No newline at end of file diff --git a/src/components/Layouts/Layout.tsx b/src/components/Layouts/Layout.tsx index e8e9c1d..3a6b6b8 100644 --- a/src/components/Layouts/Layout.tsx +++ b/src/components/Layouts/Layout.tsx @@ -11,6 +11,7 @@ import { EraserIcon } from "lucide-react" import { PageAssitDatabase } from "@/db" import { useMessageOption } from "@/hooks/useMessageOption" import { useQueryClient } from "@tanstack/react-query" +import { useStoreChatModelSettings } from "@/store/model" export default function OptionLayout({ children @@ -20,8 +21,19 @@ export default function OptionLayout({ const [sidebarOpen, setSidebarOpen] = useState(false) const { t } = useTranslation(["option", "common", "settings"]) const [openModelSettings, setOpenModelSettings] = useState(false) - const { clearChat } = useMessageOption() + const { + setMessages, + setHistory, + setHistoryId, + historyId, + clearChat, + setSelectedModel, + temporaryChat, + setSelectedSystemPrompt + } = useMessageOption() + const queryClient = useQueryClient() + const { setSystemPrompt } = useStoreChatModelSettings() return ( <> @@ -70,7 +82,19 @@ export default function OptionLayout({ closeIcon={null} onClose={() => setSidebarOpen(false)} open={sidebarOpen}> - setSidebarOpen(false)} /> + setSidebarOpen(false)} + setMessages={setMessages} + setHistory={setHistory} + setHistoryId={setHistoryId} + setSelectedModel={setSelectedModel} + setSelectedSystemPrompt={setSelectedSystemPrompt} + clearChat={clearChat} + historyId={historyId} + setSystemPrompt={setSystemPrompt} + temporaryChat={temporaryChat} + history={history} + /> void + setMessages: (messages: any) => void + setHistory: (history: any) => void + setHistoryId: (historyId: string) => void + setSelectedModel: (model: string) => void + setSelectedSystemPrompt: (prompt: string) => void + setSystemPrompt: (prompt: string) => void + clearChat: () => void + temporaryChat: boolean + historyId: string + history: any } -export const Sidebar = ({ onClose }: Props) => { - const { - setMessages, - setHistory, - setHistoryId, - historyId, - clearChat, - setSelectedModel, - temporaryChat, - setSelectedSystemPrompt - } = useMessageOption() - - const { setSystemPrompt } = useStoreChatModelSettings() - +export const Sidebar = ({ + onClose, + setMessages, + setHistory, + setHistoryId, + setSelectedModel, + setSelectedSystemPrompt, + clearChat, + historyId, + setSystemPrompt, + temporaryChat +}: Props) => { const { t } = useTranslation(["option", "common"]) const client = useQueryClient() const navigate = useNavigate() @@ -162,7 +169,12 @@ export const Sidebar = ({ onClose }: Props) => { {group.items.map((chat, index) => (
+ className="flex py-2 px-2 items-center gap-3 relative rounded-md truncate hover:pr-4 group transition-opacity duration-300 ease-in-out bg-gray-100 dark:bg-[#232222] dark:text-gray-100 text-gray-800 border hover:bg-gray-200 dark:hover:bg-[#2d2d2d] dark:border-gray-800"> + {chat?.message_source === "copilot" && ( + + + + )} )} + + + - {!hideCurrentChatModelSettings && (
+ } + placement="left" + closeIcon={null} + onClose={() => setSidebarOpen(false)} + open={sidebarOpen}> + setSidebarOpen(false)} + setMessages={setMessages} + setHistory={setHistory} + setHistoryId={setHistoryId} + setSelectedModel={setSelectedModel} + setSelectedSystemPrompt={setSelectedSystemPrompt} + clearChat={clearChat} + historyId={historyId} + setSystemPrompt={(e) => {}} + temporaryChat={false} + history={history} + /> + ) } diff --git a/src/hooks/useMessage.tsx b/src/hooks/useMessage.tsx index a32fedc..4bf2998 100644 --- a/src/hooks/useMessage.tsx +++ b/src/hooks/useMessage.tsx @@ -34,7 +34,6 @@ import { pageAssistModel } from "@/models" import { getPrompt } from "@/services/application" import { humanMessageFormatter } from "@/utils/human-message" import { pageAssistEmbeddingModel } from "@/models/embedding" -import { PageAssistVectorStore } from "@/libs/PageAssistVectorStore" import { PAMemoryVectorStore } from "@/libs/PAMemoryVectorStore" import { getScreenshotFromCurrentTab } from "@/libs/get-screenshot" From 84e123bf3814a68ed6097ae7e513d0ce963615fa Mon Sep 17 00:00:00 2001 From: n4ze3m Date: Sat, 11 Jan 2025 23:44:43 +0530 Subject: [PATCH 3/6] feat: Add aria-labels for accessibility in PlaygroundMessage component --- src/components/Common/Playground/Message.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/Common/Playground/Message.tsx b/src/components/Common/Playground/Message.tsx index 1d76280..79a7d23 100644 --- a/src/components/Common/Playground/Message.tsx +++ b/src/components/Common/Playground/Message.tsx @@ -169,6 +169,7 @@ export const PlaygroundMessage = (props: Props) => { {props.isTTSEnabled && ( @@ -227,6 +231,7 @@ export const PlaygroundMessage = (props: Props) => { props.currentMessageIndex === props.totalMessages - 1 && ( From 48b7a2824aff23c50f0493e2dd33e26186af5b62 Mon Sep 17 00:00:00 2001 From: n4ze3m Date: Sun, 12 Jan 2025 00:19:39 +0530 Subject: [PATCH 4/6] feat: Add option to enable internet search by default --- src/assets/locale/ar/settings.json | 3 + src/assets/locale/da/settings.json | 3 + src/assets/locale/de/settings.json | 3 + src/assets/locale/en/settings.json | 3 + src/assets/locale/es/settings.json | 3 + src/assets/locale/fa/settings.json | 3 + src/assets/locale/fr/settings.json | 3 + src/assets/locale/it/settings.json | 3 + src/assets/locale/ja-JP/settings.json | 3 + src/assets/locale/ko/settings.json | 3 + src/assets/locale/ml/settings.json | 3 + src/assets/locale/no/settings.json | 3 + src/assets/locale/pt-BR/settings.json | 3 + src/assets/locale/ru/settings.json | 3 + src/assets/locale/sv/settings.json | 3 + src/assets/locale/uk/settings.json | 3 + src/assets/locale/zh/settings.json | 3 + .../Option/Playground/PlaygroundForm.tsx | 12 +++- .../Option/Settings/search-mode.tsx | 16 ++++- src/components/Sidepanel/Chat/form.tsx | 16 ++++- src/hooks/useMessage.tsx | 11 +++- src/hooks/useMessageOption.tsx | 10 +++- src/services/search.ts | 59 ++++++++++++------- 23 files changed, 148 insertions(+), 27 deletions(-) diff --git a/src/assets/locale/ar/settings.json b/src/assets/locale/ar/settings.json index 23e964d..ac3973a 100644 --- a/src/assets/locale/ar/settings.json +++ b/src/assets/locale/ar/settings.json @@ -77,6 +77,9 @@ }, "googleDomain": { "label": "نطاق جوجل" + }, + "searchOnByDefault": { + "label": "تفعيل البحث على الإنترنت بشكل افتراضي" } }, "system": { diff --git a/src/assets/locale/da/settings.json b/src/assets/locale/da/settings.json index 7efe9eb..74a2346 100644 --- a/src/assets/locale/da/settings.json +++ b/src/assets/locale/da/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Brave API Nøgle", "placeholder": "Indtast din Brave API nøgle" + }, + "searchOnByDefault": { + "label": "Internet Søgning TIL som standard" } }, "system": { diff --git a/src/assets/locale/de/settings.json b/src/assets/locale/de/settings.json index 9d5822b..efee952 100644 --- a/src/assets/locale/de/settings.json +++ b/src/assets/locale/de/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Brave API-Schlüssel", "placeholder": "Geben Sie Ihren Brave API-Schlüssel ein" + }, + "searchOnByDefault": { + "label": "Internetsuche standardmäßig aktiviert" } }, "system": { diff --git a/src/assets/locale/en/settings.json b/src/assets/locale/en/settings.json index 2d7cdcd..a158d05 100644 --- a/src/assets/locale/en/settings.json +++ b/src/assets/locale/en/settings.json @@ -77,6 +77,9 @@ }, "googleDomain": { "label": "Google Domain" + }, + "searchOnByDefault": { + "label": "Internet Search ON by default" } }, "system": { diff --git a/src/assets/locale/es/settings.json b/src/assets/locale/es/settings.json index 41a24cb..1e474ab 100644 --- a/src/assets/locale/es/settings.json +++ b/src/assets/locale/es/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Clave API de Brave", "placeholder": "Ingrese su clave API de Brave" + }, + "searchOnByDefault": { + "label": "Búsqueda en Internet activada por defecto" } }, "system": { diff --git a/src/assets/locale/fa/settings.json b/src/assets/locale/fa/settings.json index 48aaf5d..8b23ebf 100644 --- a/src/assets/locale/fa/settings.json +++ b/src/assets/locale/fa/settings.json @@ -71,6 +71,9 @@ "braveApi": { "label": "کلید API بریو", "placeholder": "کلید API بریو خود را وارد کنید" + }, + "searchOnByDefault": { + "label": "جستجوی اینترنتی به صورت پیش‌فرض فعال باشد" } }, "system": { diff --git a/src/assets/locale/fr/settings.json b/src/assets/locale/fr/settings.json index dbd7fad..780ddb4 100644 --- a/src/assets/locale/fr/settings.json +++ b/src/assets/locale/fr/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Clé API Brave", "placeholder": "Entrez votre clé API Brave" + }, + "searchOnByDefault": { + "label": "Recherche Internet activée par défaut" } }, "system": { diff --git a/src/assets/locale/it/settings.json b/src/assets/locale/it/settings.json index 3b61c5c..4b0c900 100644 --- a/src/assets/locale/it/settings.json +++ b/src/assets/locale/it/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Chiave API Brave", "placeholder": "Inserisci la tua chiave API Brave" + }, + "searchOnByDefault": { + "label": "Ricerca Internet attiva per impostazione predefinita" } }, "system": { diff --git a/src/assets/locale/ja-JP/settings.json b/src/assets/locale/ja-JP/settings.json index 239ffa4..6aabff0 100644 --- a/src/assets/locale/ja-JP/settings.json +++ b/src/assets/locale/ja-JP/settings.json @@ -77,6 +77,9 @@ "braveApi": { "label": "Brave APIキー", "placeholder": "Brave APIキーを入力してください" + }, + "searchOnByDefault": { + "label": "デフォルトでインターネット検索をオンにする" } }, "system": { diff --git a/src/assets/locale/ko/settings.json b/src/assets/locale/ko/settings.json index 9728e98..b652959 100644 --- a/src/assets/locale/ko/settings.json +++ b/src/assets/locale/ko/settings.json @@ -77,6 +77,9 @@ "braveApi": { "label": "Brave API 키", "placeholder": "Brave API 키를 입력하세요" + }, + "searchOnByDefault": { + "label": "기본적으로 인터넷 검색 켜기" } }, "system": { diff --git a/src/assets/locale/ml/settings.json b/src/assets/locale/ml/settings.json index fab6e6f..c093da0 100644 --- a/src/assets/locale/ml/settings.json +++ b/src/assets/locale/ml/settings.json @@ -77,6 +77,9 @@ "braveApi": { "label": "ബ്രേവ് API കീ", "placeholder": "നിങ്ങളുടെ ബ്രേവ് API കീ നൽകുക" + }, + "searchOnByDefault": { + "label": "സ്ഥിരസ്ഥിതിയായി ഇന്റർനെറ്റ് തിരച്ചിൽ പ്രവർത്തനക്ഷമമാക്കുക" } }, "system": { diff --git a/src/assets/locale/no/settings.json b/src/assets/locale/no/settings.json index 40dece1..16f6c59 100644 --- a/src/assets/locale/no/settings.json +++ b/src/assets/locale/no/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Brave API Nøkkel", "placeholder": "Skriv inn din Brave API nøkkel" + }, + "searchOnByDefault": { + "label": "Internett-søk PÅ som standard" } }, "system": { diff --git a/src/assets/locale/pt-BR/settings.json b/src/assets/locale/pt-BR/settings.json index e296201..8b1423d 100644 --- a/src/assets/locale/pt-BR/settings.json +++ b/src/assets/locale/pt-BR/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Chave da API do Brave", "placeholder": "Digite sua chave da API do Brave" + }, + "searchOnByDefault": { + "label": "Pesquisa na Internet ativada por padrão" } }, "system": { diff --git a/src/assets/locale/ru/settings.json b/src/assets/locale/ru/settings.json index 1f985ae..6afd82c 100644 --- a/src/assets/locale/ru/settings.json +++ b/src/assets/locale/ru/settings.json @@ -75,6 +75,9 @@ "braveApi": { "label": "API-ключ Brave", "placeholder": "Введите ваш API-ключ Brave" + }, + "searchOnByDefault": { + "label": "Поиск в интернете включен по умолчанию" } }, "system": { diff --git a/src/assets/locale/sv/settings.json b/src/assets/locale/sv/settings.json index aa049c6..bc10a22 100644 --- a/src/assets/locale/sv/settings.json +++ b/src/assets/locale/sv/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Brave API-nyckel", "placeholder": "Ange din Brave API-nyckel" + }, + "searchOnByDefault": { + "label": "Internetsökning PÅ som standard" } }, "system": { diff --git a/src/assets/locale/uk/settings.json b/src/assets/locale/uk/settings.json index 34752c9..d8c8a98 100644 --- a/src/assets/locale/uk/settings.json +++ b/src/assets/locale/uk/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Ключ API Brave", "placeholder": "Введіть ваш ключ API Brave" + }, + "searchOnByDefault": { + "label": "Пошук в Інтернеті увімкнено за замовчуванням" } }, "system": { diff --git a/src/assets/locale/zh/settings.json b/src/assets/locale/zh/settings.json index 1a66351..e86b363 100644 --- a/src/assets/locale/zh/settings.json +++ b/src/assets/locale/zh/settings.json @@ -77,6 +77,9 @@ "braveApi": { "label": "Brave API 密钥", "placeholder": "输入您的 Brave API 密钥" + }, + "searchOnByDefault": { + "label": "默认开启网络搜索" } }, "system": { diff --git a/src/components/Option/Playground/PlaygroundForm.tsx b/src/components/Option/Playground/PlaygroundForm.tsx index c6e2b40..85a0bc6 100644 --- a/src/components/Option/Playground/PlaygroundForm.tsx +++ b/src/components/Option/Playground/PlaygroundForm.tsx @@ -39,7 +39,8 @@ export const PlaygroundForm = ({ dropedFile }: Props) => { selectedKnowledge, temporaryChat, useOCR, - setUseOCR + setUseOCR, + defaultInternetSearchOn } = useMessageOption() const isMobile = () => { @@ -71,8 +72,17 @@ export const PlaygroundForm = ({ dropedFile }: Props) => { React.useEffect(() => { textAreaFocus() + if (defaultInternetSearchOn) { + setWebSearch(true) + } }, []) + React.useEffect(() => { + if (defaultInternetSearchOn) { + setWebSearch(true) + } + }, [defaultInternetSearchOn]) + const onInputChange = async ( e: React.ChangeEvent | File ) => { diff --git a/src/components/Option/Settings/search-mode.tsx b/src/components/Option/Settings/search-mode.tsx index f77149c..207912a 100644 --- a/src/components/Option/Settings/search-mode.tsx +++ b/src/components/Option/Settings/search-mode.tsx @@ -19,7 +19,8 @@ export const SearchModeSettings = () => { searxngURL: "", searxngJSONMode: false, braveApiKey: "", - googleDomain: "" + googleDomain: "", + defaultInternetSearchOn: false } }) @@ -171,6 +172,19 @@ export const SearchModeSettings = () => { +
+ + {t("generalSettings.webSearch.searchOnByDefault.label")} + +
+ +
+
diff --git a/src/components/Sidepanel/Chat/form.tsx b/src/components/Sidepanel/Chat/form.tsx index 3b39164..98a2826 100644 --- a/src/components/Sidepanel/Chat/form.tsx +++ b/src/components/Sidepanel/Chat/form.tsx @@ -133,7 +133,8 @@ export const SidepanelForm = ({ dropedFile }: Props) => { setSelectedQuickPrompt, speechToTextLanguage, useOCR, - setUseOCR + setUseOCR, + defaultInternetSearchOn } = useMessage() React.useEffect(() => { @@ -194,12 +195,23 @@ export const SidepanelForm = ({ dropedFile }: Props) => { } textareaRef.current?.addEventListener("drop", handleDrop) textareaRef.current?.addEventListener("dragover", handleDragOver) + + if (defaultInternetSearchOn) { + setWebSearch(true) + } + return () => { textareaRef.current?.removeEventListener("drop", handleDrop) textareaRef.current?.removeEventListener("dragover", handleDragOver) } }, []) + React.useEffect(() => { + if (defaultInternetSearchOn) { + setWebSearch(true) + } + }, [defaultInternetSearchOn]) + return (
{ chatMode === "rag" ? "hidden" : "block" }`}> {webSearch ? ( - + ) : ( )} diff --git a/src/hooks/useMessage.tsx b/src/hooks/useMessage.tsx index 4bf2998..7d0efc5 100644 --- a/src/hooks/useMessage.tsx +++ b/src/hooks/useMessage.tsx @@ -55,7 +55,10 @@ export const useMessage = () => { setWebSearch, isSearchingInternet } = useStoreMessageOption() - + const [defaultInternetSearchOn, ] = useStorage( + "defaultInternetSearchOn", + false + ) const [chatWithWebsiteEmbedding] = useStorage( "chatWithWebsiteEmbedding", true @@ -107,6 +110,9 @@ export const useMessage = () => { setIsProcessing(false) setStreaming(false) currentChatModelSettings.reset() + if(defaultInternetSearchOn) { + setWebSearch(true) + } } const chatWithWebsiteMode = async ( @@ -1714,6 +1720,7 @@ export const useMessage = () => { speechToTextLanguage, setSpeechToTextLanguage, useOCR, - setUseOCR + setUseOCR, + defaultInternetSearchOn } } diff --git a/src/hooks/useMessageOption.tsx b/src/hooks/useMessageOption.tsx index 5fcd4d1..426d3d9 100644 --- a/src/hooks/useMessageOption.tsx +++ b/src/hooks/useMessageOption.tsx @@ -76,6 +76,10 @@ export const useMessageOption = () => { } = useStoreMessageOption() const currentChatModelSettings = useStoreChatModelSettings() const [selectedModel, setSelectedModel] = useStorage("selectedModel") + const [defaultInternetSearchOn, ] = useStorage( + "defaultInternetSearchOn", + false + ) const [speechToTextLanguage, setSpeechToTextLanguage] = useStorage( "speechToTextLanguage", "en-US" @@ -98,6 +102,9 @@ export const useMessageOption = () => { setStreaming(false) currentChatModelSettings.reset() textareaRef?.current?.focus() + if(defaultInternetSearchOn) { + setWebSearch(true) + } } const searchChatMode = async ( @@ -1198,6 +1205,7 @@ export const useMessageOption = () => { temporaryChat, setTemporaryChat, useOCR, - setUseOCR + setUseOCR, + defaultInternetSearchOn, } } diff --git a/src/services/search.ts b/src/services/search.ts index 447d2b2..deecc73 100644 --- a/src/services/search.ts +++ b/src/services/search.ts @@ -26,7 +26,6 @@ export const getIsVisitSpecificWebsite = async () => { return isVisitSpecificWebsite === "true" } - export const setIsVisitSpecificWebsite = async ( isVisitSpecificWebsite: boolean ) => { @@ -101,23 +100,39 @@ export const setGoogleDomain = async (domain: string) => { await storage2.set("searchGoogleDomain", domain) } +export const getInternetSearchOn = async () => { + const defaultInternetSearchOn = await storage.get( + "defaultInternetSearchOn" + ) + return defaultInternetSearchOn ?? false +} + +export const setInternetSearchOn = async (defaultInternetSearchOn: boolean) => { + await storage.set("defaultInternetSearchOn", defaultInternetSearchOn) +} + export const getSearchSettings = async () => { - const [isSimpleInternetSearch, searchProvider, totalSearchResult, visitSpecificWebsite, + const [ + isSimpleInternetSearch, + searchProvider, + totalSearchResult, + visitSpecificWebsite, searxngURL, searxngJSONMode, braveApiKey, - googleDomain - ] = - await Promise.all([ - getIsSimpleInternetSearch(), - getSearchProvider(), - totalSearchResults(), - getIsVisitSpecificWebsite(), - getSearxngURL(), - isSearxngJSONMode(), - getBraveApiKey(), - getGoogleDomain() - ]) + googleDomain, + defaultInternetSearchOn + ] = await Promise.all([ + getIsSimpleInternetSearch(), + getSearchProvider(), + totalSearchResults(), + getIsVisitSpecificWebsite(), + getSearxngURL(), + isSearxngJSONMode(), + getBraveApiKey(), + getGoogleDomain(), + getInternetSearchOn() + ]) return { isSimpleInternetSearch, @@ -127,7 +142,8 @@ export const getSearchSettings = async () => { searxngURL, searxngJSONMode, braveApiKey, - googleDomain + googleDomain, + defaultInternetSearchOn } } @@ -139,16 +155,18 @@ export const setSearchSettings = async ({ searxngJSONMode, searxngURL, braveApiKey, - googleDomain + googleDomain, + defaultInternetSearchOn }: { isSimpleInternetSearch: boolean searchProvider: string totalSearchResults: number visitSpecificWebsite: boolean searxngURL: string - searxngJSONMode: boolean, - braveApiKey: string, - googleDomain: string + searxngJSONMode: boolean + braveApiKey: string + googleDomain: string, + defaultInternetSearchOn: boolean }) => { await Promise.all([ setIsSimpleInternetSearch(isSimpleInternetSearch), @@ -158,6 +176,7 @@ export const setSearchSettings = async ({ setSearxngJSONMode(searxngJSONMode), setSearxngURL(searxngURL), setBraveApiKey(braveApiKey), - setGoogleDomain(googleDomain) + setGoogleDomain(googleDomain), + setInternetSearchOn(defaultInternetSearchOn) ]) } From bac85d65c5aaf9bf5c892880ab4a6ce2595dea96 Mon Sep 17 00:00:00 2001 From: n4ze3m Date: Sun, 12 Jan 2025 00:24:22 +0530 Subject: [PATCH 5/6] feat: Update UI styles in SidepanelForm component --- src/components/Sidepanel/Chat/form.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Sidepanel/Chat/form.tsx b/src/components/Sidepanel/Chat/form.tsx index 98a2826..c0bacad 100644 --- a/src/components/Sidepanel/Chat/form.tsx +++ b/src/components/Sidepanel/Chat/form.tsx @@ -213,7 +213,7 @@ export const SidepanelForm = ({ dropedFile }: Props) => { }, [defaultInternetSearchOn]) return ( -
+
{ multiple={false} onChange={onInputChange} /> -
+