diff --git a/frontend/src/components/WorkspaceChat/ChatContainer/ChatHistory/HistoricalMessage/Actions/EditMessage/index.jsx b/frontend/src/components/WorkspaceChat/ChatContainer/ChatHistory/HistoricalMessage/Actions/EditMessage/index.jsx
index 3c1fd16a18..6967f120b8 100644
--- a/frontend/src/components/WorkspaceChat/ChatContainer/ChatHistory/HistoricalMessage/Actions/EditMessage/index.jsx
+++ b/frontend/src/components/WorkspaceChat/ChatContainer/ChatHistory/HistoricalMessage/Actions/EditMessage/index.jsx
@@ -1,5 +1,6 @@
import { Pencil } from "@phosphor-icons/react";
import { useState, useEffect, useRef } from "react";
+import Appearance from "@/models/appearance";
const EDIT_EVENT = "toggle-message-edit";
@@ -98,6 +99,7 @@ export function EditMessageForm({
diff --git a/frontend/src/locales/ar/common.js b/frontend/src/locales/ar/common.js
index dec22f1626..1d9dcd0906 100644
--- a/frontend/src/locales/ar/common.js
+++ b/frontend/src/locales/ar/common.js
@@ -690,6 +690,10 @@ const TRANSLATIONS = {
title: null,
description: null,
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/da/common.js b/frontend/src/locales/da/common.js
index 23c9316ea7..ecb556e742 100644
--- a/frontend/src/locales/da/common.js
+++ b/frontend/src/locales/da/common.js
@@ -729,6 +729,10 @@ const TRANSLATIONS = {
title: null,
description: null,
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/de/common.js b/frontend/src/locales/de/common.js
index 40ab0bd978..032957b851 100644
--- a/frontend/src/locales/de/common.js
+++ b/frontend/src/locales/de/common.js
@@ -727,6 +727,10 @@ const TRANSLATIONS = {
title: null,
description: null,
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/en/common.js b/frontend/src/locales/en/common.js
index 5a6d31b92a..2be459e2ae 100644
--- a/frontend/src/locales/en/common.js
+++ b/frontend/src/locales/en/common.js
@@ -483,6 +483,10 @@ const TRANSLATIONS = {
title: "Auto-Speak Responses",
description: "Automatically speak responses from the AI",
},
+ spellcheck: {
+ title: "Enable Spellcheck",
+ description: "Enable or disable spellcheck in the chat input field",
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/es/common.js b/frontend/src/locales/es/common.js
index f73c58179a..019454c1f7 100644
--- a/frontend/src/locales/es/common.js
+++ b/frontend/src/locales/es/common.js
@@ -689,6 +689,10 @@ const TRANSLATIONS = {
title: null,
description: null,
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/fa/common.js b/frontend/src/locales/fa/common.js
index effb881874..98b88e5808 100644
--- a/frontend/src/locales/fa/common.js
+++ b/frontend/src/locales/fa/common.js
@@ -682,6 +682,10 @@ const TRANSLATIONS = {
title: null,
description: null,
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/fr/common.js b/frontend/src/locales/fr/common.js
index d3c51c323d..76b89d9c06 100644
--- a/frontend/src/locales/fr/common.js
+++ b/frontend/src/locales/fr/common.js
@@ -690,6 +690,10 @@ const TRANSLATIONS = {
title: null,
description: null,
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/he/common.js b/frontend/src/locales/he/common.js
index c412330aa4..7e8abd7a32 100644
--- a/frontend/src/locales/he/common.js
+++ b/frontend/src/locales/he/common.js
@@ -675,6 +675,10 @@ const TRANSLATIONS = {
title: null,
description: null,
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/it/common.js b/frontend/src/locales/it/common.js
index cb8ecb29c2..f2030a67d3 100644
--- a/frontend/src/locales/it/common.js
+++ b/frontend/src/locales/it/common.js
@@ -688,6 +688,10 @@ const TRANSLATIONS = {
title: null,
description: null,
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/ja/common.js b/frontend/src/locales/ja/common.js
index 2f6bcc7147..84a4bf8d48 100644
--- a/frontend/src/locales/ja/common.js
+++ b/frontend/src/locales/ja/common.js
@@ -721,6 +721,10 @@ const TRANSLATIONS = {
title: null,
description: null,
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/ko/common.js b/frontend/src/locales/ko/common.js
index 830303df30..c83e0ad2a3 100644
--- a/frontend/src/locales/ko/common.js
+++ b/frontend/src/locales/ko/common.js
@@ -675,6 +675,10 @@ const TRANSLATIONS = {
title: null,
description: null,
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/nl/common.js b/frontend/src/locales/nl/common.js
index 7321e743ba..1dbb3bc72d 100644
--- a/frontend/src/locales/nl/common.js
+++ b/frontend/src/locales/nl/common.js
@@ -685,6 +685,10 @@ const TRANSLATIONS = {
title: null,
description: null,
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/pt_BR/common.js b/frontend/src/locales/pt_BR/common.js
index 8b7a4503dc..9262deafd4 100644
--- a/frontend/src/locales/pt_BR/common.js
+++ b/frontend/src/locales/pt_BR/common.js
@@ -694,6 +694,10 @@ const TRANSLATIONS = {
title: null,
description: null,
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/ru/common.js b/frontend/src/locales/ru/common.js
index b85502b87e..8cc1c94b68 100644
--- a/frontend/src/locales/ru/common.js
+++ b/frontend/src/locales/ru/common.js
@@ -730,6 +730,10 @@ const TRANSLATIONS = {
title: null,
description: null,
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/tr/common.js b/frontend/src/locales/tr/common.js
index 755d1ee46c..78ad528ea3 100644
--- a/frontend/src/locales/tr/common.js
+++ b/frontend/src/locales/tr/common.js
@@ -685,6 +685,10 @@ const TRANSLATIONS = {
title: null,
description: null,
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/vn/common.js b/frontend/src/locales/vn/common.js
index cfe5497e7b..f22e1895c9 100644
--- a/frontend/src/locales/vn/common.js
+++ b/frontend/src/locales/vn/common.js
@@ -684,6 +684,10 @@ const TRANSLATIONS = {
title: null,
description: null,
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/zh/common.js b/frontend/src/locales/zh/common.js
index abdfb076f9..b83112dbe1 100644
--- a/frontend/src/locales/zh/common.js
+++ b/frontend/src/locales/zh/common.js
@@ -446,6 +446,10 @@ const TRANSLATIONS = {
title: "自动语音回复",
description: "自动朗读 AI 的回复内容",
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/locales/zh_TW/common.js b/frontend/src/locales/zh_TW/common.js
index 3470d3770d..7a6cd0c488 100644
--- a/frontend/src/locales/zh_TW/common.js
+++ b/frontend/src/locales/zh_TW/common.js
@@ -687,6 +687,10 @@ const TRANSLATIONS = {
title: "自動語音回應",
description: "自動朗讀 AI 的回應內容",
},
+ spellcheck: {
+ title: null,
+ description: null,
+ },
},
items: {
theme: {
diff --git a/frontend/src/models/appearance.js b/frontend/src/models/appearance.js
index a066bdfed6..e1e45b454e 100644
--- a/frontend/src/models/appearance.js
+++ b/frontend/src/models/appearance.js
@@ -1,10 +1,19 @@
import { APPEARANCE_SETTINGS } from "@/utils/constants";
+/**
+ * @typedef { 'showScrollbar' |
+ * 'autoSubmitSttInput' |
+ * 'autoPlayAssistantTtsResponse' |
+ * 'enableSpellCheck'
+ * } AvailableSettings - The supported settings for the appearance model.
+ */
+
const Appearance = {
defaultSettings: {
showScrollbar: false,
autoSubmitSttInput: true,
autoPlayAssistantTtsResponse: false,
+ enableSpellCheck: true,
},
/**
@@ -22,8 +31,8 @@ const Appearance = {
/**
* Fetches a specific setting from the user's settings
- * @param {string} key - The key of the setting to fetch
- * @returns {any} - a default value if the setting is not found or the current value
+ * @param {AvailableSettings} key - The key of the setting to fetch
+ * @returns {boolean} - a default value if the setting is not found or the current value
*/
get: (key) => {
const settings = Appearance.getSettings();
@@ -34,7 +43,7 @@ const Appearance = {
/**
* Updates a specific setting from the user's settings
- * @param {string} key - The key of the setting to update
+ * @param {AvailableSettings} key - The key of the setting to update
* @param {any} value - The value to update the setting to
* @returns {object}
*/
diff --git a/frontend/src/pages/GeneralSettings/Settings/Chat/index.jsx b/frontend/src/pages/GeneralSettings/Settings/Chat/index.jsx
index 1e3a056236..b82b864f6e 100644
--- a/frontend/src/pages/GeneralSettings/Settings/Chat/index.jsx
+++ b/frontend/src/pages/GeneralSettings/Settings/Chat/index.jsx
@@ -3,6 +3,7 @@ import { isMobile } from "react-device-detect";
import { useTranslation } from "react-i18next";
import AutoSubmit from "../components/AutoSubmit";
import AutoSpeak from "../components/AutoSpeak";
+import SpellCheck from "../components/SpellCheck";
export default function ChatSettings() {
const { t } = useTranslation();
@@ -27,6 +28,7 @@ export default function ChatSettings() {
+ {t("customization.chat.spellcheck.title")} +
++ {t("customization.chat.spellcheck.description")} +
+