Skip to content

Commit 715f7fa

Browse files
authored
Merge pull request #522 from n4ze3m/next
v1.5.6
2 parents ca88a06 + 3623bcf commit 715f7fa

32 files changed

+591
-412
lines changed

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,9 @@ This are some of the blogs and videos about Page Assist. If you have written a b
180180

181181
- [Page Assist 介绍合集](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzk2NDUxNDQ3Nw==&action=getalbum&album_id=3845692786608553984#wechat_redirect) by 百工智用公众号
182182

183+
184+
- [Eine KI auf dem eigenen Rechner laufen lassen, 10 Minuten Installation](https://www.johannesholstein.de/gsCMS/index.php?id=sonstige-video-tutorials) by [Johannes Holstein](https://www.johannesholstein.de)
185+
183186
## License
184187

185188
MIT

src/assets/locale/ar/playground.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
"uploadImage": "تحميل صورة",
2525
"stopStreaming": "إيقاف البث",
2626
"knowledge": "المعرفة",
27-
"vision": "[تجريبي] محادثة الرؤية"
27+
"vision": "[تجريبي] محادثة الرؤية",
28+
"clearContext": "مسح السياق"
2829
},
2930
"sendWhenEnter": "إرسال عند الضغط على Enter",
3031
"welcome": "مرحباً! كيف يمكنني مساعدتك اليوم؟",

src/assets/locale/da/playground.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
"speechToText": "Tal til Tekst",
2424
"uploadImage": "Upload Billed",
2525
"stopStreaming": "Stop Streaming",
26-
"knowledge": "Viden"
26+
"knowledge": "Viden",
27+
"clearContext": "Ryd Kontekst"
2728
},
2829
"sendWhenEnter": "Søg, når Indtast trykkes",
2930
"welcome": "Hej! Hvordan kan jeg hjælpe dig i dag?",

src/assets/locale/de/playground.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
"speechToText": "Sprache zu Text",
2424
"uploadImage": "Bild hochladen",
2525
"stopStreaming": "Streaming stoppen",
26-
"knowledge": "Wissen"
26+
"knowledge": "Wissen",
27+
"clearContext": "Kontext löschen"
2728
},
2829
"sendWhenEnter": "Senden bei Drücken der Eingabetaste",
2930
"welcome": "Hallo! Wie kann ich Ihnen heute helfen?",

src/assets/locale/en/playground.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
"uploadImage": "Upload Image",
2525
"stopStreaming": "Stop Streaming",
2626
"knowledge": "Knowledge",
27-
"vision": "[Experimental] Vision Chat"
27+
"vision": "[Experimental] Vision Chat",
28+
"clearContext": "Clear Context"
2829
},
2930
"sendWhenEnter": "Send when Enter pressed",
3031
"welcome": "Hello! How can I help you today?",

src/assets/locale/en/settings.json

+6
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,12 @@
111111
"button": "Import Data",
112112
"success": "Import Success",
113113
"error": "Import Error"
114+
},
115+
"actionIcon": {
116+
"label": "Set Default Action for Extension Icon Clicks"
117+
},
118+
"contextMenu": {
119+
"label": "Set Default action for Context Menu"
114120
}
115121
},
116122
"tts": {

src/assets/locale/es/playground.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@
2323
"speechToText": "Voz a Texto",
2424
"uploadImage": "Subir Imagén",
2525
"stopStreaming": "Parar Transmisión",
26-
"knowledge": "Conocimiento"
26+
"knowledge": "Conocimiento",
27+
"clearContext": "Limpiar Contexto"
2728
},
2829
"sendWhenEnter": "Enviar cuando presione Enter",
2930
"welcome": "¡Hola! ¿Cómo puedo ayudarte hoy?",
3031
"useOCR": "Extraer texto de imagen (OCR)"
31-
}
32+
}

src/assets/locale/fa/playground.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@
2323
"speechToText": "گفتار به متن",
2424
"uploadImage": "آپلود تصویر",
2525
"stopStreaming": "توقف Streaming",
26-
"knowledge": "دانش"
26+
"knowledge": "دانش",
27+
"clearContext": "پاک کردن متن"
2728
},
2829
"sendWhenEnter": "با فشار دادن Enter ارسال شود",
2930
"welcome": "سلام! امروز چطور می‌توانم به شما کمک کنم؟",
3031
"useOCR": "استخراج متن از تصویر (OCR)"
31-
}
32+
}

src/assets/locale/fr/playground.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
"uploadImage": "Uploader une image",
2525
"stopStreaming": "Arrêter la diffusion",
2626
"knowledge": "Connaissances",
27-
"vision": "Discussion visuelle [Expérimental]"
27+
"vision": "Discussion visuelle [Expérimental]",
28+
"clearContext": "Effacer le contexte"
2829
},
2930
"sendWhenEnter": "Envoyer en appuyant sur Entrée",
3031
"welcome": "Bonjour ! Comment puis-je vous aider aujourd'hui ?",

src/assets/locale/it/playground.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
"speechToText": "Speech to Text",
2424
"uploadImage": "Carica immagine",
2525
"stopStreaming": "Ferma lo Streaming",
26-
"knowledge": "Conoscenza"
26+
"knowledge": "Conoscenza",
27+
"clearContext": "Cancella Contesto"
2728
},
2829
"sendWhenEnter": "Invia subito dopo Enter",
2930
"welcome": "Ciao! Come posso aiutarti oggi?",

src/assets/locale/ja-JP/playground.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
"speechToText": "音声入力",
2424
"uploadImage": "画像をアップロード",
2525
"stopStreaming": "ストリーミングを停止",
26-
"knowledge": "知識"
26+
"knowledge": "知識",
27+
"clearContext": "コンテキストをクリア"
2728
},
2829
"sendWhenEnter": "Enterキーを押すと送信",
2930
"welcome": "こんにちは!本日はどのようなお手伝いができますか?",

src/assets/locale/ko/playground.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@
2323
"speechToText": "음성 입력",
2424
"uploadImage": "이미지 업로드",
2525
"stopStreaming": "스트리밍 중지",
26-
"knowledge": "지식"
26+
"knowledge": "지식",
27+
"clearContext": "컨텍스트 지우기"
2728
},
2829
"sendWhenEnter": "Enter 키를 누르면 전송",
2930
"welcome": "안녕하세요! 오늘 어떻게 도와드릴까요?",
3031
"useOCR": "이미지에서 텍스트 추출 (OCR)"
31-
}
32+
}

src/assets/locale/ml/playground.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
"speechToText": "സംഭാഷണം ടെക്സ്റ്റായി",
2424
"uploadImage": "ഇമേജ് അപ്‌ലോഡ് ചെയ്യുക",
2525
"stopStreaming": "സ്ട്രീമിംഗ് നിർത്തുക",
26-
"knowledge": "അറിവ്"
26+
"knowledge": "അറിവ്",
27+
"clearContext": "സന്ദർഭം മായ്ക്കുക"
2728
},
2829
"sendWhenEnter": "എന്റര്‍ അമര്‍ത്തുമ്പോള്‍ അയയ്ക്കുക",
2930
"welcome": "നമസ്കാരം! ഇന്ന് എനിക്ക് നിങ്ങളെ എങ്ങനെ സഹായിക്കാൻ കഴിയും?",

src/assets/locale/no/playground.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@
2323
"speechToText": "Tale til Tekst",
2424
"uploadImage": "Last opp Bilde",
2525
"stopStreaming": "Stopp Streaming",
26-
"knowledge": "Kunnskap"
26+
"knowledge": "Kunnskap",
27+
"clearContext": "Tøm Kontekst"
2728
},
2829
"sendWhenEnter": "Søk når Enter trykkes",
2930
"welcome": "Hei! Hvordan kan jeg hjelpe deg i dag?",
3031
"useOCR": "Trekk ut tekst fra bilde (OCR)"
31-
}
32+
}

src/assets/locale/pt-BR/playground.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
"speechToText": "Fala para Texto",
2424
"uploadImage": "Carregar Imagem",
2525
"stopStreaming": "Parar Streaming",
26-
"knowledge": "Conhecimento"
26+
"knowledge": "Conhecimento",
27+
"clearContext": "Limpar Contexto"
2728
},
2829
"sendWhenEnter": "Enviar ao pressionar Enter",
2930
"welcome": "Olá! Como posso ajudar você hoje?",

src/assets/locale/ru/playground.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@
2323
"speechToText": "Речь в текст",
2424
"uploadImage": "Загрузить изображение",
2525
"stopStreaming": "Остановить поток",
26-
"knowledge": "Знание"
26+
"knowledge": "Знание",
27+
"clearContext": "Очистить контекст"
2728
},
2829
"sendWhenEnter": "Отправить при нажатии клавиши Enter",
2930
"welcome": "Здравствуйте! Как я могу помочь вам сегодня?",
3031
"useOCR": "Извлечь текст из изображения (OCR)"
31-
}
32+
}

src/assets/locale/sv/playground.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@
2323
"speechToText": "Tal till text",
2424
"uploadImage": "Ladda upp bild",
2525
"stopStreaming": "Stoppa strömning",
26-
"knowledge": "Kunskap"
26+
"knowledge": "Kunskap",
27+
"clearContext": "Rensa kontext"
2728
},
2829
"sendWhenEnter": "Skicka när Enter trycks",
2930
"welcome": "Hej! Hur kan jag hjälpa dig idag?",
3031
"useOCR": "Extrahera text från bild (OCR)"
31-
}
32+
}

src/assets/locale/uk/playground.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
"speechToText": "Голос у текст",
2424
"uploadImage": "Завантажити зображення",
2525
"stopStreaming": "Зупинити трансляцію",
26-
"knowledge": "Знання"
26+
"knowledge": "Знання",
27+
"clearContext": "Очистити контекст"
2728
},
2829
"sendWhenEnter": "Надсилати при натисканні Enter",
2930
"welcome": "Вітаю! Як я можу допомогти вам сьогодні?",

src/assets/locale/zh-TW/playground.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
"uploadImage": "上傳圖片",
2525
"stopStreaming": "停止串流",
2626
"knowledge": "知識",
27-
"vision": "[實驗]視覺聊天"
27+
"vision": "[實驗]視覺聊天",
28+
"clearContext": "清除對話"
2829
},
2930
"sendWhenEnter": "按 Enter 送出",
3031
"welcome": "你好!今天我能幫你什麼?",

src/assets/locale/zh/playground.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
"uploadImage": "上传图片",
2525
"stopStreaming": "停止流式传输",
2626
"knowledge": "知识",
27-
"vision": "[实验性] 视觉聊天"
27+
"vision": "[实验性] 视觉聊天",
28+
"clearContext": "清除上下文"
2829
},
2930
"sendWhenEnter": "按Enter发送",
3031
"welcome": "你好!今天我能帮你什么?",

src/components/Option/Playground/PlaygroundForm.tsx

+19-4
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { Checkbox, Dropdown, Switch, Tooltip } from "antd"
88
import { Image } from "antd"
99
import { useWebUI } from "~/store/webui"
1010
import { defaultEmbeddingModelForRag } from "~/services/ollama"
11-
import { ImageIcon, MicIcon, StopCircleIcon, X } from "lucide-react"
11+
import { EraserIcon, ImageIcon, MicIcon, StopCircleIcon, X } from "lucide-react"
1212
import { getVariable } from "@/utils/select-variable"
1313
import { useTranslation } from "react-i18next"
1414
import { KnowledgeSelect } from "../Knowledge/KnowledgeSelect"
@@ -43,7 +43,9 @@ export const PlaygroundForm = ({ dropedFile }: Props) => {
4343
temporaryChat,
4444
useOCR,
4545
setUseOCR,
46-
defaultInternetSearchOn
46+
defaultInternetSearchOn,
47+
setHistory,
48+
history
4749
} = useMessageOption()
4850

4951
const isMobile = () => {
@@ -235,8 +237,7 @@ export const PlaygroundForm = ({ dropedFile }: Props) => {
235237
/>
236238
</div>
237239
<div>
238-
<div
239-
className={`flex bg-transparent `}>
240+
<div className={`flex bg-transparent `}>
240241
<form
241242
onSubmit={form.onSubmit(async (value) => {
242243
stopListening()
@@ -320,6 +321,20 @@ export const PlaygroundForm = ({ dropedFile }: Props) => {
320321
)}
321322
</div>
322323
<div className="flex !justify-end gap-3">
324+
{history.length > 0 && (
325+
<Tooltip title={t("tooltip.clearContext")}>
326+
<button
327+
type="button"
328+
onClick={() => {
329+
setHistory([])
330+
}}
331+
className={`flex items-center justify-center dark:text-gray-300 ${
332+
chatMode === "rag" ? "hidden" : "block"
333+
}`}>
334+
<EraserIcon className="h-5 w-5" />
335+
</button>
336+
</Tooltip>
337+
)}
323338
{!selectedKnowledge && (
324339
<Tooltip title={t("tooltip.uploadImage")}>
325340
<button

src/components/Option/Settings/general-settings.tsx

+2-81
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,15 @@
1-
import { useQueryClient } from "@tanstack/react-query"
21
import { useDarkMode } from "~/hooks/useDarkmode"
3-
import { useMessageOption } from "~/hooks/useMessageOption"
4-
import { PageAssitDatabase } from "@/db"
52
import { Select, Switch } from "antd"
63
import { SUPPORTED_LANGUAGES } from "~/utils/supported-languages"
74
import { MoonIcon, SunIcon } from "lucide-react"
85
import { SearchModeSettings } from "./search-mode"
96
import { useTranslation } from "react-i18next"
107
import { useI18n } from "@/hooks/useI18n"
118
import { TTSModeSettings } from "./tts-mode"
12-
import {
13-
exportPageAssistData,
14-
importPageAssistData
15-
} from "@/libs/export-import"
169
import { useStorage } from "@plasmohq/storage/hook"
10+
import { SystemSettings } from "./system-settings"
1711

1812
export const GeneralSettings = () => {
19-
const { clearChat } = useMessageOption()
2013
const [userChatBubble, setUserChatBubble] = useStorage("userChatBubble", true)
2114

2215
const [speechToTextLanguage, setSpeechToTextLanguage] = useStorage(
@@ -59,7 +52,6 @@ export const GeneralSettings = () => {
5952

6053
const [openReasoning, setOpenReasoning] = useStorage("openReasoning", false)
6154

62-
const queryClient = useQueryClient()
6355

6456
const { mode, toggleDarkMode } = useDarkMode()
6557
const { t } = useTranslation("settings")
@@ -272,78 +264,7 @@ export const GeneralSettings = () => {
272264
</div>
273265
<SearchModeSettings />
274266
<TTSModeSettings />
275-
<div>
276-
<div className="mb-5">
277-
<h2 className="text-base font-semibold leading-7 text-gray-900 dark:text-white">
278-
{t("generalSettings.system.heading")}
279-
</h2>
280-
<div className="border border-b border-gray-200 dark:border-gray-600 mt-3"></div>
281-
</div>
282-
283-
<div className="flex flex-row mb-3 justify-between">
284-
<span className="text-gray-700 dark:text-neutral-50 ">
285-
{t("generalSettings.system.export.label")}
286-
</span>
287-
<button
288-
onClick={exportPageAssistData}
289-
className="bg-gray-800 dark:bg-white text-white dark:text-gray-900 px-4 py-2 rounded-md cursor-pointer">
290-
{t("generalSettings.system.export.button")}
291-
</button>
292-
</div>
293-
<div className="flex flex-row mb-3 justify-between">
294-
<span className="text-gray-700 dark:text-neutral-50 ">
295-
{t("generalSettings.system.import.label")}
296-
</span>
297-
<label
298-
htmlFor="import"
299-
className="bg-gray-800 dark:bg-white text-white dark:text-gray-900 px-4 py-2 rounded-md cursor-pointer">
300-
{t("generalSettings.system.import.button")}
301-
</label>
302-
<input
303-
type="file"
304-
accept=".json"
305-
id="import"
306-
className="hidden"
307-
onChange={(e) => {
308-
if (e.target.files) {
309-
importPageAssistData(e.target.files[0])
310-
}
311-
}}
312-
/>
313-
</div>
314-
315-
<div className="flex flex-row mb-3 justify-between">
316-
<span className="text-gray-700 dark:text-neutral-50 ">
317-
{t("generalSettings.system.deleteChatHistory.label")}
318-
</span>
319-
320-
<button
321-
onClick={async () => {
322-
const confirm = window.confirm(
323-
t("generalSettings.system.deleteChatHistory.confirm")
324-
)
325-
326-
if (confirm) {
327-
const db = new PageAssitDatabase()
328-
await db.deleteAllChatHistory()
329-
queryClient.invalidateQueries({
330-
queryKey: ["fetchChatHistory"]
331-
})
332-
clearChat()
333-
try {
334-
await browser.storage.sync.clear()
335-
await browser.storage.local.clear()
336-
await browser.storage.session.clear()
337-
} catch (e) {
338-
console.error("Error clearing storage:", e)
339-
}
340-
}
341-
}}
342-
className="bg-red-500 dark:bg-red-600 text-white dark:text-gray-200 px-4 py-2 rounded-md">
343-
{t("generalSettings.system.deleteChatHistory.button")}
344-
</button>
345-
</div>
346-
</div>
267+
<SystemSettings />
347268
</dl>
348269
)
349270
}

0 commit comments

Comments
 (0)