diff --git a/src/assets/locale/en/playground.json b/src/assets/locale/en/playground.json
index 2fc5041..c4f5f5c 100644
--- a/src/assets/locale/en/playground.json
+++ b/src/assets/locale/en/playground.json
@@ -23,7 +23,8 @@
"speechToText": "Speech to Text",
"uploadImage": "Upload Image",
"stopStreaming": "Stop Streaming",
- "knowledge": "Knowledge"
+ "knowledge": "Knowledge",
+ "vision": "[Experimental] Vision Chat"
},
"sendWhenEnter": "Send when Enter pressed",
"welcome": "Hello! How can I help you today?"
diff --git a/src/components/Sidepanel/Chat/form.tsx b/src/components/Sidepanel/Chat/form.tsx
index 618431d..a402680 100644
--- a/src/components/Sidepanel/Chat/form.tsx
+++ b/src/components/Sidepanel/Chat/form.tsx
@@ -7,7 +7,14 @@ import { toBase64 } from "~/libs/to-base64"
import { Checkbox, Dropdown, Image, Switch, Tooltip } from "antd"
import { useWebUI } from "~/store/webui"
import { defaultEmbeddingModelForRag } from "~/services/ollama"
-import { ImageIcon, MicIcon, StopCircleIcon, X } from "lucide-react"
+import {
+ ImageIcon,
+ MicIcon,
+ StopCircleIcon,
+ X,
+ EyeIcon,
+ EyeOffIcon
+} from "lucide-react"
import { useTranslation } from "react-i18next"
import { ModelSelect } from "@/components/Common/ModelSelect"
import { useSpeechRecognition } from "@/hooks/useSpeechRecognition"
@@ -36,7 +43,7 @@ export const SidepanelForm = ({ dropedFile }: Props) => {
resetTranscript,
start: startListening,
stop: stopSpeechRecognition,
- supported: browserSupportsSpeechRecognition,
+ supported: browserSupportsSpeechRecognition
} = useSpeechRecognition()
const stopListening = async () => {
@@ -237,7 +244,10 @@ export const SidepanelForm = ({ dropedFile }: Props) => {
}
}
await stopListening()
- if (value.message.trim().length === 0 && value.image.length === 0) {
+ if (
+ value.message.trim().length === 0 &&
+ value.image.length === 0
+ ) {
return
}
form.reset()
@@ -281,20 +291,22 @@ export const SidepanelForm = ({ dropedFile }: Props) => {
{...form.getInputProps("message")}
/>
-
-
-
+ {chatMode !== "vision" && (
+
+
+
+ )}
{browserSupportsSpeechRecognition && (
@@ -323,13 +335,35 @@ export const SidepanelForm = ({ dropedFile }: Props) => {
)}
+
+
+