From ab9d75abc2b436e3fbcc8212b8043e52bfb2d15e Mon Sep 17 00:00:00 2001 From: kwaroran Date: Mon, 5 Jun 2023 02:05:26 +0900 Subject: [PATCH 01/35] [feat] chinese selection --- src/lib/Others/WelcomeRisu.svelte | 5 +++++ src/lib/Setting/Pages/LanguageSettings.svelte | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/lib/Others/WelcomeRisu.svelte b/src/lib/Others/WelcomeRisu.svelte index 8cd1458e..94ff3bf0 100644 --- a/src/lib/Others/WelcomeRisu.svelte +++ b/src/lib/Others/WelcomeRisu.svelte @@ -31,6 +31,11 @@ $DataBase.language='ko' step = 1 }}>• 한국어 + {:else if step === 1} diff --git a/src/lib/Setting/Pages/LanguageSettings.svelte b/src/lib/Setting/Pages/LanguageSettings.svelte index 11775542..2309b7bb 100644 --- a/src/lib/Setting/Pages/LanguageSettings.svelte +++ b/src/lib/Setting/Pages/LanguageSettings.svelte @@ -14,7 +14,8 @@ import { changeLanguage, language } from "src/lang"; langChanged = true }}> - + + {#if langChanged} Close the settings to take effect From 64f548515f810cbf4818e8acf2c74e3702030e2b Mon Sep 17 00:00:00 2001 From: kwaroran Date: Mon, 5 Jun 2023 02:10:36 +0900 Subject: [PATCH 02/35] bump version to 1.23.2 --- src-tauri/tauri.conf.json | 2 +- src/ts/storage/database.ts | 2 +- version.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 82922ce7..6fad7a9d 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -8,7 +8,7 @@ }, "package": { "productName": "RisuAI", - "version": "1.23.1" + "version": "1.23.2" }, "tauri": { "allowlist": { diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 205a7b35..b952b24d 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -8,7 +8,7 @@ import { defaultAutoSuggestPrompt, defaultJailbreak, defaultMainPrompt } from '. export const DataBase = writable({} as any as Database) export const loadedStore = writable(false) -export let appVer = '1.23.1' +export let appVer = '1.23.2' export function setDatabase(data:Database){ if(checkNullish(data.characters)){ diff --git a/version.json b/version.json index d4ff3c4e..e4510f04 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{"version":"1.23.1"} \ No newline at end of file +{"version":"1.23.2"} \ No newline at end of file From 1c672a13af082bc4b79ea85534e8dabdf3eb294b Mon Sep 17 00:00:00 2001 From: kwaroran Date: Mon, 5 Jun 2023 02:19:13 +0900 Subject: [PATCH 03/35] [feat] added hub pages --- src/lib/UI/Hub.svelte | 31 ++++++++++++++++++++++++++++--- src/ts/characterCards.ts | 3 ++- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/lib/UI/Hub.svelte b/src/lib/UI/Hub.svelte index 3fa1f89f..14f7f8af 100644 --- a/src/lib/UI/Hub.svelte +++ b/src/lib/UI/Hub.svelte @@ -1,6 +1,6 @@ @@ -16,9 +17,14 @@ github {/if} - + \ No newline at end of file From a61bf24e369ef551caaf5a5a240623b8f7753d93 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Mon, 5 Jun 2023 08:40:47 +0900 Subject: [PATCH 08/35] [feat] tag visible in realm --- src/lib/UI/Hub.svelte | 21 ++++++++++++++++----- src/ts/parser.ts | 12 ++++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/lib/UI/Hub.svelte b/src/lib/UI/Hub.svelte index a14af35b..20568073 100644 --- a/src/lib/UI/Hub.svelte +++ b/src/lib/UI/Hub.svelte @@ -2,13 +2,15 @@ import { downloadRisuHub, getRisuHub, hubURL } from "src/ts/characterCards"; import { ArrowLeft, ArrowRight, DownloadIcon, FlagIcon, MenuIcon, SearchIcon, XIcon } from "lucide-svelte"; import { alertConfirm, alertInput, alertNormal } from "src/ts/alert"; + import { parseMarkdownSafe } from "src/ts/parser"; let openedData:null|{ name:string desc: string download: number, id: string, - img: string + img: string, + tags: string[] } = null let charas:{ @@ -107,12 +109,21 @@ openedData = null }}>
-
-
+
+

{openedData.name}

+
{openedData.name} -

{openedData.name}

+ + {#await parseMarkdownSafe(openedData.desc) then msg} + {@html msg} + {/await} + +
+
+ {#each openedData.tags as tag, i} +
{tag}
+ {/each}
- {openedData.desc}
+ + + + + + diff --git a/src/ts/process/request.ts b/src/ts/process/request.ts index 14167231..7ebc7917 100644 --- a/src/ts/process/request.ts +++ b/src/ts/process/request.ts @@ -48,7 +48,8 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' const db = get(DataBase) let result = '' let formated = arg.formated - let maxTokens = db.maxResponse + let maxTokens = arg.maxTokens ??db.maxResponse + let temperature = arg.temperature ?? (db.temperature / 100) let bias = arg.bias let currentChar = arg.currentChar const replacer = model === 'model' ? db.forceReplaceUrl : db.forceReplaceUrl2 @@ -70,7 +71,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' model: aiModel === 'gpt35' ? 'gpt-3.5-turbo' : aiModel === 'gpt4' ? 'gpt-4' : 'gpt-4-32k', messages: formated, - temperature: arg.temperature ?? (db.temperature / 100), + temperature: temperature, max_tokens: arg.maxTokens ?? maxTokens, presence_penalty: arg.PresensePenalty ?? (db.PresensePenalty / 100), frequency_penalty: arg.frequencyPenalty ?? (db.frequencyPenalty / 100), @@ -460,6 +461,65 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' } } default:{ + if(aiModel.startsWith('claude')){ + for(let i=0;i { + let prefix = '' + switch (v.role){ + case "assistant": + prefix = "\n\nAssistant: " + break + case "user": + prefix = "\n\nHuman: " + break + case "system": + prefix = "\n\nSystem: " + break + } + return prefix + v.content + }).join('') + '\n\nAssistant: ' + + console.log(requestPrompt) + + const da = await globalFetch('https://api.anthropic.com/v1/complete', { + method: "POST", + body: { + prompt : "\n\nHuman: " + requestPrompt, + model: aiModel, + max_tokens_to_sample: maxTokens, + stop_sequences: ["\n\nHuman:", "\n\nSystem:", "\n\nAssistant:"], + temperature: temperature, + }, + headers: { + "Content-Type": "application/json", + "x-api-key": db.claudeAPIKey + } + }) + + if((!da.ok) || (da.data.error)){ + return { + type: 'fail', + result: `${JSON.stringify(da.data)}` + } + } + + const res = da.data + + console.log(res) + return { + type: "success", + result: res.completion, + } + + } if(aiModel.startsWith("horde:::")){ const proompt = stringlizeChat(formated, currentChar?.name ?? '') diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 7bcb1ec9..044901b9 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -500,7 +500,8 @@ export interface Database{ koboldURL:string advancedBotSettings:boolean useAutoSuggestions:boolean - autoSuggestPrompt:string + autoSuggestPrompt:string, + claudeAPIKey:string } interface hordeConfig{ From 0f844c118fd93823b70f3e41411f29f071de0072 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Tue, 6 Jun 2023 09:26:06 +0900 Subject: [PATCH 18/35] [feat] claude simple settings --- src/lib/Setting/Pages/BotSettings.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/Setting/Pages/BotSettings.svelte b/src/lib/Setting/Pages/BotSettings.svelte index 92f2c597..33a1b07e 100644 --- a/src/lib/Setting/Pages/BotSettings.svelte +++ b/src/lib/Setting/Pages/BotSettings.svelte @@ -83,7 +83,7 @@ $DataBase.maxContext = 7500 $DataBase.maxResponse = 500 if(v.endsWith('100k')){ - $DataBase.maxContext = 99500 + $DataBase.maxContext = 99000 } } else{ From f771fe3890d31227acd36a86e6d5ee7c36de052d Mon Sep 17 00:00:00 2001 From: kwaroran Date: Tue, 6 Jun 2023 09:28:18 +0900 Subject: [PATCH 19/35] bump version to 1.24.0 --- src-tauri/tauri.conf.json | 2 +- src/ts/storage/database.ts | 2 +- version.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index eed9e561..a14d92b5 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -8,7 +8,7 @@ }, "package": { "productName": "RisuAI", - "version": "1.23.3" + "version": "1.24.0" }, "tauri": { "allowlist": { diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 044901b9..7742a4d5 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -8,7 +8,7 @@ import { defaultAutoSuggestPrompt, defaultJailbreak, defaultMainPrompt } from '. export const DataBase = writable({} as any as Database) export const loadedStore = writable(false) -export let appVer = '1.23.3' +export let appVer = '1.24.0' export function setDatabase(data:Database){ if(checkNullish(data.characters)){ diff --git a/version.json b/version.json index 75bb7d98..b55dafdf 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{"version":"1.23.3"} \ No newline at end of file +{"version":"1.24.0"} \ No newline at end of file From 54c6a9ef9c9bd7239edcc530ff3eface8576602a Mon Sep 17 00:00:00 2001 From: LL Date: Tue, 6 Jun 2023 12:36:37 +0900 Subject: [PATCH 20/35] Add copy chat message feature in Chat panel and enable usage in 'use chat copy' setting. - Added 'copied' string to language translation in multiple translations file. - Added 'CopyIcon' to svelte import. - Defined a new status message variable in Chat.svelte. - Created a new function 'setStatusMessage' to display the current panel's state after certain action. - Added a new setting 'useChatCopy' in 'DisplaySettings.svelte'. - Created a checkbox with label 'useChatCopy' to toggle the Chat message copy. - Integrated Clipboard API in Chat code to handle chat message copy via button click. --- src/lang/cn.ts | 4 +++- src/lang/en.ts | 4 +++- src/lang/ko.ts | 4 +++- src/lib/ChatScreens/Chat.svelte | 23 ++++++++++++++++++-- src/lib/Setting/Pages/DisplaySettings.svelte | 6 ++++- src/ts/storage/database.ts | 3 ++- 6 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/lang/cn.ts b/src/lang/cn.ts index ac34c54e..86a62b8c 100644 --- a/src/lang/cn.ts +++ b/src/lang/cn.ts @@ -300,5 +300,7 @@ export const languageChinese = { activationProbability: "概率", shareCloud: "分享到RisuRealm", hub: "RisuRealm", - tags: "标签" + tags: "标签", + copied: "已复制", + useChatCopy: "使用聊天复制", } \ No newline at end of file diff --git a/src/lang/en.ts b/src/lang/en.ts index c5e5ec2b..ecd47d60 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -304,5 +304,7 @@ export const languageEnglish = { shareCloud: "Share to RisuRealm", hub: "RisuRealm", tags: "Tags", - backgroundHTML: "Background Embedding" + backgroundHTML: "Background Embedding", + copied: "Copied", + useChatCopy: "Use Chat Message Copy", } \ No newline at end of file diff --git a/src/lang/ko.ts b/src/lang/ko.ts index 9049a5c6..c8a0a245 100644 --- a/src/lang/ko.ts +++ b/src/lang/ko.ts @@ -276,5 +276,7 @@ export const languageKorean = { active: "활성화", loreRandomActivation: "확률 조건 사용", activationProbability: "발동 확률", - backgroundHTML: "백그라운드 임베딩" + backgroundHTML: "백그라운드 임베딩", + copied: "복사됨", + useChatCopy: "채팅 메시지 복사 사용", } \ No newline at end of file diff --git a/src/lib/ChatScreens/Chat.svelte b/src/lib/ChatScreens/Chat.svelte index c7c4eb4a..fb6e37bc 100644 --- a/src/lib/ChatScreens/Chat.svelte +++ b/src/lib/ChatScreens/Chat.svelte @@ -1,5 +1,5 @@
@@ -80,8 +89,18 @@
{name}
+ {statusMessage} + {#if $DataBase.useChatCopy} + + {/if} {#if idx > -1} -
+{/if} -{/if} \ No newline at end of file +
+ + {language.useChatCopy} +
\ No newline at end of file diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 7742a4d5..19331574 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -501,7 +501,8 @@ export interface Database{ advancedBotSettings:boolean useAutoSuggestions:boolean autoSuggestPrompt:string, - claudeAPIKey:string + claudeAPIKey:string, + useChatCopy:boolean, } interface hordeConfig{ From 89dc9c8c804c0c7f83cc232acf844a39d028b7b7 Mon Sep 17 00:00:00 2001 From: LL Date: Tue, 6 Jun 2023 18:37:19 +0900 Subject: [PATCH 21/35] [feat][experimental] Add auto-translate input message functionality and language support in chat panel and settings This commit adds new entries in the language files and UI support for auto-translate messages. The new feature uses a textarea input field to translate messages as they are typed, and the translated text is shown in a new field. Also, the language settings now provide an option to enable/disable auto message translation. The code changes include adding a new function to update the input sizes for both input fields and some minor code refactoring to support new functionality. --- src/lang/cn.ts | 2 + src/lang/en.ts | 2 + src/lang/ko.ts | 2 + src/lib/ChatScreens/DefaultChatScreen.svelte | 83 ++++++++++++++++++- src/lib/Setting/Pages/LanguageSettings.svelte | 8 ++ src/ts/storage/database.ts | 7 +- 6 files changed, 97 insertions(+), 7 deletions(-) diff --git a/src/lang/cn.ts b/src/lang/cn.ts index 86a62b8c..e13df4a8 100644 --- a/src/lang/cn.ts +++ b/src/lang/cn.ts @@ -303,4 +303,6 @@ export const languageChinese = { tags: "标签", copied: "已复制", useChatCopy: "使用聊天复制", + autoTranslateInput: "使用自动翻译输入", + enterMessageForTranslateToEnglish: "输入要翻译为英语的消息", } \ No newline at end of file diff --git a/src/lang/en.ts b/src/lang/en.ts index ecd47d60..dbf8d866 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -307,4 +307,6 @@ export const languageEnglish = { backgroundHTML: "Background Embedding", copied: "Copied", useChatCopy: "Use Chat Message Copy", + autoTranslateInput: "Auto Translate Input", + enterMessageForTranslateToEnglish: "Enter Message for Translate to English", } \ No newline at end of file diff --git a/src/lang/ko.ts b/src/lang/ko.ts index c8a0a245..dd6aa543 100644 --- a/src/lang/ko.ts +++ b/src/lang/ko.ts @@ -279,4 +279,6 @@ export const languageKorean = { backgroundHTML: "백그라운드 임베딩", copied: "복사됨", useChatCopy: "채팅 메시지 복사 사용", + autoTranslateInput: "입력 자동 번역", + enterMessageForTranslateToEnglish: "영어로 번역할 메시지를 입력해주세요", } \ No newline at end of file diff --git a/src/lib/ChatScreens/DefaultChatScreen.svelte b/src/lib/ChatScreens/DefaultChatScreen.svelte index 8b3da038..403f7ba8 100644 --- a/src/lib/ChatScreens/DefaultChatScreen.svelte +++ b/src/lib/ChatScreens/DefaultChatScreen.svelte @@ -16,8 +16,10 @@ import CreatorQuote from "./CreatorQuote.svelte"; import { stopTTS } from "src/ts/process/tts"; import MainMenu from '../UI/MainMenu.svelte'; + import Help from '../Others/Help.svelte'; - let messageInput = '' + let messageInput:string = '' + let messageInputTranslate:string = '' let openMenu = false export let openChatList = false let loadPages = 30 @@ -26,6 +28,7 @@ let rerollid = -1 let lastCharId = -1 let doingChatInputTranslate = false + async function send() { let selectedChar = $selectedCharID console.log('send') @@ -67,10 +70,11 @@ } } messageInput = '' + messageInputTranslate = '' $DataBase.characters[selectedChar].chats[$DataBase.characters[selectedChar].chatPage].message = cha rerolls = [] await sleep(10) - updateInputSize() + updateInputSizeAll() await sendChatMain() } @@ -170,7 +174,21 @@ export let customStyle = '' let inputHeight = "44px" let inputEle:HTMLTextAreaElement + let inputTranslateHeight = "44px" + let inputTranslateEle:HTMLTextAreaElement + function updateInputSizeAll() { + updateInputSize() + updateInputTranslateSize() + } + + function updateInputTranslateSize() { + if(inputTranslateEle) { + inputTranslateEle.style.height = "0"; + inputTranslateHeight = (inputTranslateEle.scrollHeight) + "px"; + inputTranslateEle.style.height = inputTranslateHeight + } + } function updateInputSize() { if(inputEle){ inputEle.style.height = "0"; @@ -179,7 +197,26 @@ } } - $: updateInputSize() + $: updateInputSizeAll() + + function updateInputTransateMessage(reverse: boolean) { + if(reverse && messageInputTranslate === '') { + messageInput = '' + return + } + if(!reverse && messageInput === '') { + messageInputTranslate = '' + return + } + translate(reverse ? messageInputTranslate : messageInput, reverse).then((translatedMessage) => { + if(translatedMessage){ + if(reverse) + messageInput = translatedMessage + else + messageInputTranslate = translatedMessage + } + }) + }
{ @@ -211,7 +248,7 @@ e.preventDefault() } }} - on:input={updateInputSize} + on:input={()=>{updateInputSizeAll();updateInputTransateMessage(false)}} style:height={inputHeight} /> @@ -234,6 +271,33 @@ class="mr-2 bg-gray-500 flex justify-center items-center text-white w-12 h-12 rounded-md hover:bg-green-500 transition-colors">
+ {#if $DataBase.useAutoTranslateInput && $DataBase.useExperimental} +
+ +