{
- uploadFilesHandler();
- }}
+
-
- {$i18n.t('Upload Files')}
-
+ {
+ if (fileUploadEnabled) {
+ uploadFilesHandler();
+ }
+ }}
+ >
+
+ {$i18n.t('Upload Files')}
+
+
{#if $config?.features?.enable_google_drive_integration}
- {dayjs(message.timestamp * 1000).format($i18n.t('h:mm a'))}
+ {dayjs(message.timestamp * 1000).format('LT')}
{/if}
diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte
index 1768d584d..d6b31e6a0 100644
--- a/src/lib/components/chat/Messages/ResponseMessage.svelte
+++ b/src/lib/components/chat/Messages/ResponseMessage.svelte
@@ -500,7 +500,7 @@
-
+
{formatDate(message.timestamp * 1000)}
diff --git a/src/lib/components/chat/Messages/UserMessage.svelte b/src/lib/components/chat/Messages/UserMessage.svelte
index db1d31548..bf22e558a 100644
--- a/src/lib/components/chat/Messages/UserMessage.svelte
+++ b/src/lib/components/chat/Messages/UserMessage.svelte
@@ -13,8 +13,10 @@
import FileItem from '$lib/components/common/FileItem.svelte';
import Markdown from './Markdown.svelte';
import Image from '$lib/components/common/Image.svelte';
+ import localizedFormat from 'dayjs/plugin/localizedFormat';
const i18n = getContext('i18n');
+ dayjs.extend(localizedFormat);
export let user;
@@ -112,7 +114,7 @@
-
+
{formatDate(message.timestamp * 1000)}
diff --git a/src/lib/components/chat/Settings/Audio.svelte b/src/lib/components/chat/Settings/Audio.svelte
index e56fe056a..3f9fa9335 100644
--- a/src/lib/components/chat/Settings/Audio.svelte
+++ b/src/lib/components/chat/Settings/Audio.svelte
@@ -39,7 +39,7 @@
}, 100);
} else {
const res = await _getVoices(localStorage.token).catch((e) => {
- toast.error(e);
+ toast.error(`${e}`);
});
if (res) {
diff --git a/src/lib/components/chat/Settings/Personalization/ManageModal.svelte b/src/lib/components/chat/Settings/Personalization/ManageModal.svelte
index e4613b5fe..a9f72ccbb 100644
--- a/src/lib/components/chat/Settings/Personalization/ManageModal.svelte
+++ b/src/lib/components/chat/Settings/Personalization/ManageModal.svelte
@@ -11,8 +11,10 @@
import Tooltip from '$lib/components/common/Tooltip.svelte';
import { error } from '@sveltejs/kit';
import EditMemoryModal from './EditMemoryModal.svelte';
+ import localizedFormat from 'dayjs/plugin/localizedFormat';
const i18n = getContext('i18n');
+ dayjs.extend(localizedFormat);
export let show = false;
@@ -84,9 +86,7 @@
- {dayjs(memory.updated_at * 1000).format(
- $i18n.t('MMMM DD, YYYY hh:mm:ss A')
- )}
+ {dayjs(memory.updated_at * 1000).format('LLL')}
|
diff --git a/src/lib/components/layout/Sidebar/ArchivedChatsModal.svelte b/src/lib/components/layout/Sidebar/ArchivedChatsModal.svelte
index 6626cfed7..7af0c6ded 100644
--- a/src/lib/components/layout/Sidebar/ArchivedChatsModal.svelte
+++ b/src/lib/components/layout/Sidebar/ArchivedChatsModal.svelte
@@ -4,6 +4,9 @@
import { toast } from 'svelte-sonner';
import dayjs from 'dayjs';
import { getContext, createEventDispatcher } from 'svelte';
+ import localizedFormat from 'dayjs/plugin/localizedFormat';
+
+ dayjs.extend(localizedFormat);
const dispatch = createEventDispatcher();
@@ -159,7 +162,7 @@
|
- {dayjs(chat.created_at * 1000).format($i18n.t('MMMM DD, YYYY HH:mm'))}
+ {dayjs(chat.created_at * 1000).format('LLL')}
|
diff --git a/src/lib/components/layout/Sidebar/ChatItem.svelte b/src/lib/components/layout/Sidebar/ChatItem.svelte
index 748e1adb9..1e9224093 100644
--- a/src/lib/components/layout/Sidebar/ChatItem.svelte
+++ b/src/lib/components/layout/Sidebar/ChatItem.svelte
@@ -87,7 +87,13 @@
};
const cloneChatHandler = async (id) => {
- const res = await cloneChatById(localStorage.token, id).catch((error) => {
+ const res = await cloneChatById(
+ localStorage.token,
+ id,
+ $i18n.t('Clone of {{TITLE}}', {
+ TITLE: title
+ })
+ ).catch((error) => {
toast.error(`${error}`);
return null;
});
diff --git a/src/lib/components/playground/Chat.svelte b/src/lib/components/playground/Chat.svelte
index 5b89003c8..08a293f5b 100644
--- a/src/lib/components/playground/Chat.svelte
+++ b/src/lib/components/playground/Chat.svelte
@@ -33,6 +33,7 @@
let loading = false;
let stopResponseFlag = false;
+ let systemTextareaElement: HTMLTextAreaElement;
let messagesContainerElement: HTMLDivElement;
let showSystem = false;
@@ -58,8 +59,29 @@
console.log('stopResponse');
};
+ const resizeSystemTextarea = async () => {
+ await tick();
+ if (systemTextareaElement) {
+ systemTextareaElement.style.height = '';
+ systemTextareaElement.style.height = Math.min(systemTextareaElement.scrollHeight, 555) + 'px';
+ }
+ };
+
+ $: if (showSystem) {
+ resizeSystemTextarea();
+ }
+
const chatCompletionHandler = async () => {
+ if (selectedModelId === '') {
+ toast.error($i18n.t('Please select a model.'));
+ return;
+ }
+
const model = $models.find((model) => model.id === selectedModelId);
+ if (!model) {
+ selectedModelId = '';
+ return;
+ }
const [res, controller] = await chatCompletion(
localStorage.token,
@@ -258,10 +280,13 @@
diff --git a/src/lib/components/playground/Chat/Message.svelte b/src/lib/components/playground/Chat/Message.svelte
new file mode 100644
index 000000000..875e78d49
--- /dev/null
+++ b/src/lib/components/playground/Chat/Message.svelte
@@ -0,0 +1,76 @@
+
+
+
+
+
+ {$i18n.t(message.role)}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/playground/Chat/Messages.svelte b/src/lib/components/playground/Chat/Messages.svelte
index 69574632f..97bc32469 100644
--- a/src/lib/components/playground/Chat/Messages.svelte
+++ b/src/lib/components/playground/Chat/Messages.svelte
@@ -1,77 +1,20 @@
{#each messages as message, idx}
-
-
-
- {$i18n.t(message.role)}
-
-
-
-
-
-
-
-
-
-
-
-
+
{
+ messages = messages.filter((message, messageIdx) => messageIdx !== idx);
+ }}
+ />
{/each}
diff --git a/src/lib/components/workspace/Knowledge.svelte b/src/lib/components/workspace/Knowledge.svelte
index c5ea4ad7f..ff6cea219 100644
--- a/src/lib/components/workspace/Knowledge.svelte
+++ b/src/lib/components/workspace/Knowledge.svelte
@@ -54,7 +54,7 @@
const deleteHandler = async (item) => {
const res = await deleteKnowledgeById(localStorage.token, item.id).catch((e) => {
- toast.error(e);
+ toast.error(`${e}`);
});
if (res) {
diff --git a/src/lib/components/workspace/Knowledge/CreateKnowledgeBase.svelte b/src/lib/components/workspace/Knowledge/CreateKnowledgeBase.svelte
index 5d1e79808..cb75c1cbf 100644
--- a/src/lib/components/workspace/Knowledge/CreateKnowledgeBase.svelte
+++ b/src/lib/components/workspace/Knowledge/CreateKnowledgeBase.svelte
@@ -31,7 +31,7 @@
description,
accessControl
).catch((e) => {
- toast.error(e);
+ toast.error(`${e}`);
});
if (res) {
@@ -112,7 +112,7 @@
diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte
index 96bdacc31..5b1833450 100644
--- a/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte
+++ b/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte
@@ -149,7 +149,7 @@
try {
const uploadedFile = await uploadFile(localStorage.token, file).catch((e) => {
- toast.error(e);
+ toast.error(`${e}`);
return null;
});
@@ -169,7 +169,7 @@
toast.error($i18n.t('Failed to upload file.'));
}
} catch (e) {
- toast.error(e);
+ toast.error(`${e}`);
}
};
@@ -339,7 +339,7 @@
const syncDirectoryHandler = async () => {
if ((knowledge?.files ?? []).length > 0) {
const res = await resetKnowledgeById(localStorage.token, id).catch((e) => {
- toast.error(e);
+ toast.error(`${e}`);
});
if (res) {
@@ -357,7 +357,7 @@
const addFileHandler = async (fileId) => {
const updatedKnowledge = await addFileToKnowledgeById(localStorage.token, id, fileId).catch(
(e) => {
- toast.error(e);
+ toast.error(`${e}`);
return null;
}
);
@@ -386,7 +386,7 @@
}
} catch (e) {
console.error('Error in deleteFileHandler:', e);
- toast.error(e);
+ toast.error(`${e}`);
}
};
@@ -395,7 +395,7 @@
const content = selectedFile.data.content;
const res = updateFileDataContentById(localStorage.token, fileId, content).catch((e) => {
- toast.error(e);
+ toast.error(`${e}`);
});
const updatedKnowledge = await updateFileFromKnowledgeById(
@@ -403,7 +403,7 @@
id,
fileId
).catch((e) => {
- toast.error(e);
+ toast.error(`${e}`);
});
if (res && updatedKnowledge) {
@@ -430,7 +430,7 @@
description: knowledge.description,
access_control: knowledge.access_control
}).catch((e) => {
- toast.error(e);
+ toast.error(`${e}`);
});
if (res) {
@@ -522,7 +522,7 @@
id = $page.params.id;
const res = await getKnowledgeById(localStorage.token, id).catch((e) => {
- toast.error(e);
+ toast.error(`${e}`);
return null;
});
diff --git a/src/lib/components/workspace/Models.svelte b/src/lib/components/workspace/Models.svelte
index f7d7061dd..d2f54eb0c 100644
--- a/src/lib/components/workspace/Models.svelte
+++ b/src/lib/components/workspace/Models.svelte
@@ -60,7 +60,7 @@
const deleteModelHandler = async (model) => {
const res = await deleteModelById(localStorage.token, model.id).catch((e) => {
- toast.error(e);
+ toast.error(`${e}`);
return null;
});
diff --git a/src/lib/components/workspace/Models/ModelEditor.svelte b/src/lib/components/workspace/Models/ModelEditor.svelte
index 58628f0d1..ae10c6eba 100644
--- a/src/lib/components/workspace/Models/ModelEditor.svelte
+++ b/src/lib/components/workspace/Models/ModelEditor.svelte
@@ -531,7 +531,10 @@
diff --git a/src/lib/components/workspace/common/ValvesModal.svelte b/src/lib/components/workspace/common/ValvesModal.svelte
index 1d022f3d9..712a96f8d 100644
--- a/src/lib/components/workspace/common/ValvesModal.svelte
+++ b/src/lib/components/workspace/common/ValvesModal.svelte
@@ -136,7 +136,7 @@