From 4d74439daf1994cc805834e5cacc3a450a351d6e Mon Sep 17 00:00:00 2001 From: kwaroran Date: Tue, 30 Jul 2024 20:35:55 +0900 Subject: [PATCH] change gui --- src/lang/en.ts | 2 + src/lib/Setting/Pages/BotSettings.svelte | 845 +++++++++---------- src/lib/Setting/Pages/DisplaySettings.svelte | 511 +++++------ src/lib/Setting/Pages/PersonaSettings.svelte | 8 +- src/lib/Setting/Pages/PromptSettings.svelte | 45 +- src/lib/UI/GUI/SliderInput.svelte | 5 +- 6 files changed, 709 insertions(+), 707 deletions(-) diff --git a/src/lang/en.ts b/src/lang/en.ts index 6947c95e..53fca401 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -677,4 +677,6 @@ export const languageEnglish = { doYouWantToUnbindCurrentPersona: "Do you want to unbind the persona from this chat?", personaBindedSuccess: "Persona is successfully binded", personaUnbindedSuccess: "Persona is successfully unbinded", + parameters: "Parameters", + sizeAndSpeed: "Size and Speed", } \ No newline at end of file diff --git a/src/lib/Setting/Pages/BotSettings.svelte b/src/lib/Setting/Pages/BotSettings.svelte index db6c50b9..b715ba34 100644 --- a/src/lib/Setting/Pages/BotSettings.svelte +++ b/src/lib/Setting/Pages/BotSettings.svelte @@ -24,6 +24,7 @@ import Arcodion from "src/lib/UI/Arcodion.svelte"; import OpenrouterSettings from "./OpenrouterSettings.svelte"; import ChatFormatSettings from "./ChatFormatSettings.svelte"; + import PromptSettings from "./PromptSettings.svelte"; let tokens = { mainPrompt: 0, @@ -40,284 +41,250 @@ tokens.globalNote = await tokenizeAccurate($DataBase.globalNote, true) } - let advancedBotSettings = false - const unsub = DataBase.subscribe(db => { - if(db.advancedBotSettings !== advancedBotSettings){ - advancedBotSettings = db.advancedBotSettings - } - loadTokenize() - }) - - onDestroy(() => { - unsub() - }) - $: if($DataBase.aiModel === 'textgen_webui' || $DataBase.subModel === 'mancer'){ $DataBase.useStreaming = $DataBase.textgenWebUIStreamURL.startsWith("wss://") } - + let submenu = 0 +

{language.chatBot}

-
+ +
+ +
-{#if advancedBotSettings} + +{#if submenu === 0 || submenu === -1} {language.model} {language.submodel} -{:else} - {language.model} - { - $DataBase.subModel = v - if(v.startsWith('gpt') || v.startsWith('palm2')){ - $DataBase.maxContext = 4000 - $DataBase.maxResponse = 500 - } - else if(v.startsWith('claude')){ - $DataBase.maxContext = 7500 - $DataBase.maxResponse = 500 - if(v.endsWith('100k')){ - $DataBase.maxContext = 99000 - } - } - else{ - $DataBase.maxContext = 1500 - $DataBase.maxResponse = 200 - if(v.startsWith('horde')){ - $DataBase.maxResponse = 100 - } - } - setRecommended(v, 'force') - }}/> - -{/if} - -{#if $DataBase.aiModel.startsWith('palm2') || $DataBase.subModel.startsWith('palm2') || $DataBase.aiModel.startsWith('gemini') || $DataBase.subModel.startsWith('gemini')} - - {#if $DataBase.google.projectId === 'aigoogle'} - GoogleAI API Key - {:else} - Google Bearer Token - {/if} - - - - {#if $DataBase.google.projectId !== 'aigoogle'} - Google Project ID - - {/if} -{/if} -{#if $DataBase.aiModel.startsWith('novellist') || $DataBase.subModel.startsWith('novellist')} - NovelList {language.apiKey} - -{/if} -{#if $DataBase.aiModel.startsWith('mancer') || $DataBase.subModel.startsWith('mancer')} - Mancer {language.apiKey} - -{/if} -{#if $DataBase.aiModel.startsWith('claude-') || $DataBase.subModel.startsWith('claude-')} - Claude {language.apiKey} - -{/if} -{#if $DataBase.aiModel.startsWith('mistral') || $DataBase.subModel.startsWith('mistral')} - Mistral {language.apiKey} - -{/if} -{#if $DataBase.aiModel.startsWith('novelai') || $DataBase.subModel.startsWith('novelai')} - NovelAI Bearer Token - -{/if} -{#if $DataBase.aiModel === 'reverse_proxy' || $DataBase.subModel === 'reverse_proxy'} - URL - - {language.proxyAPIKey} - - {language.proxyRequestModel} - - None - GPT 3.5 - GPT 3.5 16k - GPT-4 - GPT-4o - GPT-4 32k - GPT-4 Turbo - GPT-4 Turbo 1106 - GPT-4 Turbo 1106 Vision - GPT-3.5 0301 - GPT-4 0301 - GPT-3.5 0613 - GPT-4 0613 - claude-2.1 - claude-2.0 - claude-2 - claude-v1.3 - claude-v1.3-100k - claude-v1.2 - claude-instant-v1.1 - claude-instant-v1.1-100k - claude-3-opus-20240229 - claude-3-sonnet-20240229 - claude-3-5-sonnet-20240620 - Custom - - {#if $DataBase.proxyRequestModel === 'custom'} - - {:else} -
- {/if} -{/if} -{#if $DataBase.aiModel.startsWith('risullm')} - Risu {language.apiKey} - -{/if} -{#if $DataBase.aiModel.startsWith('cohere')} - Cohere {language.apiKey} - -{/if} -{#if $DataBase.aiModel === 'ollama-hosted'} - Ollama URL - - - Ollama Model - -{/if} -{#if $DataBase.aiModel === 'openrouter' || $DataBase.subModel === 'openrouter'} - Openrouter Key - - - Openrouter Model - {#await openRouterModels()} - - Loading.. - - {:then m} - - {#if (!m) || (m.length === 0)} - GPT 3.5 - GPT 3.5 16k - GPT-4 - GPT-4 32k - Claude 2 - Claude Instant v1 - Claude Instant v1 100k - Claude v1 - Claude v1 100k - Claude v1.2 - {:else} - Free Auto - Openrouter Auto - {#each m as model} - {model.name} - {/each} - {/if} - - {/await} -{/if} -{#if $DataBase.aiModel === 'openrouter' || $DataBase.aiModel === 'reverse_proxy'} - {language.tokenizer} - - {#each tokenizerList as entry} - {entry[1]} - {/each} - -{/if} -{#if $DataBase.aiModel.startsWith('gpt') || $DataBase.subModel.startsWith('gpt') - || $DataBase.aiModel.startsWith('instructgpt') || $DataBase.subModel.startsWith('instructgpt')} - OpenAI {language.apiKey} - - -{/if} - -
- {#if $DataBase.aiModel.startsWith('gpt') || $DataBase.aiModel === 'reverse_proxy' || $DataBase.aiModel === 'openrouter' || $DataBase.aiModel.startsWith('claude-3')} - - {/if} {#if $DataBase.aiModel.startsWith('palm2') || $DataBase.subModel.startsWith('palm2') || $DataBase.aiModel.startsWith('gemini') || $DataBase.subModel.startsWith('gemini')} - { - if(!v){ - $DataBase.google.projectId = 'aigoogle' - } - else{ - $DataBase.google.projectId = '' - } - }}/> + + {#if $DataBase.google.projectId === 'aigoogle'} + GoogleAI API Key + {:else} + Google Bearer Token + {/if} + + + + {#if $DataBase.google.projectId !== 'aigoogle'} + Google Project ID + + {/if} + {/if} + {#if $DataBase.aiModel.startsWith('novellist') || $DataBase.subModel.startsWith('novellist')} + NovelList {language.apiKey} + + {/if} + {#if $DataBase.aiModel.startsWith('mancer') || $DataBase.subModel.startsWith('mancer')} + Mancer {language.apiKey} + {/if} {#if $DataBase.aiModel.startsWith('claude-') || $DataBase.subModel.startsWith('claude-')} - + Claude {language.apiKey} + + {/if} + {#if $DataBase.aiModel.startsWith('mistral') || $DataBase.subModel.startsWith('mistral')} + Mistral {language.apiKey} + + {/if} + {#if $DataBase.aiModel.startsWith('novelai') || $DataBase.subModel.startsWith('novelai')} + NovelAI Bearer Token + {/if} {#if $DataBase.aiModel === 'reverse_proxy' || $DataBase.subModel === 'reverse_proxy'} - + URL + + {language.proxyAPIKey} + + {language.proxyRequestModel} + + None + GPT 3.5 + GPT 3.5 16k + GPT-4 + GPT-4o + GPT-4 32k + GPT-4 Turbo + GPT-4 Turbo 1106 + GPT-4 Turbo 1106 Vision + GPT-3.5 0301 + GPT-4 0301 + GPT-3.5 0613 + GPT-4 0613 + claude-2.1 + claude-2.0 + claude-2 + claude-v1.3 + claude-v1.3-100k + claude-v1.2 + claude-instant-v1.1 + claude-instant-v1.1-100k + claude-3-opus-20240229 + claude-3-sonnet-20240229 + claude-3-5-sonnet-20240620 + Custom + + {#if $DataBase.proxyRequestModel === 'custom'} + + {:else} +
+ {/if} {/if} - {#if $DataBase.aiModel === "novelai" || $DataBase.subModel === "novelai" || $DataBase.aiModel === 'novelai_kayra' || $DataBase.subModel === 'novelai_kayra'} - - - + {#if $DataBase.aiModel.startsWith('risullm')} + Risu {language.apiKey} + {/if} -
- -{#if $DataBase.aiModel === 'custom' || $DataBase.subModel === 'custom'} - {language.plugin} - - None - {#each $customProviderStore as plugin} - {plugin} - {/each} - -{/if} - -{#if $DataBase.aiModel === "kobold" || $DataBase.subModel === "kobold"} - Kobold URL - - -{/if} - - -{#if $DataBase.aiModel.startsWith("horde") || $DataBase.subModel.startsWith("horde") } - Horde {language.apiKey} - - -{/if} -{#if $DataBase.aiModel === 'textgen_webui' || $DataBase.subModel === 'textgen_webui' - || $DataBase.aiModel === 'mancer' || $DataBase.subModel === 'mancer'} - Blocking {language.providerURL} - - You must use textgen webui with --public-api - Stream {language.providerURL} - - {#if !isTauri} - You are using web version. you must use ngrok or other tunnels to use your local webui. + {#if $DataBase.aiModel.startsWith('cohere')} + Cohere {language.apiKey} + {/if} - Warning: For Ooba version over 1.7, use "Ooba" as model, and use url like http://127.0.0.1:5000/v1/chat/completions -{/if} -{#if $DataBase.aiModel === 'ooba' || $DataBase.subModel === 'ooba'} - Ooba {language.providerURL} - -{/if} -{#if advancedBotSettings} - {#if !$DataBase.promptTemplate} - {language.mainPrompt} - - {tokens.mainPrompt} {language.tokens} - {language.jailbreakPrompt} - - {tokens.jailbreak} {language.tokens} - {language.globalNote} - - {tokens.globalNote} {language.tokens} - {/if} + {#if $DataBase.aiModel === 'ollama-hosted'} + Ollama URL + + Ollama Model + + {/if} + {#if $DataBase.aiModel === 'openrouter' || $DataBase.subModel === 'openrouter'} + Openrouter Key + + + Openrouter Model + {#await openRouterModels()} + + Loading.. + + {:then m} + + {#if (!m) || (m.length === 0)} + GPT 3.5 + GPT 3.5 16k + GPT-4 + GPT-4 32k + Claude 2 + Claude Instant v1 + Claude Instant v1 100k + Claude v1 + Claude v1 100k + Claude v1.2 + {:else} + Free Auto + Openrouter Auto + {#each m as model} + {model.name} + {/each} + {/if} + + {/await} + {/if} + {#if $DataBase.aiModel === 'openrouter' || $DataBase.aiModel === 'reverse_proxy'} + {language.tokenizer} + + {#each tokenizerList as entry} + {entry[1]} + {/each} + + {/if} + {#if $DataBase.aiModel.startsWith('gpt') || $DataBase.subModel.startsWith('gpt') + || $DataBase.aiModel.startsWith('instructgpt') || $DataBase.subModel.startsWith('instructgpt')} + OpenAI {language.apiKey} + + + {/if} + +
+ {#if $DataBase.aiModel.startsWith('gpt') || $DataBase.aiModel === 'reverse_proxy' || $DataBase.aiModel === 'openrouter' || $DataBase.aiModel.startsWith('claude-3')} + + {/if} + + {#if $DataBase.aiModel.startsWith('palm2') || $DataBase.subModel.startsWith('palm2') || $DataBase.aiModel.startsWith('gemini') || $DataBase.subModel.startsWith('gemini')} + { + if(!v){ + $DataBase.google.projectId = 'aigoogle' + } + else{ + $DataBase.google.projectId = '' + } + }}/> + {/if} + {#if $DataBase.aiModel.startsWith('claude-') || $DataBase.subModel.startsWith('claude-')} + + {/if} + {#if $DataBase.aiModel === 'reverse_proxy' || $DataBase.subModel === 'reverse_proxy'} + + {/if} + {#if $DataBase.aiModel === "novelai" || $DataBase.subModel === "novelai" || $DataBase.aiModel === 'novelai_kayra' || $DataBase.subModel === 'novelai_kayra'} + + + + {/if} +
+ + {#if $DataBase.aiModel === 'custom' || $DataBase.subModel === 'custom'} + {language.plugin} + + None + {#each $customProviderStore as plugin} + {plugin} + {/each} + + {/if} + + {#if $DataBase.aiModel === "kobold" || $DataBase.subModel === "kobold"} + Kobold URL + + + {/if} + + + {#if $DataBase.aiModel.startsWith("horde") || $DataBase.subModel.startsWith("horde") } + Horde {language.apiKey} + + + {/if} + {#if $DataBase.aiModel === 'textgen_webui' || $DataBase.subModel === 'textgen_webui' + || $DataBase.aiModel === 'mancer' || $DataBase.subModel === 'mancer'} + Blocking {language.providerURL} + + You must use textgen webui with --public-api + Stream {language.providerURL} + + {#if !isTauri} + You are using web version. you must use ngrok or other tunnels to use your local webui. + {/if} + Warning: For Ooba version over 1.7, use "Ooba" as model, and use url like http://127.0.0.1:5000/v1/chat/completions + {/if} + {#if $DataBase.aiModel === 'ooba' || $DataBase.subModel === 'ooba'} + Ooba {language.providerURL} + + {/if} + +{/if} + +{#if submenu === 1 || submenu === -1} {language.maxContextSize} @@ -325,178 +292,174 @@ {language.maxResponseSize} -{#if $DataBase.aiModel.startsWith('gpt') || $DataBase.aiModel === 'reverse_proxy' || $DataBase.aiModel === 'openrouter'} -{language.seed} + {#if $DataBase.aiModel.startsWith('gpt') || $DataBase.aiModel === 'reverse_proxy' || $DataBase.aiModel === 'openrouter'} + {language.seed} - -{/if} -{language.temperature} + + {/if} + {language.temperature} -{#if $DataBase.aiModel.startsWith("novelai")} - -{:else} - -{/if} -{#if $DataBase.aiModel.startsWith('openrouter') || $DataBase.aiModel.startsWith('claude-3') || $DataBase.aiModel.startsWith('cohere-')} - Top K - -{/if} -{#if $DataBase.aiModel.startsWith('openrouter')} - Repetition penalty - + {#if $DataBase.aiModel.startsWith("novelai")} + + {:else} + + {/if} + {#if $DataBase.aiModel.startsWith('openrouter') || $DataBase.aiModel.startsWith('claude-3') || $DataBase.aiModel.startsWith('cohere-')} + Top K + + {/if} + {#if $DataBase.aiModel.startsWith('openrouter')} + Repetition penalty + - Min P - + Min P + - Top A - -{/if} -{#if $DataBase.aiModel === 'textgen_webui' || $DataBase.aiModel === 'mancer' || $DataBase.aiModel.startsWith('local_') || $DataBase.aiModel.startsWith('hf:::')} - Repetition Penalty - - Length Penalty - - Top K - - Top P - - Typical P - - Top A - - No Repeat n-gram Size - -
- -
-
- -
-
- -
-
- -
-
- { - if(!$DataBase.localStopStrings){ - $DataBase.localStopStrings = [] - } - else{ - $DataBase.localStopStrings = null - } - }} /> -
- {#if $DataBase.localStopStrings} -
-
- -
- {#each $DataBase.localStopStrings as stopString, i} -
-
- -
-
- -
-
- {/each} + Top A + + {/if} + {#if $DataBase.aiModel === 'textgen_webui' || $DataBase.aiModel === 'mancer' || $DataBase.aiModel.startsWith('local_') || $DataBase.aiModel.startsWith('hf:::')} + Repetition Penalty + + Length Penalty + + Top K + + Top P + + Typical P + + Top A + + No Repeat n-gram Size + +
+
+
+ +
+
+ +
+
+ +
+
+ { + if(!$DataBase.localStopStrings){ + $DataBase.localStopStrings = [] + } + else{ + $DataBase.localStopStrings = null + } + }} /> +
+ {#if $DataBase.localStopStrings} +
+
+ +
+ {#each $DataBase.localStopStrings as stopString, i} +
+
+ +
+
+ +
+
+ {/each} +
+ {/if} +
+ +
+ + + {:else if $DataBase.aiModel.startsWith('novelai')} +
+ Starter + + Seperator + +
+ Top P + + Top K + + Top A + + Tailfree Sampling + + Typical P + + Repetition Penalty + + Repetition Penalty Range + + Repetition Penalty Slope + + Frequency Penalty + + Presence Penalty + + Mirostat LR + + Mirostat Tau + + Cfg Scale + + + {:else if $DataBase.aiModel.startsWith('novellist')} + Top P + + Reputation Penalty + + Reputation Penalty Range + + Reputation Penalty Slope + + Top K + + Top A + + Typical P + + {:else if $DataBase.aiModel.startsWith('claude')} + Top P + + {:else} + + + Top P + + + {language.frequencyPenalty} + + {language.presensePenalty} + {/if} -
- -
- -{:else if $DataBase.aiModel.startsWith('novelai')} -
- Starter - - Seperator - -
- Top P - - Top K - - Top A - - Tailfree Sampling - - Typical P - - Repetition Penalty - - Repetition Penalty Range - - Repetition Penalty Slope - - Frequency Penalty - - Presence Penalty - - Mirostat LR - - Mirostat Tau - - Cfg Scale - - -{:else if $DataBase.aiModel.startsWith('novellist')} - Top P - - Reputation Penalty - - Reputation Penalty Range - - Reputation Penalty Slope - - Top K - - Top A - - Typical P - -{:else if $DataBase.aiModel.startsWith('claude')} - Top P - -{:else} - - - Top P - - - {language.frequencyPenalty} - - {language.presensePenalty} - -{/if} -{/if} - -{#if ($DataBase.reverseProxyOobaMode && $DataBase.aiModel === 'reverse_proxy') || ($DataBase.aiModel === 'ooba')} - -{/if} - -{#if $DataBase.aiModel.startsWith('openrouter')} - -{/if} - - -{#if advancedBotSettings} - {#if !$DataBase.promptTemplate} - {language.formatingOrder} - + {#if ($DataBase.reverseProxyOobaMode && $DataBase.aiModel === 'reverse_proxy') || ($DataBase.aiModel === 'ooba')} + {/if} + + {#if $DataBase.aiModel.startsWith('openrouter')} + + {/if} + +{/if} + +{#if submenu === 3 || submenu === -1} @@ -576,14 +539,10 @@ {/if} - {#if !$DataBase.promptTemplate} -
- -
- {/if} -
+ {#if $DataBase.promptTemplate} - { + + { const conf = await alertConfirm(language.resetPromptTemplateConfirm) if(conf){ @@ -592,21 +551,41 @@ else{ $DataBase.promptTemplate = $DataBase.promptTemplate } - - }}/> {:else} { $DataBase.promptTemplate = [] }}/> {/if} -
- - {#if ($DataBase.promptTemplate)} -
- -
- {/if} + {/if} + +{#if submenu === 2 || submenu === -1} + {#if !$DataBase.promptTemplate} + {language.mainPrompt} + + {tokens.mainPrompt} {language.tokens} + {language.jailbreakPrompt} + + {tokens.jailbreak} {language.tokens} + {language.globalNote} + + {tokens.globalNote} {language.tokens} + {language.formatingOrder} + +
+ +
+ {:else} + + {/if} +{/if} + + +{#if $DataBase.promptTemplate && submenu === -1} +
+ +
+{/if} \ No newline at end of file diff --git a/src/lib/Setting/Pages/DisplaySettings.svelte b/src/lib/Setting/Pages/DisplaySettings.svelte index c8e4119f..b6f631f7 100644 --- a/src/lib/Setting/Pages/DisplaySettings.svelte +++ b/src/lib/Setting/Pages/DisplaySettings.svelte @@ -17,276 +17,297 @@ const onSchemeInputChange = (e:Event) => { changeColorScheme((e.target as HTMLInputElement).value) } + + let submenu = 0

{language.display}

+
+ + + +
-{language.theme} - - Standard Risu - Waifulike - WaifuCut - - - -{#if $DataBase.theme === "waifu"} - {language.waifuWidth} - - {($DataBase.waifuWidth)}% - - {language.waifuWidth2} - - {($DataBase.waifuWidth2)}% -{/if} - -{language.colorScheme} - - {#each colorSchemeList as scheme} - {scheme} - {/each} - Custom - - -{#if $DataBase.colorSchemeName === "custom"} -
- - Light - Dark +{#if submenu === 0 || submenu === -1} + {language.theme} + + Standard Risu + Waifulike + WaifuCut -
- - Background + + + {#if $DataBase.theme === "waifu"} + {language.waifuWidth} + + {($DataBase.waifuWidth)}% + + {language.waifuWidth2} + + {($DataBase.waifuWidth2)}% + {/if} + + {language.colorScheme} + + {#each colorSchemeList as scheme} + {scheme} + {/each} + Custom + + + {#if $DataBase.colorSchemeName === "custom"} +
+ + Light + Dark + +
+ + Background +
+
+ + Dark Background +
+
+ + Color 1 +
+
+ + Color 2 +
+
+ + Color 3 +
+
+ + Color 4 +
+
+ + Color 5 +
+
+ + Text Color +
+
+ + Text Color 2 +
+
+ + +
-
- - Dark Background -
-
- - Color 1 -
-
- - Color 2 -
-
- - Color 3 -
-
- - Color 4 -
-
- - Color 5 -
-
- - Text Color -
-
- - Text Color 2 -
-
- - -
-
+ {/if} + + {language.textColor} + + {language.classicRisu} + {language.highcontrast} + Custom + + + {#if $DataBase.textTheme === "custom"} +
+ + Normal Text +
+
+ + Italic Text +
+
+ + Bold Text +
+
+ + Italic Bold Text +
+
+ + Single Quote Text +
+
+ + Double Quote Text +
+ {/if} + + {language.font} + + Default + Times New Roman + Custom + + + {#if $DataBase.font === "custom"} + + {/if} + {/if} -{language.textColor} - - {language.classicRisu} - {language.highcontrast} - Custom - +{#if submenu === 1 || submenu === -1} + + {language.UISize} + + + {language.lineHeight} + + + {language.iconSize} + + + {language.textAreaSize} + + + {language.textAreaTextSize} + + + {language.sideBarSize} + + + {language.assetWidth} + + + {language.animationSpeed} + + + {#if $DataBase.showMemoryLimit} + {language.memoryLimitThickness} + + {/if} -{#if $DataBase.textTheme === "custom"} -
- - Normal Text -
-
- - Italic Text -
-
- - Bold Text -
-
- - Italic Bold Text -
-
- - Single Quote Text -
-
- - Double Quote Text -
{/if} -{language.font} - - Default - Times New Roman - Custom - +{#if submenu === 2 || submenu === -1} -{#if $DataBase.font === "custom"} - -{/if} +
+ +
-{language.UISize} - -{($DataBase.zoomsize)}% +
+ +
-{language.lineHeight} - -{($DataBase.lineHeight)} +
+ +
-{language.iconSize} - -{($DataBase.iconsize)}% - -{language.textAreaSize} - -{guiSizeText($DataBase.textAreaSize)} - -{language.textAreaTextSize} - -{guiSizeText($DataBase.textAreaTextSize)} - -{language.sideBarSize} - -{guiSizeText($DataBase.sideBarSize)} - -{language.assetWidth} - -{ - ($DataBase.assetWidth === -1) ? "Unlimited" : - ($DataBase.assetWidth === 0) ? "Hidden" : (`${($DataBase.assetWidth).toFixed(1)} rem`)} - - -{language.animationSpeed} - -{(`${($DataBase.animationSpeed).toFixed(2)}s`)} - -{#if $DataBase.showMemoryLimit} - {language.memoryLimitThickness} - - {($DataBase.memoryLimitThickness)}px -{/if} - -
- -
- -
- -
- -
- -
- -
- { - if(check){ - $DataBase.customBackground = '-' - const d = await selectSingleFile(['png', 'webp', 'gif']) - if(!d){ - $DataBase.customBackground = '' - return +
+ { + if(check){ + $DataBase.customBackground = '-' + const d = await selectSingleFile(['png', 'webp', 'gif']) + if(!d){ + $DataBase.customBackground = '' + return + } + const img = await saveImage(d.data) + $DataBase.customBackground = img } - const img = await saveImage(d.data) - $DataBase.customBackground = img - } - else{ - $DataBase.customBackground = '' - } - }} name={language.useCustomBackground}> -
- -
- - -
- -
- -
- -
- -
- -{#if $DataBase.textScreenColor} -
- { - $DataBase.textScreenColor = null - }} name={language.textBackgrounds} hiddenName/> - - {language.textBackgrounds} + else{ + $DataBase.customBackground = '' + } + }} name={language.useCustomBackground}>
-{:else} +
- { - $DataBase.textScreenColor = "#121212" - }} name={language.textBackgrounds}/> + + +
+ +
+ +
+ +
+ +
+ + {#if $DataBase.textScreenColor} +
+ { + $DataBase.textScreenColor = null + }} name={language.textBackgrounds} hiddenName/> + + {language.textBackgrounds} +
+ {:else} +
+ { + $DataBase.textScreenColor = "#121212" + }} name={language.textBackgrounds}/> +
+ + + {/if} + +
+
-{/if} - -
- -
- - -
- -
- -{#if $DataBase.textScreenBorder}
- { - $DataBase.textScreenBorder = null - }} name={language.textScreenBorder} hiddenName/> - - {language.textScreenBorder} +
-{:else} + + {#if $DataBase.textScreenBorder} +
+ { + $DataBase.textScreenBorder = null + }} name={language.textScreenBorder} hiddenName/> + + {language.textScreenBorder} +
+ {:else} +
+ { + $DataBase.textScreenBorder = "#121212" + }} name={language.textScreenBorder}/> +
+ {/if} +
- { - $DataBase.textScreenBorder = "#121212" - }} name={language.textScreenBorder}/> +
-{/if} -
- -
- -
- -
- -{#if $DataBase.useExperimental}
- - +
-{/if} + + {#if $DataBase.useExperimental} +
+ + +
+ {/if} + +{/if} \ No newline at end of file diff --git a/src/lib/Setting/Pages/PersonaSettings.svelte b/src/lib/Setting/Pages/PersonaSettings.svelte index 53b74173..38fdb523 100644 --- a/src/lib/Setting/Pages/PersonaSettings.svelte +++ b/src/lib/Setting/Pages/PersonaSettings.svelte @@ -14,7 +14,7 @@

{language.persona}

-
+
{#each $DataBase.personas as persona, i}
- -
-
- -
+
+ {language.promptTemplate} + -

- - {language.promptTemplate} -

-
- - -
-{#if warns.length > 0} -
+
+ + +
+{/if} +{#if warns.length > 0 && subMenu === 0} +

Warning

{#each warns as warn} diff --git a/src/lib/UI/GUI/SliderInput.svelte b/src/lib/UI/GUI/SliderInput.svelte index 5a25e81d..594d9d87 100644 --- a/src/lib/UI/GUI/SliderInput.svelte +++ b/src/lib/UI/GUI/SliderInput.svelte @@ -41,9 +41,9 @@ >
--> - {(value * multiple).toFixed(fixed)} + {customText === undefined ? (value * multiple).toFixed(fixed) : customText}
@@ -59,6 +59,7 @@ export let multiple = 1 let slider: HTMLDivElement let mouseDown = false + export let customText: string|undefined = undefined function changeValue(event) { const rect = slider.getBoundingClientRect();