diff --git a/src/lang/ko.ts b/src/lang/ko.ts index cb8ae195..943ea439 100644 --- a/src/lang/ko.ts +++ b/src/lang/ko.ts @@ -722,7 +722,7 @@ export const languageKorean = { "selectFile": "파일 선택", "namespace": "네임스페이스", "moduleIntergration": "모듈 통합", - "previewInfo": "이 프리뷰는 모델 특화 처리 전에 프롬프트를 보여줍니다.", + "previewInfo": "미리보기는 모델 특화 처리 전에 프롬프트를 보여줍니다.", "miscTools": "기타 도구", "promptConvertion": "프롬프트 변환", "convertionStep1": "프롬프트와 관련된 모든 파일을 선택하세요 (컨텍스트, 인스트럭트, 샘플러 JSON을 지원합니다)", @@ -753,7 +753,7 @@ export const languageKorean = { "defineCustomGUI": "커스텀 GUI 정의", "chatHTML": "채팅 HTML", "logShare": "공유 로그 버튼 보이기", - "preview": "프리뷰", + "preview": "미리보기", "recommended": "추천", "newChat": "새 채팅", "predictedOutput": "출력 예측", diff --git a/src/lib/Setting/Pages/BotSettings.svelte b/src/lib/Setting/Pages/BotSettings.svelte index 6da2252b..9b3aee5b 100644 --- a/src/lib/Setting/Pages/BotSettings.svelte +++ b/src/lib/Setting/Pages/BotSettings.svelte @@ -10,7 +10,7 @@ import { tokenizeAccurate, tokenizerList } from "src/ts/tokenizer"; import ModelList from "src/lib/UI/ModelList.svelte"; import DropList from "src/lib/SideBars/DropList.svelte"; - import { PlusIcon, TrashIcon, FolderUpIcon, DownloadIcon } from "lucide-svelte"; + import { PlusIcon, TrashIcon, FolderUpIcon, DownloadIcon, UploadIcon } from "lucide-svelte"; import TextInput from "src/lib/UI/GUI/TextInput.svelte"; import NumberInput from "src/lib/UI/GUI/NumberInput.svelte"; import SliderInput from "src/lib/UI/GUI/SliderInput.svelte"; @@ -29,6 +29,7 @@ import { selectSingleFile } from "src/ts/util"; import { getModelInfo, LLMFlags, LLMFormat, LLMProvider } from "src/ts/model/modellist"; import CheckInput from "src/lib/UI/GUI/CheckInput.svelte"; + import RegexList from "src/lib/SideBars/Scripts/RegexList.svelte"; let tokens = $state({ mainPrompt: 0, @@ -580,16 +581,6 @@ {#if submenu !== -1} {/if} - { - const conf = await alertConfirm(language.resetPromptTemplateConfirm) - - if(conf){ - DBState.db.promptTemplate = undefined - } - else{ - DBState.db.promptTemplate = DBState.db.promptTemplate - } - }}/> {:else} { DBState.db.promptTemplate = [] @@ -628,9 +619,41 @@ {@render CustomFlagButton('mustStartWithUserInput', 10)} {/if} - - - + + + + + + +
+ + {language.preview} + +
+ {#if DBState.db.botPresets[DBState.db.botPresetsId]?.image} + icon + {DBState.db.botPresets[DBState.db.botPresetsId]?.name} + {:else} + {language.noImages} + {/if} +
+
+
{#if submenu !== -1} diff --git a/src/lib/Setting/botpreset.svelte b/src/lib/Setting/botpreset.svelte index ab0a41e1..4a1cfc88 100644 --- a/src/lib/Setting/botpreset.svelte +++ b/src/lib/Setting/botpreset.svelte @@ -18,7 +18,7 @@
-
+

{language.presets}

@@ -27,7 +27,7 @@
- {#each DBState.db.botPresets as presets, i} + {#each DBState.db.botPresets as preset, i} +{/if} \ No newline at end of file diff --git a/src/ts/process/modules.ts b/src/ts/process/modules.ts index 0aec3e2d..5afb4f00 100644 --- a/src/ts/process/modules.ts +++ b/src/ts/process/modules.ts @@ -279,10 +279,6 @@ export function getModules(){ if (currentChat){ ids = ids.concat(currentChat.modules ?? []) } - if(db.moduleIntergration){ - const intList = db.moduleIntergration.split(',').map((s) => s.trim()) - ids = ids.concat(intList) - } const idsJoined = ids.join('-') if(lastModules === idsJoined){ return lastModuleData diff --git a/src/ts/process/scripts.ts b/src/ts/process/scripts.ts index 5505ea8d..37dea54f 100644 --- a/src/ts/process/scripts.ts +++ b/src/ts/process/scripts.ts @@ -97,12 +97,12 @@ export function resetScriptCache(){ export async function processScriptFull(char:character|groupChat|simpleCharacterArgument, data:string, mode:ScriptMode, chatID = -1, cbsConditions:CbsConditions = {}){ let db = getDatabase() const originalData = data - const cached = getScriptCache((db.globalscript ?? []).concat(char.customscript), originalData, mode) + const cached = getScriptCache((db.presetRegex ?? []).concat(char.customscript), originalData, mode) if(cached){ return {data: cached, emoChanged: false} } let emoChanged = false - const scripts = (db.globalscript ?? []).concat(char.customscript).concat(getModuleRegexScripts()) + const scripts = (db.presetRegex ?? []).concat(char.customscript).concat(getModuleRegexScripts()) data = await runLuaEditTrigger(char, mode, data) if(pluginV2[mode].size > 0){ for(const plugin of pluginV2[mode]){ diff --git a/src/ts/storage/database.svelte.ts b/src/ts/storage/database.svelte.ts index ade7197a..7a301c5f 100644 --- a/src/ts/storage/database.svelte.ts +++ b/src/ts/storage/database.svelte.ts @@ -5,7 +5,7 @@ import type { RisuPlugin } from '../plugins/plugins'; import type {triggerscript as triggerscriptMain} from '../process/triggers'; import { downloadFile, saveAsset as saveImageGlobal } from '../globalApi.svelte'; import { defaultAutoSuggestPrompt, defaultJailbreak, defaultMainPrompt } from './defaultPrompts'; -import { alertNormal, alertSelect } from '../alert'; +import { alertError, alertNormal, alertSelect } from '../alert'; import type { NAISettings } from '../process/models/nai'; import { prebuiltNAIpresets, prebuiltPresets } from '../process/templates/templates'; import { defaultColorScheme, type ColorScheme } from '../gui/colorscheme'; @@ -353,6 +353,7 @@ export function setDatabase(data:Database){ data.huggingfaceKey ??= '' data.fishSpeechKey ??= '' data.statistics ??= {} + data.presetRegex ??= [] data.reverseProxyOobaArgs ??= { mode: 'instruct' } @@ -860,6 +861,7 @@ export interface Database{ menuSideBar:boolean pluginV2: RisuPlugin[] showSavingIcon:boolean + presetRegex: customscript[] } interface SeparateParameters{ @@ -1181,6 +1183,8 @@ export interface botPreset{ openAIPrediction?: string enableCustomFlags?: boolean customFlags?: LLMFlags[] + image?:string + regex?:customscript[] } @@ -1481,6 +1485,7 @@ export function saveCurrentPreset(){ systemRoleReplacement: db.systemRoleReplacement, customFlags: safeStructuredClone(db.customFlags), enableCustomFlags: db.enableCustomFlags, + regex: db.presetRegex } db.botPresets = pres setDatabase(db) @@ -1588,6 +1593,7 @@ export function setPreset(db:Database, newPres: botPreset){ db.systemRoleReplacement = newPres.systemRoleReplacement ?? 'user' db.customFlags = safeStructuredClone(newPres.customFlags) ?? [] db.enableCustomFlags = newPres.enableCustomFlags ?? false + db.presetRegex = newPres.regex ?? [] return db } @@ -1613,6 +1619,12 @@ export async function downloadPreset(id:number, type:'json'|'risupreset'|'return pres.proxyKey = '' pres.textgenWebUIStreamURL= '' pres.textgenWebUIBlockingURL= '' + + if((pres.image || pres.regex?.length > 0) && type !== 'return'){ + alertError("Preset with image or regexes cannot be exported for now. use RisuRealm to share the preset.") + return + } + if(type === 'json'){ downloadFile(pres.name + "_preset.json", Buffer.from(JSON.stringify(pres, null, 2))) } diff --git a/src/ts/stores.svelte.ts b/src/ts/stores.svelte.ts index 80a0add7..439e8372 100644 --- a/src/ts/stores.svelte.ts +++ b/src/ts/stores.svelte.ts @@ -111,7 +111,6 @@ $effect.root(() => { DBState?.db?.characters?.[selIdState.selId]?.chats?.[DBState?.db?.characters?.[selIdState.selId]?.chatPage]?.modules?.length DBState?.db?.characters?.[selIdState.selId]?.hideChatIcon DBState?.db?.characters?.[selIdState.selId]?.backgroundHTML - DBState?.db?.moduleIntergration moduleUpdate() }) }) \ No newline at end of file