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 1/4] 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{ From 77a36f5a7f258422921ec127a266e651d3e2886b Mon Sep 17 00:00:00 2001 From: bangonicdd <157843588+bangonicdd2@users.noreply.github.com> Date: Fri, 21 Feb 2025 21:13:57 +0900 Subject: [PATCH 2/4] fix: issue of local lore deactive in prev commit --- src/lib/SideBars/LoreBook/LoreBookData.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/SideBars/LoreBook/LoreBookData.svelte b/src/lib/SideBars/LoreBook/LoreBookData.svelte index c1014f40..e4ab4956 100644 --- a/src/lib/SideBars/LoreBook/LoreBookData.svelte +++ b/src/lib/SideBars/LoreBook/LoreBookData.svelte @@ -70,6 +70,7 @@ } } function DeactivateLocally(book: loreBook){ + if(!book.id) return const chat = getCurrentChat() const childLore = chat?.localLore?.find(e => e.id === book.id) if(childLore){ From 0f1d243935132043f84dd21e887a83230ea8af84 Mon Sep 17 00:00:00 2001 From: bangonicdd <157843588+bangonicdd2@users.noreply.github.com> Date: Sat, 22 Feb 2025 01:26:12 +0900 Subject: [PATCH 3/4] fix: naming to lower camel case in current PR --- src/lib/SideBars/LoreBook/LoreBookData.svelte | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lib/SideBars/LoreBook/LoreBookData.svelte b/src/lib/SideBars/LoreBook/LoreBookData.svelte index e4ab4956..3549cc7d 100644 --- a/src/lib/SideBars/LoreBook/LoreBookData.svelte +++ b/src/lib/SideBars/LoreBook/LoreBookData.svelte @@ -42,7 +42,7 @@ e.alwaysActive ) } - function ActivateLocally(book: loreBook){ + function activateLocally(book: loreBook){ const chat = getCurrentChat() let childLore: loreBook | undefined @@ -69,7 +69,7 @@ chat.localLore.push(childLore) } } - function DeactivateLocally(book: loreBook){ + function deactivateLocally(book: loreBook){ if(!book.id) return const chat = getCurrentChat() const childLore = chat?.localLore?.find(e => e.id === book.id) @@ -79,9 +79,9 @@ } function toggleLocalActive(check: boolean, book: loreBook){ if(check){ - ActivateLocally(book) + activateLocally(book) }else{ - DeactivateLocally(book) + deactivateLocally(book) } } function getParentLoreName(book: loreBook){ @@ -129,7 +129,7 @@ if(!open){ onClose() } - DeactivateLocally(value) + deactivateLocally(value) onRemove() } }}> From a45a3925c2a575de611b96befabbb6afe27989a8 Mon Sep 17 00:00:00 2001 From: bangonicdd <157843588+bangonicdd2@users.noreply.github.com> Date: Mon, 24 Feb 2025 17:00:48 +0900 Subject: [PATCH 4/4] refactor: cleanup lore local activation --- src/lib/SideBars/LoreBook/LoreBookData.svelte | 36 +++++++------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/src/lib/SideBars/LoreBook/LoreBookData.svelte b/src/lib/SideBars/LoreBook/LoreBookData.svelte index 3549cc7d..05f43c75 100644 --- a/src/lib/SideBars/LoreBook/LoreBookData.svelte +++ b/src/lib/SideBars/LoreBook/LoreBookData.svelte @@ -37,37 +37,25 @@ let tokens = $state(0) function isLocallyActivated(book: loreBook){ - return getCurrentChat()?.localLore.some(e => - e.id === book.id && - e.alwaysActive - ) + return book.id ? getCurrentChat()?.localLore.some(e => e.id === book.id) : false } function activateLocally(book: loreBook){ - const chat = getCurrentChat() - let childLore: loreBook | undefined - if(!book.id){ book.id = v4() - }else{ - childLore = chat.localLore.find(e => e.id === book.id) } - if(childLore){ - childLore.alwaysActive = true - }else{ - childLore = { - key: '', - comment: '', - content: '', - mode: 'child', - insertorder: 100, - alwaysActive: true, - secondkey: '', - selective: false, - id: book.id, - } - chat.localLore.push(childLore) + const childLore: loreBook = { + key: '', + comment: '', + content: '', + mode: 'child', + insertorder: 100, + alwaysActive: true, + secondkey: '', + selective: false, + id: book.id, } + getCurrentChat().localLore.push(childLore) } function deactivateLocally(book: loreBook){ if(!book.id) return