diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index dacdabb9..f5b49223 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -29,7 +29,7 @@ }, "productName": "RisuAI", "mainBinaryName": "RisuAI", - "version": "152.0.1", + "version": "153.0.0", "identifier": "co.aiclient.risu", "plugins": { "updater": { diff --git a/src/lang/en.ts b/src/lang/en.ts index 147bdd81..9ca9dbdc 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -174,6 +174,8 @@ export const languageEnglish = { presetChain: "If it is not blank, the preset will be changed and applied randomly every time when user sends a message in the preset list in this input. preset list should be seperated by comma, for example, `preset1,preset2`.", legacyMediaFindings: "If enabled, it will use the old method to find media assets, without using the additional search algorithm.", comfyWorkflow: "Put the API workflow of comfy UI. you can get your API workflow in comfy UI by pressing the 'Workflow > Export (API)' button. you must also put {{risu_prompt}} in you workflow text. the {{risu_prompt}} will be replaced with the prompt provided by the Risu.", + automaticCachePoint: "Automatically creates cache point after the chat ends, if the caching point doesn't exist.", + experimentalChatCompressionDesc: "Compresses the unused chat data and saves in seperate file. this greatly reduces the size of the chat data, and greatly improves the performance, however its experimental and can be unstable, causing issues in backup feature and more.", }, setup: { chooseProvider: "Choose AI Provider", @@ -1068,7 +1070,6 @@ export const languageEnglish = { claudeCachingRetrival: "Claude Caching Retrival", claudeCachingRetrivalDesc: "Extends the cache time for Claude Caching, by requesting every 4 minutes. this can reduce the cache miss rate, but it can increase the cost if its not used properly.", automaticCachePoint: "Automatic Cache Point", - automaticCachePointDesc: "Automatically creates cache point after the chat ends, if the caching point doesn't exist.", experimentalChatCompression: "Experimental Chat Data Handling", - experimentalChatCompressionDesc: "Compresses the unused chat data and saves in seperate file.", + loadingChatData: "Loading Chat Data", } diff --git a/src/lib/ChatScreens/DefaultChatScreen.svelte b/src/lib/ChatScreens/DefaultChatScreen.svelte index 991d9410..c6bb3834 100644 --- a/src/lib/ChatScreens/DefaultChatScreen.svelte +++ b/src/lib/ChatScreens/DefaultChatScreen.svelte @@ -28,6 +28,7 @@ import { getInlayAsset } from 'src/ts/process/files/inlays'; import PlaygroundMenu from '../Playground/PlaygroundMenu.svelte'; import { ConnectionOpenStore } from 'src/ts/sync/multiuser'; + import { coldStorageHeader, preLoadChat } from 'src/ts/process/coldstorage.svelte'; let messageInput:string = $state('') let messageInputTranslate:string = $state('') @@ -639,6 +640,15 @@ )} {send}/> {/if} + {#if DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message?.[0]?.data?.startsWith(coldStorageHeader) } + {#await preLoadChat($selectedCharID, DBState.db.characters[$selectedCharID].chatPage)} +
+ {language.loadingChatData} +
+ {:then a} +
+ {/await} + {:else} {#each messageForm(DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message, loadPages) as chat, i} {#if chat.role === 'char'} {#if DBState.db.characters[$selectedCharID].type !== 'group'} @@ -683,6 +693,7 @@ /> {/if} {/each} + {#if DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message.length <= loadPages} {#if DBState.db.characters[$selectedCharID].type !== 'group' } { e.stopPropagation() diff --git a/src/lib/Setting/Pages/AdvancedSettings.svelte b/src/lib/Setting/Pages/AdvancedSettings.svelte index 42afafd7..a013e8ff 100644 --- a/src/lib/Setting/Pages/AdvancedSettings.svelte +++ b/src/lib/Setting/Pages/AdvancedSettings.svelte @@ -4,7 +4,7 @@ import Button from "src/lib/UI/GUI/Button.svelte"; import { DBState } from 'src/ts/stores.svelte'; import { alertMd } from "src/ts/alert"; - import { getRequestLog, isTauri } from "src/ts/globalApi.svelte"; + import { getRequestLog, isNodeServer, isTauri } from "src/ts/globalApi.svelte"; import NumberInput from "src/lib/UI/GUI/NumberInput.svelte"; import TextInput from "src/lib/UI/GUI/TextInput.svelte"; import SelectInput from "src/lib/UI/GUI/SelectInput.svelte"; @@ -162,12 +162,13 @@
- +
+
- +
{/if} diff --git a/src/lib/SideBars/SideChatList.svelte b/src/lib/SideBars/SideChatList.svelte index ec5da797..f3359c00 100644 --- a/src/lib/SideBars/SideChatList.svelte +++ b/src/lib/SideBars/SideChatList.svelte @@ -20,7 +20,6 @@ import { getModuleToggles } from "src/ts/process/modules"; import { language } from "src/lang"; import Toggles from "./Toggles.svelte"; - import { preLoadChat } from "src/ts/process/coldstorage.svelte"; interface Props { chara: character|groupChat; @@ -68,6 +67,7 @@ } }) + chara.chatPage = newChats.indexOf(chara.chats[currentChatPage]) chara.chats = newChats try { @@ -76,10 +76,6 @@ sorted += 1 await sleep(1) createStb() - - await preLoadChat($selectedCharID, newChats.indexOf(chara.chats[currentChatPage])) - chara.chatPage = newChats.indexOf(chara.chats[currentChatPage]) - }, ...sortableOptions })) @@ -111,17 +107,14 @@ }) chara.chatFolders = newFolders + chara.chatPage = newChats.indexOf(chara.chats[currentChatPage]) chara.chats = newChats - try { folderStb.destroy() } catch (e) {} sorted += 1 await sleep(1) createStb() - - await preLoadChat($selectedCharID, newChats.indexOf(chara.chats[currentChatPage])) - chara.chatPage = newChats.indexOf(chara.chats[currentChatPage]) }, ...sortableOptions }) @@ -251,9 +244,8 @@
{:else} {#each chara.chats.filter(chat => chat.folderId == chara.chatFolders[i].id) as chat} -