From b10fccd3c479bbfbc5c095d3d5f88a2c5596dc36 Mon Sep 17 00:00:00 2001
From: bangonicdd <157843588+bangonicdd2@users.noreply.github.com>
Date: Fri, 21 Feb 2025 21:01:20 +0900
Subject: [PATCH] feat: add local activation for lorebook
---
src/lang/en.ts | 2 +
src/lang/ko.ts | 2 +
src/lib/SideBars/LoreBook/LoreBookData.svelte | 87 ++++++++++++++++++-
src/ts/process/lorebook.svelte.ts | 15 ++++
src/ts/storage/database.svelte.ts | 3 +-
5 files changed, 105 insertions(+), 4 deletions(-)
diff --git a/src/lang/en.ts b/src/lang/en.ts
index c48644b8..d8faf0ec 100644
--- a/src/lang/en.ts
+++ b/src/lang/en.ts
@@ -1057,4 +1057,6 @@ export const languageEnglish = {
paste: "Paste",
depth: "Depth",
returnCSSError: "Return CSS Error",
+ alwaysActiveInChat: "Always Active (Current Chat)",
+ childLoreDesc: "This is a copy of Character lore that remains 'Always Active' until removed or manually deactivated in the original.",
}
diff --git a/src/lang/ko.ts b/src/lang/ko.ts
index 93891ae5..fec8ec0c 100644
--- a/src/lang/ko.ts
+++ b/src/lang/ko.ts
@@ -978,4 +978,6 @@ export const languageKorean = {
"copy": "복사",
"paste": "붙여넣기",
"depth": "깊이",
+ "alwaysActiveInChat": "언제나 활성화 (현재 챗)",
+ "childLoreDesc": "이것은 캐릭터 로어의 복사본이며, 삭제하거나 원본 로어에서 직접 비활성화하기 전에는 '언제나 활성화' 상태로 유지됩니다."
}
diff --git a/src/lib/SideBars/LoreBook/LoreBookData.svelte b/src/lib/SideBars/LoreBook/LoreBookData.svelte
index 3f8cb622..c1014f40 100644
--- a/src/lib/SideBars/LoreBook/LoreBookData.svelte
+++ b/src/lib/SideBars/LoreBook/LoreBookData.svelte
@@ -1,8 +1,9 @@
+ {#if value.mode !== 'child'}
+ {:else}
+
+
+ {/if}
{#if open}
@@ -120,6 +196,11 @@
+ {#if !value.alwaysActive && getCurrentCharacter()?.globalLore?.includes(value)}
+
+ toggleLocalActive(check, value)} name={language.alwaysActiveInChat}/>
+
+ {/if}
{#if !lorePlus && !value.useRegex}
diff --git a/src/ts/process/lorebook.svelte.ts b/src/ts/process/lorebook.svelte.ts
index f868a2a7..5e578be7 100644
--- a/src/ts/process/lorebook.svelte.ts
+++ b/src/ts/process/lorebook.svelte.ts
@@ -218,6 +218,21 @@ export async function loadLoreBookV3Prompt(){
all?:boolean
}[] = []
let fullWordMatching = fullWordMatchingSetting
+
+ if(fullLore[i].mode === 'child'){
+ activated = false
+ for(let j=0;j {
switch(name){
case 'end':{
diff --git a/src/ts/storage/database.svelte.ts b/src/ts/storage/database.svelte.ts
index 51bf4572..3c5801f3 100644
--- a/src/ts/storage/database.svelte.ts
+++ b/src/ts/storage/database.svelte.ts
@@ -937,7 +937,7 @@ export interface loreBook{
insertorder: number
comment: string
content: string
- mode: 'multiple'|'constant'|'normal',
+ mode: 'multiple'|'constant'|'normal'|'child',
alwaysActive: boolean
selective:boolean
extentions?:{
@@ -950,6 +950,7 @@ export interface loreBook{
},
useRegex?:boolean
bookVersion?:number
+ id?:string
}
export interface character{