Browse Source

Merge pull request #4795 from open-webui/dev

0.3.15
Timothy Jaeryang Baek 8 months ago
parent
commit
847ca66001
54 changed files with 148 additions and 29 deletions
  1. 13 0
      CHANGELOG.md
  2. 2 1
      backend/apps/images/main.py
  3. 3 1
      backend/apps/images/utils/comfyui.py
  4. 7 2
      backend/apps/webui/main.py
  5. 2 2
      package-lock.json
  6. 1 1
      package.json
  7. 26 15
      src/lib/components/admin/Settings/Images.svelte
  8. 4 2
      src/lib/components/chat/Chat.svelte
  9. 9 0
      src/lib/components/chat/Messages.svelte
  10. 16 3
      src/lib/components/chat/Messages/MultiResponseMessages.svelte
  11. 8 0
      src/lib/components/chat/ModelSelector/Selector.svelte
  12. 9 1
      src/lib/components/common/ImagePreview.svelte
  13. 1 0
      src/lib/i18n/locales/ar-BH/translation.json
  14. 1 0
      src/lib/i18n/locales/bg-BG/translation.json
  15. 1 0
      src/lib/i18n/locales/bn-BD/translation.json
  16. 1 0
      src/lib/i18n/locales/ca-ES/translation.json
  17. 1 0
      src/lib/i18n/locales/ceb-PH/translation.json
  18. 1 0
      src/lib/i18n/locales/de-DE/translation.json
  19. 1 0
      src/lib/i18n/locales/dg-DG/translation.json
  20. 1 0
      src/lib/i18n/locales/en-GB/translation.json
  21. 1 0
      src/lib/i18n/locales/en-US/translation.json
  22. 1 0
      src/lib/i18n/locales/es-ES/translation.json
  23. 1 0
      src/lib/i18n/locales/fa-IR/translation.json
  24. 1 0
      src/lib/i18n/locales/fi-FI/translation.json
  25. 1 0
      src/lib/i18n/locales/fr-CA/translation.json
  26. 1 0
      src/lib/i18n/locales/fr-FR/translation.json
  27. 1 0
      src/lib/i18n/locales/he-IL/translation.json
  28. 1 0
      src/lib/i18n/locales/hi-IN/translation.json
  29. 1 0
      src/lib/i18n/locales/hr-HR/translation.json
  30. 1 0
      src/lib/i18n/locales/id-ID/translation.json
  31. 1 0
      src/lib/i18n/locales/it-IT/translation.json
  32. 1 0
      src/lib/i18n/locales/ja-JP/translation.json
  33. 1 0
      src/lib/i18n/locales/ka-GE/translation.json
  34. 1 0
      src/lib/i18n/locales/ko-KR/translation.json
  35. 1 0
      src/lib/i18n/locales/lt-LT/translation.json
  36. 1 0
      src/lib/i18n/locales/ms-MY/translation.json
  37. 1 0
      src/lib/i18n/locales/nb-NO/translation.json
  38. 1 0
      src/lib/i18n/locales/nl-NL/translation.json
  39. 1 0
      src/lib/i18n/locales/pa-IN/translation.json
  40. 1 0
      src/lib/i18n/locales/pl-PL/translation.json
  41. 1 0
      src/lib/i18n/locales/pt-BR/translation.json
  42. 1 0
      src/lib/i18n/locales/pt-PT/translation.json
  43. 1 0
      src/lib/i18n/locales/ro-RO/translation.json
  44. 1 0
      src/lib/i18n/locales/ru-RU/translation.json
  45. 1 0
      src/lib/i18n/locales/sr-RS/translation.json
  46. 1 0
      src/lib/i18n/locales/sv-SE/translation.json
  47. 1 0
      src/lib/i18n/locales/th-TH/translation.json
  48. 1 0
      src/lib/i18n/locales/tk-TW/translation.json
  49. 1 0
      src/lib/i18n/locales/tr-TR/translation.json
  50. 1 0
      src/lib/i18n/locales/uk-UA/translation.json
  51. 1 0
      src/lib/i18n/locales/vi-VN/translation.json
  52. 1 0
      src/lib/i18n/locales/zh-CN/translation.json
  53. 1 0
      src/lib/i18n/locales/zh-TW/translation.json
  54. 7 1
      src/routes/(app)/+layout.svelte

+ 13 - 0
CHANGELOG.md

@@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
+## [0.3.15] - 2024-08-21
+
+### Added
+
+- **🔗 Temporary Chat Activation**: Integrated a new URL parameter 'temporary-chat=true' to enable temporary chat sessions directly through the URL.
+- **🌄 ComfyUI Seed Node Support**: Introduced seed node support in ComfyUI for image generation, allowing users to specify node IDs for randomized seed assignment.
+
+### Fixed
+
+- **🛠️ Tools and Functions**: Resolved a critical issue where Tools and Functions were not properly functioning, restoring full capability and reliability to these essential features.
+- **🔘 Chat Action Button in Many Model Chat**: Fixed the malfunctioning of chat action buttons in many model chat environments, ensuring a smoother and more responsive user interaction.
+- **⏪ Many Model Chat Compatibility**: Restored backward compatibility for many model chats.
+
 ## [0.3.14] - 2024-08-21
 
 ### Added

+ 2 - 1
backend/apps/images/main.py

@@ -298,7 +298,8 @@ def get_models(user=Depends(get_verified_user)):
 
             for node in app.state.config.COMFYUI_WORKFLOW_NODES:
                 if node["type"] == "model":
-                    model_node_id = node["node_ids"][0]
+                    if node["node_ids"]:
+                        model_node_id = node["node_ids"][0]
                     break
 
             if model_node_id:

+ 3 - 1
backend/apps/images/utils/comfyui.py

@@ -133,7 +133,7 @@ async def comfyui_generate_image(
                     else random.randint(0, 18446744073709551614)
                 )
                 for node_id in node.node_ids:
-                    workflow[node.node_id]["inputs"]["seed"] = seed
+                    workflow[node_id]["inputs"][node.key] = seed
         else:
             for node_id in node.node_ids:
                 workflow[node_id]["inputs"][node.key] = node.value
@@ -147,6 +147,8 @@ async def comfyui_generate_image(
         return None
 
     try:
+        log.info("Sending workflow to WebSocket server.")
+        log.info(f"Workflow: {workflow}")
         images = await asyncio.to_thread(get_images, ws, workflow, client_id, base_url)
     except Exception as e:
         log.exception(f"Error while receiving images: {e}")

+ 7 - 2
backend/apps/webui/main.py

@@ -280,6 +280,10 @@ async def generate_function_chat_completion(form_data, user):
     files = metadata.get("files", [])
     tool_ids = metadata.get("tool_ids", [])
 
+    # Check if tool_ids is None
+    if tool_ids is None:
+        tool_ids = []
+
     __event_emitter__ = None
     __event_call__ = None
     __task__ = None
@@ -301,9 +305,10 @@ async def generate_function_chat_completion(form_data, user):
         "__messages__": form_data["messages"],
         "__files__": files,
     }
-    configured_tools = get_tools(app, tool_ids, user, tools_params)
 
-    extra_params["__tools__"] = configured_tools
+    tools = get_tools(app, tool_ids, user, tools_params)
+    extra_params["__tools__"] = tools
+
     if model_info:
         if model_info.base_model_id:
             form_data["model"] = model_info.base_model_id

+ 2 - 2
package-lock.json

@@ -1,12 +1,12 @@
 {
 	"name": "open-webui",
-	"version": "0.3.14",
+	"version": "0.3.15",
 	"lockfileVersion": 3,
 	"requires": true,
 	"packages": {
 		"": {
 			"name": "open-webui",
-			"version": "0.3.14",
+			"version": "0.3.15",
 			"dependencies": {
 				"@codemirror/lang-javascript": "^6.2.2",
 				"@codemirror/lang-python": "^6.1.6",

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
 	"name": "open-webui",
-	"version": "0.3.14",
+	"version": "0.3.15",
 	"private": true,
 	"scripts": {
 		"dev": "npm run pyodide:fetch && vite dev --host",

+ 26 - 15
src/lib/components/admin/Settings/Images.svelte

@@ -27,7 +27,7 @@
 
 	let models = null;
 
-	let workflowNodes = [
+	let requiredWorkflowNodes = [
 		{
 			type: 'prompt',
 			key: 'text',
@@ -52,6 +52,11 @@
 			type: 'steps',
 			key: 'steps',
 			node_ids: ''
+		},
+		{
+			type: 'seed',
+			key: 'seed',
+			node_ids: ''
 		}
 	];
 
@@ -101,11 +106,12 @@
 		}
 
 		if (config?.comfyui?.COMFYUI_WORKFLOW) {
-			config.comfyui.COMFYUI_WORKFLOW_NODES = workflowNodes.map((node) => {
+			config.comfyui.COMFYUI_WORKFLOW_NODES = requiredWorkflowNodes.map((node) => {
 				return {
 					type: node.type,
 					key: node.key,
-					node_ids: node.node_ids.split(',').map((id) => id.trim())
+					node_ids:
+						node.node_ids.trim() === '' ? [] : node.node_ids.split(',').map((id) => id.trim())
 				};
 			});
 		}
@@ -150,15 +156,17 @@
 				);
 			}
 
-			if ((config?.comfyui?.COMFYUI_WORKFLOW_NODES ?? []).length >= 5) {
-				workflowNodes = config.comfyui.COMFYUI_WORKFLOW_NODES.map((node) => {
-					return {
-						type: node.type,
-						key: node.key,
-						node_ids: node.node_ids.join(',')
-					};
-				});
-			}
+			requiredWorkflowNodes = requiredWorkflowNodes.map((node) => {
+				const n = config.comfyui.COMFYUI_WORKFLOW_NODES.find((n) => n.type === node.type) ?? node;
+
+				console.log(n);
+
+				return {
+					type: n.type,
+					key: n.key,
+					node_ids: typeof n.node_ids === 'string' ? n.node_ids : n.node_ids.join(',')
+				};
+			});
 
 			const imageConfigRes = await getImageGenerationConfig(localStorage.token).catch((error) => {
 				toast.error(error);
@@ -414,13 +422,13 @@
 							<div class=" mb-2 text-sm font-medium">{$i18n.t('ComfyUI Workflow Nodes')}</div>
 
 							<div class="text-xs flex flex-col gap-1.5">
-								{#each workflowNodes as node}
+								{#each requiredWorkflowNodes as node}
 									<div class="flex w-full items-center border dark:border-gray-850 rounded-lg">
 										<div class="flex-shrink-0">
 											<div
 												class=" capitalize line-clamp-1 font-medium px-3 py-1 w-20 text-center rounded-l-lg bg-green-500/10 text-green-700 dark:text-green-200"
 											>
-												{node.type}
+												{node.type}{node.type === 'prompt' ? '*' : ''}
 											</div>
 										</div>
 										<div class="">
@@ -443,13 +451,16 @@
 													class="w-full py-1 px-4 rounded-r-lg text-xs bg-transparent outline-none"
 													placeholder="Node Ids"
 													bind:value={node.node_ids}
-													required
 												/>
 											</Tooltip>
 										</div>
 									</div>
 								{/each}
 							</div>
+
+							<div class="mt-2 text-xs text-right text-gray-400 dark:text-gray-500">
+								{$i18n.t('*Prompt node ID(s) are required for image generation')}
+							</div>
 						</div>
 					{/if}
 				{:else if config?.engine === 'openai'}

+ 4 - 2
src/lib/components/chat/Chat.svelte

@@ -270,9 +270,11 @@
 	//////////////////////////
 
 	const initNewChat = async () => {
-		window.history.replaceState(history.state, '', `/`);
-		await chatId.set('');
+		if ($page.url.pathname.includes('/c/')) {
+			window.history.replaceState(history.state, '', `/`);
+		}
 
+		await chatId.set('');
 		autoScroll = true;
 
 		title = '';

+ 9 - 0
src/lib/components/chat/Messages.svelte

@@ -386,6 +386,15 @@
 										{continueGeneration}
 										{mergeResponses}
 										{regenerateResponse}
+										on:action={async (e) => {
+											console.log('action', e);
+											if (typeof e.detail === 'string') {
+												await chatActionHandler(chatId, e.detail, message.model, message.id);
+											} else {
+												const { id, event } = e.detail;
+												await chatActionHandler(chatId, id, message.model, message.id, event);
+											}
+										}}
 										on:change={async () => {
 											await updateChatById(localStorage.token, chatId, {
 												messages: messages,

+ 16 - 3
src/lib/components/chat/Messages/MultiResponseMessages.svelte

@@ -91,9 +91,19 @@
 
 		groupedMessages = parentMessage?.models.reduce((a, model, modelIdx) => {
 			// Find all messages that are children of the parent message and have the same model
-			const modelMessages = parentMessage?.childrenIds
+			let modelMessages = parentMessage?.childrenIds
 				.map((id) => history.messages[id])
-				.filter((m) => m.modelIdx === modelIdx);
+				.filter((m) => m?.modelIdx === modelIdx);
+
+			if (modelMessages.length === 0) {
+				modelMessages = parentMessage?.childrenIds
+					.map((id) => history.messages[id])
+					.filter((m) => m?.model === model);
+
+				modelMessages.forEach((m) => {
+					m.modelIdx = modelIdx;
+				});
+			}
 
 			return {
 				...a,
@@ -186,6 +196,9 @@
 										await tick();
 										groupedMessagesIdx[modelIdx] = groupedMessages[modelIdx].messages.length - 1;
 									}}
+									on:action={async (e) => {
+										dispatch('action', e.detail);
+									}}
 									on:save={async (e) => {
 										console.log('save', e);
 
@@ -208,7 +221,7 @@
 	{#if !readOnly && isLastMessage}
 		{#if !Object.keys(groupedMessages).find((modelIdx) => {
 			const { messages } = groupedMessages[modelIdx];
-			return !messages[groupedMessagesIdx[modelIdx]].done;
+			return !messages[groupedMessagesIdx[modelIdx]]?.done ?? false;
 		})}
 			<div class="flex justify-end">
 				<div class="w-full">

+ 8 - 0
src/lib/components/chat/ModelSelector/Selector.svelte

@@ -533,6 +533,14 @@
 							setTimeout(() => {
 								newChatButton?.click();
 							}, 0);
+
+							// add 'temporary-chat=true' to the URL
+							if ($temporaryChatEnabled) {
+								history.replaceState(null, '', '?temporary-chat=true');
+							} else {
+								history.replaceState(null, '', location.pathname);
+							}
+
 							show = false;
 						}}
 					>

+ 9 - 1
src/lib/components/common/ImagePreview.svelte

@@ -1,5 +1,5 @@
 <script lang="ts">
-	import { onMount } from 'svelte';
+	import { onDestroy, onMount } from 'svelte';
 
 	export let show = false;
 	export let src = '';
@@ -45,6 +45,14 @@
 		document.body.removeChild(previewElement);
 		document.body.style.overflow = 'unset';
 	}
+
+	onDestroy(() => {
+		show = false;
+
+		if (previewElement) {
+			document.body.removeChild(previewElement);
+		}
+	});
 </script>
 
 {#if show}

+ 1 - 0
src/lib/i18n/locales/ar-BH/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} ...يفكر",
 	"{{user}}'s Chats": "دردشات {{user}}",
 	"{{webUIName}} Backend Required": "{{webUIName}} مطلوب",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "يتم استخدام نموذج المهمة عند تنفيذ مهام مثل إنشاء عناوين للدردشات واستعلامات بحث الويب",
 	"a user": "مستخدم",
 	"About": "عن",

+ 1 - 0
src/lib/i18n/locales/bg-BG/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} мисли ...",
 	"{{user}}'s Chats": "{{user}}'s чатове",
 	"{{webUIName}} Backend Required": "{{webUIName}} Изисква се Бекенд",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Моделът на задачите се използва при изпълнение на задачи като генериране на заглавия за чатове и заявки за търсене в мрежата",
 	"a user": "потребител",
 	"About": "Относно",

+ 1 - 0
src/lib/i18n/locales/bn-BD/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} চিন্তা করছে...",
 	"{{user}}'s Chats": "{{user}}র চ্যাটস",
 	"{{webUIName}} Backend Required": "{{webUIName}} ব্যাকএন্ড আবশ্যক",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "চ্যাট এবং ওয়েব অনুসন্ধান প্রশ্নের জন্য শিরোনাম তৈরি করার মতো কাজগুলি সম্পাদন করার সময় একটি টাস্ক মডেল ব্যবহার করা হয়",
 	"a user": "একজন ব্যাবহারকারী",
 	"About": "সম্পর্কে",

+ 1 - 0
src/lib/i18n/locales/ca-ES/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} està pensant...",
 	"{{user}}'s Chats": "Els xats de {{user}}",
 	"{{webUIName}} Backend Required": "El Backend de {{webUIName}} és necessari",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Un model de tasca s'utilitza quan es realitzen tasques com ara generar títols per a xats i consultes de cerca per a la web",
 	"a user": "un usuari",
 	"About": "Sobre",

+ 1 - 0
src/lib/i18n/locales/ceb-PH/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} hunahunaa...",
 	"{{user}}'s Chats": "",
 	"{{webUIName}} Backend Required": "Backend {{webUIName}} gikinahanglan",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "",
 	"a user": "usa ka user",
 	"About": "Mahitungod sa",

+ 1 - 0
src/lib/i18n/locales/de-DE/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} denkt nach...",
 	"{{user}}'s Chats": "{{user}}s Unterhaltungen",
 	"{{webUIName}} Backend Required": "{{webUIName}}-Backend erforderlich",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Aufgabenmodelle können Unterhaltungstitel oder Websuchanfragen generieren.",
 	"a user": "ein Benutzer",
 	"About": "Über",

+ 1 - 0
src/lib/i18n/locales/dg-DG/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} is thinkin'...",
 	"{{user}}'s Chats": "",
 	"{{webUIName}} Backend Required": "{{webUIName}} Backend Much Required",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "",
 	"a user": "such user",
 	"About": "Much About",

+ 1 - 0
src/lib/i18n/locales/en-GB/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "",
 	"{{user}}'s Chats": "",
 	"{{webUIName}} Backend Required": "",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "",
 	"a user": "",
 	"About": "",

+ 1 - 0
src/lib/i18n/locales/en-US/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "",
 	"{{user}}'s Chats": "",
 	"{{webUIName}} Backend Required": "",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "",
 	"a user": "",
 	"About": "",

+ 1 - 0
src/lib/i18n/locales/es-ES/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} está pensando...",
 	"{{user}}'s Chats": "{{user}}'s Chats",
 	"{{webUIName}} Backend Required": "{{webUIName}} Servidor Requerido",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Un modelo de tareas se utiliza cuando se realizan tareas como la generación de títulos para chats y consultas de búsqueda web",
 	"a user": "un usuario",
 	"About": "Sobre nosotros",

+ 1 - 0
src/lib/i18n/locales/fa-IR/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} در حال فکر کردن است...",
 	"{{user}}'s Chats": "{{user}} چت ها",
 	"{{webUIName}} Backend Required": "بکند {{webUIName}} نیاز است.",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "یک مدل وظیفه هنگام انجام وظایف مانند تولید عناوین برای چت ها و نمایش های جستجوی وب استفاده می شود.",
 	"a user": "یک کاربر",
 	"About": "درباره",

+ 1 - 0
src/lib/i18n/locales/fi-FI/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} miettii...",
 	"{{user}}'s Chats": "{{user}}:n keskustelut",
 	"{{webUIName}} Backend Required": "{{webUIName}} backend vaaditaan",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Tehtävämallia käytetään tehtävien suorittamiseen, kuten otsikoiden luomiseen keskusteluille ja verkkohakukyselyille",
 	"a user": "käyttäjä",
 	"About": "Tietoja",

+ 1 - 0
src/lib/i18n/locales/fr-CA/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} est en train de réfléchir...",
 	"{{user}}'s Chats": "Discussions de {{user}}",
 	"{{webUIName}} Backend Required": "Backend {{webUIName}} requis",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Un modèle de tâche est utilisé lors de l’exécution de tâches telles que la génération de titres pour les conversations et les requêtes de recherche sur le web.",
 	"a user": "un utilisateur",
 	"About": "À propos",

+ 1 - 0
src/lib/i18n/locales/fr-FR/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} est en train de réfléchir...",
 	"{{user}}'s Chats": "Discussions de {{user}}",
 	"{{webUIName}} Backend Required": "Backend {{webUIName}} requis",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Un modèle de tâche est utilisé lors de l’exécution de tâches telles que la génération de titres pour les conversations et les requêtes de recherche sur le web.",
 	"a user": "un utilisateur",
 	"About": "À propos",

+ 1 - 0
src/lib/i18n/locales/he-IL/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} חושב...",
 	"{{user}}'s Chats": "צ'אטים של {{user}}",
 	"{{webUIName}} Backend Required": "נדרש Backend של {{webUIName}}",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "מודל משימה משמש בעת ביצוע משימות כגון יצירת כותרות עבור צ'אטים ושאילתות חיפוש באינטרנט",
 	"a user": "משתמש",
 	"About": "אודות",

+ 1 - 0
src/lib/i18n/locales/hi-IN/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} सोच रहा है...",
 	"{{user}}'s Chats": "{{user}} की चैट",
 	"{{webUIName}} Backend Required": "{{webUIName}} बैकएंड आवश्यक",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "चैट और वेब खोज क्वेरी के लिए शीर्षक उत्पन्न करने जैसे कार्य करते समय कार्य मॉडल का उपयोग किया जाता है",
 	"a user": "एक उपयोगकर्ता",
 	"About": "हमारे बारे में",

+ 1 - 0
src/lib/i18n/locales/hr-HR/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} razmišlja...",
 	"{{user}}'s Chats": "Razgovori korisnika {{user}}",
 	"{{webUIName}} Backend Required": "{{webUIName}} Backend je potreban",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Model zadatka koristi se pri izvođenju zadataka kao što su generiranje naslova za razgovore i upite za pretraživanje weba",
 	"a user": "korisnik",
 	"About": "O aplikaciji",

+ 1 - 0
src/lib/i18n/locales/id-ID/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} sedang berpikir...",
 	"{{user}}'s Chats": "Obrolan {{user}}",
 	"{{webUIName}} Backend Required": "{{webUIName}} Diperlukan Backend",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Model tugas digunakan saat melakukan tugas seperti membuat judul untuk obrolan dan kueri penelusuran web",
 	"a user": "seorang pengguna",
 	"About": "Tentang",

+ 1 - 0
src/lib/i18n/locales/it-IT/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} sta pensando...",
 	"{{user}}'s Chats": "{{user}} Chat",
 	"{{webUIName}} Backend Required": "{{webUIName}} Backend richiesto",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Un modello di attività viene utilizzato durante l'esecuzione di attività come la generazione di titoli per chat e query di ricerca Web",
 	"a user": "un utente",
 	"About": "Informazioni",

+ 1 - 0
src/lib/i18n/locales/ja-JP/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} は思考中です...",
 	"{{user}}'s Chats": "{{user}} のチャット",
 	"{{webUIName}} Backend Required": "{{webUIName}} バックエンドが必要です",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "タスクモデルは、チャットやWeb検索クエリのタイトルの生成などのタスクを実行するときに使用されます",
 	"a user": "ユーザー",
 	"About": "概要",

+ 1 - 0
src/lib/i18n/locales/ka-GE/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} ფიქრობს...",
 	"{{user}}'s Chats": "{{user}}-ის ჩათები",
 	"{{webUIName}} Backend Required": "{{webUIName}} საჭიროა ბექენდი",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "დავალების მოდელი გამოიყენება ისეთი ამოცანების შესრულებისას, როგორიცაა ჩეთების სათაურების გენერირება და ვებ – ძიების მოთხოვნები",
 	"a user": "მომხმარებელი",
 	"About": "შესახებ",

+ 1 - 0
src/lib/i18n/locales/ko-KR/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} 모델이 생각 중입니다....",
 	"{{user}}'s Chats": "{{user}}의 채팅",
 	"{{webUIName}} Backend Required": "{{webUIName}} 백엔드가 필요합니다.",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "작업 모델은 채팅 및 웹 검색 쿼리에 대한 제목 생성 등의 작업 수행 시 사용됩니다.",
 	"a user": "사용자",
 	"About": "정보",

+ 1 - 0
src/lib/i18n/locales/lt-LT/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} mąsto...",
 	"{{user}}'s Chats": "{{user}} susirašinėjimai",
 	"{{webUIName}} Backend Required": "{{webUIName}} būtinas serveris",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Užduočių modelis naudojamas pokalbių pavadinimų ir paieškos užklausų generavimui.",
 	"a user": "naudotojas",
 	"About": "Apie",

+ 1 - 0
src/lib/i18n/locales/ms-MY/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} sedang berfikir...",
 	"{{user}}'s Chats": "Perbualan {{user}}",
 	"{{webUIName}} Backend Required": "{{webUIName}} Backend diperlukan",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Model tugas digunakan semasa melaksanakan tugas seperti menjana tajuk untuk perbualan dan pertanyaan carian web.",
 	"a user": "seorang pengguna",
 	"About": "Mengenai",

+ 1 - 0
src/lib/i18n/locales/nb-NO/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} tenker...",
 	"{{user}}'s Chats": "{{user}}s samtaler",
 	"{{webUIName}} Backend Required": "{{webUIName}} Backend kreves",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "En oppgavemodell brukes når du utfører oppgaver som å generere titler for samtaler og websøkeforespørsler",
 	"a user": "en bruker",
 	"About": "Om",

+ 1 - 0
src/lib/i18n/locales/nl-NL/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} is aan het denken...",
 	"{{user}}'s Chats": "{{user}}'s Chats",
 	"{{webUIName}} Backend Required": "{{webUIName}} Backend Verlpicht",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Een taakmodel wordt gebruikt bij het uitvoeren van taken zoals het genereren van titels voor chats en zoekopdrachten op internet",
 	"a user": "een gebruiker",
 	"About": "Over",

+ 1 - 0
src/lib/i18n/locales/pa-IN/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} ਸੋਚ ਰਿਹਾ ਹੈ...",
 	"{{user}}'s Chats": "{{user}} ਦੀਆਂ ਗੱਲਾਂ",
 	"{{webUIName}} Backend Required": "{{webUIName}} ਬੈਕਐਂਡ ਲੋੜੀਂਦਾ ਹੈ",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "ਚੈਟਾਂ ਅਤੇ ਵੈੱਬ ਖੋਜ ਪੁੱਛਗਿੱਛਾਂ ਵਾਸਤੇ ਸਿਰਲੇਖ ਤਿਆਰ ਕਰਨ ਵਰਗੇ ਕਾਰਜ ਾਂ ਨੂੰ ਕਰਦੇ ਸਮੇਂ ਇੱਕ ਕਾਰਜ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ",
 	"a user": "ਇੱਕ ਉਪਭੋਗਤਾ",
 	"About": "ਬਾਰੇ",

+ 1 - 0
src/lib/i18n/locales/pl-PL/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} myśli...",
 	"{{user}}'s Chats": "{{user}} - czaty",
 	"{{webUIName}} Backend Required": "Backend {{webUIName}} wymagane",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Model zadań jest używany podczas wykonywania zadań, takich jak generowanie tytułów czatów i zapytań wyszukiwania w Internecie",
 	"a user": "użytkownik",
 	"About": "O nas",

+ 1 - 0
src/lib/i18n/locales/pt-BR/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} está pensando...",
 	"{{user}}'s Chats": "Chats de {{user}}",
 	"{{webUIName}} Backend Required": "Backend {{webUIName}} necessário",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Um modelo de tarefa é usado ao realizar tarefas como gerar títulos para chats e consultas de pesquisa na web",
 	"a user": "um usuário",
 	"About": "Sobre",

+ 1 - 0
src/lib/i18n/locales/pt-PT/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} está a pensar...",
 	"{{user}}'s Chats": "{{user}}'s Chats",
 	"{{webUIName}} Backend Required": "{{webUIName}} Backend Necessário",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Um modelo de tarefa é usado ao executar tarefas como gerar títulos para bate-papos e consultas de pesquisa na Web",
 	"a user": "um utilizador",
 	"About": "Acerca de",

+ 1 - 0
src/lib/i18n/locales/ro-RO/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} gândește...",
 	"{{user}}'s Chats": "Conversațiile lui {{user}}",
 	"{{webUIName}} Backend Required": "Este necesar backend-ul {{webUIName}}",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Un model de sarcină este utilizat pentru realizarea unor sarcini precum generarea de titluri pentru conversații și interogări de căutare pe web",
 	"a user": "un utilizator",
 	"About": "Despre",

+ 1 - 0
src/lib/i18n/locales/ru-RU/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} думает...",
 	"{{user}}'s Chats": "Чаты {{user}}'а",
 	"{{webUIName}} Backend Required": "Необходимо подключение к серверу {{webUIName}}",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Модель задач используется при выполнении таких задач, как генерация заголовков для чатов и поисковых запросов в Интернете",
 	"a user": "пользователь",
 	"About": "О программе",

+ 1 - 0
src/lib/i18n/locales/sr-RS/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} размишља...",
 	"{{user}}'s Chats": "Ћаскања корисника {{user}}",
 	"{{webUIName}} Backend Required": "Захтева се {{webUIName}} позадинац",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Модел задатка се користи приликом извршавања задатака као што су генерисање наслова за ћаскања и упите за Веб претрагу",
 	"a user": "корисник",
 	"About": "О нама",

+ 1 - 0
src/lib/i18n/locales/sv-SE/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} tänker...",
 	"{{user}}'s Chats": "{{user}}s Chats",
 	"{{webUIName}} Backend Required": "{{webUIName}} Backend krävs",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "En uppgiftsmodell används när du utför uppgifter som att generera titlar för chattar och webbsökningsfrågor",
 	"a user": "en användare",
 	"About": "Om",

+ 1 - 0
src/lib/i18n/locales/th-TH/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} กำลังคิด...",
 	"{{user}}'s Chats": "การสนทนาของ {{user}}",
 	"{{webUIName}} Backend Required": "ต้องการ Backend ของ {{webUIName}}",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "ใช้โมเดลงานเมื่อทำงานเช่นการสร้างหัวข้อสำหรับการสนทนาและการค้นหาเว็บ",
 	"a user": "ผู้ใช้",
 	"About": "เกี่ยวกับ",

+ 1 - 0
src/lib/i18n/locales/tk-TW/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "",
 	"{{user}}'s Chats": "",
 	"{{webUIName}} Backend Required": "",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "",
 	"a user": "",
 	"About": "",

+ 1 - 0
src/lib/i18n/locales/tr-TR/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} düşünüyor...",
 	"{{user}}'s Chats": "{{user}} Sohbetleri",
 	"{{webUIName}} Backend Required": "{{webUIName}} Arkayüz Gerekli",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Bir görev modeli, sohbetler ve web arama sorguları için başlık oluşturma gibi görevleri yerine getirirken kullanılır",
 	"a user": "bir kullanıcı",
 	"About": "Hakkında",

+ 1 - 0
src/lib/i18n/locales/uk-UA/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} думає...",
 	"{{user}}'s Chats": "Чати {{user}}а",
 	"{{webUIName}} Backend Required": "Необхідно підключення бекенду {{webUIName}}",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Модель задач використовується при виконанні таких завдань, як генерація заголовків для чатів та пошукових запитів в Інтернеті",
 	"a user": "користувача",
 	"About": "Про програму",

+ 1 - 0
src/lib/i18n/locales/vi-VN/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} đang suy nghĩ...",
 	"{{user}}'s Chats": "{{user}}'s Chats",
 	"{{webUIName}} Backend Required": "{{webUIName}} Yêu cầu Backend",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Mô hình tác vụ được sử dụng khi thực hiện các tác vụ như tạo tiêu đề cho cuộc trò chuyện và truy vấn tìm kiếm trên web",
 	"a user": "người sử dụng",
 	"About": "Giới thiệu",

+ 1 - 0
src/lib/i18n/locales/zh-CN/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} 正在思考...",
 	"{{user}}'s Chats": "{{user}} 的对话记录",
 	"{{webUIName}} Backend Required": "需要 {{webUIName}} 后端",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "任务模型用于执行生成对话标题和网络搜索查询等任务",
 	"a user": "用户",
 	"About": "关于",

+ 1 - 0
src/lib/i18n/locales/zh-TW/translation.json

@@ -9,6 +9,7 @@
 	"{{modelName}} is thinking...": "{{modelName}} 正在思考...",
 	"{{user}}'s Chats": "{{user}} 的對話",
 	"{{webUIName}} Backend Required": "需要 {{webUIName}} 後端",
+	"*Prompt node ID(s) are required for image generation": "",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "執行產生對話標題和網頁搜尋查詢等任務時會使用任務模型",
 	"a user": "一位使用者",
 	"About": "關於",

+ 7 - 1
src/routes/(app)/+layout.svelte

@@ -32,7 +32,8 @@
 		config,
 		showCallOverlay,
 		tools,
-		functions
+		functions,
+		temporaryChatEnabled
 	} from '$lib/stores';
 
 	import SettingsModal from '$lib/components/chat/SettingsModal.svelte';
@@ -40,6 +41,7 @@
 	import ChangelogModal from '$lib/components/ChangelogModal.svelte';
 	import AccountPending from '$lib/components/layout/Overlay/AccountPending.svelte';
 	import { getFunctions } from '$lib/apis/functions';
+	import { page } from '$app/stores';
 
 	const i18n = getContext('i18n');
 
@@ -177,6 +179,10 @@
 				showChangelog.set(localStorage.version !== $config.version);
 			}
 
+			if ($page.url.searchParams.get('temporary-chat') === 'true') {
+				temporaryChatEnabled.set(true);
+			}
+
 			await tick();
 		}