From e5e86a9c9bb7b4faec70f06879868b9f51fe7273 Mon Sep 17 00:00:00 2001 From: chatbung Date: Wed, 19 Feb 2025 13:30:34 +0900 Subject: [PATCH 1/4] feat: chat folder --- src/lib/SideBars/SideChatList.svelte | 541 +++++++++++++++++++-------- src/ts/characters.ts | 5 +- src/ts/storage/database.svelte.ts | 10 + src/ts/util.ts | 3 + 4 files changed, 409 insertions(+), 150 deletions(-) diff --git a/src/lib/SideBars/SideChatList.svelte b/src/lib/SideBars/SideChatList.svelte index 3c2a454e..614be9a2 100644 --- a/src/lib/SideBars/SideChatList.svelte +++ b/src/lib/SideBars/SideChatList.svelte @@ -1,55 +1,116 @@
- -
- {#key sorted} - {#each chara.chats as chat, i} - + +
+ {#if chara.chats.filter(chat => chat.folderId == chara.chatFolders[i].id).length == 0} + Empty +
+ {:else} + {#each chara.chats.filter(chat => chat.folderId == chara.chatFolders[i].id) as chat} + + {/each} + {/if}
- - {/each} - {/key} + {/each} +
+ +
+ {#each chara.chats as chat, i} + {#if chat.folderId == null} + + {/if} + {/each} +
- + {/key} +
+
- {#if DBState.db.characters[$selectedCharID]?.chaId !== '§playground'} - - + {#if DBState.db.characters[$selectedCharID]?.chaId !== '§playground'} {#if parseKeyValue(DBState.db.customPromptTemplateToggle + getModuleToggles()).length > 4}
@@ -268,10 +512,9 @@ {/if} {/if}
- {#if chara.type === 'group'} -
- -
+
+ +
{/if}
\ No newline at end of file diff --git a/src/ts/characters.ts b/src/ts/characters.ts index 8f68dc2d..34906dd8 100644 --- a/src/ts/characters.ts +++ b/src/ts/characters.ts @@ -32,7 +32,9 @@ export function createNewGroup(){ note: '', name: 'Chat 1', localLore: [] - }], chatPage: 0, + }], + chatFolders: [], + chatPage: 0, viewScreen: 'none', globalLore: [], characters: [], @@ -585,6 +587,7 @@ export function createBlankChar():character{ name: 'Chat 1', localLore: [] }], + chatFolders: [], chatPage: 0, emotionImages: [], bias: [], diff --git a/src/ts/storage/database.svelte.ts b/src/ts/storage/database.svelte.ts index 0d8eb46c..12eca435 100644 --- a/src/ts/storage/database.svelte.ts +++ b/src/ts/storage/database.svelte.ts @@ -958,6 +958,7 @@ export interface character{ desc:string notes:string chats:Chat[] + chatFolders: ChatFolder[] chatPage: number viewScreen: 'emotion'|'none'|'imggen'|'vn', bias: [string, number][] @@ -1096,6 +1097,7 @@ export interface groupChat{ image?:string firstMessage:string chats:Chat[] + chatFolders: ChatFolder[] chatPage: number name:string viewScreen: 'single'|'multiple'|'none'|'emp', @@ -1302,6 +1304,14 @@ export interface Chat{ bindedPersona?:string fmIndex?:number hypaV3Data?:SerializableHypaV3Data + folderId?:string +} + +export interface ChatFolder{ + id:string + name?:string + color?:number + folded:boolean } export interface Message{ diff --git a/src/ts/util.ts b/src/ts/util.ts index 865fdfde..fc5267f6 100644 --- a/src/ts/util.ts +++ b/src/ts/util.ts @@ -1015,4 +1015,7 @@ export const sortableOptions = { delay: 300, // time in milliseconds to define when the sorting should start delayOnTouchOnly: true, filter: '.no-sort', + onMove: (event) => { + return event.related.className.indexOf('no-sort') === -1 + } } as const \ No newline at end of file From f9be5d3710f5db7bf5d073fa0a13b8141ac4dc28 Mon Sep 17 00:00:00 2001 From: chatbung Date: Wed, 19 Feb 2025 16:29:57 +0900 Subject: [PATCH 2/4] feat: add folder color --- src/lib/SideBars/SideChatList.svelte | 41 +++++++++++++++++++++++----- src/ts/storage/database.svelte.ts | 3 +- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/src/lib/SideBars/SideChatList.svelte b/src/lib/SideBars/SideChatList.svelte index 614be9a2..9d7dd07d 100644 --- a/src/lib/SideBars/SideChatList.svelte +++ b/src/lib/SideBars/SideChatList.svelte @@ -13,7 +13,7 @@ import TextInput from "../UI/GUI/TextInput.svelte"; import { exportChat, importChat } from "src/ts/characters"; - import { alertChatOptions, alertConfirm, alertError, alertNormal, alertSelect, alertStore } from "src/ts/alert"; + import { alertChatOptions, alertConfirm, alertError, alertInput, alertNormal, alertSelect, alertStore } from "src/ts/alert"; import { findCharacterbyId, parseKeyValue, sleep, sortableOptions } from "src/ts/util"; import { createMultiuserRoom } from "src/ts/sync/multiuser"; import { getChatBranches } from "src/ts/gui/branches"; @@ -164,18 +164,45 @@ {#each chara.chatFolders as folder, i}
-