From 8ed4555b2f63b87941baa4f6dd649901671fa8cc Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 7 Feb 2024 02:50:18 +0900 Subject: [PATCH 01/12] remove global regex and lorebook and add convertion to modules --- src/lib/Setting/Settings.svelte | 18 --------------- src/ts/parser.ts | 4 ++-- src/ts/process/lorebook.ts | 25 +++------------------ src/ts/storage/globalApi.ts | 40 ++++++++++++++++++++++++++++++++- 4 files changed, 44 insertions(+), 43 deletions(-) diff --git a/src/lib/Setting/Settings.svelte b/src/lib/Setting/Settings.svelte index 1d2578ec..0123634b 100644 --- a/src/lib/Setting/Settings.svelte +++ b/src/lib/Setting/Settings.svelte @@ -88,24 +88,6 @@ {language.accessibility} - - + }}>{language.createModule} {/if} {:else if mode === 2}

{language.editModule}

@@ -104,6 +104,6 @@ + }}>{language.editModule} {/if} {/if} \ No newline at end of file From 2b223b27048b2ff628d10165c1fbf09c224d155b Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 7 Feb 2024 02:55:12 +0900 Subject: [PATCH 03/12] Fix moduleIds concatenation in getModuleLorebooks, getModuleTriggers, and getModuleRegexScripts functions --- src/ts/process/modules.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ts/process/modules.ts b/src/ts/process/modules.ts index 23c2d028..0b8943be 100644 --- a/src/ts/process/modules.ts +++ b/src/ts/process/modules.ts @@ -65,8 +65,8 @@ export function getModuleLorebooks() { const currentChat = get(CurrentChat) const db = get(DataBase) if (!currentChat) return [] - const moduleIds = currentChat.modules ?? [] - moduleIds.concat(db.enabledModules) + let moduleIds = currentChat.modules ?? [] + moduleIds = moduleIds.concat(db.enabledModules) let lorebooks: loreBook[] = [] for (const moduleId of moduleIds) { const module = getModuleById(moduleId) @@ -85,8 +85,8 @@ export function getModuleTriggers() { const currentChat = get(CurrentChat) const db = get(DataBase) if (!currentChat) return [] - const moduleIds = currentChat.modules ?? [] - moduleIds.concat(db.enabledModules) + let moduleIds = currentChat.modules ?? [] + moduleIds = moduleIds.concat(db.enabledModules) let triggers: triggerscript[] = [] for (const moduleId of moduleIds) { const module = getModuleById(moduleId) @@ -104,8 +104,8 @@ export function getModuleRegexScripts() { const currentChat = get(CurrentChat) const db = get(DataBase) if (!currentChat) return [] - const moduleIds = currentChat.modules ?? [] - moduleIds.concat(db.enabledModules) + let moduleIds = currentChat.modules ?? [] + moduleIds = moduleIds.concat(db.enabledModules) let customscripts: customscript[] = [] for (const moduleId of moduleIds) { const module = getModuleById(moduleId) From 3278e4941b0b0fbd1e52481ae3293fac6758e447 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 7 Feb 2024 03:04:17 +0900 Subject: [PATCH 04/12] Update version to 1.78.0 --- src-tauri/tauri.conf.json | 2 +- src/etc/patchNote.ts | 20 +++++++++++++------- src/ts/storage/database.ts | 2 +- version.json | 2 +- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index d4e47653..de98524f 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -8,7 +8,7 @@ }, "package": { "productName": "RisuAI", - "version": "1.77.0" + "version": "1.78.0" }, "tauri": { "allowlist": { diff --git a/src/etc/patchNote.ts b/src/etc/patchNote.ts index 1bba23c7..860d38e1 100644 --- a/src/etc/patchNote.ts +++ b/src/etc/patchNote.ts @@ -1,13 +1,19 @@ export const patchNote = { - version: "1.77", + version: "1.78", content: ` -# Update 1.77 -- Added Risu RCC export - - Added password protection - - Added license for file export -- Added memory limit border thickness (#286) -- Minor fixes +# Update 1.78 +- Added Modules + - Modules are package of triggers, regex, and lorebook + - You can enable globally, or enable only in specific chat + - Designed for easy sharing and activation/deactivation. +- Removed global regex and lorebook + - This would be replaced by modules + - Old global regex and lorebook will be converted to modules +- Fixed Claude prompting +- Settings menu would be remembered +- Added persona portraits (#289) +- Added gpt-3.5-turbo-0125 (#288) ` } diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 0b12a4d1..c3965db0 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -15,7 +15,7 @@ import type { OobaChatCompletionRequestParams } from '../model/ooba'; export const DataBase = writable({} as any as Database) export const loadedStore = writable(false) -export let appVer = "1.77.0" +export let appVer = "1.78.0" export let webAppSubVer = '' export function setDatabase(data:Database){ diff --git a/version.json b/version.json index 2b5465cd..92b280ad 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{"version":"1.77.0"} \ No newline at end of file +{"version":"1.78.0"} \ No newline at end of file From c91580490327a283f83fb67dbcb266010f02cb48 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 7 Feb 2024 03:30:23 +0900 Subject: [PATCH 05/12] Fix importModule function --- src/lib/Setting/Pages/Module/ModuleSettings.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/Setting/Pages/Module/ModuleSettings.svelte b/src/lib/Setting/Pages/Module/ModuleSettings.svelte index da16aa23..060cf65a 100644 --- a/src/lib/Setting/Pages/Module/ModuleSettings.svelte +++ b/src/lib/Setting/Pages/Module/ModuleSettings.svelte @@ -3,7 +3,7 @@ import { DataBase } from "src/ts/storage/database"; import Button from "src/lib/UI/GUI/Button.svelte"; import ModuleMenu from "src/lib/Setting/Pages/Module/ModuleMenu.svelte"; - import { exportModule, type RisuModule } from "src/ts/process/modules"; + import { exportModule, importModule, type RisuModule } from "src/ts/process/modules"; import { DownloadIcon, Edit, TrashIcon, Globe } from "lucide-svelte"; import { v4 } from "uuid"; import { tooltip } from "src/ts/gui/tooltip"; @@ -87,7 +87,7 @@ } mode = 1 }}>{language.createModule} - + {:else if mode === 1}

{language.createModule}

From 7e0ac2513b89fd27ab277d3c82573d62a4cbc447 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 7 Feb 2024 03:34:31 +0900 Subject: [PATCH 06/12] Fix state update --- src/ts/process/modules.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ts/process/modules.ts b/src/ts/process/modules.ts index 0b8943be..91005daf 100644 --- a/src/ts/process/modules.ts +++ b/src/ts/process/modules.ts @@ -1,6 +1,6 @@ import { language } from "src/lang" import { alertError, alertNormal } from "../alert" -import { DataBase, type customscript, type loreBook, type triggerscript } from "../storage/database" +import { DataBase, setDatabase, type customscript, type loreBook, type triggerscript } from "../storage/database" import { downloadFile } from "../storage/globalApi" import { get } from "svelte/store" import { CurrentChat } from "../stores" @@ -44,6 +44,7 @@ export async function importModule(){ } importedModule.id = v4() db.modules.push(importedModule) + setDatabase(db) } } catch (error) { alertNormal(language.errors.noData) From 914ff266e111fdd2ac62fccd5bfc2c94dd06babd Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 7 Feb 2024 06:11:18 +0900 Subject: [PATCH 07/12] Readd side menu reroll button --- src/lang/en.ts | 1 + src/lib/ChatScreens/DefaultChatScreen.svelte | 15 ++++++--------- .../Setting/Pages/AccessibilitySettings.svelte | 4 ++++ src/ts/storage/database.ts | 1 + 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/lang/en.ts b/src/lang/en.ts index 63c41511..82d81391 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -529,4 +529,5 @@ export const languageEnglish = { edit: "Edit", enableGlobal: "Enable Globally", chatModulesInfo: "You can enable or disable modules for this chat.", + sideMenuRerollButton: "Side Menu Reroll Button", } \ No newline at end of file diff --git a/src/lib/ChatScreens/DefaultChatScreen.svelte b/src/lib/ChatScreens/DefaultChatScreen.svelte index 5bf04ac1..fbad85fd 100644 --- a/src/lib/ChatScreens/DefaultChatScreen.svelte +++ b/src/lib/ChatScreens/DefaultChatScreen.svelte @@ -666,15 +666,12 @@ {language.autoSuggest} - -
{ - $CurrentChat.modules ??= [] - openModuleList = true - openMenu = false - }}> - - {language.modules} -
+ {#if $DataBase.sideMenuRerollButton} +
+ + {language.reroll} +
+ {/if} {/if} diff --git a/src/lib/Setting/Pages/AccessibilitySettings.svelte b/src/lib/Setting/Pages/AccessibilitySettings.svelte index 276e303c..e6201c73 100644 --- a/src/lib/Setting/Pages/AccessibilitySettings.svelte +++ b/src/lib/Setting/Pages/AccessibilitySettings.svelte @@ -37,4 +37,8 @@
+
+ +
+
\ No newline at end of file diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index c3965db0..28c031d9 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -590,6 +590,7 @@ export interface Database{ memoryLimitThickness?:number modules: RisuModule[] enabledModules: string[] + sideMenuRerollButton?:boolean } export interface customscript{ From fbc4adf5accc0098c9b3eb8f2cd4d4a08e96eaef Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 7 Feb 2024 06:11:33 +0900 Subject: [PATCH 08/12] Update version to 1.78.1 --- 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 de98524f..5c9108c8 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -8,7 +8,7 @@ }, "package": { "productName": "RisuAI", - "version": "1.78.0" + "version": "1.78.1" }, "tauri": { "allowlist": { diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 28c031d9..3b5b7387 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -15,7 +15,7 @@ import type { OobaChatCompletionRequestParams } from '../model/ooba'; export const DataBase = writable({} as any as Database) export const loadedStore = writable(false) -export let appVer = "1.78.0" +export let appVer = "1.78.1" export let webAppSubVer = '' export function setDatabase(data:Database){ diff --git a/version.json b/version.json index 92b280ad..4dd2f394 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{"version":"1.78.0"} \ No newline at end of file +{"version":"1.78.1"} \ No newline at end of file From 7094673a6c7cc5c22287a0e91633847fa66ebd0d Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 7 Feb 2024 06:13:49 +0900 Subject: [PATCH 09/12] Fix module list button to DefaultChatScreen --- src/lib/ChatScreens/DefaultChatScreen.svelte | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/lib/ChatScreens/DefaultChatScreen.svelte b/src/lib/ChatScreens/DefaultChatScreen.svelte index fbad85fd..33b1b8b9 100644 --- a/src/lib/ChatScreens/DefaultChatScreen.svelte +++ b/src/lib/ChatScreens/DefaultChatScreen.svelte @@ -666,6 +666,16 @@ {language.autoSuggest} + +
{ + $CurrentChat.modules ??= [] + openModuleList = true + openMenu = false + }}> + + {language.modules} +
+ {#if $DataBase.sideMenuRerollButton}
From 0252961fbd714dc185f43f0430f6e1b632d2db93 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 7 Feb 2024 06:20:20 +0900 Subject: [PATCH 10/12] Add lorebook import for modules --- src/ts/process/lorebook.ts | 82 +++++++++++++++++++++----------------- src/ts/process/modules.ts | 44 +++++++++++++++----- 2 files changed, 80 insertions(+), 46 deletions(-) diff --git a/src/ts/process/lorebook.ts b/src/ts/process/lorebook.ts index a46a16d5..4c4e605f 100644 --- a/src/ts/process/lorebook.ts +++ b/src/ts/process/lorebook.ts @@ -320,43 +320,8 @@ export async function importLoreBook(mode:'global'|'local'|'sglobal'){ } } else if(importedlore.entries){ - const entries:{[key:string]:{ - key:string[] - comment:string - content:string - order:number - constant:boolean, - name:string, - keywords:string[], - priority:number - entry:string - secondary_keys:string[] - selective:boolean - forceActivation:boolean - keys:string[] - displayName:string - text:string - contextConfig?: { - budgetPriority:number - prefix:string - suffix:string - } - }} = importedlore.entries - for(const key in entries){ - const currentLore = entries[key] - lore.push({ - key: currentLore.key ? currentLore.key.join(', ') : - currentLore.keys ? currentLore.keys.join(', ') : - currentLore.keywords ? currentLore.keywords.join(', ') : '', - insertorder: currentLore.order ?? currentLore.priority ?? currentLore?.contextConfig?.budgetPriority ?? 0, - comment: currentLore.comment || currentLore.name || currentLore.displayName || '', - content: currentLore.content || currentLore.entry || currentLore.text || '', - mode: "normal", - alwaysActive: currentLore.constant ?? currentLore.forceActivation ?? false, - secondkey: currentLore.secondary_keys ? currentLore.secondary_keys.join(', ') : "", - selective: currentLore.selective ?? false - }) - } + const entries:{[key:string]:CCLorebook} = importedlore.entries + lore.push(...convertExternalLorebook(entries)) } if(mode === 'global'){ db.characters[selectedID].globalLore = lore @@ -370,6 +335,49 @@ export async function importLoreBook(mode:'global'|'local'|'sglobal'){ } } +interface CCLorebook{ + key:string[] + comment:string + content:string + order:number + constant:boolean, + name:string, + keywords:string[], + priority:number + entry:string + secondary_keys:string[] + selective:boolean + forceActivation:boolean + keys:string[] + displayName:string + text:string + contextConfig?: { + budgetPriority:number + prefix:string + suffix:string + } +} + +export function convertExternalLorebook(entries:{[key:string]:CCLorebook}){ + let lore:loreBook[] = [] + for(const key in entries){ + const currentLore = entries[key] + lore.push({ + key: currentLore.key ? currentLore.key.join(', ') : + currentLore.keys ? currentLore.keys.join(', ') : + currentLore.keywords ? currentLore.keywords.join(', ') : '', + insertorder: currentLore.order ?? currentLore.priority ?? currentLore?.contextConfig?.budgetPriority ?? 0, + comment: currentLore.comment || currentLore.name || currentLore.displayName || '', + content: currentLore.content || currentLore.entry || currentLore.text || '', + mode: "normal", + alwaysActive: currentLore.constant ?? currentLore.forceActivation ?? false, + secondkey: currentLore.secondary_keys ? currentLore.secondary_keys.join(', ') : "", + selective: currentLore.selective ?? false + }) + } + return lore +} + export async function exportLoreBook(mode:'global'|'local'|'sglobal'){ try { const selectedID = get(selectedCharID) diff --git a/src/ts/process/modules.ts b/src/ts/process/modules.ts index 91005daf..0a83110c 100644 --- a/src/ts/process/modules.ts +++ b/src/ts/process/modules.ts @@ -6,6 +6,7 @@ import { get } from "svelte/store" import { CurrentChat } from "../stores" import { selectSingleFile } from "../util" import { v4 } from "uuid" +import { convertExternalLorebook } from "./lorebook" export interface RisuModule{ name: string @@ -26,25 +27,50 @@ export async function exportModule(module:RisuModule){ } export async function importModule(){ - const f = await selectSingleFile(['json']) + const f = await selectSingleFile(['json', 'lorebook']) if(!f){ return } const file = f.data + const db = get(DataBase) try { - const importedModule = JSON.parse(Buffer.from(file).toString()) - if(importedModule.type === 'risuModule'){ - const db = get(DataBase) + const importData = JSON.parse(Buffer.from(file).toString()) + if(importData.type === 'risuModule'){ if( - (!importedModule.name) - || (!importedModule.description) - || (!importedModule.id) + (!importData.name) + || (!importData.description) + || (!importData.id) ){ alertError(language.errors.noData) } - importedModule.id = v4() - db.modules.push(importedModule) + importData.id = v4() + db.modules.push(importData) setDatabase(db) + return + } + if(importData.type === 'risu' && importData.data){ + const lores:loreBook[] = importData.data + const importModule = { + name: importData.name, + description: importData.description, + lorebook: lores, + id: v4() + } + db.modules.push(importModule) + setDatabase(db) + return + } + if(importData.entries){ + const lores:loreBook[] = convertExternalLorebook(importData.entries) + const importModule = { + name: importData.name, + description: importData.description, + lorebook: lores, + id: v4() + } + db.modules.push(importModule) + setDatabase(db) + return } } catch (error) { alertNormal(language.errors.noData) From 87bfdb514033deae68b793e3bee9796b4da948c6 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 7 Feb 2024 06:20:31 +0900 Subject: [PATCH 11/12] Update version to 1.78.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 5c9108c8..56ef6f11 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -8,7 +8,7 @@ }, "package": { "productName": "RisuAI", - "version": "1.78.1" + "version": "1.78.2" }, "tauri": { "allowlist": { diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 3b5b7387..036a918a 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -15,7 +15,7 @@ import type { OobaChatCompletionRequestParams } from '../model/ooba'; export const DataBase = writable({} as any as Database) export const loadedStore = writable(false) -export let appVer = "1.78.1" +export let appVer = "1.78.2" export let webAppSubVer = '' export function setDatabase(data:Database){ diff --git a/version.json b/version.json index 4dd2f394..d97227dc 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{"version":"1.78.1"} \ No newline at end of file +{"version":"1.78.2"} \ No newline at end of file From 1e900d44acd51f4efcbcdd05241a79788a5f5ba9 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 7 Feb 2024 06:22:33 +0900 Subject: [PATCH 12/12] Refactor importModule function to set default values for name and description --- src/ts/process/modules.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ts/process/modules.ts b/src/ts/process/modules.ts index 0a83110c..cf7f9d97 100644 --- a/src/ts/process/modules.ts +++ b/src/ts/process/modules.ts @@ -51,8 +51,8 @@ export async function importModule(){ if(importData.type === 'risu' && importData.data){ const lores:loreBook[] = importData.data const importModule = { - name: importData.name, - description: importData.description, + name: importData.name || 'Imported Lorebook', + description: importData.description || 'Converted from risu lorebook', lorebook: lores, id: v4() } @@ -63,8 +63,8 @@ export async function importModule(){ if(importData.entries){ const lores:loreBook[] = convertExternalLorebook(importData.entries) const importModule = { - name: importData.name, - description: importData.description, + name: importData.name || 'Imported Lorebook', + description: importData.description || 'Converted from external lorebook', lorebook: lores, id: v4() }