Merge branch 'staging' into fix-pipe-types

b56a457c6c40e57f1779a43d740549b8f6faa3f7

Cohee <18619528+Cohee1207@users.noreply.github.com>

10 files changed, +1526 -1559Ignore whitespace
public/css/mobile-styles.css+0 -1
@@ -344,7 +344,6 @@
344344
345345@media screen and (min-width: 1001px) {
346346
347- #PygOverrides,
348347 #ContextFormatting,
349348 #UI-Theme-Block,
350349 #UI-Customization,
public/css/st-tailwind.css+6 -1
@@ -360,6 +360,10 @@
360360 margin-right: 2px;
361361}
362362
363+.flexAuto {
364+ flex: auto;
365+}
366+
363367.flex0 {
364368 flex: 0;
365369}
@@ -490,7 +494,8 @@
490494}
491495
492496input:disabled,
493497textarea:disabled {,
498+.disabled {
494499 cursor: not-allowed;
495500 filter: brightness(0.5);
496501}
public/index.html+1385 -1488
@@ -553,7 +553,7 @@
553553 </div>
554554 </div>
555555 </div>
556556 <div data-newbie-hidden class="inline-drawer wide100p">
557557 <div class="inline-drawer-toggle inline-drawer-header">
558558 <b data-i18n="Utility Prompts">Utility Prompts</b>
559559 <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div>
@@ -1488,7 +1488,7 @@
14881488 </div>
14891489 <div data-tg-type="mancer, ooba, koboldcpp, vllm, aphrodite, llamacpp, ollama, infermaticai, huggingface" data-newbie-hidden class="flex-container flexFlowColumn alignitemscenter flexBasis48p flexGrow flexShrink gap0">
14901490 <small data-i18n="Seed" class="textAlignCenter">Seed</small>
14911491 <input type="number" id="seed_textgenerationwebui" class="text_pole textAlignCenter" min="-1" value="-1" maxlength="100" />
14921492 </div>
14931493 <div id="banned_tokens_block_ooba" data-newbie-hidden class="wide100p">
14941494 <hr data-newbie-hidden class="width100p">
@@ -1820,12 +1820,12 @@
18201820 <span id="claude_assistant_prefill_text" data-i18n="Assistant Prefill">Assistant Prefill</span>
18211821 <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="claude_assistant_prefill" title="Expand the editor" data-i18n="[title]Expand the editor"></i>
18221822 </div>
18231823 <textarea id="claude_assistant_prefill" class="text_pole textarea_compact" name="assistant_prefill" rows="6" maxlength="100000" data-i18n="[placeholder]Start Claude's answer with..." placeholder="Start Claude's answer with..."></textarea>
18241824 <div class="flex-container alignItemsCenter">
18251825 <span id="claude_assistant_impersonation_text" data-i18n="Assistant Impersonation Prefill">Assistant Impersonation Prefill</span>
18261826 <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="claude_assistant_impersonation" title="Expand the editor" data-i18n="[title]Expand the editor"></i>
18271827 </div>
18281828 <textarea id="claude_assistant_impersonation" class="text_pole textarea_compact" name="assistant_impersonation" rows="6" maxlength="100000" data-i18n="[placeholder]Start Claude's answer with..." placeholder="Start Claude's answer with..."></textarea>
18291829 </div>
18301830 <label for="claude_use_sysprompt" class="checkbox_label widthFreeExpand">
18311831 <input id="claude_use_sysprompt" type="checkbox" />
@@ -1951,7 +1951,7 @@
19511951 <a id="horde_kudos" href="javascript:void(0);">View my Kudos</a>
19521952 </div> -->
19531953 <div class="flex-container">
19541954 <input id="horde_api_key" name="horde_api_key" class="text_pole flex1" maxlength="500" type="text" placeholder="0000000000" autocomplete="off">
19551955 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_horde"></div>
19561956 </div>
19571957 <div data-for="horde_api_key" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
@@ -1978,7 +1978,7 @@
19781978 <div id="kobold_api_block">
19791979 <h4 data-i18n="API url">API url</h4>
19801980 <small data-i18n="Example: http://127.0.0.1:5000/api ">Example: http://127.0.0.1:5000/api </small>
19811981 <input id="api_url_text" name="api_url" class="text_pole" placeholder="http://127.0.0.1:5000/api" maxlength="500" value="" autocomplete="off" data-server-history="kobold">
19821982 <div id="koboldcpp_hint" class="neutral_warning displayNone">
19831983 KoboldCpp works better when you select the Text Completion API and then KoboldCpp as a type!
19841984 </div>
@@ -2006,7 +2006,7 @@
20062006 </ol>
20072007 </span>
20082008 <div class="flex-container">
20092009 <input id="api_key_novel" name="api_key_novel" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off">
20102010 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_novel">
20112011 </div>
20122012 </div>
@@ -2056,7 +2056,7 @@
20562056 <div data-tg-type="togetherai" class="flex-container flexFlowColumn">
20572057 <h4 data-i18n="TogetherAI API Key">TogetherAI API Key</h4>
20582058 <div class="flex-container">
20592059 <input id="api_key_togetherai" name="api_key_togetherai" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off">
20602060 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_togetherai"></div>
20612061 </div>
20622062 <div data-for="api_key_togetherai" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
@@ -2080,7 +2080,7 @@
20802080 <a href="https://openrouter.ai/account" target="_blank" data-i18n="View Remaining Credits">View Remaining Credits</a>
20812081 </div>
20822082 <div class="flex-container">
20832083 <input id="api_key_openrouter-tg" name="api_key_openrouter" class="text_pole flex1 api_key_openrouter" maxlength="500" value="" type="text" autocomplete="off">
20842084 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_openrouter"></div>
20852085 </div>
20862086 <div data-for="api_key_openrouter" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
@@ -2107,7 +2107,7 @@
21072107 <div data-tg-type="infermaticai" class="flex-container flexFlowColumn">
21082108 <h4 data-i18n="InfermaticAI API Key">InfermaticAI API Key</h4>
21092109 <div class="flex-container">
21102110 <input id="api_key_infermaticai" name="api_key_infermaticai" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off">
21112111 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_infermaticai"></div>
21122112 </div>
21132113 <div data-for="api_key_infermaticai" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
@@ -2130,7 +2130,7 @@
21302130 </a>
21312131 </h4>
21322132 <div class="flex-container">
21332133 <input id="api_key_dreamgen" name="api_key_dreamgen" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off">
21342134 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_dreamgen"></div>
21352135 </div>
21362136 <div data-for="api_key_dreamgen" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
@@ -2155,7 +2155,7 @@
21552155 </a>
21562156 </h4>
21572157 <div class="flex-container">
21582158 <input id="api_key_mancer" name="api_key_mancer" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off">
21592159 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_mancer">
21602160 </div>
21612161 </div>
@@ -2185,7 +2185,7 @@
21852185 </div>
21862186 <h4 data-i18n="API key (optional)">API key (optional)</h4>
21872187 <div class="flex-container">
21882188 <input id="api_key_ooba" name="api_key_ooba" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off">
21892189 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_ooba">
21902190 </div>
21912191 </div>
@@ -2195,9 +2195,9 @@
21952195 <div class="flex1">
21962196 <h4 data-i18n="Server url">Server URL</h4>
21972197 <small data-i18n="Example: 127.0.0.1:5000">Example: http://127.0.0.1:5000</small>
21982198 <input id="textgenerationwebui_api_url_text" name="textgenerationwebui_api_url" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="ooba_blocking">
21992199 </div>
22002200 <input id="custom_model_textgenerationwebui" class="text_pole wide100p" maxlength="500" placeholder="Custom model (optional)" data-i18n="[placeholder]Custom model (optional)" type="text">
22012201 </div>
22022202 <div data-tg-type="featherless" class="flex-container flexFlowColumn">
22032203 <div class="flex-container flexFlowColumn">
@@ -2207,7 +2207,7 @@
22072207 </div>
22082208 <h4 data-i18n="API key (optional)">API key</h4>
22092209 <div class="flex-container">
22102210 <input id="api_key_featherless" name="api_key_featherless" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off">
22112211 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_featherless">
22122212 </div>
22132213 </div>
@@ -2228,7 +2228,7 @@
22282228 </div>
22292229 <h4 data-i18n="vLLM API key">vLLM API key</h4>
22302230 <div class="flex-container">
22312231 <input id="api_key_vllm" name="api_key_vllm" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off">
22322232 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_vllm">
22332233 </div>
22342234 </div>
@@ -2238,7 +2238,7 @@
22382238 <div class="flex1">
22392239 <h4 data-i18n="API url">API URL</h4>
22402240 <small data-i18n="Example: 127.0.0.1:8000">Example: http://127.0.0.1:8000</small>
22412241 <input id="vllm_api_url_text" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="vllm">
22422242 </div>
22432243 <div>
22442244 <h4 data-i18n="vLLM Model">vLLM Model</h4>
@@ -2252,7 +2252,7 @@
22522252 <div data-tg-type="huggingface">
22532253 <h4 data-i18n="HuggingFace Token">HuggingFace Token</h4>
22542254 <div class="flex-container">
22552255 <input id="api_key_huggingface" name="api_key_huggingface" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off">
22562256 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_huggingface">
22572257 </div>
22582258 </div>
@@ -2262,7 +2262,7 @@
22622262 <div class="flex1">
22632263 <h4 data-i18n="Endpoint URL">Endpoint URL</h4>
22642264 <small data-i18n="Example: https://****.endpoints.huggingface.cloud">Example: https://****.endpoints.huggingface.cloud</small>
22652265 <input id="huggingface_api_url_text" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="huggingface">
22662266 </div>
22672267 </div>
22682268
@@ -2274,7 +2274,7 @@
22742274 </div>
22752275 <h4 data-i18n="Aphrodite API key">Aphrodite API key</h4>
22762276 <div class="flex-container">
22772277 <input id="api_key_aphrodite" name="api_key_aphrodite" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off">
22782278 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_aphrodite">
22792279 </div>
22802280 </div>
@@ -2284,7 +2284,7 @@
22842284 <div class="flex1">
22852285 <h4 data-i18n="API url">API URL</h4>
22862286 <small data-i18n="Example: 127.0.0.1:5000">Example: http://127.0.0.1:5000</small>
22872287 <input id="aphrodite_api_url_text" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="aphrodite">
22882288 </div>
22892289 <div>
22902290 <h4 data-i18n="Aphrodite Model">Aphrodite Model</h4>
@@ -2303,7 +2303,7 @@
23032303 </div>
23042304 <h4 data-i18n="API key (optional)">API key (optional)</h4>
23052305 <div class="flex-container">
23062306 <input id="api_key_llamacpp" name="api_key_llamacpp" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off">
23072307 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_llamacpp">
23082308 </div>
23092309 </div>
@@ -2313,7 +2313,7 @@
23132313 <div class="flex1">
23142314 <h4 data-i18n="API url">API URL</h4>
23152315 <small data-i18n="Example: 127.0.0.1:8080">Example: http://127.0.0.1:8080</small>
23162316 <input id="llamacpp_api_url_text" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="llamacpp">
23172317 </div>
23182318 </div>
23192319 <div data-tg-type="ollama">
@@ -2325,7 +2325,7 @@
23252325 <div class="flex1">
23262326 <h4 data-i18n="API url">API URL</h4>
23272327 <small data-i18n="Example: 127.0.0.1:11434">Example: http://127.0.0.1:11434</small>
23282328 <input id="ollama_api_url_text" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="ollama">
23292329 </div>
23302330 <div class="flex1">
23312331 <h4>
@@ -2351,7 +2351,7 @@
23512351 </div>
23522352 <h4 data-i18n="Tabby API key">Tabby API key</h4>
23532353 <div class="flex-container">
23542354 <input id="api_key_tabby" name="api_key_tabby" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off">
23552355 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_tabby">
23562356 </div>
23572357 </div>
@@ -2361,7 +2361,7 @@
23612361 <div class="flex1">
23622362 <h4 data-i18n="API url">API URL</h4>
23632363 <small data-i18n="Example: 127.0.0.1:5000">Example: http://127.0.0.1:5000</small>
23642364 <input id="tabby_api_url_text" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="tabby">
23652365 </div>
23662366 <div class="flex1">
23672367 <h4>
@@ -2382,7 +2382,7 @@
23822382 </div>
23832383 <h4 data-i18n="koboldcpp API key (optional)">koboldcpp API key (optional)</h4>
23842384 <div class="flex-container">
23852385 <input id="api_key_koboldcpp" name="api_key_koboldcpp" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off">
23862386 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_koboldcpp">
23872387 </div>
23882388 </div>
@@ -2392,7 +2392,7 @@
23922392 <div class="flex1">
23932393 <h4 data-i18n="API url">API URL</h4>
23942394 <small data-i18n="Example: 127.0.0.1:5001">Example: http://127.0.0.1:5001</small>
23952395 <input id="koboldcpp_api_url_text" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="koboldcpp">
23962396 </div>
23972397 </div>
23982398 <div class="flex-container">
@@ -2467,7 +2467,7 @@
24672467 </span>
24682468 </div>
24692469 <div class="wide100p">
24702470 <input id="openai_reverse_proxy_name" type="text" class="text_pole" placeholder="..." maxlength="100" />
24712471 </div>
24722472 <div class="range-block-title justifyLeft" data-i18n="Proxy Server URL">
24732473 Proxy Server URL
@@ -2478,7 +2478,7 @@
24782478 </span>
24792479 </div>
24802480 <div class="wide100p">
24812481 <input id="openai_reverse_proxy" type="text" class="text_pole" placeholder="https://api.openai.com/v1" maxlength="5000" />
24822482 <small class="reverse_proxy_warning">
24832483 <span data-i18n="Doesn't work? Try adding">Doesn't work? Try adding</span> <code>/v1</code> <span data-i18n="at the end!">at the end!</span>
24842484 </small>
@@ -2492,7 +2492,7 @@
24922492 </span>
24932493 </div>
24942494 <div class="flex-container width100p">
24952495 <input id="openai_proxy_password" type="password" class="text_pole flex1" placeholder="" maxlength="5000" form="openai_form" autocomplete="off" />
24962496 <div id="openai_proxy_password_show" title="Peek a password" data-i18n="[title]Peek a password" class="menu_button fa-solid fa-eye-slash fa-fw"></div>
24972497 </div>
24982498 </div>
@@ -2533,7 +2533,7 @@
25332533 </ol>
25342534 </span>
25352535 <div class="flex-container">
25362536 <input id="api_key_openai" name="api_key_openai" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off">
25372537 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_openai"></div>
25382538 </div>
25392539 <div id="ReverseProxyWarningMessage2" class="reverse_proxy_warning">
@@ -2618,7 +2618,7 @@
26182618 </b>
26192619 </div>
26202620 <div class="flex-container">
26212621 <input id="api_key_claude" name="api_key_claude" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off">
26222622 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_claude"></div>
26232623 </div>
26242624 <div data-for="api_key_claude" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
@@ -2670,7 +2670,7 @@
26702670 <a href="https://openrouter.ai/account" target="_blank" data-i18n="View Remaining Credits">View Remaining Credits</a>
26712671 </div>
26722672 <div class="flex-container">
26732673 <input id="api_key_openrouter" name="api_key_openrouter" class="text_pole flex1 api_key_openrouter" maxlength="500" value="" type="text" autocomplete="off">
26742674 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_openrouter"></div>
26752675 </div>
26762676 <div data-for="api_key_openrouter" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
@@ -2746,19 +2746,19 @@
27462746 <div id="normal_scale_form">
27472747 <h4 data-i18n="Scale API Key">Scale API Key</h4>
27482748 <div class="flex-container">
27492749 <input id="api_key_scale" name="api_key_scale" class="text_pole flex1" maxlength="500" value="" autocomplete="off">
27502750 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_scale"></div>
27512751 </div>
27522752 <div data-for="api_key_scale" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
27532753 For privacy reasons, your API key will be hidden after you reload the page.
27542754 </div>
27552755 <h4>Scale API URL</h4>
27562756 <input id="api_url_scale" name="api_url_scale" class="text_pole" maxlength="500" value="" autocomplete="off" placeholder="https://dashboard.scale.com/spellbook/api/v2/deploy/xxxxxxx">
27572757 </div>
27582758 <div id="alt_scale_form">
27592759 <h4>Scale Cookie (_jwt)</h4>
27602760 <div class="flex-container">
27612761 <input id="scale_cookie" name="scale_cookie" class="text_pole flex1" maxlength="500" value="" autocomplete="off">
27622762 <div title="Clear your cookie" data-i18n="[title]Clear your cookie" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="scale_cookie"></div>
27632763 </div>
27642764 <div data-for="scale_cookie" class="neutral_warning">
@@ -2775,7 +2775,7 @@
27752775 <form id="ai21_form" data-source="ai21" action="javascript:void(null);" method="post" enctype="multipart/form-data">
27762776 <h4 data-i18n="AI21 API Key">AI21 API Key</h4>
27772777 <div class="flex-container">
27782778 <input id="api_key_ai21" name="api_key_ai21" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off">
27792779 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_ai21"></div>
27802780 </div>
27812781 <div data-for="api_key_ai21" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
@@ -2797,7 +2797,7 @@
27972797 <form id="makersuite_form" data-source="makersuite" action="javascript:void(null);" method="post" enctype="multipart/form-data">
27982798 <h4 data-i18n="Google AI Studio API Key">Google AI Studio API Key</h4>
27992799 <div class="flex-container">
28002800 <input id="api_key_makersuite" name="api_key_makersuite" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off">
28012801 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_makersuite"></div>
28022802 </div>
28032803 <div data-for="api_key_makersuite" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
@@ -2836,7 +2836,7 @@
28362836 <form id="mistralai_form" data-source="mistralai" action="javascript:void(null);" method="post" enctype="multipart/form-data">
28372837 <h4 data-i18n="MistralAI API Key">MistralAI API Key</h4>
28382838 <div class="flex-container">
28392839 <input id="api_key_mistralai" name="api_key_mistralai" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off">
28402840 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_mistralai"></div>
28412841 </div>
28422842 <div data-for="api_key_mistralai" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
@@ -2875,7 +2875,7 @@
28752875 <div id="groq_form" data-source="groq">
28762876 <h4 data-i18n="Groq API Key">Groq API Key</h4>
28772877 <div class="flex-container">
28782878 <input id="api_key_groq" name="api_key_groq" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off">
28792879 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_groq"></div>
28802880 </div>
28812881 <div data-for="api_key_groq" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
@@ -2898,7 +2898,7 @@
28982898 <div id="perplexity_form" data-source="perplexity">
28992899 <h4 data-i18n="Perplexity API Key">Perplexity API Key</h4>
29002900 <div class="flex-container">
29012901 <input id="api_key_perplexity" name="api_key_perplexity" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off">
29022902 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_perplexity"></div>
29032903 </div>
29042904 <div data-for="api_key_perplexity" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
@@ -2938,7 +2938,7 @@
29382938 <form id="cohere_form" data-source="cohere" action="javascript:void(null);" method="post" enctype="multipart/form-data">
29392939 <h4 data-i18n="Cohere API Key">Cohere API Key</h4>
29402940 <div class="flex-container">
29412941 <input id="api_key_cohere" name="api_key_cohere" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off">
29422942 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_cohere"></div>
29432943 </div>
29442944 <div data-for="api_key_cohere" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
@@ -2966,7 +2966,7 @@
29662966 <form id="blockentropy_form" data-source="blockentropy">
29672967 <h4 data-i18n="Block Entropy API Key">Block Entropy API Key</h4>
29682968 <div class="flex-container">
29692969 <input id="api_key_blockentropy" name="api_key_blockentropy" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off">
29702970 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_blockentropy"></div>
29712971 </div>
29722972 <div data-for="api_key_blockentropy" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
@@ -2980,7 +2980,7 @@
29802980 <form id="custom_form" data-source="custom">
29812981 <h4 data-i18n="Custom Endpoint (Base URL)">Custom Endpoint (Base URL)</h4>
29822982 <div class="flex-container">
29832983 <input id="custom_api_url_text" class="text_pole wide100p" maxlength="5000" value="" autocomplete="off" data-i18n="[placeholder]Example: http://localhost:1234/v1" placeholder="Example: http://localhost:1234/v1">
29842984 </div>
29852985 <div>
29862986 <small>
@@ -2992,7 +2992,7 @@
29922992 <small data-i18n="(Optional)">(Optional)</small>
29932993 </h4>
29942994 <div class="flex-container">
29952995 <input id="api_key_custom" name="api_key_custom" class="text_pole flex1" maxlength="5000" value="" type="text" autocomplete="off">
29962996 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_custom"></div>
29972997 </div>
29982998 <div data-for="api_key_custom" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
@@ -3000,7 +3000,7 @@
30003000 </div>
30013001 <h4 data-i18n="Enter a Model ID">Enter a Model ID</h4>
30023002 <div class="flex-container">
30033003 <input list="model_custom_select_fill" id="custom_model_id" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-i18n="[placeholder]Example: gpt-3.5-turbo" placeholder="Example: gpt-3.5-turbo">
30043004 <datalist id="model_custom_select_fill" class="text_pole model_custom_select"></datalist>
30053005 </div>
30063006 <h4 data-i18n="Available Models">Available Models</h4>
@@ -3020,7 +3020,7 @@
30203020 </a>
30213021 </h4>
30223022 <div class="flex-container">
30233023 <input id="api_key_01ai" name="api_key_01ai" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off">
30243024 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_01ai"></div>
30253025 </div>
30263026 <div data-for="api_key_01ai" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
@@ -3059,8 +3059,8 @@
30593059 <h3 class="margin0" data-i18n="Advanced Formatting">
30603060 Advanced Formatting
30613061 </h3>
30623062 <div class="flex-container spaceEvenly">
30633063 <div id="PygOverridesContextSettings" class="flex-container flexNoGap flexFlowColumn flex1">
30643064 <div>
30653065 <h4 class="standoutHeader title_restorable">
30663066 <div>
@@ -3069,32 +3069,32 @@
30693069 <span class="fa-solid fa-circle-question note-link-span"></span>
30703070 </a>
30713071 </div>
3072- <div class="flex-container">
3073- <i data-newbie-hidden data-preset-manager-import="context" class="margin0 menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i>
3074- <i data-newbie-hidden data-preset-manager-export="context" class="margin0 menu_button fa-solid fa-file-export" title="Export preset" data-i18n="[title]Export preset"></i>
3075- <i data-newbie-hidden data-preset-manager-restore="context" class="margin0 menu_button fa-solid fa-recycle" title="Restore current preset" data-i18n="[title]Restore current preset"></i>
3076- <i data-newbie-hidden id="context_delete_preset" data-preset-manager-delete="context" class="margin0 menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i>
3077- </div>
30783072 </h4>
30793073 <div class="flex-container justifyCenter">
3080- <select id="context_presets" data-preset-manager-for="context" class="flex1 text_pole"></select>
30813074 <input type="file" hidden data-preset-manager-file="context" accept=".json, .settings">
30823075 <i id="context_set_default" class="menu_button fa-solid fa-heart" title="Auto-select this preset for Instruct Mode." data-i18n="[title]Auto-select this preset for Instruct Mode"></i>
30833076 <i data-newbie-hidden data-preset-manager-update="context" class="menu_button fa-solid fa-save" title="Update current preset" data-i18n="[title]Update current preset"></i>
30843077 <i data-newbie-hidden data-preset-manager-new="context" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i>
3078+ <i data-preset-manager-import="context" class="menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i>
3079+ <i data-preset-manager-export="context" class="menu_button fa-solid fa-file-export" title="Export preset" data-i18n="[title]Export preset"></i>
3080+ <i data-newbie-hidden data-preset-manager-restore="context" class="menu_button fa-solid fa-recycle" title="Restore current preset" data-i18n="[title]Restore current preset"></i>
3081+ <i id="context_delete_preset" data-preset-manager-delete="context" class="menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i>
3082+ </div>
3083+ <div class="flex-container">
3084+ <select id="context_presets" data-preset-manager-for="context" class="flex1 text_pole"></select>
30853085 </div>
30863086 <div data-newbie-hidden>
30873087 <label for="context_story_string">
30883088 <small data-i18n="Story String">Story String</small>
30893089 </label>
30903090 <textareadiv contenteditable="true" id="context_story_string" class="text_pole textarea_compact autoSetHeight" rows="1"></textareadiv>
30913091 <div class="flex-container">
30923092 <div class="flex1">
30933093 <label for="context_example_separator">
30943094 <small data-i18n="Example Separator">Example Separator</small>
30953095 </label>
30963096 <div>
30973097 <textareadiv contenteditable="true" id="context_example_separator" class="text_pole textarea_compact autoSetHeight" maxlength="500" rows="1"></textareadiv>
30983098 </div>
30993099 </div>
31003100 <div class="flex1">
@@ -3102,450 +3102,344 @@
31023102 <small data-i18n="Chat Start">Chat Start</small>
31033103 </label>
31043104 <div>
31053105 <textareadiv contenteditable="true" id="context_chat_start" class="text_pole textarea_compact autoSetHeight" maxlength="500" rows="1"></textareadiv>
31063106 </div>
31073107 </div>
31083108 </div>
3109- <label class="checkbox_label" title="Add Chat Start and Example Separator to a list of stopping strings." data-i18n="[title]Add Chat Start and Example Separator to a list of stopping strings.">
3109+ <div>
31103110 <input id="context_use_stop_strings"h4 typeclass="checkboxstandoutHeader" />
3111- <small data-i18n="Separators as Stop Strings">Separators as Stop Strings</small>
3111+ <span data-i18n="Context Formatting">
3112- </label>
3112+ Context Formatting
3113- <label class="checkbox_label" title="Add Character and User names to a list of stopping strings." data-i18n="[title]Add Character and User names to a list of stopping strings.">
3113+ </span>
3114- <input id="context_names_as_stop_strings" type="checkbox" />
3114+ &nbsp;
31153115 <small data-i18n="Names as(Saves Stopto StringsTemplate)">Names as Stop Strings</small>
3116- </label>
3116+ (Saves to Template)
3117+ </small>
3118+ </h4>
3119+
3120+ <label class="checkbox_label" for="always-force-name2-checkbox">
3121+ <input id="always-force-name2-checkbox" type="checkbox" />
3122+ <small data-i18n="Always add character's name to prompt">
3123+ Always add character's name to prompt
3124+ </small>
3125+ </label>
3126+ <label class="checkbox_label" for="single_line">
3127+ <input id="single_line" type="checkbox" />
3128+ <small data-i18n="Generate only one line per request">
3129+ Generate only one line per request
3130+ </small>
3131+ </label>
3132+ <label class="checkbox_label" for="collapse-newlines-checkbox">
3133+ <input id="collapse-newlines-checkbox" type="checkbox" />
3134+ <small data-i18n="Collapse Consecutive Newlines">
3135+ Collapse Consecutive Newlines
3136+ </small>
3137+ </label>
3138+ <label data-newbie-hidden class="checkbox_label" for="trim_spaces">
3139+ <input id="trim_spaces" type="checkbox" />
3140+ <small data-i18n="Trim spaces">Trim spaces</small>
3141+ </label>
3142+ <label class="checkbox_label" for="trim_sentences_checkbox">
3143+ <input id="trim_sentences_checkbox" type="checkbox" />
3144+ <small data-i18n="Trim Incomplete Sentences">
3145+ Trim Incomplete Sentences
3146+ </small>
3147+ </label>
3148+ <!-- Add margin since this is a child of above -->
3149+ <label data-newbie-hidden class="checkbox_label indent20p" for="include_newline_checkbox">
3150+ <input id="include_newline_checkbox" type="checkbox" />
3151+ <small data-i18n="Include Newline">Include Newline</small>
3152+ </label>
3153+ <label class="checkbox_label" title="Add Chat Start and Example Separator to a list of stopping strings." data-i18n="[title]Add Chat Start and Example Separator to a list of stopping strings.">
3154+ <input id="context_use_stop_strings" type="checkbox" />
3155+ <small data-i18n="Separators as Stop Strings">Separators as Stop Strings</small>
3156+ </label>
3157+ <label class="checkbox_label" title="Add Character and User names to a list of stopping strings." data-i18n="[title]Add Character and User names to a list of stopping strings.">
3158+ <input id="context_names_as_stop_strings" type="checkbox" />
3159+ <small data-i18n="Names as Stop Strings">Names as Stop Strings</small>
3160+ </label>
3161+ </div>
3162+
31173163 <label class="checkbox_label" title="Includes Post-History Instructions at the end of the prompt, if defined in the character card AND ''Prefer Char. Instructions'' is enabled.&#10;THIS IS NOT RECOMMENDED FOR TEXT COMPLETION MODELS, CAN LEAD TO BAD OUTPUT." data-i18n="[title]context_allow_post_history_instructions">
31183164 <input id="context_allow_jailbreak" type="checkbox" />
31193165 <small data-i18n="Allow Post-History Instructions">Allow Post-History Instructions</small>
31203166 </label>
31213167 </div>
3122-
3168+ <div>
3123- <div data-newbie-hidden class="inline-drawer wide100p flexFlowColumn margin-bot-10px" style="display:none;">
3169+ <h4 class="range-block-title justifyLeft standoutHeader">
3124- <div class="inline-drawer-toggle inline-drawer-header">
3170+ <span data-i18n="Custom Stopping Strings">
3125- <b><span data-i18n="Context Order">Context Order</span></b>
3171+ Custom Stopping Strings
3126- <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div>
3172+ </span>
3127- </div>
3173+ <a href="https://docs.sillytavern.app/usage/core-concepts/advancedformatting/#custom-stopping-strings" class="notes-link" target="_blank">
3128- <div class="inline-drawer-content">
3174+ <span class="fa-solid fa-circle-question note-link-span"></span>
3129- <div id="context_order" class="prompt_order">
3175+ </a>
3130- <div data-id="0">
3176+ </h4>
3131- <span data-i18n="Story String">Story String</span>
3177+ <div>
3132- <small>0</small>
3133- </div>
3134- <div data-id="1">
3135- <span data-i18n="Summary">Summary</span>
3136- <small>1</small>
3137- </div>
3138- <div data-id="2">
3139- <span data-i18n="Author's Note">Author's Note</span>
3140- <small>2</small>
3141- </div>
3142- <div data-id="3">
3143- <span data-i18n="Example Dialogues">Example Dialogues</span>
3144- <small>3</small>
3145- </div>
3146- <div data-id="4">
3147- <span data-i18n="Chat Start">Chat History</span>
3148- <small>4</small>
3149- </div>
3150- </div>
31513178 <small>
31523179 <bspan data-i18n="HintJSON serialized array of strings">Hint:JSON serialized array of strings</bspan>
3153- <span data-i18n="In-Chat Position not affected">
3180+ <i class="fa-solid fa-question-circle opacity50p" title="e.g: [&quot;Ford&quot;, &quot;BMW&quot;, &quot;Fiat&quot;]"></i>
3154- Summary and Author's Note orders are only affected when they don't have an In-Chat position set.
3155- </span>
31563181 </small>
31573182 </div>
3183+ <div>
3184+ <div contenteditable="true" id="custom_stopping_strings" class="text_pole textarea_compact monospace"></div>
3185+ </div>
3186+ <label class="checkbox_label" for="custom_stopping_strings_macro">
3187+ <input id="custom_stopping_strings_macro" type="checkbox" checked>
3188+ <small data-i18n="Replace Macro in Custom Stopping Strings">
3189+ Replace Macro in Custom Stopping Strings
3190+ </small>
3191+ </label>
31583192 </div>
31593193 </div>
31603194 </div>
3161- <h4 class="standoutHeader title_restorable">
3195+ <div id="InstructSettingsColumn" class="flex-container flexNoGap flexFlowColumn flex1">
3162- <div>
3196+ <div id="instructSettingsBlock">
3197+ <h4 class="standoutHeader title_restorable justifySpaceBetween">
3198+ <div class="flex-container">
31633199 <span data-i18n="Instruct Mode">Instruct Mode</span>
31643200 <a href="https://docs.sillytavern.app/usage/core-concepts/instructmode/" class="notes-link" target="_blank">
31653201 <span class="fa-solid fa-circle-question note-link-span"></span>
31663202 </a>
31673203 </div>
31683204 <div class="flex-container">
3169- <i data-newbie-hidden data-preset-manager-import="instruct" class="margin0 menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i>
3205+ <label for="instruct_enabled" class="checkbox_label flex1">
3170- <i data-newbie-hidden data-preset-manager-export="instruct" class="margin0 menu_button fa-solid fa-file-export" title="Export preset" data-i18n="[title]Export preset"></i>
3206+ <input id="instruct_enabled" type="checkbox" style="display:none;" />
3171- <i data-newbie-hidden data-preset-manager-restore="instruct" class="margin0 menu_button fa-solid fa-recycle" title="Restore current preset" data-i18n="[title]Restore current preset"></i>
3207+ <small><i class="fa-solid fa-power-off menu_button margin0"></i></small>
3172- <i data-newbie-hidden data-preset-manager-delete="instruct" class="margin0 menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i>
3208+ </label>
3209+ <label for="instruct_bind_to_context" class="checkbox_label flex1" title="If enabled, Context templates will be automatically selected based on selected Instruct template name or by preference." data-i18n="[title]instruct_bind_to_context">
3210+ <input id="instruct_bind_to_context" type="checkbox" style="display:none;" />
3211+ <small><i class="fa-solid fa-link menu_button margin0" title="If enabled, Context templates will be automatically selected based on selected Instruct template name or by preference."></i></small>
3212+ </label>
31733213 </div>
31743214 </h4>
31753215 <div class="flex-container margin0 justifyCenter">
3176- <label for="instruct_enabled" class="checkbox_label flex1">
3177- <input id="instruct_enabled" type="checkbox" />
3178- <span data-i18n="Enabled">Enabled</span>
3179- </label>
3180- <label for="instruct_bind_to_context" class="checkbox_label flex1" title="If enabled, Context templates will be automatically selected based on selected Instruct template name or by preference." data-i18n="[title]instruct_bind_to_context">
3181- <input id="instruct_bind_to_context" type="checkbox" />
3182- <span data-i18n="Bind to Context">Bind to Context</span>
3183- </label>
3184- </div>
3185- <label for="instruct_presets">
3186- <span data-i18n="Presets">Presets</span>
3187- </label>
3188- <div class="flex-container">
3189- <select id="instruct_presets" data-preset-manager-for="instruct" class="flex1 text_pole"></select>
31903216 <input type="file" hidden data-preset-manager-file="instruct" accept=".json, .settings">
31913217 <i id="instruct_set_default" class="menu_button fa-solid fa-heart" title="Auto-select this preset on API connection." data-i18n="[title]Auto-select this preset on API connection"></i>
31923218 <i data-newbie-hidden data-preset-manager-update="instruct" class="menu_button fa-solid fa-save" title="Update current preset" data-i18n="[title]Update current preset"></i>
31933219 <i data-newbie-hidden data-preset-manager-new="instruct" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i>
3220+ <i data-preset-manager-import="instruct" class=" menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i>
3221+ <i data-preset-manager-export="instruct" class=" menu_button fa-solid fa-file-export" title="Export preset" data-i18n="[title]Export preset"></i>
3222+ <i data-newbie-hidden data-preset-manager-restore="instruct" class=" menu_button fa-solid fa-recycle" title="Restore current preset" data-i18n="[title]Restore current preset"></i>
3223+ <i data-preset-manager-delete="instruct" class=" menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i>
3224+ </div>
3225+
3226+ <div class="flex-container">
3227+ <select id="instruct_presets" data-preset-manager-for="instruct" class="flex1 text_pole"></select>
31943228 </div>
31953229 <label data-newbie-hidden>
31963230 <small data-i18n="Activation Regex">
3197- Activation Regex
3231+ Activation Regex <span class="fa-solid fa-circle-question" title="When connecting to an API or choosing a model, automatically activate this Instruct Mode template if the model name matches the provided regular expression."></span>
31983232 </small>
31993233 </label>
32003234 <div data-newbie-hidden>
32013235 <textareainput type="text" id="instruct_activation_regex" class="text_pole textarea_compact autoSetHeight" maxlengthplaceholder="5000"e.g. rows="/llama(-)?[3|3.1]/i"></textareainput>
3236+ </div>
3237+ <div data-newbie-hidden>
3238+ <label>
3239+ <small data-i18n="System Prompt">System Prompt</small>
3240+ </label>
3241+ <div contenteditable="true" id="instruct_system_prompt" class="text_pole textarea_compact"></div>
32023242 </div>
3243+
32033244 <div data-newbie-hidden>
32043245 <label for="instruct_wrap" class="checkbox_label">
32053246 <input id="instruct_wrap" type="checkbox" />
32063247 <spansmall data-i18n="Wrap Sequences with Newline">Wrap Sequences with Newline</spansmall>
32073248 </label>
32083249 <label for="instruct_macro" class="checkbox_label">
32093250 <input id="instruct_macro" type="checkbox" />
32103251 <spansmall data-i18n="Replace Macro in Sequences">Replace Macro in Sequences</spansmall>
32113252 </label>
32123253 <label for="instruct_skip_examples" class="checkbox_label">
32133254 <input id="instruct_skip_examples" type="checkbox" />
32143255 <spansmall data-i18n="Skip Example Dialogues Formatting">Skip Example Dialogues Formatting</spansmall>
32153256 </label>
32163257 <label for="instruct_names" class="checkbox_label">
32173258 <input id="instruct_names" type="checkbox" />
32183259 <spansmall data-i18n="Include Names">Include Names</spansmall>
32193260 </label>
32203261 <label for="instruct_names_force_groups" class="checkbox_label indent20p">
32213262 <input id="instruct_names_force_groups" type="checkbox" />
32223263 <spansmall data-i18n="Force for Groups and Personas">Force for Groups and Personas</spansmall>
3223- </label>
3224- </div>
3225- <div data-newbie-hidden>
3226- <label>
3227- <small data-i18n="System Prompt">System Prompt</small>
32283264 </label>
3229- <textarea id="instruct_system_prompt" class="text_pole textarea_compact autoSetHeight" rows="1"></textarea>
3230- </div>
3231- <div data-newbie-hidden class="inline-drawer wide100p flexFlowColumn">
3232- <div class="inline-drawer-toggle inline-drawer-header">
3233- <b><span data-i18n="Instruct Mode Sequences">Instruct Mode Sequences</span></b>
3234- <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div>
3235- </div>
3236- <div class="inline-drawer-content">
3237- <h5 class="textAlignCenter" data-i18n="System Prompt Wrapping">
3238- System Prompt Wrapping
3239- </h5>
3240- <div class="flex-container">
3241- <div class="flex1" title="Inserted before a System prompt." data-i18n="[title]Inserted before a System prompt.">
3242- <label for="instruct_system_sequence_prefix">
3243- <small data-i18n="System Prompt Prefix">System Prompt Prefix</small>
3244- </label>
3245- <div>
3246- <textarea id="instruct_system_sequence_prefix" class="text_pole textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
3247- </div>
3248- </div>
3249- <div class="flex1" title="Inserted after a System prompt." data-i18n="[title]Inserted after a System prompt.">
3250- <label for="instruct_system_sequence_suffix">
3251- <small data-i18n="System Prompt Suffix">System Prompt Suffix</small>
3252- </label>
3253- <div>
3254- <textarea id="instruct_system_sequence_suffix" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
3255- </div>
3256- </div>
3257- </div>
3258- <h5 class="textAlignCenter" data-i18n="Chat Messages Wrapping">
3259- Chat Messages Wrapping
3260- </h5>
3261- <div class="flex-container">
3262- <div class="flex1" title="Inserted before a User message and as a last prompt line when impersonating." data-i18n="[title]Inserted before a User message and as a last prompt line when impersonating.">
3263- <label for="instruct_input_sequence">
3264- <small data-i18n="User Message Prefix">User Message Prefix</small>
3265- </label>
3266- <div>
3267- <textarea id="instruct_input_sequence" class="text_pole textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
3268- </div>
3269- </div>
3270- <div class="flex1" title="Inserted after a User message." data-i18n="[title]Inserted after a User message.">
3271- <label for="instruct_input_suffix">
3272- <small data-i18n="User Message Suffix">User Message Suffix</small>
3273- </label>
3274- <div>
3275- <textarea id="instruct_input_suffix" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
3276- </div>
3277- </div>
3278- </div>
3279- <div class="flex-container">
3280- <div class="flex1" title="Inserted before an Assistant message and as a last prompt line when generating an AI reply." data-i18n="[title]Inserted before an Assistant message and as a last prompt line when generating an AI reply.">
3281- <label for="instruct_output_sequence">
3282- <small data-i18n="Assistant Message Prefix">Assistant Message Prefix</small>
3283- </label>
3284- <div>
3285- <textarea id="instruct_output_sequence" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
3286- </div>
3287- </div>
3288- <div class="flex1" title="Inserted after an Assistant message." data-i18n="[title]Inserted after an Assistant message.">
3289- <label for="instruct_output_suffix">
3290- <small data-i18n="Assistant Message Suffix">Assistant Message Suffix</small>
3291- </label>
3292- <div>
3293- <textarea id="instruct_output_suffix" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
3294- </div>
3295- </div>
3296- </div>
3297- <div class="flex-container">
3298- <div class="flex1" title="Inserted before a System (added by slash commands or extensions) message." data-i18n="[title]Inserted before a System (added by slash commands or extensions) message.">
3299- <label for="instruct_system_sequence">
3300- <small data-i18n="System Message Prefix">System Message Prefix</small>
3301- </label>
3302- <div>
3303- <textarea id="instruct_system_sequence" class="text_pole textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
3304- </div>
3305- </div>
3306- <div class="flex1" title="Inserted after a System message." data-i18n="[title]Inserted after a System message.">
3307- <label for="instruct_system_suffix">
3308- <small data-i18n="System Message Suffix">System Message Suffix</small>
3309- </label>
3310- <div>
3311- <textarea id="instruct_system_suffix" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
3312- </div>
3313- </div>
3314- <div class="flexBasis100p" title="If enabled, System Sequences will be the same as User Sequences." data-i18n="[title]If enabled, System Sequences will be the same as User Sequences.">
3315- <label class="checkbox_label" for="instruct_system_same_as_user">
3316- <input id="instruct_system_same_as_user" type="checkbox" />
3317- <small data-i18n="System same as User">System same as User</small>
3318- </label>
3319- </div>
3320- </div>
3321- <h5 class="textAlignCenter" data-i18n="Misc. Sequences">
3322- Misc. Sequences
3323- </h5>
3324- <div class="flex-container">
3325- <div class="flex1" title="Inserted before the first Assistant's message." data-i18n="[title]Inserted before the first Assistant's message.">
3326- <label for="instruct_first_output_sequence">
3327- <small data-i18n="First Assistant Prefix">First Assistant Prefix</small>
3328- </label>
3329- <div>
3330- <textarea id="instruct_first_output_sequence" class="text_pole textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
3331- </div>
3332- </div>
3333- <div class="flex1" title="Inserted before the last Assistant's message or as a last prompt line when generating an AI reply (except a neutral/system role)." data-i18n="[title]instruct_last_output_sequence">
3334- <label for="instruct_last_output_sequence">
3335- <small data-i18n="Last Assistant Prefix">Last Assistant Prefix</small>
3336- </label>
3337- <div>
3338- <textarea id="instruct_last_output_sequence" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
3339- </div>
3340- </div>
3341- </div>
3342- <div class="flex-container">
3343- <div class="flex1" title="Inserted before the first User's message." data-i18n="[title]Inserted before the first User's message.">
3344- <label for="instruct_first_input_sequence">
3345- <small data-i18n="First User Prefix">First User Prefix</small>
3346- </label>
3347- <div>
3348- <textarea id="instruct_first_input_sequence" class="text_pole textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
3349- </div>
3350- </div>
3351- <div class="flex1" title="Inserted before the last User's message." data-i18n="[title]instruct_last_input_sequence">
3352- <label for="instruct_last_input_sequence">
3353- <small data-i18n="Last User Prefix">Last User Prefix</small>
3354- </label>
3355- <div>
3356- <textarea id="instruct_last_input_sequence" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
3357- </div>
3358- </div>
3359- </div>
3360- <div class="flex-container">
3361- <div class="flex1" title="Will be inserted as a last prompt line when using system/neutral generation." data-i18n="[title]Will be inserted as a last prompt line when using system/neutral generation.">
3362- <label for="instruct_last_system_sequence">
3363- <small data-i18n="System Instruction Prefix">System Instruction Prefix</small>
3364- </label>
3365- <div>
3366- <textarea id="instruct_last_system_sequence" class="text_pole textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
3367- </div>
3368- </div>
3369- <div class="flex1" title="If a stop sequence is generated, everything past it will be removed from the output (inclusive)." data-i18n="[title]If a stop sequence is generated, everything past it will be removed from the output (inclusive).">
3370- <label for="instruct_stop_sequence">
3371- <small data-i18n="Stop Sequence">Stop Sequence</small>
3372- </label>
3373- <div>
3374- <textarea id="instruct_stop_sequence" class="text_pole textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
3375- </div>
3376- </div>
3377- </div>
3378- <div class="flex-container">
3379- <div class="flex1" title="Will be inserted at the start of the chat history if it doesn't start with a User message." data-i18n="[title]Will be inserted at the start of the chat history if it doesn't start with a User message.">
3380- <label for="instruct_user_alignment_message">
3381- <small data-i18n="User Filler Message">User Filler Message</small>
3382- </label>
3383- <div>
3384- <textarea id="instruct_user_alignment_message" class="text_pole textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
3385- </div>
3386- </div>
3387- </div>
3388- </div>
33893265 </div>
33903266 </div>
3391- </div>
3267+ <div name="tokenizerSettingsBlock">
33923268 <div iddata-newbie-hidden name="ContextFormattingtokenizerSelectorBlock">
3393- <div>
3269+ <h4 class="standoutHeader"><span data-i18n="Tokenizer">Tokenizer</span>
3394- <div class="flex-container alignItemsBaseline">
3270+ <a href="https://docs.sillytavern.app/usage/core-concepts/advancedformatting/#tokenizer" class="notes-link" target="_blank">
3395- <h4 data-i18n="Context Formatting">
3271+ <span class="fa-solid fa-circle-question note-link-span"></span>
3396- Context Formatting
3272+ </a>
33973273 </h4>
3398- <small data-i18n="(Saved to Context Template)">
3274+ <select id="tokenizer">
3399- &nbsp;(Saved to Context Template)
3275+ <option value="99">Best match (recommended)</option>
3400- </small>
3276+ <option value="0">None / Estimated</option>
3401- </div>
3277+ <option value="1">GPT-2</option>
3402- <label class="checkbox_label" for="always-force-name2-checkbox">
3278+ <!-- Option #2 was a legacy GPT-2/3 tokenizer -->
3403- <input id="always-force-name2-checkbox" type="checkbox" />
3279+ <option value="3">Llama 1/2</option>
3404- <span data-i18n="Always add character's name to prompt">
3280+ <option value="12">Llama 3</option>
3405- Always add character's name to prompt
3281+ <option value="13">Gemma / Gemini</option>
3406- </span>
3282+ <option value="14">Jamba</option>
3407- </label>
3283+ <option value="4">NerdStash (NovelAI Clio)</option>
3408- <label class="checkbox_label" for="single_line">
3284+ <option value="5">NerdStash v2 (NovelAI Kayra)</option>
3409- <input id="single_line" type="checkbox" />
3285+ <option value="7">Mistral</option>
3410- <span data-i18n="Generate only one line per request">
3286+ <option value="8">Yi</option>
3411- Generate only one line per request
3287+ <option value="11">Claude 1/2</option>
3412- </span>
3288+ <option value="6">API (WebUI / koboldcpp)</option>
34133289 </labelselect>
3414- <label class="checkbox_label" for="trim_sentences_checkbox">
3415- <input id="trim_sentences_checkbox" type="checkbox" />
3416- <span data-i18n="Trim Incomplete Sentences">
3417- Trim Incomplete Sentences
3418- </span>
3419- </label>
3420- <!-- Add margin since this is a child of above -->
3421- <label data-newbie-hidden class="checkbox_label indent20p" for="include_newline_checkbox">
3422- <input id="include_newline_checkbox" type="checkbox" />
3423- <span data-i18n="Include Newline">Include Newline</span>
3424- </label>
3425- </div>
3426- <h4 data-i18n="Misc. Settings">
3427- Misc. Settings
3428- </h4>
3429- <label class="checkbox_label" for="collapse-newlines-checkbox">
3430- <input id="collapse-newlines-checkbox" type="checkbox" />
3431- <span data-i18n="Collapse Consecutive Newlines">
3432- Collapse Consecutive Newlines
3433- </span>
3434- </label>
3435- <label data-newbie-hidden class="checkbox_label" for="trim_spaces">
3436- <input id="trim_spaces" type="checkbox" />
3437- <span data-i18n="Trim spaces">Trim spaces</span>
3438- </label>
3439- <div data-newbie-hidden>
3440- <h4><span data-i18n="Tokenizer">Tokenizer</span>
3441- <a href="https://docs.sillytavern.app/usage/core-concepts/advancedformatting/#tokenizer" class="notes-link" target="_blank">
3442- <span class="fa-solid fa-circle-question note-link-span"></span>
3443- </a>
3444- </h4>
3445- <select id="tokenizer">
3446- <option value="99">Best match (recommended)</option>
3447- <option value="0">None / Estimated</option>
3448- <option value="1">GPT-2</option>
3449- <!-- Option #2 was a legacy GPT-2/3 tokenizer -->
3450- <option value="3">Llama 1/2</option>
3451- <option value="12">Llama 3</option>
3452- <option value="13">Gemma / Gemini</option>
3453- <option value="14">Jamba</option>
3454- <option value="4">NerdStash (NovelAI Clio)</option>
3455- <option value="5">NerdStash v2 (NovelAI Kayra)</option>
3456- <option value="7">Mistral</option>
3457- <option value="8">Yi</option>
3458- <option value="11">Claude 1/2</option>
3459- <option value="6">API (WebUI / koboldcpp)</option>
3460- </select>
3461- </div>
3462- <div class="range-block" data-newbie-hidden>
3463- <div class="range-block-title justifyLeft">
3464- <span data-i18n="Token Padding">Token Padding</span>
3465- <a href="https://docs.sillytavern.app/usage/core-concepts/advancedformatting/#token-padding" class="notes-link" target="_blank">
3466- <span class="fa-solid fa-circle-question note-link-span"></span>
3467- </a>
34683290 </div>
3469- <input id="token_padding" class="text_pole textarea_compact" type="number" min="-2048" max="2048" />
3291+ <div class="range-block flex-container flexnowrap" data-newbie-hidden name="tokenPaddingBlock">
3470- </div>
3292+ <div class="range-block-title justifyLeft">
3471- <div class="flex-container flexFlowColumn" data-newbie-hidden>
3293+ <small data-i18n="Token Padding" class="flex-container">Token Padding
3472- <div>
3294+ <a href="https://docs.sillytavern.app/usage/core-concepts/advancedformatting/#token-padding" class="notes-link" target="_blank">
3473- <h4 class="range-block-title justifyLeft">
3295+ <span class="fa-solid fa-circle-question note-link-span"></span>
3474- <span data-i18n="Start Reply With">
3296+ </a>
3475- Start Reply With
3297+ </small>
3476- </span>
3477- </h4>
3478- <div>
3479- <textarea id="start_reply_with" rows="2" class="text_pole textarea_compact" data-i18n="[placeholder]AI reply prefix" placeholder="AI reply prefix"></textarea>
34803298 </div>
3481- <label class="checkbox_label" for="chat-show-reply-prefix-checkbox">
3299+ <input id="token_padding" class="text_pole textarea_compact" type="number" min="-2048" max="2048" />
3482- <input id="chat-show-reply-prefix-checkbox" type="checkbox" />
3483- <span data-i18n="Show reply prefix in chat">
3484- Show reply prefix in chat
3485- </span>
3486- </label>
34873300 </div>
3301+ </div>
3302+ <div>
3303+ <h4 class="standoutHeader" data-i18n="Miscellaneous">Miscellaneous</h4>
34883304 <div>
3489- <h4 class="range-block-title justifyLeft">
3305+ <small>
34903306 <span data-i18n="Non-markdown strings">
34913307 Non-markdown strings
34923308 </span>
34933309 </h4small>
34943310 <div>
34953311 <input id="markdown_escape_strings" class="text_pole textarea_compact" type="text" data-i18n="[placeholder]separate with commascomma w/odelimited,no spacespaces between" placeholder="separate with commascomma w/odelimited,no spacespaces between" maxlength="100" />
34963312 </div>
34973313 </div>
3498- <div>
3314+
3499- <h4 class="range-block-title justifyLeft">
3315+ <div data-newbie-hidden name="startReplyWithBlock">
3500- <span data-i18n="Custom Stopping Strings">
3501- Custom Stopping Strings
3502- </span>
3503- <a href="https://docs.sillytavern.app/usage/core-concepts/advancedformatting/#custom-stopping-strings" class="notes-link" target="_blank">
3504- <span class="fa-solid fa-circle-question note-link-span"></span>
3505- </a>
3506- </h4>
35073316 <div>
35083317 <small>
35093318 <span data-i18n="JSON serialized arrayStart ofReply stringsWith">JSON serialized array of strings</span>
3319+ Start Reply With
3320+ </span>
35103321 </small>
3322+ <div>
3323+ <div contenteditable="true" id="start_reply_with" class="text_pole textarea_compact"></div>
3324+ </div>
3325+ <label class="checkbox_label" for="chat-show-reply-prefix-checkbox">
3326+ <input id="chat-show-reply-prefix-checkbox" type="checkbox" />
3327+ <small data-i18n="Show reply prefix in chat">
3328+ Show reply prefix in chat
3329+ </small>
3330+ </label>
35113331 </div>
3512- <div>
3513- <textarea id="custom_stopping_strings" rows="2" class="text_pole textarea_compact monospace" placeholder="[&quot;Ford&quot;, &quot;BMW&quot;, &quot;Fiat&quot;]"></textarea>
3514- </div>
3515- <label class="checkbox_label" for="custom_stopping_strings_macro">
3516- <input id="custom_stopping_strings_macro" type="checkbox" checked>
3517- <span data-i18n="Replace Macro in Custom Stopping Strings">
3518- Replace Macro in Custom Stopping Strings
3519- </span>
3520- </label>
35213332 </div>
35223333 </div>
3523- <div data-newbie-hidden>
3334+ </div>
3524- <h4>
3335+ <div id="InstructSequencesColumn" class="flex-container flexNoGap flexFlowColumn flex1">
3525- <span data-i18n="Auto-Continue">Auto-Continue</span>
3336+ <div data-newbie-hidden class="wide100p flexFlowColumn">
3337+ <h4 class="standoutHeader title_restorable">
3338+ <b>
3339+ <span data-i18n="Instruct Sequences">
3340+ Instruct Sequences
3341+ </span>
3342+ &nbsp;
3343+ <small data-i18n="(Saves to Template)">
3344+ (Saves to Template)
3345+ </small>
3346+ </b>
35263347 </h4>
35273348 <div class="flex-container">
3528- <label class="checkbox_label" for="auto_continue_enabled">
3349+ <div class="flexAuto" title="Inserted before a System prompt." data-i18n="[title]Inserted before a System prompt.">
35293350 <input id="auto_continue_enabled"label typefor="checkboxinstruct_system_sequence_prefix" />
3530- <span data-i18n="Enabled">
3351+ <small data-i18n="System Prompt Prefix">System Prompt Prefix</small>
3531- Enabled
3352+ </label>
35323353 </spandiv>
3533- </label>
3354+ <div contenteditable="true" id="instruct_system_sequence_prefix" class="text_pole textarea_compact"></div>
3534- <label class="checkbox_label" for="auto_continue_allow_chat_completions">
3355+ </div>
3535- <input id="auto_continue_allow_chat_completions" type="checkbox" />
3356+ </div>
3536- <span data-i18n="Allow for Chat Completion APIs">
3357+ <div class="flexAuto" title="Inserted after a System prompt." data-i18n="[title]Inserted after a System prompt.">
3537- Allow for Chat Completion APIs
3358+ <label for="instruct_system_sequence_suffix">
3538- </span>
3359+ <small data-i18n="System Prompt Suffix">System Prompt Suffix</small>
35393360 </label>
3361+ <div>
3362+ <div contenteditable="true" id="instruct_system_sequence_suffix" class="text_pole wide100p textarea_compact"></div>
3363+ </div>
3364+ </div>
35403365 </div>
3541-
3366+ <div class="flex-container">
3542- <div class="auto_continue_settings_block">
3367+ <div class="flexAuto" title="Inserted before a User message and as a last prompt line when impersonating." data-i18n="[title]Inserted before a User message and as a last prompt line when impersonating.">
3543- <label for="auto_continue_target_length">
3368+ <small data-i18n="User Prefix">User Message Prefix</small>
3544- <span data-i18n="Target length (tokens)">Target length (tokens)</span>
3369+ <div contenteditable="true" id="instruct_input_sequence" class="text_pole textarea_compact"></div>
3545- <input id="auto_continue_target_length" type="number" class="text_pole textarea_compact" min="0" max="1024" />
3370+ </div>
3546- </label>
3371+ <div class="flexAuto" title="Inserted after a User message." data-i18n="[title]Inserted after a User message.">
3372+ <small data-i18n="User Suffix">User Message Suffix</small>
3373+ <div contenteditable="true" id="instruct_input_suffix" class="text_pole wide100p textarea_compact"></div>
3374+ </div>
35473375 </div>
3548- </div>
3376+ <div class="flex-container">
3377+ <div class="flexAuto" title="Inserted before an Assistant message and as a last prompt line when generating an AI reply." data-i18n="[title]Inserted before an Assistant message and as a last prompt line when generating an AI reply.">
3378+ <small data-i18n="Assistant Prefix">Assistant Message Prefix</small>
3379+ <div contenteditable="true" id="instruct_output_sequence" class="text_pole wide100p textarea_compact"></div>
3380+ </div>
3381+ <div class="flexAuto" title="Inserted after an Assistant message." data-i18n="[title]Inserted after an Assistant message.">
3382+ <small data-i18n="Assistant Suffix">Assistant Message Suffix</small>
3383+ <div contenteditable="true" id="instruct_output_suffix" class="text_pole wide100p textarea_compact"></div>
3384+ </div>
3385+ </div>
3386+ <div class="flex-container">
3387+ <div class="flexAuto" id="instruct_system_sequence_block" title="Inserted before a System (added by slash commands or extensions) message." data-i18n="[title]Inserted before a System (added by slash commands or extensions) message.">
3388+ <small data-i18n="System Prefix">System Message Prefix</small>
3389+ <div contenteditable="true" id="instruct_system_sequence" class="text_pole textarea_compact"></div>
3390+ </div>
3391+ <div class="flexAuto" id="instruct_system_suffix_block" title="Inserted after a System message." data-i18n="[title]Inserted after a System message.">
3392+ <small data-i18n="System Suffix">System Message Suffix</small>
3393+ <div contenteditable="true" id="instruct_system_suffix" class="text_pole wide100p textarea_compact"></div>
3394+ </div>
3395+ </div>
3396+ <div class="flexBasis100p" title="If enabled, System Sequences will be the same as User Sequences." data-i18n="[title]If enabled, System Sequences will be the same as User Sequences.">
3397+ <label class="checkbox_label" for="instruct_system_same_as_user">
3398+ <input id="instruct_system_same_as_user" type="checkbox" />
3399+ <small data-i18n="System same as User">System same as User</small>
3400+ </label>
3401+ </div>
3402+
3403+ <h5 class="textAlignCenter" data-i18n="Misc. Sequences">
3404+ Misc. Sequences
3405+ </h5>
3406+ <div class="flex-container">
3407+ <div class="flexAuto" title="Inserted before the first Assistant's message." data-i18n="[title]Inserted before the first Assistant's message.">
3408+ <small data-i18n="First Assistant Prefix">First Assistant Prefix</small>
3409+ <div contenteditable="true" id="instruct_first_output_sequence" class="text_pole textarea_compact"></div>
3410+ </div>
3411+ <div class="flexAuto" title="Inserted before the last Assistant's message or as a last prompt line when generating an AI reply (except a neutral/system role)." data-i18n="[title]instruct_last_output_sequence">
3412+ <small data-i18n="Last Assistant Prefix">Last Assistant Prefix</small>
3413+ <div contenteditable="true" id="instruct_last_output_sequence" class="text_pole wide100p textarea_compact"></div>
3414+ </div>
3415+ </div>
3416+ <div class="flex-container">
3417+ <div class="flexAuto" title="Inserted before the first User's message." data-i18n="[title]Inserted before the first User's message.">
3418+ <small data-i18n="First User Prefix">First User Prefix</small>
3419+ <div contenteditable="true" id="instruct_first_input_sequence" class="text_pole textarea_compact"></div>
3420+ </div>
3421+ <div class="flexAuto" title="Inserted before the last User's message." data-i18n="[title]instruct_last_input_sequence">
3422+ <small data-i18n="Last User Prefix">Last User Prefix</small>
3423+ <div contenteditable="true" id="instruct_last_input_sequence" class="text_pole wide100p textarea_compact"></div>
3424+ </div>
3425+ </div>
3426+ <div class="flex-container">
3427+ <div class="flexAuto" title="Will be inserted as a last prompt line when using system/neutral generation." data-i18n="[title]Will be inserted as a last prompt line when using system/neutral generation.">
3428+ <small data-i18n="System Instruction Prefix">System Instruction Prefix</small>
3429+ <div contenteditable="true" id="instruct_last_system_sequence" class="text_pole textarea_compact"></div>
3430+ </div>
3431+ <div class="flexAuto" title="If a stop sequence is generated, everything past it will be removed from the output (inclusive)." data-i18n="[title]If a stop sequence is generated, everything past it will be removed from the output (inclusive).">
3432+ <small data-i18n="Stop Sequence">Stop Sequence</small>
3433+ <div contenteditable="true" id="instruct_stop_sequence" class="text_pole textarea_compact"></div>
3434+ </div>
3435+ </div>
3436+ <div class="flex-container">
3437+ <div class="flexAuto" title="Will be inserted at the start of the chat history if it doesn't start with a User message." data-i18n="[title]Will be inserted at the start of the chat history if it doesn't start with a User message.">
3438+ <small data-i18n="User Filler Message">User Filler Message</small>
3439+ <div contenteditable="true" id="instruct_user_alignment_message" class="text_pole textarea_compact"></div>
3440+ </div>
3441+ </div>
3442+ </div>
35493443 </div>
35503444 </div>
35513445 </div>
@@ -3556,12 +3450,14 @@
35563450 </div>
35573451 <div id="WorldInfo" class="drawer-content closedDrawer">
35583452 <div id="WorldInfoheader" class="fa-solid fa-grip drag-grabber"></div>
3559- <div id="WI_panel_pin_div" class="flex-container alignitemscenter gap10px" title="Locked = World Editor will stay open" data-i18n="[title]Locked = World Editor will stay open">
3453+ <div class="flex-container alignitemscenter gap10px">
3560- <input type="checkbox" id="WI_panel_pin">
3454+ <div id="WI_panel_pin_div" title="Locked = World Editor will stay open" data-i18n="[title]Locked = World Editor will stay open">
35613455 <labelinput fortype="checkbox" id="WI_panel_pin">
3562- <div class="unchecked fa-solid fa-unlock "></div>
3456+ <label for="WI_panel_pin">
35633457 <div class="checkedunchecked fa-solid fa-lockunlock "></div>
3564- </label>
3458+ <div class="checked fa-solid fa-lock "></div>
3459+ </label>
3460+ </div>
35653461 <h3 class="margin0">
35663462 <span data-i18n="Worlds/Lorebooks">Worlds/Lorebooks</span>
35673463 <a href="https://docs.sillytavern.app/usage/core-concepts/worldinfo/" class="notes-link" target="_blank">
@@ -4294,75 +4190,110 @@
42944190 <input id="auto_swipe_minimum_length" name="auto_swipe_minimum_length" type="number" min="0" step="1" value="0" class="text_pole" title="If the generated message is shorter than this, trigger an auto-swipe." data-i18n="[title]If the generated message is shorter than this, trigger an auto-swipe">
42954191 <small data-i18n="Blacklisted words">Blacklisted words</small>
42964192 <div class="auto_swipe">
42974193 <textarea id="auto_swipe_blacklist" name="auto_swipe_blacklist" data-i18n="[placeholder]words you dont want generated separated by comma ','" placeholder="words you don't want generated separated by comma ','" class="text_pole textarea_compact" maxlength="5000" value="" autocomplete="off" rows="3"></textarea>
42984194 <small data-i18n="Blacklisted word count to swipe">Blacklisted word count to swipe</small>
42994195 <input id="auto_swipe_blacklist_threshold" name="auto_swipe_blacklist_threshold" type="number" min="0" step="1" value="1" class="text_pole" title="Minimum number of blacklisted words detected to trigger an auto-swipe." data-i18n="[title]Minimum number of blacklisted words detected to trigger an auto-swipe">
43004196 </div>
43014197 </div>
43024198 </div>
4303- </div>
4199+ <div data-newbie-hidden nane="AutoContiueBlock" class="inline-drawer wide100p flexFlowColumn">
4304- <div name="AutoCompleteToggle">
4200+ <div class="inline-drawer-toggle inline-drawer-header userSettingsInnerExpandable" title="Automatically 'continue' a response if the model stopped before reaching a certain amount of tokens.">
4305- <h4 data-i18n="AutoComplete Settings">AutoComplete Settings</h4>
4201+ <b><span data-i18n="Auto-swipe">Auto-Continue</span></b>
4306- <label data-newbie-hidden class="checkbox_label" for="stscript_autocomplete_autoHide">
4202+ <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div>
4307- <input id="stscript_autocomplete_autoHide" type="checkbox" />
4308- <small data-i18n="Automatically hide details">
4309- Automatically hide details
4310- </small>
4311- </label>
4312- <div class="flex-container">
4313- <div class="flex1" title="Determines how entries are found for autocomplete." data-i18n="[title]Determines how entries are found for autocomplete.">
4314- <label for="stscript_matching" data-i18n="Autocomplete Matching"><small>Matching</small></label>
4315- <select id="stscript_matching">
4316- <option data-i18n="Starts with" value="strict">Starts with</option>
4317- <option data-i18n="Includes" value="includes">Includes</option>
4318- <option data-i18n="Fuzzy" value="fuzzy">Fuzzy</option>
4319- </select>
43204203 </div>
4321- <div class="flex1" title="Sets the style of the autocomplete." data-i18n="[title]Sets the style of the autocomplete.">
4204+ <div class="inline-drawer-content">
4322- <label for="stscript_autocomplete_style" data-i18n="Autocomplete Style"><small>Style</small></label>
4205+ <div class="flex-container">
43234206 <divlabel class="flex-container flexFlowRowcheckbox_label" alignItemsBaselinefor="auto_continue_enabled">
43244207 <selectinput id="stscript_autocomplete_styleauto_continue_enabled" type="checkbox" />
43254208 <optionsmall data-i18n="Follow Theme" value="themeEnabled">Follow Theme</option>
4326- <option data-i18n="Dark" value="dark">Dark</option>
4209+ Enabled
4327- <option data-i18n="Light" value="light">Light</option>
4210+ </small>
43284211 </selectlabel>
4329- <!-- <div class="menu_button fa-solid fa-pen-to-square" title="Customize colors"></div> -->
4212+ <label class="checkbox_label" for="auto_continue_allow_chat_completions">
4213+ <input id="auto_continue_allow_chat_completions" type="checkbox" />
4214+ <small data-i18n="Allow for Chat Completion APIs">
4215+ Allow for Chat Completion APIs
4216+ </small>
4217+ </label>
4218+ </div>
4219+ <div class="auto_continue_settings_block">
4220+ <label for="auto_continue_target_length">
4221+ <small data-i18n="Target length (tokens)">Target length (tokens)</small>
4222+ <input id="auto_continue_target_length" type="number" class="text_pole textarea_compact" min="0" max="1024" />
4223+ </label>
43304224 </div>
43314225 </div>
4226+
4227+
43324228 </div>
4333- <div title="Determines which keys select an item from the AutoComplete suggestions">
4229+ </div>
4334- <label data-i18n="Keyboard">
4230+ <div name="AutoCompleteToggle" class="inline-drawer wide100p flexFlowColumn">
4335- <small>Keyboard:</small>
4231+ <div class="inline-drawer-toggle inline-drawer-header userSettingsInnerExpandable" title="Options for the various autocompelte input boxes.">
4336- </label>
4232+ <b><span data-i18n="AutoComplete Settings">AutoComplete Settings</span></b>
4337- <select id="stscript_autocomplete_select">
4233+ <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div>
4338- <option value="3" data-i18n="Select with Tab or Enter">Select with Tab or Enter</option>
4339- <option value="1" data-i18n="Select with Tab">Select with Tab</option>
4340- <option value="2" data-i18n="Select with Enter">Select with Enter</option>
4341- </select>
4342- </div>
4343- <div class="flex-container flexFlowColumn gap0" title="Sets the font size of the autocomplete." data-i18n="[title]Sets the font size of the autocomplete.">
4344- <label for="stscript_autocomplete_font_scale"><small>Font Scale</small></label>
4345- <input class="neo-range-slider" type="range" id="stscript_autocomplete_font_scale" min="0.5" max="2" step="0.01">
4346- <input class="neo-range-input" type="number" min="0.5" max="2" step="0.01" data-for="stscript_autocomplete_font_scale" id="stscript_autocomplete_font_scale_counter">
43474234 </div>
4348- <div title="Sets the width of the autocomplete." data-i18n="[title]Sets the width of the autocomplete.">
4235+ <div class="inline-drawer-content">
4349- <label for="stscript_autocomplete_width" data-i18n="Autocomplete Width"><small>Width</small></label>
4236+ <label data-newbie-hidden class="checkbox_label" for="stscript_autocomplete_autoHide">
4350- <div class="doubleRangeContainer">
4237+ <input id="stscript_autocomplete_autoHide" type="checkbox" />
43514238 <divsmall classdata-i18n="doubleRangeInputContainerAutomatically hide details">
4352- <input type="range" id="stscript_autocomplete_width_left" min="0" max="2" step="1">
4239+ Automatically hide details
4353- <datalist id="stscript_autocomplete_width_left_values">
4240+ </small>
4354- <option value="0" label="input" title="chat input box" data-i18n="[title]chat input box"></option>
4241+ </label>
4355- <option value="1" label="chat" title="entire chat width" data-i18n="[title]entire chat width"></option>
4242+ <div class="flex-container">
43564243 <option value="2"div labelclass="fullflex1" title="fullDetermines windowhow widthentries are found for autocomplete." data-i18n="[title]fullDetermines windowhow widthentries are found for autocomplete."></option>
4357- </datalist>
4244+ <label for="stscript_matching" data-i18n="Autocomplete Matching"><small>Matching</small></label>
4245+ <select id="stscript_matching">
4246+ <option data-i18n="Starts with" value="strict">Starts with</option>
4247+ <option data-i18n="Includes" value="includes">Includes</option>
4248+ <option data-i18n="Fuzzy" value="fuzzy">Fuzzy</option>
4249+ </select>
4250+ </div>
4251+ <div class="flex1" title="Sets the style of the autocomplete." data-i18n="[title]Sets the style of the autocomplete.">
4252+ <label for="stscript_autocomplete_style" data-i18n="Autocomplete Style"><small>Style</small></label>
4253+ <div class="flex-container flexFlowRow alignItemsBaseline">
4254+ <select id="stscript_autocomplete_style">
4255+ <option data-i18n="Follow Theme" value="theme">Follow Theme</option>
4256+ <option data-i18n="Dark" value="dark">Dark</option>
4257+ <option data-i18n="Light" value="light">Light</option>
4258+ </select>
4259+ <!-- <div class="menu_button fa-solid fa-pen-to-square" title="Customize colors"></div> -->
4260+ </div>
43584261 </div>
4359- <div class="doubleRangeInputContainer">
4262+ </div>
4360- <input type="range" id="stscript_autocomplete_width_right" min="0" max="2" step="1">
4263+ <div title="Determines which keys select an item from the AutoComplete suggestions">
43614264 <datalistlabel iddata-i18n="stscript_autocomplete_width_right_valuesKeyboard">
4362- <option value="0" label="input" title="chat input box" data-i18n="[title]chat input box"></option>
4265+ <small>Keyboard:</small>
4363- <option value="1" label="chat" title="entire chat width" data-i18n="[title]entire chat width"></option>
4266+ </label>
4364- <option value="2" label="full" title="full window width" data-i18n="[title]full window width"></option>
4267+ <select id="stscript_autocomplete_select">
4365- </datalist>
4268+ <option value="3" data-i18n="Select with Tab or Enter">Select with Tab or Enter</option>
4269+ <option value="1" data-i18n="Select with Tab">Select with Tab</option>
4270+ <option value="2" data-i18n="Select with Enter">Select with Enter</option>
4271+ </select>
4272+ </div>
4273+ <div class="flex-container flexFlowColumn gap0" title="Sets the font size of the autocomplete." data-i18n="[title]Sets the font size of the autocomplete.">
4274+ <label for="stscript_autocomplete_font_scale"><small>Font Scale</small></label>
4275+ <input class="neo-range-slider" type="range" id="stscript_autocomplete_font_scale" min="0.5" max="2" step="0.01">
4276+ <input class="neo-range-input" type="number" min="0.5" max="2" step="0.01" data-for="stscript_autocomplete_font_scale" id="stscript_autocomplete_font_scale_counter">
4277+ </div>
4278+ <div title="Sets the width of the autocomplete." data-i18n="[title]Sets the width of the autocomplete.">
4279+ <label for="stscript_autocomplete_width" data-i18n="Autocomplete Width"><small>Width</small></label>
4280+ <div class="doubleRangeContainer">
4281+ <div class="doubleRangeInputContainer">
4282+ <input type="range" id="stscript_autocomplete_width_left" min="0" max="2" step="1">
4283+ <datalist id="stscript_autocomplete_width_left_values">
4284+ <option value="0" label="input" title="chat input box" data-i18n="[title]chat input box"></option>
4285+ <option value="1" label="chat" title="entire chat width" data-i18n="[title]entire chat width"></option>
4286+ <option value="2" label="full" title="full window width" data-i18n="[title]full window width"></option>
4287+ </datalist>
4288+ </div>
4289+ <div class="doubleRangeInputContainer">
4290+ <input type="range" id="stscript_autocomplete_width_right" min="0" max="2" step="1">
4291+ <datalist id="stscript_autocomplete_width_right_values">
4292+ <option value="0" label="input" title="chat input box" data-i18n="[title]chat input box"></option>
4293+ <option value="1" label="chat" title="entire chat width" data-i18n="[title]entire chat width"></option>
4294+ <option value="2" label="full" title="full window width" data-i18n="[title]full window width"></option>
4295+ </datalist>
4296+ </div>
43664297 </div>
43674298 </div>
43684299 </div>
@@ -4495,8 +4426,8 @@
44954426 </div>
44964427 </div>
44974428 <div class="alignitemsflexstart flex-container wide100p">
44984429 <input id="extensions_url" type="text" class="flex1 heightFitContent text_pole widthNatural" maxlength="250" data-i18n="[placeholder]Extras API URL" placeholder="Extras API URL">
44994430 <input id="extensions_api_key" type="text" class="flex1 heightFitContent text_pole widthNatural" maxlength="250" data-i18n="[placeholder]Extras API key (optional)" placeholder="Extras API key (optional)">
45004431 <div class="extensions_url_block">
45014432 <div id="extensions_connect" class="menu_button" data-i18n="Connect">Connect</div>
45024433 </div>
@@ -4540,7 +4471,7 @@
45404471 <i class="fa-solid fa-person-circle-question fa-fw"></i>
45414472 <div data-i18n="Create">Create</div>
45424473 </div>
45434474 <input id="persona_search_bar" class="text_pole width100p flex1 margin0" type="search" data-i18n="[placeholder]Search..." placeholder="Search..." maxlength="100">
45444475 <select id="persona_sort_order" class="margin0">
45454476 <option value="search" data-i18n="Search" hidden>Search</option>
45464477 <option value="asc">A-Z</option>
@@ -4560,7 +4491,7 @@
45604491 <div class="flex1">
45614492 <h4 data-i18n="Name">Name</h4>
45624493 <div class="change_name">
45634494 <input id="your_name" name="your_name" data-i18n="[placeholder]Enter your name" placeholder="Enter your name" class="text_pole wide100p" maxlength="100" value="" autocomplete="off">
45644495 <div id="your_name_button" class="menu_button fa-solid fa-check" title="Click to set a new User Name" data-i18n="[title]Click to set a new User Name">
45654496 </div>
45664497 <div id="lock_user_name" class="menu_button fa-solid fa-unlock" title="Click to lock your selected persona to the current chat. Click again to remove the lock." data-i18n="[title]Click to lock your selected persona to the current chat. Click again to remove the lock.">
@@ -4570,7 +4501,7 @@
45704501 </div>
45714502 <div>
45724503 <h4 data-i18n="Persona Description">Persona Description</h4>
45734504 <textarea id="persona_description" name="persona_description" data-i18n="[placeholder]Example: [{{user}} is a 28-year-old Romanian cat girl.]" placeholder="Example:&#10;[{{user}} is a 28-year-old Romanian cat girl.]" class="text_pole textarea_compact" maxlength="50000" value="" autocomplete="off" rows="8"></textarea>
45744505 <div class="extension_token_counter">
45754506 <span data-i18n="Tokens persona description">Tokens</span>: <span id="persona_description_token_count">0</span>
45764507 </div>
@@ -4664,7 +4595,7 @@
46644595 <form id="form_create" action="javascript:void(null);" method="post" enctype="multipart/form-data">
46654596 <div id="avatar-and-name-block">
46664597 <div id="name_div">
46674598 <input id="character_name_pole" name="ch_name" class="text_pole" data-i18n="[placeholder]Name this character" placeholder="Name this character" maxlength="100" value="" autocomplete="off">
46684599 <div class="extension_token_counter">
46694600 <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="character_name_pole" data-token-permanent="true">counting...</span>
46704601 </div>
@@ -4735,7 +4666,7 @@
47354666 </div>
47364667 <div id="tags_div">
47374668 <div class="tag_controls">
47384669 <input id="tagInput" class="text_pole textarea_compact tag_input wide100p margin0" data-i18n="[placeholder]Search / Create Tags" placeholder="Search / Create tags" maxlength="50" />
47394670 <div class="tags_view menu_button fa-solid fa-tags" title="View all tags" data-i18n="[title]View all tags"></div>
47404671 </div>
47414672 <div id="tagList" class="tags"></div>
@@ -4820,12 +4751,12 @@
48204751 <div class="inline-drawer-content">
48214752 <div id="group-metadata-controls" class="marginTopBot5">
48224753 <div class="flex-container wide100p">
48234754 <input id="rm_group_chat_name" class="text_pole flex1" type="text" name="chat_name" data-i18n="[placeholder]Chat Name (Optional)" placeholder="Chat Name (Optional)" maxlength="200" />
48244755 <div class="chat_lorebook_button menu_button fa-solid fa-passport" title="Chat Lore" data-i18n="[title]Chat Lore"></div>
48254756 </div>
48264757 <div id="group_tags_div" class="wide100p">
48274758 <div class="tag_controls">
48284759 <input id="groupTagInput" class="text_pole textarea_compact tag_input flex1 margin0" data-i18n="[placeholder]Search / Create Tags" placeholder="Search / Create tags" maxlength="50" />
48294760 <div class="tags_view menu_button fa-solid fa-tags margin0" title="View all tags" data-i18n="[title]View all tags"></div>
48304761 </div>
48314762 <div id="groupTagList" class="tags paddingTopBot5"></div>
@@ -4867,7 +4798,7 @@
48674798 <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]When 'Join character cards' is selected, all respective fields of the characters are being joined together.This means that in the story string for example all character descriptions will be joined to one big text.If you want those fields to be separated, you can define a prefix or suffix here.This value supports normal macros and will also replace {{char}} with the relevant char's name and &lt;FIELDNAME&gt; with the name of the part (e.g.: description, personality, scenario, etc.)" title="When 'Join character cards' is selected, all respective fields of the characters are being joined together.&#13;This means that in the story string for example all character descriptions will be joined to one big text.&#13;If you want those fields to be separated, you can define a prefix or suffix here.&#13;&#13;This value supports normal macros and will also replace {{char}} with the relevant char's name and &lt;FIELDNAME&gt; with the name of the part (e.g.: description, personality, scenario, etc.)">
48684799 </div>
48694800 </label>
48704801 <textarea id="rm_group_generation_mode_join_prefix" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
48714802 </div>
48724803 <div class="flex1 flexGap5" title="Inserted after each part of the joined fields." data-i18n="[title]Inserted after each part of the joined fields.">
48734804 <label for="rm_group_generation_mode_join_suffix" class="flexnowrap width100p whitespacenowrap">
@@ -4875,7 +4806,7 @@
48754806 <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]When 'Join character cards' is selected, all respective fields of the characters are being joined together.This means that in the story string for example all character descriptions will be joined to one big text.If you want those fields to be separated, you can define a prefix or suffix here.This value supports normal macros and will also replace {{char}} with the relevant char's name and &lt;FIELDNAME&gt; with the name of the part (e.g.: description, personality, scenario, etc.)" title="When 'Join character cards' is selected, all respective fields of the characters are being joined together.&#13;This means that in the story string for example all character descriptions will be joined to one big text.&#13;If you want those fields to be separated, you can define a prefix or suffix here.&#13;&#13;This value supports normal macros and will also replace {{char}} with the relevant char's name and &lt;FIELDNAME&gt; with the name of the part (e.g.: description, personality, scenario, etc.)">
48764807 </div>
48774808 </label>
48784809 <textarea id="rm_group_generation_mode_join_suffix" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="&mdash;" rows="1"></textarea>
48794810 </div>
48804811 </div>
48814812 <div id="GroupFavDelOkBack" class="flex-container flexGap5 spaceEvenly flex1">
@@ -4930,7 +4861,7 @@
49304861 <div class="inline-drawer-content">
49314862 <div name="Unadded Char List" class="flex-container flexFlowColumn overflowYAuto flex1">
49324863 <div id="rm_group_add_members_header">
49334864 <input id="rm_group_filter" class="text_pole margin0" type="search" data-i18n="[placeholder]Search..." placeholder="Search..." maxlength="200" />
49344865 </div>
49354866 <div class="rm_tag_controls">
49364867 <div class="tags rm_tag_filter"></div>
@@ -4944,7 +4875,7 @@
49444875 <div id="rm_character_import" class="right_menu" style="display: none;">
49454876 <form id="form_import" action="javascript:void(null);" method="post" enctype="multipart/form-data">
49464877 <input multiple type="file" id="character_import_file" accept=".json, image/png, .yaml, .yml, .charx" name="avatar">
49474878 <input id="character_import_file_type" name="file_type" class="text_pole" maxlength="999" size="2" value="" autocomplete="off">
49484879 </form>
49494880 <input type="file" id="character_replace_file" accept=".json, image/png, .yaml, .yml, .charx" name="replace_avatar" hidden>
49504881 </div>
@@ -4955,7 +4886,7 @@
49554886 <div id="character_import_button" title="Import Character from File" data-i18n="[title]Import Character from File" class="menu_button fa-solid fa-file-import faSmallFontSquareFix"></div>
49564887 <div id="external_import_button" title="Import content from external URL" data-i18n="[title]Import content from external URL" class="menu_button fa-solid fa-cloud-arrow-down faSmallFontSquareFix"></div>
49574888 <div id="rm_button_group_chats" title="Create New Chat Group" data-i18n="[title]Create New Chat Group" class="menu_button fa-solid fa-users-gear "></div>
49584889 <input id="character_search_bar" class="text_pole width100p" type="search" data-i18n="[placeholder]Search..." placeholder="Search..." maxlength="100" />
49594890 <select id="character_sort_order" title="Characters sorting order" data-i18n="[title]Characters sorting order">
49604891 <option data-field="search" data-order="desc" data-i18n="Search" hidden>Search</option>
49614892 <option data-field="name" data-order="asc" data-i18n="A-Z">A-Z</option>
@@ -4991,1063 +4922,1082 @@
49914922 </div>
49924923 </div>
49934924 <!-- various fullscreen popups -->
4994- <template id="popup_template" data-i18n="[popup-button-save]popup-button-save;[popup-button-yes]popup-button-yes;[popup-button-no]popup-button-no;[popup-button-cancel]popup-button-cancel;[popup-button-import]popup-button-import;[popup-button-crop]popup-button-crop" popup-button-save="Save" popup-button-yes="Yes" popup-button-no="No" popup-button-cancel="Cancel" popup-button-import="Import" popup-button-crop="Crop"> <!-- localization data holder for popups -->
4925+ <div name="templatesAndPopupsWrapper"> <!--this div is just for IDE sanity for quick collapsing-->
49954926 <dialogdiv id="export_format_popup" class="popuplist-group">
4996- <div class="popup-body">
4927+ <div class="export_format list-group-item" data-format="png">PNG</div>
4997- <div class="popup-content">
4928+ <div class="export_format list-group-item" data-format="json">JSON</div>
4998- <h3 class="popup-header">text</h3>
4929+ </div>
4930+ <div id="zoomed_avatar_template" class="template_element">
4931+ <div class="zoomed_avatar">
4932+ <div class="panelControlBar flex-container">
4933+ <div class="fa-fw fa-solid fa-grip drag-grabber"></div>
4934+ <div class="fa-fw fa-solid fa-circle-xmark dragClose" id="closeZoom"></div>
49994935 </div>
50004936 <div class="popup-crop-wrapzoomed_avatar_container">
5001- <img class="popup-crop-image" src="">
4937+ <img class="zoomed_avatar_img" src="" data-izoomify-url="" data-izoomify-magnify="1.8" data-izoomify-duration="300" alt="">
50024938 </div>
5003- <textarea class="popup-input text_pole result-control auto-select" rows="1" data-result="1" data-result-event="submit"></textarea>
4939+ </div>
5004- <div class="popup-inputs"></div>
4940+ </div>
50054941 <divtemplate classid="popup-controlsgeneric_draggable_template">
5006- <div class="popup-button-ok menu_button result-control" data-result="1" data-i18n="Delete">Delete</div>
4942+ <div class="draggable">
5007- <div class="popup-button-cancel menu_button result-control" data-result="0" data-i18n="Cancel">Cancel</div>
4943+ <div class="dragTitle"></div>
4944+ <div class="panelControlBar flex-container">
4945+ <div class="fa-fw fa-solid fa-grip drag-grabber"></div>
4946+ <div class="fa-fw fa-solid fa-circle-xmark dragClose"></div>
50084947 </div>
50094948 </div>
5010- <div class="popup-button-close right_menu_button fa-solid fa-circle-xmark" data-result="0" title="Close popup" data-i18n="[title]Close popup"></div>
4949+ </template>
5011- </dialog>
4950+ <div id="user_avatar_template" class="template_element">
5012- </template>
4951+ <div class="avatar-container">
50134952 <div idimgfile="shadow_popup" class="avatar">
5014- <div id="dialogue_popup">
4953+ <img src="" alt="User Avatar">
5015- <div id="dialogue_popup_holder">
5016- <div id="dialogue_popup_text">
5017- <h3 class="margin0">text</h3>
50184954 </div>
5019- <textarea id="dialogue_popup_input" class="text_pole" rows="1"></textarea>
4955+ <div class="flex-container wide100pLess70px character_select_container">
50204956 <div idclass="dialogue_popup_controlswide100p character_name_block">
5021- <div id="dialogue_popup_ok" class="menu_button" data-i18n="Delete" data-result="1">Delete</div>
4957+ <span class="ch_name flex1"></span>
5022- <div id="dialogue_popup_cancel" class="menu_button" data-i18n="Cancel" data-result="0">Cancel</div>
4958+ <div class="avatar-buttons">
4959+ <button class="menu_button bind_user_name" title="Bind user name to that avatar" data-i18n="[title]Bind user name to that avatar">
4960+ <i class="fa-fw fa-solid fa-user-edit"></i>
4961+ </button>
4962+ <button class="menu_button set_persona_image" title="Change persona image" data-i18n="[title]Change persona image">
4963+ <i class="fa-fw fa-solid fa-image"></i>
4964+ </button>
4965+ <button class="menu_button set_default_persona" title="Select this as default persona for the new chats." data-i18n="[title]Select this as default persona for the new chats.">
4966+ <i class="fa-fw fa-solid fa-crown"></i>
4967+ </button>
4968+ <button class="menu_button duplicate_persona" title="Duplicate persona" data-i18n="[title]Duplicate persona">
4969+ <i class="fa-fw fa-solid fa-clone"></i>
4970+ </button>
4971+ <button class="menu_button delete_avatar" title="Delete persona" data-i18n="[title]Delete persona">
4972+ <i class="fa-fw fa-solid fa-trash-alt"></i>
4973+ </button>
4974+ </div>
4975+ </div>
4976+ <div class="ch_description"></div>
50234977 </div>
50244978 </div>
50254979 </div>
5026- </div>
4980+ <template id="popup_template" data-i18n="[popup-button-save]popup-button-save;[popup-button-yes]popup-button-yes;[popup-button-no]popup-button-no;[popup-button-cancel]popup-button-cancel;[popup-button-import]popup-button-import;[popup-button-crop]popup-button-crop" popup-button-save="Save" popup-button-yes="Yes" popup-button-no="No" popup-button-cancel="Cancel" popup-button-import="Import" popup-button-crop="Crop"> <!-- localization data holder for popups -->
5027- <div id="character_popup" class="flex-container flexFlowColumn flexNoGap">
4981+ <dialog class="popup">
50284982 <div idclass="character_popup_textpopup-body">
5029- <h3 id="character_popup-button-h3" class="margin0"></h3> <span data-i18n="Advanced Defininitions">- Advanced
4983+ <div class="popup-content">
5030- Definitions</span>
4984+ <h3 class="popup-header">text</h3>
50314985 </div>
50324986 <hrdiv class="marginpopup-botcrop-10pxwrap">
5033- <div id="character_cross" class="fa-solid fa-circle-xmark"></div>
4987+ <img class="popup-crop-image" src="">
5034- <div class="inline-drawer">
4988+ </div>
5035- <div class="inline-drawer-toggle inline-drawer-header">
4989+ <textarea class="popup-input text_pole result-control" rows="1" data-result="1" data-result-event="submit"></textarea>
5036- <h4>
4990+ <div class="popup-inputs"></div>
5037- <span data-i18n="Prompt Overrides">Prompt Overrides</span>
4991+ <div class="popup-controls">
5038- <small data-i18n="(For Chat Completion and Instruct Mode)">(For Chat Completion and Instruct Mode)</small>
4992+ <div class="popup-button-ok menu_button result-control" data-result="1" data-i18n="Delete">Delete</div>
5039- </h4>
4993+ <div class="popup-button-cancel menu_button result-control" data-result="0" data-i18n="Cancel">Cancel</div>
5040- <div class="inline-drawer-icon fa-solid fa-circle-chevron-down down"></div>
5041- </div>
5042- <div class="inline-drawer-content">
5043- <small data-i18n="Insert {{original}} into either box to include the respective default prompt from system settings.">Insert {{original}} into either box to include the respective default prompt from system settings.</small>
5044- <div>
5045- <h4 data-i18n="Main Prompt">Main Prompt</h4>
5046- <textarea id="system_prompt_textarea" name="system_prompt" data-i18n="[placeholder]Any contents here will replace the default Main Prompt used for this character. (v2 spec: system_prompt)" placeholder="Any contents here will replace the default Main Prompt used for this character.&#10;(v2 spec: system_prompt)" form="form_create" class="text_pole" autocomplete="off" rows="3" maxlength="50000"></textarea>
5047- <div class="extension_token_counter">
5048- <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="system_prompt_textarea">counting...</span>
50494994 </div>
50504995 </div>
5051- <div>
4996+ <div class="popup-button-close right_menu_button fa-solid fa-circle-xmark" data-result="0" title="Close popup" data-i18n="[title]Close popup"></div>
5052- <h4 data-i18n="Post-History Instructions">Post-History Instructions</h4>
4997+ </dialog>
5053- <textarea id="post_history_instructions_textarea" name="post_history_instructions" data-i18n="[placeholder]Any contents here will replace the default Post-History Instructions used for this character. (v2 spec: post_history_instructions)" placeholder="Any contents here will replace the default Post-History Instructions used for this character.&#10;(v2 spec: post_history_instructions)" form="form_create" class="text_pole" autocomplete="off" rows="3" maxlength="50000"></textarea>
4998+ </template>
50544999 <div classid="extension_token_countershadow_popup">
5055- <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="post_history_instructions_textarea">counting...</span>
5000+ <div id="dialogue_popup">
5001+ <div id="dialogue_popup_holder">
5002+ <div id="dialogue_popup_text">
5003+ <h3 class="margin0">text</h3>
5004+ </div>
5005+ <textarea id="dialogue_popup_input" class="text_pole" rows="1"></textarea>
5006+ <div id="dialogue_popup_controls">
5007+ <div id="dialogue_popup_ok" class="menu_button" data-i18n="Delete" data-result="1">Delete</div>
5008+ <div id="dialogue_popup_cancel" class="menu_button" data-i18n="Cancel" data-result="0">Cancel</div>
50565009 </div>
50575010 </div>
50585011 </div>
50595012 </div>
5060- <hr>
5013+ <div id="character_popup" class="flex-container flexFlowColumn flexNoGap">
50615014 <div classid="inline-drawercharacter_popup_text">
5062- <div class="inline-drawer-toggle inline-drawer-header">
5015+ <h3 id="character_popup-button-h3" class="margin0"></h3> <span data-i18n="Advanced Defininitions">- Advanced
5063- <h4 data-i18n="Creator's Metadata (Not sent with the AI prompt)"><!-- This data-i18n attribute on the left is kept for backward compatibility, use the ones below when translating -->
5016+ Definitions</span>
5064- <span data-i18n="Creator's Metadata">Creator's Metadata</span>
5065- <small data-i18n="(Not sent with the AI Prompt)">(Not sent with the AI Prompt)</small>
5066- </h4>
5067- <div class="inline-drawer-icon fa-solid fa-circle-chevron-down down"></div>
50685017 </div>
50695018 <divhr class="inlinemargin-drawerbot-content10px">
5070- <small data-i18n="Everything here is optional">Everything here is optional</small>
5019+ <div id="character_cross" class="fa-solid fa-circle-xmark"></div>
50715020 <div class="flexinline-container flexnowrapdrawer">
50725021 <div class="flex1inline-drawer-toggle inline-drawer-header">
5073- <h4 data-i18n="Created by">Created by</h4>
5022+ <h4>
5074- <textarea id="creator_textarea" name="creator" data-i18n="[placeholder](Botmaker's name / Contact Info)" placeholder="(Botmaker's name / Contact info)" form="form_create" class="text_pole" autocomplete="off" rows="2" maxlength="5000"></textarea>
5023+ <span data-i18n="Prompt Overrides">Prompt Overrides</span>
5024+ <small data-i18n="(For Chat Completion and Instruct Mode)">(For Chat Completion and Instruct Mode)</small>
5025+ </h4>
5026+ <div class="inline-drawer-icon fa-solid fa-circle-chevron-down down"></div>
5027+ </div>
5028+ <div class="inline-drawer-content">
5029+ <small data-i18n="Insert {{original}} into either box to include the respective default prompt from system settings.">Insert {{original}} into either box to include the respective default prompt from system settings.</small>
5030+ <div>
5031+ <h4 data-i18n="Main Prompt">Main Prompt</h4>
5032+ <textarea id="system_prompt_textarea" name="system_prompt" data-i18n="[placeholder]Any contents here will replace the default Main Prompt used for this character. (v2 spec: system_prompt)" placeholder="Any contents here will replace the default Main Prompt used for this character.&#10;(v2 spec: system_prompt)" form="form_create" class="text_pole" autocomplete="off" rows="3"></textarea>
5033+ <div class="extension_token_counter">
5034+ <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="system_prompt_textarea">counting...</span>
5035+ </div>
50755036 </div>
50765037 <div class="flex1">
50775038 <h4 data-i18n="CharacterPost-History VersionInstructions">CharacterPost-History VersionInstructions</h4>
50785039 <textarea id="character_version_textareapost_history_instructions_textarea" name="character_versionpost_history_instructions" data-i18n="[placeholder](IfAny youcontents wanthere towill trackreplace the default Post-History Instructions used for this character. versions(v2 spec: post_history_instructions)" placeholder="(IfAny youcontents wanthere towill trackreplace the default Post-History Instructions used for this character.&#10;(v2 versionsspec: post_history_instructions)" form="form_create" class="text_pole" autocomplete="off" rows="2" maxlength="5003"></textarea>
5040+ <div class="extension_token_counter">
5041+ <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="post_history_instructions_textarea">counting...</span>
5042+ </div>
50795043 </div>
50805044 </div>
5081- <div class="flex-container flexnowrap">
5045+ </div>
5082- <div class="flex1">
5046+ <hr>
5083- <h4 class="flex-box" data-i18n="Creator's Notes">Creator's Notes<i class="editor_maximize fa-solid fa-maximize" data-for="creator_notes_textarea" title="Expand the editor" data-i18n="[title]Expand the editor"></i></h4>
5047+ <div class="inline-drawer">
5084- <textarea id="creator_notes_textarea" name="creator_notes" data-i18n="[placeholder](Describe the bot, give use tips, or list the chat models it has been tested on. This will be displayed in the character list.)" placeholder="(Describe the bot, give use tips, or list the chat models it has been tested on. This will be displayed in the character list.)" form="form_create" class="text_pole" autocomplete="off" rows="4" maxlength="20000"></textarea>
5048+ <div class="inline-drawer-toggle inline-drawer-header">
5049+ <h4 data-i18n="Creator's Metadata (Not sent with the AI prompt)"><!-- This data-i18n attribute on the left is kept for backward compatibility, use the ones below when translating -->
5050+ <span data-i18n="Creator's Metadata">Creator's Metadata</span>
5051+ <small data-i18n="(Not sent with the AI Prompt)">(Not sent with the AI Prompt)</small>
5052+ </h4>
5053+ <div class="inline-drawer-icon fa-solid fa-circle-chevron-down down"></div>
5054+ </div>
5055+ <div class="inline-drawer-content">
5056+ <small data-i18n="Everything here is optional">Everything here is optional</small>
5057+ <div class="flex-container flexnowrap">
5058+ <div class="flex1">
5059+ <h4 data-i18n="Created by">Created by</h4>
5060+ <textarea id="creator_textarea" name="creator" data-i18n="[placeholder](Botmaker's name / Contact Info)" placeholder="(Botmaker's name / Contact info)" form="form_create" class="text_pole" autocomplete="off" rows="2"></textarea>
5061+ </div>
5062+ <div class="flex1">
5063+ <h4 data-i18n="Character Version">Character Version</h4>
5064+ <textarea id="character_version_textarea" name="character_version" data-i18n="[placeholder](If you want to track character versions)" placeholder="(If you want to track character versions)" form="form_create" class="text_pole" autocomplete="off" rows="2"></textarea>
5065+ </div>
50855066 </div>
50865067 <div class="flex1flex-container flexnowrap">
5087- <h4 data-i18n="Tags to Embed">Tags to Embed</h4>
5068+ <div class="flex1">
5088- <textarea id="tags_textarea" name="tags" data-i18n="[placeholder](Write a comma-separated list of tags)" placeholder="(Write a comma-separated list of tags)" form="form_create" class="text_pole" autocomplete="off" rows="4" maxlength="5000"></textarea>
5069+ <h4 class="flex-box" data-i18n="Creator's Notes">Creator's Notes<i class="editor_maximize fa-solid fa-maximize" data-for="creator_notes_textarea" title="Expand the editor" data-i18n="[title]Expand the editor"></i></h4>
5070+ <textarea id="creator_notes_textarea" name="creator_notes" data-i18n="[placeholder](Describe the bot, give use tips, or list the chat models it has been tested on. This will be displayed in the character list.)" placeholder="(Describe the bot, give use tips, or list the chat models it has been tested on. This will be displayed in the character list.)" form="form_create" class="text_pole" autocomplete="off" rows="4"></textarea>
5071+ </div>
5072+ <div class="flex1">
5073+ <h4 data-i18n="Tags to Embed">Tags to Embed</h4>
5074+ <textarea id="tags_textarea" name="tags" data-i18n="[placeholder](Write a comma-separated list of tags)" placeholder="(Write a comma-separated list of tags)" form="form_create" class="text_pole" autocomplete="off" rows="4"></textarea>
5075+ </div>
50895076 </div>
50905077 </div>
50915078 </div>
5092- </div>
5079+ <hr>
5093- <hr>
5080+ <div id="personality_div">
5094- <div id="personality_div">
5095- <h4>
5096- <span data-i18n="Personality summary">Personality summary</span>
5097- <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#personality-summary" class="notes-link" target="_blank"><span class="fa-solid fa-circle-question note-link-span"></span></a>
5098- </h4>
5099- <textarea id="personality_textarea" name="personality" data-i18n="[placeholder](A brief description of the personality)" placeholder="(A brief description of the personality)" form="form_create" class="text_pole" autocomplete="off" rows="4" maxlength="50000"></textarea>
5100- <div class="extension_token_counter">
5101- <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="personality_textarea" data-token-permanent="true">counting...</span>
5102- </div>
5103- </div>
5104- <div id="scenario_div">
5105- <h4>
5106- <span data-i18n="Scenario">Scenario</span>
5107- <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#scenario" class="notes-link" target="_blank">
5108- <span class="fa-solid fa-circle-question note-link-span"></span>
5109- </a>
5110- </h4>
5111- <textarea id="scenario_pole" name="scenario" data-i18n="[placeholder](Circumstances and context of the interaction)" placeholder="(Circumstances and context of the interaction)" class="text_pole" maxlength="50000" value="" autocomplete="off" form="form_create" rows="4"></textarea>
5112- <div class="extension_token_counter">
5113- <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="scenario_pole" data-token-permanent="true">counting...</span>
5114- </div>
5115- </div>
5116- <div id="depth_prompt_div" class="flex-container">
5117- <div class="flex1">
51185081 <h4>
51195082 <span data-i18n="Character'sPersonality Notesummary">Personality summary</span>
5120- Character's Note
5083+ <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#personality-summary" class="notes-link" target="_blank"><span class="fa-solid fa-circle-question note-link-span"></span></a>
5121- </span>
51225084 </h4>
51235085 <textarea id="depth_prompt_promptpersonality_textarea" name="depth_prompt_prompt" class="text_pole" rows="5" maxlength="50000" autocomplete="off" form="form_createpersonality" data-i18n="[placeholder](Text to be inserted in-chatA @brief designateddescription depthof andthe rolepersonality)" placeholder="(TextA tobrief bedescription insertedof in-chatthe @personality)" designatedform="form_create" depthclass="text_pole" andautocomplete="off" role)rows="4"></textarea>
5086+ <div class="extension_token_counter">
5087+ <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="personality_textarea" data-token-permanent="true">counting...</span>
5088+ </div>
51245089 </div>
51255090 <div id="scenario_div">
51265091 <h4>
51275092 <span data-i18n="@ DepthScenario">Scenario</span>
5128- @ Depth
5093+ <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#scenario" class="notes-link" target="_blank">
5129- </span>
5094+ <span class="fa-solid fa-circle-question note-link-span"></span>
5095+ </a>
51305096 </h4>
51315097 <inputtextarea id="depth_prompt_depthscenario_pole" name="depth_prompt_depthscenario" classdata-i18n="text_pole[placeholder](Circumstances textarea_compactand m-t-0context of the interaction)" typeplaceholder="number(Circumstances and context of the interaction)" minclass="0text_pole" maxvalue="999" valueautocomplete="4off" form="form_create" rows="4"></textarea>
5132- <h4>
5133- <span data-i18n="Role">
5134- Role
5135- </span>
5136- </h4>
5137- <select id="depth_prompt_role" name="depth_prompt_role" form="form_create" class="text_pole textarea_compact m-t-0">
5138- <option value="system" data-i18n="System">System</option>
5139- <option value="user" data-i18n="User">User</option>
5140- <option value="assistant" data-i18n="Assistant">Assistant</option>
5141- </select>
51425098 <div class="extension_token_counter">
51435099 <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="depth_prompt_promptscenario_pole" data-token-permanent="true">counting...</span>
51445100 </div>
51455101 </div>
5146- </div>
5102+ <div id="depth_prompt_div" class="flex-container">
51475103 <div idclass="talkativeness_divflex1">
5148- <h4><span data-i18n="Talkativeness">Talkativeness</span></h4>
5104+ <h4>
5149- <h5 data-i18n="How often the character speaks in group chats!"><!-- This data-i18n attribute on the left is kept for backward compatibility, use the ones below when translating -->
5105+ <span data-i18n="Character's Note">
5150- <span data-i18n="How often the character speaks in">How often the character speaks in</span>&nbsp;<span class="warning" data-i18n="group chats!">group chats!</span>
5106+ Character's Note
51515107 </h5span>
5152- <input id="talkativeness_slider" name="talkativeness" type="range" min="0" max="1" step="0.05" value="0.5" form="form_create">
5108+ </h4>
5153- <div class="slider_hint">
5109+ <textarea id="depth_prompt_prompt" name="depth_prompt_prompt" class="text_pole" rows="5" autocomplete="off" form="form_create" data-i18n="[placeholder](Text to be inserted in-chat @ designated depth and role)" placeholder="(Text to be inserted in-chat @ designated depth and role)"></textarea>
5154- <span data-i18n="Shy">Shy</span>
5110+ </div>
5155- <span data-i18n="Normal">Normal</span>
5111+ <div>
5156- <span data-i18n="Chatty">Chatty</span>
5112+ <h4>
5113+ <span data-i18n="@ Depth">
5114+ @ Depth
5115+ </span>
5116+ </h4>
5117+ <input id="depth_prompt_depth" name="depth_prompt_depth" class="text_pole textarea_compact m-t-0" type="number" min="0" max="999" value="4" form="form_create" />
5118+ <h4>
5119+ <span data-i18n="Role">
5120+ Role
5121+ </span>
5122+ </h4>
5123+ <select id="depth_prompt_role" name="depth_prompt_role" form="form_create" class="text_pole textarea_compact m-t-0">
5124+ <option value="system" data-i18n="System">System</option>
5125+ <option value="user" data-i18n="User">User</option>
5126+ <option value="assistant" data-i18n="Assistant">Assistant</option>
5127+ </select>
5128+ <div class="extension_token_counter">
5129+ <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="depth_prompt_prompt" data-token-permanent="true">counting...</span>
5130+ </div>
5131+ </div>
51575132 </div>
5158- </div>
5133+ <div id="talkativeness_div">
5159- <hr>
5134+ <h4><span data-i18n="Talkativeness">Talkativeness</span></h4>
5160- <div id="mes_example_div" class="flex-container flexFlowColumn">
5135+ <h5 data-i18n="How often the character speaks in group chats!"><!-- This data-i18n attribute on the left is kept for backward compatibility, use the ones below when translating -->
5161- <div>
5136+ <span data-i18n="How often the character speaks in">How often the character speaks in</span>&nbsp;<span class="warning" data-i18n="group chats!">group chats!</span>
5162- <h4><span data-i18n="Examples of dialogue">Examples of dialogue</span></h4>
5137+ </h5>
5163- <h5 data-i18n="Important to set the character's writing style.">Important to set the character's writing style. <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#examples-of-dialogue" class="notes-link" target="_blank"><span class="fa-solid fa-circle-question note-link-span"></span></a></h5>
5138+ <input id="talkativeness_slider" name="talkativeness" type="range" min="0" max="1" step="0.05" value="0.5" form="form_create">
5139+ <div class="slider_hint">
5140+ <span data-i18n="Shy">Shy</span>
5141+ <span data-i18n="Normal">Normal</span>
5142+ <span data-i18n="Chatty">Chatty</span>
5143+ </div>
51645144 </div>
5165- <textarea id="mes_example_textarea" class="flexGrow" name="mes_example" data-i18n="[placeholder](Examples of chat dialog. Begin each example with START on a new line.)" placeholder="(Examples of chat dialog. Begin each example with &lt;START&gt; on a new line.)" form="form_create" maxlength="50000" rows="6"></textarea>
5145+ <hr>
51665146 <div id="mes_example_div" class="extension_token_counterflex-container flexFlowColumn">
5167- <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="mes_example_textarea">counting...</span>
5147+ <div>
5148+ <h4><span data-i18n="Examples of dialogue">Examples of dialogue</span></h4>
5149+ <h5 data-i18n="Important to set the character's writing style.">Important to set the character's writing style. <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#examples-of-dialogue" class="notes-link" target="_blank"><span class="fa-solid fa-circle-question note-link-span"></span></a></h5>
5150+ </div>
5151+ <textarea id="mes_example_textarea" class="flexGrow" name="mes_example" data-i18n="[placeholder](Examples of chat dialog. Begin each example with START on a new line.)" placeholder="(Examples of chat dialog. Begin each example with &lt;START&gt; on a new line.)" form="form_create" rows="6"></textarea>
5152+ <div class="extension_token_counter">
5153+ <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="mes_example_textarea">counting...</span>
5154+ </div>
5155+ <!-- TODO: Example chats handhold-editor concept: https://gist.github.com/Cohee1207/50da02a4001ac1adae9b440f9b8e1079 -->
51685156 </div>
5169- <!-- PLACEHOLDER CODE FOR NEW EXAMPLE CHAT HANDLING
5157+ <div id="character_popup_ok" class="menu_button" data-i18n="Save">Save</div>
5170- <div name="exampleChatsBlockTemplate" class="flex-container flexFlowColumn">
5158+ </div>
5171- <div class="flex-container alignitemscenter">
5159+
5172- <textarea class="flexShrink flexGrow wideMinContent" rows="1" placeholder="Name for this example chat"></textarea>
5160+ <div id="shadow_select_chat_popup">
5173- <div class="fa-solid fa-plus menu_button" title="Add a new message to this example chat block"></div>
5161+ <div id="select_chat_popup">
5162+ <div name="selectChatPopupHeader" class="flex-container alignitemscenter justifySpaceBetween flexGap10">
5163+ <div id="select_chat_import"> <!-- import chat popup header -->
5164+ <form id="form_import_chat" action="javascript:void(null);" method="post" enctype="multipart/form-data" style="display: none;">
5165+ <input type="file" id="chat_import_file" accept=".json, .jsonl" name="avatar">
5166+ <input id="chat_import_file_type" name="file_type" class="text_pole" value="" autocomplete="off" style="display: none;">
5167+ <input id="chat_import_avatar_url" name="avatar_url" class="text_pole" value="" autocomplete="off" style="display: none;">
5168+ <input id="chat_import_character_name" name="character_name" class="text_pole" value="" autocomplete="off" style="display: none;">
5169+ </form>
51745170 </div>
51755171 <div classid="flex-containerselectChatPopupHeaderText" whitespacenowrapclass="TxtLrgBoldCenter">
5176- <div class="flex-container flexFlowColumn">
5172+ <span id="ChatHistoryCharName"></span><span data-i18n="Chat History">Chat History</span>
5177- <select>
5173+ <a href="https://docs.sillytavern.app/usage/core-concepts/chatfilemanagement/#chat-import" class="notes-link" target="_blank"><span class="fa-solid fa-circle-question note-link-span"></span></a>
5178- <option>{{user}}</option>
5179- <option>{{char}}</option>
5180- <option>Custom</option>
5181- </select>
5182- <textarea rows="1" placeholder="Custom Entity"></textarea>
5183- </div>
5184- <textarea class="flexShrink flexGrow wideMinContent" placeholder="Content of the example chat."></textarea>
51855174 </div>
51865175 <div id="newChatFromManageScreenButton" class="flex-containermenu_button whitespacenowrapmenu_button_icon">
51875176 <divi class="flexfa-containersolid flexFlowColumnfa-plus"></i>
5188- <select>
5177+ <span data-i18n="New Chat">New Chat</span>
5189- <option>{{user}}</option>
5190- <option>{{char}}</option>
5191- <option>Custom</option>
5192- </select>
5193- <textarea rows="1" placeholder="Custom Entity"></textarea>
5194- </div>
5195- <textarea class="flexShrink flexGrow wideMinContent" placeholder="Content of the example chat."></textarea>
51965178 </div>
5179+ <div id="chat_import_button" class="menu_button menu_button_icon">
5180+ <i class="fa-solid fa-file-import"></i>
5181+ <span data-i18n="Import Chat">Import Chat</span>
5182+ </div>
5183+ <input type="text" id="select_chat_search" class="text_pole flex1" data-i18n="[placeholder]Search..." placeholder="Search..." autocomplete="off">
5184+ <div id="select_chat_cross" class="opacity50p hoverglow fa-solid fa-circle-xmark fontsize120p" alt="Close Past Chat Popup"></div>
51975185 </div>
5198- -->
5186+ <div id="select_chat_div"></div>
5199- </div>
5187+ <div id="load_select_chat_div">
52005188 <div id="character_popup_ok" class="menu_button"fa-solid datafa-i18n="Savehourglass fa-spin">Save</div>
5201- </div>
5202- <div id="shadow_select_chat_popup">
5203- <div id="select_chat_popup">
5204- <div name="selectChatPopupHeader" class="flex-container alignitemscenter justifySpaceBetween flexGap10">
5205- <div id="select_chat_import"> <!-- import chat popup header -->
5206- <form id="form_import_chat" action="javascript:void(null);" method="post" enctype="multipart/form-data" style="display: none;">
5207- <input type="file" id="chat_import_file" accept=".json, .jsonl" name="avatar">
5208- <input id="chat_import_file_type" name="file_type" class="text_pole" maxlength="999" size="2" value="" autocomplete="off" style="display: none;">
5209- <input id="chat_import_avatar_url" name="avatar_url" class="text_pole" maxlength="999" size="2" value="" autocomplete="off" style="display: none;">
5210- <input id="chat_import_character_name" name="character_name" class="text_pole" maxlength="999" size="2" value="" autocomplete="off" style="display: none;">
5211- </form>
5212- </div>
5213- <div id="selectChatPopupHeaderText" class="TxtLrgBoldCenter">
5214- <span id="ChatHistoryCharName"></span><span data-i18n="Chat History">Chat History</span>
5215- <a href="https://docs.sillytavern.app/usage/core-concepts/chatfilemanagement/#chat-import" class="notes-link" target="_blank"><span class="fa-solid fa-circle-question note-link-span"></span></a>
5216- </div>
5217- <div id="newChatFromManageScreenButton" class="menu_button menu_button_icon">
5218- <i class="fa-solid fa-plus"></i>
5219- <span data-i18n="New Chat">New Chat</span>
5220- </div>
5221- <div id="chat_import_button" class="menu_button menu_button_icon">
5222- <i class="fa-solid fa-file-import"></i>
5223- <span data-i18n="Import Chat">Import Chat</span>
52245189 </div>
5225- <input type="text" id="select_chat_search" class="text_pole flex1" data-i18n="[placeholder]Search..." placeholder="Search..." autocomplete="off">
5226- <div id="select_chat_cross" class="opacity50p hoverglow fa-solid fa-circle-xmark fontsize120p" alt="Close Past Chat Popup"></div>
5227- </div>
5228- <div id="select_chat_div"></div>
5229- <div id="load_select_chat_div">
5230- <div class="fa-solid fa-hourglass fa-spin"></div>
52315190 </div>
52325191 </div>
5233- </div>
5192+ <div id="background_template" class="template_element">
52345193 <div idclass="background_templatebg_example flex-container" bgfile="" class="template_elementbg_example_img" title="">
5235- <div class="bg_example flex-container" bgfile="" class="bg_example_img" title="">
5194+ <div title="Copy to system backgrounds" data-i18n="[title]Copy to system backgrounds" class="bg_button bg_example_copy fa-solid fa-file-arrow-up"></div>
52365195 <div title="Copy to systemRename backgroundsbackground" data-i18n="[title]Copy to systemRename backgroundsbackground" class="bg_button bg_example_copybg_example_edit fa-solid fa-file-arrow-uppencil"></div>
52375196 <div title="Rename backgroundLock" data-i18n="[title]Rename backgroundLock" class="bg_button bg_example_editbg_example_lock fa-solid fa-pencillock"></div>
52385197 <div title="LockUnlock" data-i18n="[title]LockUnlock" class="bg_button bg_example_lockbg_example_unlock fa-solid fa-lock-open"></div>
52395198 <div title="UnlockDelete background" data-i18n="[title]UnlockDelete background" class="bg_button bg_example_unlockbg_example_cross fa-solid fa-lockcircle-openxmark"></div>
5240- <div title="Delete background" data-i18n="[title]Delete background" class="bg_button bg_example_cross fa-solid fa-circle-xmark"></div>
5199+ <div class="BGSampleTitle">
5241- <div class="BGSampleTitle">
5200+ </div>
52425201 </div>
52435202 </div>
5244- </div>
5203+ <!-- templates for JS to reuse when needed -->
5245- <!-- templates for JS to reuse when needed -->
5204+ <div id="chat_world_template" class="template_element">
5246- <div id="chat_world_template" class="template_element">
5205+ <div class="chat_world range-block flexFlowColumn flex-container">
52475206 <div class="chat_world range-block flexFlowColumn flex-containertitle">
5248- <div class="range-block-title">
5207+ <h4 data-i18n="Chat Lorebook"><!-- This data-i18n attribute is kept for backward compatibility, use the ones below when translating -->
5249- <h4 data-i18n="Chat Lorebook"><!-- This data-i18n attribute is kept for backward compatibility, use the ones below when translating -->
5208+ <span data-i18n="Chat Lorebook for">Chat Lorebook for</span> <span class="chat_name"></span>
5250- <span data-i18n="Chat Lorebook for">Chat Lorebook for</span> <span class="chat_name"></span>
5209+ </h4>
52515210 </h4div>
5252- </div>
5211+ <div class="range-block-counter justifyLeft flex-container flexFlowColumn margin-bot-10px">
5253- <div class="range-block-counter justifyLeft flex-container flexFlowColumn margin-bot-10px">
5212+ <span data-i18n="chat_world_template_txt">
5254- <span data-i18n="chat_world_template_txt">
5213+ A selected World Info will be bound to this chat. When generating an AI reply,
5255- A selected World Info will be bound to this chat. When generating an AI reply,
5214+ it will be combined with the entries from global and character lorebooks.
5256- it will be combined with the entries from global and character lorebooks.
5215+ </span>
52575216 </spandiv>
5258- </div>
5217+ <div class="range-block-range wide100p">
52595218 <divselect class="range-block-rangechat_world_info_selector wide100p">
5260- <select class="chat_world_info_selector wide100p">
5219+ <option value="">--- None ---</option>
5261- <option value="">--- None ---</option>
5220+ </select>
52625221 </selectdiv>
52635222 </div>
52645223 </div>
5265- </div>
5224+ <div id="character_world_template" class="template_element">
5266- <div id="character_world_template" class="template_element">
5225+ <div class="character_world range-block flexFlowColumn flex-container">
52675226 <div class="character_world range-block flexFlowColumn flex-containertitle">
5268- <div class="range-block-title">
5227+ <h3>
5269- <h3>
5228+ <span data-i18n="Select a World Info file for"> Select a World Info file for <span class="character_name"></span></span>:
5270- <span data-i18n="Select a World Info file for"> Select a World Info file for <span class="character_name"></span></span>:
5229+ </h3>
52715230 </h3div>
5272- </div>
5231+ <h4 data-i18n="Primary Lorebook">Primary Lorebook</h4>
5273- <h4 data-i18n="Primary Lorebook">Primary Lorebook</h4>
5232+ <div class="range-block-counter justifyLeft flex-container flexFlowColumn margin-bot-10px">
5274- <div class="range-block-counter justifyLeft flex-container flexFlowColumn margin-bot-10px">
5233+ <span data-i18n="A selected World Info will be bound to this character as its own Lorebook.">A selected World Info will be bound to this character as its own Lorebook.</span>
52755234 <span data-i18n="AWhen selectedgenerating Worldan InfoAI reply, it will be boundcombined towith thisthe characterentries asfrom itsa ownglobal LorebookWorld Info selector.">AWhen selectedgenerating Worldan InfoAI reply, it will be boundcombined towith thisthe characterentries asfrom itsa ownglobal LorebookWorld Info selector.</span>
52765235 <span data-i18n="When generating an AI reply,Exporting ita willcharacter bewould combinedalso withexport the entriesselected fromLorebook afile globalembedded Worldin Infothe selectorJSON data.">When generating an AI reply,Exporting ita willcharacter bewould combinedalso withexport the entriesselected fromLorebook afile globalembedded Worldin Infothe selectorJSON data.</span>
5277- <span data-i18n="Exporting a character would also export the selected Lorebook file embedded in the JSON data.">Exporting a character would also export the selected Lorebook file embedded in the JSON data.</span>
5236+ </div>
5278- </div>
5237+ <div class="range-block-range wide100p">
52795238 <divselect class="range-block-rangecharacter_world_info_selector wide100p">
5280- <select class="character_world_info_selector wide100p">
5239+ <option value="">--- None ---</option>
5281- <option value="">--- None ---</option>
5240+ </select>
52825241 </selectdiv>
5283- </div>
5242+ <div class="range-block-title">
5284- <div class="range-block-title">
5243+ <h4>
5285- <h4>
5244+ <span data-i18n="Additional Lorebooks">Additional Lorebooks</span>
5286- <span data-i18n="Additional Lorebooks">Additional Lorebooks</span>
5245+ </h4>
52875246 </h4div>
5288- </div>
5247+ <div class="range-block-counter justifyLeft flex-container flexFlowColumn margin-bot-10px">
5289- <div class="range-block-counter justifyLeft flex-container flexFlowColumn margin-bot-10px">
5248+ <span data-i18n="Associate one or more auxillary Lorebooks with this character.">Associate one or more auxillary Lorebooks with this character.</span><br>
52905249 <span data-i18n="AssociateNOTE: oneThese orchoices moreare auxillaryoptional Lorebooksand withwon't thisbe preserved on character. export!">AssociateNOTE: oneThese orchoices moreare auxillaryoptional Lorebooksand withwon't thisbe preserved on character. export!</span><br>
5291- <span data-i18n="NOTE: These choices are optional and won't be preserved on character export!">NOTE: These choices are optional and won't be preserved on character export!</span>
5250+ </div>
5292- </div>
5251+ <div class="range-block-range wide100p">
52935252 <divselect class="range-block-rangecharacter_extra_world_info_selector wide100p" multiple>
5294- <select class="character_extra_world_info_selector wide100p" multiple>
5253+ <option value="" data-i18n="-- World Info not found --">-- World Info not found --</option>
5295- <option value="" data-i18n="-- World Info not found --">-- World Info not found --</option>
5254+ </select>
52965255 </selectdiv>
52975256 </div>
52985257 </div>
5299- </div>
5258+ <div id="past_chat_template" class="template_element">
53005259 <div id="past_chat_template" class="template_elementselect_chat_block_wrapper flex-container">
53015260 <div class="select_chat_block_wrapperselect_chat_block wide100p flex-container" file_name="">
53025261 <div classid="select_chat_block wide100pselect_chat_name_wrapper" class="flex-container" file_name="alignitemscenter justifySpaceBetween wide100p">
5303- <div id="select_chat_name_wrapper" class="flex-container alignitemscenter justifySpaceBetween wide100p">
5262+ <div>
5304- <div>
5263+ <small class="select_chat_block_filename select_chat_block_filename_item"></small>
5305- <small class="select_chat_block_filename select_chat_block_filename_item"></small>
5264+ <div title="Rename chat file" class="renameChatButton hoverglow opacity50p fa-solid fa-pencil" data-i18n="[title]Rename chat file"></div>
5306- <div title="Rename chat file" class="renameChatButton hoverglow opacity50p fa-solid fa-pencil" data-i18n="[title]Rename chat file"></div>
5307- </div>
5308- <div class="flex-container gap10px">
5309- <div class="select_chat_info flex-container">
5310- <small class="chat_messages_date select_chat_block_filename_item"></small>
5311- <small class="chat_file_size select_chat_block_filename_item"></small>
5312- <small class="chat_messages_num select_chat_block_filename_item"></small>
53135265 </div>
53145266 <div class="flex-container gap10px">
5315- <div title="Export JSONL chat file" data-format="jsonl" class="exportRawChatButton opacity50p hoverglow fa-solid fa-file-export" data-i18n="[title]Export JSONL chat file"></div>
5267+ <div class="select_chat_info flex-container">
5316- <div title="Download chat as plain text document" data-format="txt" class="exportChatButton opacity50p hoverglow fa-solid fa-file-lines" data-i18n="[title]Download chat as plain text document"></div>
5268+ <small class="chat_messages_date select_chat_block_filename_item"></small>
5317- <div title="Delete chat file" file_name="" class="PastChat_cross opacity50p hoverglow fa-solid fa-skull" data-i18n="[title]Delete chat file"></div>
5269+ <small class="chat_file_size select_chat_block_filename_item"></small>
5270+ <small class="chat_messages_num select_chat_block_filename_item"></small>
5271+ </div>
5272+ <div class="flex-container gap10px">
5273+ <div title="Export JSONL chat file" data-format="jsonl" class="exportRawChatButton opacity50p hoverglow fa-solid fa-file-export" data-i18n="[title]Export JSONL chat file"></div>
5274+ <div title="Download chat as plain text document" data-format="txt" class="exportChatButton opacity50p hoverglow fa-solid fa-file-lines" data-i18n="[title]Download chat as plain text document"></div>
5275+ <div title="Delete chat file" file_name="" class="PastChat_cross opacity50p hoverglow fa-solid fa-skull" data-i18n="[title]Delete chat file"></div>
5276+ </div>
53185277 </div>
53195278 </div>
5279+ <div class="select_chat_block_mes"></div>
53205280 </div>
5321- <div class="select_chat_block_mes"></div>
53225281 </div>
53235282 </div>
5324- </div>
5283+ <div id="tag_view_template" class="template_element">
53255284 <div id="tag_view_template" class="template_elementtag_view_item">
5326- <div class="tag_view_item">
5285+ <div class="drag-handle" data-i18n="[title]Drag to reorder tag">☰</div>
53275286 <div title="Tag as folder" class="dragtag_as_folder fa-handlesolid fa-folder-open right_menu_button" data-i18n="[title]DragUse totag reorderas tagfolder">☰</div>
5328- <div title="Tag as folder" class="tag_as_folder fa-solid fa-folder-open right_menu_button" data-i18n="[title]Use tag as folder">
5287+ <span class="tag_folder_indicator"></span>
5329- <span class="tag_folder_indicator"></span>
5288+ </div>
5289+ <div class="tag_view_color_picker" data-value="color"></div>
5290+ <div class="tag_view_color_picker" data-value="color2"></div>
5291+ <div class="tag_view_name" contenteditable="true"></div>
5292+ <div class="tag_view_counter"><span class="tag_view_counter_value"></span>&nbsp;entries</div>
5293+ <div title="Delete tag" class="tag_delete fa-solid fa-trash-can right_menu_button" data-i18n="[title]Delete tag"></div>
53305294 </div>
5331- <div class="tag_view_color_picker" data-value="color"></div>
5332- <div class="tag_view_color_picker" data-value="color2"></div>
5333- <div class="tag_view_name" contenteditable="true"></div>
5334- <div class="tag_view_counter"><span class="tag_view_counter_value"></span>&nbsp;entries</div>
5335- <div title="Delete tag" class="tag_delete fa-solid fa-trash-can right_menu_button" data-i18n="[title]Delete tag"></div>
53365295 </div>
5337- </div>
5296+ <div id="entry_edit_template" class="template_element">
53385297 <div id="entry_edit_template" class="template_elementworld_entry">
53395298 <divform class="world_entryworld_entry_form wi-card-entry">
53405299 <formdiv class="world_entry_form wi-cardinline-entrydrawer wide100p">
53415300 <div class="inline-drawer-toggle wide100pinline-drawer-header gap5px padding0">
5342- <div class="inline-drawer-header gap5px padding0">
5301+ <span class="drag-handle">&#9776;</span>
5343- <span class="drag-handle">&#9776;</span>
5302+ <div class="gap5px world_entry_thin_controls wide100p alignitemscenter">
5344- <div class="gap5px world_entry_thin_controls wide100p alignitemscenter">
5303+ <div class="fa-fw fa-solid fa-circle-chevron-down inline-drawer-icon down"></div>
5345- <div class="inline-drawer-toggle fa-fw fa-solid fa-circle-chevron-down inline-drawer-icon down"></div>
5304+ <div class="flex-container alignitemscenter wide100p">
5346- <div class="fa-solid fa-toggle-on killSwitch" name="entryKillSwitch" title="Toggle entry's active state."></div>
5305+ <div class="WIEntryTitleAndStatus flex-container flex1 alignitemscenter">
53475306 <div class="flex-container alignitemscenter wide100pflex1">
5348-
5307+ <textarea class="text_pole" rows="1" name="comment" data-i18n="[placeholder]Entry Title/Memo" placeholder="Entry Title/Memo"></textarea>
5349- <div class="WIEntryTitleAndStatus flex-container flex1 alignitemscenter">
5308+ </div>
5350-
5309+ <!-- <span class="world_entry_form_position_value"></span> -->
5351- <div class="flex-container flex1">
5310+ <select data-i18n="[title]WI Entry Status:🔵 Constant🟢 Normal🔗 Vectorized❌ Disabled" title="WI Entry Status:&#13;🔵 Constant&#13;🟢 Normal&#13;🔗 Vectorized&#13;❌ Disabled" name="entryStateSelector" class="text_pole widthNatural margin0">
5352- <textarea class="text_pole" rows="1" name="comment" maxlength="5000" data-i18n="[placeholder]Entry Title/Memo" placeholder="Entry Title/Memo"></textarea>
5311+ <option value="constant" title="Constant" data-i18n="[title]WI_Entry_Status_Constant">🔵</option>
5353- </div>
5312+ <option value="normal" title="Normal" data-i18n="[title]WI_Entry_Status_Normal">🟢</option>
5354- <select data-i18n="[title]WI Entry Status:🔵 Constant🟢 Normal🔗 Vectorized❌ Disabled" title="WI Entry Status:&#13;🔵 Constant&#13;🟢 Normal&#13;🔗 Vectorized&#13;❌ Disabled" name="entryStateSelector" class="text_pole widthNatural margin0">
5313+ <option value="vectorized" title="Vectorized" data-i18n="[title]WI_Entry_Status_Vectorized">🔗</option>
53555314 <option value="constantdisabled" title="ConstantDisabled" data-i18n="[title]WI_Entry_Status_ConstantWI_Entry_Status_Disabled">🔵</option>
5356- <option value="normal" title="Normal" data-i18n="[title]WI_Entry_Status_Normal">🟢</option>
5357- <option value="vectorized" title="Vectorized" data-i18n="[title]WI_Entry_Status_Vectorized">🔗</option>
5358- </select>
5359- </div>
5360- <div class="WIEnteryHeaderControls flex-container">
5361- <div name="PositionBlock" class="world_entry_form_control world_entry_form_radios wi-enter-footer-text">
5362- <label for="position" class="WIEntryHeaderTitleMobile" data-i18n="Position:">Position:</label>
5363- <select name="position" class="text_pole widthNatural margin0" data-i18n="[title]T_Position" title="↑Char: Before Character Definitions&#13;↓Char: After Character Definitions&#13;↑EM: Before Example Messages&#13;↓EM: After Example Messages&#13;↑AN: Before Author's Note&#13;↓AN: After Author's Note&#13;@D ⚙️: at Depth (System)&#13;@D 👤: at Depth (User)&#13;@D 🤖: at Depth (Assistant)">
5364- <option value="0" data-role="" data-i18n="Before Char Defs">
5365- ↑Char
5366- </option>
5367- <option value="1" data-role="" data-i18n="After Char Defs">
5368- ↓Char
5369- </option>
5370- <option value="5" data-role="" data-i18n="Before EM">
5371- ↑EM
5372- </option>
5373- <option value="6" data-role="" data-i18n="After EM">
5374- ↓EM
5375- </option>
5376- <option value="2" data-role="" data-i18n="Before AN">
5377- ↑AN
5378- </option>
5379- <option value="3" data-role="" data-i18n="After AN">
5380- ↓AN
5381- </option>
5382- <option value="4" data-role="0" data-i18n="at Depth System">
5383- @D ⚙️
5384- </option>
5385- <option value="4" data-role="1" data-i18n="at Depth User">
5386- @D 👤
5387- </option>
5388- <option value="4" data-role="2" data-i18n="at Depth AI">
5389- @D 🤖
5390- </option>
53915315 </select>
53925316 </div>
53935317 <div class="world_entry_form_control wi-enter-footer-textWIEnteryHeaderControls flex-container flexNoGap">
5394- <label for="depth" class="WIEntryHeaderTitleMobile" data-i18n="Depth:">Depth:</label>
5318+ <div name="PositionBlock" class="world_entry_form_control world_entry_form_radios wi-enter-footer-text">
5395- <input title="Depth" class="text_pole wideMax100px margin0" type="number" name="depth" data-i18n="[title]Depth" placeholder="" min="0" max="999" />
5319+ <label for="position" class="WIEntryHeaderTitleMobile" data-i18n="Position:">Position:</label>
5396- </div>
5320+ <select name="position" class="text_pole widthNatural margin0" data-i18n="[title]T_Position" title="↑Char: Before Character Definitions&#13;↓Char: After Character Definitions&#13;↑EM: Before Example Messages&#13;↓EM: After Example Messages&#13;↑AN: Before Author's Note&#13;↓AN: After Author's Note&#13;@D ⚙️: at Depth (System)&#13;@D 👤: at Depth (User)&#13;@D 🤖: at Depth (Assistant)">
5397- <div class="world_entry_form_control wi-enter-footer-text flex-container flexNoGap">
5321+ <option value="0" data-role="" data-i18n="Before Char Defs">
5398- <label for="order" class="WIEntryHeaderTitleMobile" data-i18n="Order:">Order:</label>
5322+ ↑Char
5399- <input title="Order" data-i18n="[title]Order" class="text_pole wideMax100px margin0" type="number" name="order" placeholder="" min="0" max="999" />
5323+ </option>
5400- </div>
5324+ <option value="1" data-role="" data-i18n="After Char Defs">
5401- <div class="world_entry_form_control wi-enter-footer-text flex-container flexNoGap probabilityContainer">
5325+ ↓Char
5402- <label for="order" class="WIEntryHeaderTitleMobile" data-i18n="Trigger %:">Trigger %:</label>
5326+ </option>
5403- <input title="Probability" data-i18n="[title]Probability" class="text_pole wideMax100px margin0" type="number" name="probability" placeholder="" min="0" max="100" />
5327+ <option value="5" data-role="" data-i18n="Before EM">
5328+ ↑EM
5329+ </option>
5330+ <option value="6" data-role="" data-i18n="After EM">
5331+ ↓EM
5332+ </option>
5333+ <option value="2" data-role="" data-i18n="Before AN">
5334+ ↑AN
5335+ </option>
5336+ <option value="3" data-role="" data-i18n="After AN">
5337+ ↓AN
5338+ </option>
5339+ <option value="4" data-role="0" data-i18n="at Depth System">
5340+ @D ⚙️
5341+ </option>
5342+ <option value="4" data-role="1" data-i18n="at Depth User">
5343+ @D 👤
5344+ </option>
5345+ <option value="4" data-role="2" data-i18n="at Depth AI">
5346+ @D 🤖
5347+ </option>
5348+ </select>
5349+ </div>
5350+ <div class="world_entry_form_control wi-enter-footer-text flex-container flexNoGap">
5351+ <label for="depth" class="WIEntryHeaderTitleMobile" data-i18n="Depth:">Depth:</label>
5352+ <input title="Depth" class="text_pole wideMax100px margin0" type="number" name="depth" data-i18n="[title]Depth" placeholder="" min="0" max="999" />
5353+ </div>
5354+ <div class="world_entry_form_control wi-enter-footer-text flex-container flexNoGap">
5355+ <label for="order" class="WIEntryHeaderTitleMobile" data-i18n="Order:">Order:</label>
5356+ <input title="Order" data-i18n="[title]Order" class="text_pole wideMax100px margin0" type="number" name="order" placeholder="" min="0" max="999" />
5357+ </div>
5358+ <div class="world_entry_form_control wi-enter-footer-text flex-container flexNoGap probabilityContainer">
5359+ <label for="order" class="WIEntryHeaderTitleMobile" data-i18n="Trigger %:">Trigger %:</label>
5360+ <input title="Probability" data-i18n="[title]Probability" class="text_pole wideMax100px margin0" type="number" name="probability" placeholder="" min="0" max="100" />
5361+ </div>
54045362 </div>
54055363 </div>
54065364 </div>
5365+ <i class="menu_button duplicate_entry_button fa-solid fa-paste" title="Duplicate world info entry" data-i18n="[title]Duplicate world info entry" type="submit" value=""></i>
5366+ <i class="menu_button delete_entry_button fa-solid fa-trash-can" title="Delete world info entry" data-i18n="[title]Delete world info entry" type="submit" value=""></i>
54075367 </div>
5408- <i class="menu_button duplicate_entry_button fa-solid fa-paste" title="Duplicate world info entry" data-i18n="[title]Duplicate world info entry" type="submit" value=""></i>
5368+ <div class="inline-drawer-content flex-container paddingBottom5px wide100p">
5409- <i class="menu_button delete_entry_button fa-solid fa-trash-can" title="Delete world info entry" data-i18n="[title]Delete world info entry" type="submit" value=""></i>
5369+ <div class="flex-container wide100p alignitemscenter">
5410- </div>
5370+ <div name="keywordsAndLogicBlock" class="flex-container wide100p alignitemscenter">
54115371 <div class="inline-drawer-content flex-container paddingBottom5pxworld_entry_form_control wide100pflex1">
54125372 <divsmall class="flex-container wide100p alignitemscenterdisplayNone">
5413- <div name="keywordsAndLogicBlock" class="flex-container wide100p alignitemscenter">
5373+ <span data-i18n="Comma separated (required)">
5414- <div class="world_entry_form_control flex1">
5374+ Comma separated (required)
5415- <small class="displayNone">
5416- <span data-i18n="Comma separated (required)">
5417- Comma separated (required)
5418- </span>
5419- </small>
5420- <small class="textAlignCenter" data-i18n="Primary Keywords">Primary Keywords</small>
5421- <select class="keyprimaryselect keyselect select2_multi_sameline" name="key" data-i18n="[placeholder]Keywords or Regexes" placeholder="Keywords or Regexes" multiple="multiple"></select>
5422- <textarea class="text_pole keyprimarytextpole mobile" name="key" rows="1" data-i18n="[placeholder]Comma separated list" placeholder="Comma separated list" maxlength="2000" style="display: none;"></textarea>
5423- <button type="button" class="switch_input_type_icon" tabindex="-1" title="Switch to plaintext mode" data-i18n="[title]Switch to plaintext mode" data-icon-on="✨" data-icon-off="⌨️" data-tooltip-on="Switch to fancy mode" data-tooltip-off="Switch to plaintext mode">
5424- ⌨️
5425- </button>
5426- </div>
5427- <div class="world_entry_form_control">
5428- <small class="textAlignCenter" data-i18n="Logic">Logic</small>
5429- <select name="entryLogicType" class="text_pole widthFitContent margin0">
5430- <option value="0" data-i18n="AND ANY">AND ANY</option>
5431- <option value="3" data-i18n="AND ALL">AND ALL</option>
5432- <option value="1" data-i18n="NOT ALL">NOT ALL</option>
5433- <option value="2" data-i18n="NOT ANY">NOT ANY</option>
5434- </select>
5435- </div>
5436- <div class="world_entry_form_control keysecondary flex1">
5437- <small class="displayNone">
5438- <span data-i18n="(ignored if empty)">
5439- (ignored if empty)
5440- </span>
5441- </small>
5442- <small class="textAlignCenter" data-i18n="Optional Filter">Optional Filter</small>
5443- <select class="keysecondaryselect keyselect select2_multi_sameline" name="keysecondary" data-i18n="[placeholder]Keywords or Regexes (ignored if empty)" placeholder="Keywords or Regexes (ignored if empty)" multiple="multiple"></select>
5444- <textarea class="text_pole keysecondarytextpole mobile" name="keysecondary" rows="1" data-i18n="[placeholder]Comma separated list (ignored if empty)" placeholder="Comma separated list (ignored if empty)" maxlength="2000" style="display: none;"></textarea>
5445- <button type="button" class="switch_input_type_icon" tabindex="-1" title="Switch to plaintext mode" data-i18n="[title]Switch to plaintext mode" data-icon-on="✨" data-icon-off="⌨️" data-tooltip-on="Switch to fancy mode" data-tooltip-off="Switch to plaintext mode">
5446- ⌨️
5447- </button>
5448- </div>
5449- </div>
5450- <div name="perEntryOverridesBlock" class="flex-container wide100p alignitemscenter">
5451- <div class="world_entry_form_control flex1">
5452- <small class="textAlignCenter" data-i18n="Scan Depth">Scan Depth</small>
5453- <input class="text_pole margin0" name="scanDepth" type="number" placeholder="Use global setting" data-i18n="[placeholder]Use global setting" max="1000">
5454- </div>
5455- <div class="world_entry_form_control flex1">
5456- <small class="textAlignCenter" data-i18n="Case-Sensitive">Case-Sensitive</small>
5457- <select name="caseSensitive" class="text_pole widthNatural margin0">
5458- <option value="null" data-i18n="Use global setting">Use global setting</option>
5459- <option value="true" data-i18n="Yes">Yes</option>
5460- <option value="false" data-i18n="No">No</option>
5461- </select>
5462- </div>
5463- <div class="world_entry_form_control flex1">
5464- <small class="textAlignCenter" data-i18n="Match Whole Words">Match Whole Words</small>
5465- <select name="matchWholeWords" class="text_pole widthNatural margin0">
5466- <option value="null" data-i18n="Use global setting">Use global setting</option>
5467- <option value="true" data-i18n="Yes">Yes</option>
5468- <option value="false" data-i18n="No">No</option>
5469- </select>
5470- </div>
5471- <div class="world_entry_form_control flex1">
5472- <small class="textAlignCenter" data-i18n="Use Group Scoring">Use Group Scoring</small>
5473- <select name="useGroupScoring" class="text_pole widthNatural margin0">
5474- <option value="null" data-i18n="Use global setting">Use global setting</option>
5475- <option value="true" data-i18n="Yes">Yes</option>
5476- <option value="false" data-i18n="No">No</option>
5477- </select>
5478- </div>
5479- <div class="world_entry_form_control flex1" title="Can be used to automatically activate Quick Replies" data-i18n="[title]Can be used to automatically activate Quick Replies">
5480- <small class="textAlignCenter" data-i18n="Automation ID">Automation ID</small>
5481- <input class="text_pole margin0" name="automationId" type="text" placeholder="( None )" data-i18n="[placeholder]( None )">
5482- </div>
5483- </div>
5484- <div name="contentAndCharFilterBlock" class="world_entry_thin_controls flex2">
5485- <div class="world_entry_form_control flex1">
5486- <label for="content ">
5487- <small>
5488- <span class="alignitemscenter flex-container flexnowrap wide100p justifySpaceBetween">
5489- <span data-i18n="Content" class="alignitemscenter flex-container flexNoGap">
5490- Content
5491- </span>
5492- <span>
5493- (<span data-i18n="extension_token_counter">Tokens:</span>&nbsp; <span class="world_entry_form_token_counter" data-first-run="true">counting...</span>)&nbsp;
5494- <span class="world_entry_form_uid_value" data-first-run="true"></span>
5495- </span>
5496- <div>
5497- <label class="checkbox flex-container alignitemscenter flexNoGap">
5498- <input type="checkbox" name="exclude_recursion" />
5499- <span data-i18n="Exclude from recursion">
5500- Non-recursable (this entry will not be activated by another)
5501- </span>
5502- </label>
5503- <label class="checkbox flex-container alignitemscenter flexNoGap">
5504- <input type="checkbox" name="prevent_recursion" />
5505- <span data-i18n="Prevent further recursion (this entry will not activate others)">
5506- Prevent further recursion (this entry will not activate others)
5507- </span>
5508- </label>
5509- <label class="checkbox flex-container alignitemscenter flexNoGap">
5510- <input type="checkbox" name="delay_until_recursion" />
5511- <span data-i18n="Delay until recursion (this entry can only be activated on recursive checking)">
5512- Delay until recursion (this entry can only be activated on recursive checking)
5513- </span>
5514- </label>
5515- </div>
55165375 </span>
55175376 </small>
5377+ <small class="textAlignCenter" data-i18n="Primary Keywords">Primary Keywords</small>
5378+ <select class="keyprimaryselect keyselect select2_multi_sameline" name="key" data-i18n="[placeholder]Keywords or Regexes" placeholder="Keywords or Regexes" multiple="multiple"></select>
5379+ <textarea class="text_pole keyprimarytextpole mobile" name="key" rows="1" data-i18n="[placeholder]Comma separated list" placeholder="Comma separated list" style="display: none;"></textarea>
5380+ <button type="button" class="switch_input_type_icon" tabindex="-1" title="Switch to plaintext mode" data-i18n="[title]Switch to plaintext mode" data-icon-on="✨" data-icon-off="⌨️" data-tooltip-on="Switch to fancy mode" data-tooltip-off="Switch to plaintext mode">
5381+ ⌨️
5382+ </button>
5383+ </div>
5384+ <div class="world_entry_form_control">
5385+ <small class="textAlignCenter" data-i18n="Logic">Logic</small>
5386+ <select name="entryLogicType" class="text_pole widthFitContent margin0">
5387+ <option value="0" data-i18n="AND ANY">AND ANY</option>
5388+ <option value="3" data-i18n="AND ALL">AND ALL</option>
5389+ <option value="1" data-i18n="NOT ALL">NOT ALL</option>
5390+ <option value="2" data-i18n="NOT ANY">NOT ANY</option>
5391+ </select>
5392+ </div>
5393+ <div class="world_entry_form_control keysecondary flex1">
55185394 <small class="displayNone">
55195395 <span data-i18n="What this keyword should mean to the AI,(ignored sentif verbatimempty)">
5520- What this keyword should mean to the AI, sent verbatim
5396+ (ignored if empty)
55215397 </span>
55225398 </small>
5523- </label>
5399+ <small class="textAlignCenter" data-i18n="Optional Filter">Optional Filter</small>
55245400 <textareaselect class="text_pole"keysecondaryselect name="contentkeyselect select2_multi_sameline" rowsname="8keysecondary" data-i18n="[placeholder]What this keyword should meanKeywords toor theRegexes AI,(ignored sentif verbatimempty)" placeholder="What this keyword shouldKeywords meanor toRegexes the(ignored AI,if sentempty)" verbatimmultiple="multiple"></textareaselect>
5401+ <textarea class="text_pole keysecondarytextpole mobile" name="keysecondary" rows="1" data-i18n="[placeholder]Comma separated list (ignored if empty)" placeholder="Comma separated list (ignored if empty)" style="display: none;"></textarea>
5402+ <button type="button" class="switch_input_type_icon" tabindex="-1" title="Switch to plaintext mode" data-i18n="[title]Switch to plaintext mode" data-icon-on="✨" data-icon-off="⌨️" data-tooltip-on="Switch to fancy mode" data-tooltip-off="Switch to plaintext mode">
5403+ ⌨️
5404+ </button>
5405+ </div>
5406+ </div>
5407+ <div name="perEntryOverridesBlock" class="flex-container wide100p alignitemscenter">
5408+ <div class="world_entry_form_control flex1">
5409+ <small class="textAlignCenter" data-i18n="Scan Depth">Scan Depth</small>
5410+ <input class="text_pole margin0" name="scanDepth" type="number" placeholder="Use global setting" data-i18n="[placeholder]Use global setting" max="1000">
5411+ </div>
5412+ <div class="world_entry_form_control flex1">
5413+ <small class="textAlignCenter" data-i18n="Case-Sensitive">Case-Sensitive</small>
5414+ <select name="caseSensitive" class="text_pole widthNatural margin0">
5415+ <option value="null" data-i18n="Use global setting">Use global setting</option>
5416+ <option value="true" data-i18n="Yes">Yes</option>
5417+ <option value="false" data-i18n="No">No</option>
5418+ </select>
5419+ </div>
5420+ <div class="world_entry_form_control flex1">
5421+ <small class="textAlignCenter" data-i18n="Match Whole Words">Match Whole Words</small>
5422+ <select name="matchWholeWords" class="text_pole widthNatural margin0">
5423+ <option value="null" data-i18n="Use global setting">Use global setting</option>
5424+ <option value="true" data-i18n="Yes">Yes</option>
5425+ <option value="false" data-i18n="No">No</option>
5426+ </select>
5427+ </div>
5428+ <div class="world_entry_form_control flex1">
5429+ <small class="textAlignCenter" data-i18n="Use Group Scoring">Use Group Scoring</small>
5430+ <select name="useGroupScoring" class="text_pole widthNatural margin0">
5431+ <option value="null" data-i18n="Use global setting">Use global setting</option>
5432+ <option value="true" data-i18n="Yes">Yes</option>
5433+ <option value="false" data-i18n="No">No</option>
5434+ </select>
5435+ </div>
5436+ <div class="world_entry_form_control flex1" title="Can be used to automatically activate Quick Replies" data-i18n="[title]Can be used to automatically activate Quick Replies">
5437+ <small class="textAlignCenter" data-i18n="Automation ID">Automation ID</small>
5438+ <input class="text_pole margin0" name="automationId" type="text" placeholder="( None )" data-i18n="[placeholder]( None )">
5439+ </div>
55255440 </div>
5526- </div>
5441+ <div name="contentAndCharFilterBlock" class="world_entry_thin_controls flex2">
55275442 <div class="world_entry_thin_controlsworld_entry_form_control commentContainerflex1">
5528- </div>
5443+ <label for="content ">
5529- </div>
5444+ <small>
55305445 <divspan class="alignitemscenter flex-container flexnowrap wide100p flexGap10justifySpaceBetween">
55315446 <divspan data-i18n="Content" class="flex4alignitemscenter flex-container flexFlowColumn flexNoGap">
5532- <div class="flex-container justifySpaceBetween">
5447+ Content
5533- <small for="group">
5448+ </span>
5534- <span data-i18n="Inclusion Group">Inclusion Group</span>
5449+ <span>
5535- <a href="https://docs.sillytavern.app/usage/core-concepts/worldinfo/#inclusion-group" class="notes-link" target="_blank" title="Inclusion Groups ensure only one entry from a group is activated at a time, if multiple are triggered.&#13;Supports multiple comma-separated groups.&#13;&#13;Documentation: World Info - Inclusion Group" data-i18n="[title]Inclusion Groups ensure only one entry from a group is activated at a time, if multiple are triggered.Documentation: World Info - Inclusion Group">
5450+ (<span data-i18n="extension_token_counter">Tokens:</span>&nbsp; <span class="world_entry_form_token_counter" data-first-run="true">counting...</span>)&nbsp;
55365451 <span class="fa-solid fa-circle-questionworld_entry_form_uid_value" notedata-linkfirst-spanrun="true"></span>
55375452 </aspan>
5538- </small>
5453+ <div>
55395454 <label class="checkbox_label flexNoGapcheckbox marginflex-r5"container for="groupOverridealignitemscenter flexNoGap">
55405455 <input type="checkbox" name="groupOverrideexclude_recursion" />
5541- <span>
5456+ <span data-i18n="Exclude from recursion">
5542- <small title="Prioritize this entry: When checked, this entry is prioritized out of all selections.&#13;If multiple are prioritized, the one with the highest 'Order' is chosen.&#13;" data-i18n="[title]Prioritize this entry: When checked, this entry is prioritized out of all selections.If multiple are prioritized, the one with the highest 'Order' is chosen.">
5457+ Non-recursable (this entry will not be activated by another)
5543- <span data-i18n="Prioritize">Prioritize</span>
5458+ </span>
5544- <div class="fa-solid fa-circle-info opacity50p"></div>
5459+ </label>
5460+ <label class="checkbox flex-container alignitemscenter flexNoGap">
5461+ <input type="checkbox" name="prevent_recursion" />
5462+ <span data-i18n="Prevent further recursion (this entry will not activate others)">
5463+ Prevent further recursion (this entry will not activate others)
5464+ </span>
5465+ </label>
5466+ <label class="checkbox flex-container alignitemscenter flexNoGap">
5467+ <input type="checkbox" name="delay_until_recursion" />
5468+ <span data-i18n="Delay until recursion (this entry can only be activated on recursive checking)">
5469+ Delay until recursion (this entry can only be activated on recursive checking)
5470+ </span>
5471+ </label>
5472+ </div>
5473+ </span>
55455474 </small>
5546- </span>
5475+ <small class="displayNone">
5547- </label>
5476+ <span data-i18n="What this keyword should mean to the AI, sent verbatim">
5477+ What this keyword should mean to the AI, sent verbatim
5478+ </span>
5479+ </small>
5480+ </label>
5481+ <textarea class="text_pole" name="content" rows="8" data-i18n="[placeholder]What this keyword should mean to the AI, sent verbatim" placeholder="What this keyword should mean to the AI, sent verbatim"></textarea>
5482+ </div>
55485483 </div>
55495484 <div class="range-block-rangeworld_entry_thin_controls commentContainer">
5550- <input type="text" class="text_pole margin0" name="group" rows="1" data-i18n="[placeholder]Only one entry with the same label will be activated" placeholder="Only one entry with the same label will be activated">
55515485 </div>
55525486 </div>
5553- <div class="flex2 flex-container flexFlowColumn flexNoGap" data-i18n="[title]A relative likelihood of entry activation within the group" title="A relative likelihood of entry activation within the group">
5487+ <div class="flex-container wide100p flexGap10">
55545488 <div class="flex4 flex-container justifySpaceBetweenflexFlowColumn marginBot5flexNoGap">
55555489 <smalldiv forclass="groupWeight" dataflex-i18n="Groupcontainer WeightjustifySpaceBetween">
5556- Group Weight
5490+ <small for="group">
5557- </small>
5491+ <span data-i18n="Inclusion Group">Inclusion Group</span>
5558- </div>
5492+ <a href="https://docs.sillytavern.app/usage/core-concepts/worldinfo/#inclusion-group" class="notes-link" target="_blank" title="Inclusion Groups ensure only one entry from a group is activated at a time, if multiple are triggered.&#13;Supports multiple comma-separated groups.&#13;&#13;Documentation: World Info - Inclusion Group" data-i18n="[title]Inclusion Groups ensure only one entry from a group is activated at a time, if multiple are triggered.Documentation: World Info - Inclusion Group">
5559- <div class="range-block-range">
5493+ <span class="fa-solid fa-circle-question note-link-span"></span>
5560- <input type="number" class="text_pole margin0" name="groupWeight" rows="1" placeholder="100" min="1" max="999999">
5494+ </a>
5495+ </small>
5496+ <label class="checkbox_label flexNoGap margin-r5" for="groupOverride">
5497+ <input type="checkbox" name="groupOverride" />
5498+ <span>
5499+ <small title="Prioritize this entry: When checked, this entry is prioritized out of all selections.&#13;If multiple are prioritized, the one with the highest 'Order' is chosen.&#13;" data-i18n="[title]Prioritize this entry: When checked, this entry is prioritized out of all selections.If multiple are prioritized, the one with the highest 'Order' is chosen.">
5500+ <span data-i18n="Prioritize">Prioritize</span>
5501+ <div class="fa-solid fa-circle-info opacity50p"></div>
5502+ </small>
5503+ </span>
5504+ </label>
5505+ </div>
5506+ <div class="range-block-range">
5507+ <input type="text" class="text_pole margin0" name="group" rows="1" data-i18n="[placeholder]Only one entry with the same label will be activated" placeholder="Only one entry with the same label will be activated">
5508+ </div>
55615509 </div>
5562- </div>
5510+ <div class="flex2 flex-container flexFlowColumn flexNoGap" data-i18n="[title]A relative likelihood of entry activation within the group" title="A relative likelihood of entry activation within the group">
5563- <div class="flex2 flex-container flexFlowColumn flexNoGap" data-i18n="[title]Sticky entries will stay active for N messages after being triggered." title="Sticky entries will stay active for N messages after being triggered.">
5511+ <div class="flex-container justifySpaceBetween marginBot5">
5564- <div class="flex-container justifySpaceBetween marginBot5">
5512+ <small for="groupWeight" data-i18n="Group Weight">
5565- <small class="flex-container alignItemsBaseline" for="sticky" data-i18n="Sticky">
5513+ Group Weight
5566- <span data-i18n="Sticky">
5514+ </small>
5567- Sticky
5515+ </div>
5568- </span>
5516+ <div class="range-block-range">
5569- <i class="fa-solid fa-comments fa-xs"></i>
5517+ <input type="number" class="text_pole margin0" name="groupWeight" rows="1" placeholder="100" min="1" max="999999">
55705518 </smalldiv>
55715519 </div>
5572- <div class="range-block-range">
5520+ <div class="flex2 flex-container flexFlowColumn flexNoGap" data-i18n="[title]Sticky entries will stay active for N messages after being triggered." title="Sticky entries will stay active for N messages after being triggered.">
5573- <input class="text_pole margin0" name="sticky" type="number" placeholder="Non-sticky" min="0" max="999999">
5521+ <div class="flex-container justifySpaceBetween marginBot5">
5522+ <small class="flex-container alignItemsBaseline" for="sticky" data-i18n="Sticky">
5523+ <span data-i18n="Sticky">
5524+ Sticky
5525+ </span>
5526+ <i class="fa-solid fa-comments fa-xs"></i>
5527+ </small>
5528+ </div>
5529+ <div class="range-block-range">
5530+ <input class="text_pole margin0" name="sticky" type="number" placeholder="Non-sticky" min="0" max="999999">
5531+ </div>
55745532 </div>
5575- </div>
5533+ <div class="flex2 flex-container flexFlowColumn flexNoGap" data-i18n="[title]Entries with a cooldown can't be activated N messages after being triggered." title="Entries with a cooldown can't be activated N messages after being triggered.">
5576- <div class="flex2 flex-container flexFlowColumn flexNoGap" data-i18n="[title]Entries with a cooldown can't be activated N messages after being triggered." title="Entries with a cooldown can't be activated N messages after being triggered.">
5534+ <div class="flex-container justifySpaceBetween marginBot5">
55775535 <divsmall class="flex-container justifySpaceBetweenalignItemsBaseline" marginBot5for="cooldown" data-i18n="Cooldown">
55785536 <small class="flex-container alignItemsBaseline" for="cooldown"span data-i18n="Cooldown">
5579- <span data-i18n="Cooldown">
5537+ Cooldown
5580- Cooldown
5538+ </span>
5581- </span>
5539+ <i class="fa-solid fa-comments fa-xs"></i>
5582- <i class="fa-solid fa-comments fa-xs"></i>
5540+ </small>
55835541 </smalldiv>
5542+ <div class="range-block-range">
5543+ <input class="text_pole margin0" name="cooldown" type="number" placeholder="No cooldown" min="0" max="999999">
5544+ </div>
55845545 </div>
5585- <div class="range-block-range">
5546+ <div class="flex2 flex-container flexFlowColumn flexNoGap" data-i18n="[title]Entries with a delay can't be activated until there are N messages present in the chat." title="Entries with a delay can't be activated until there are N messages present in the chat.">
5586- <input class="text_pole margin0" name="cooldown" type="number" placeholder="No cooldown" min="0" max="999999">
5547+ <div class="flex-container justifySpaceBetween marginBot5">
5548+ <small class="flex-container alignItemsBaseline" for="delay" data-i18n="Delay">
5549+ <span data-i18n="Delay">
5550+ Delay
5551+ </span>
5552+ <i class="fa-solid fa-comments fa-xs"></i>
5553+ </small>
5554+ </div>
5555+ <div class="range-block-range">
5556+ <input class="text_pole margin0" name="delay" type="number" placeholder="No delay" min="0" max="999999">
5557+ </div>
55875558 </div>
55885559 </div>
5589- <div class="flex2 flex-container flexFlowColumn flexNoGap" data-i18n="[title]Entries with a delay can't be activated until there are N messages present in the chat." title="Entries with a delay can't be activated until there are N messages present in the chat.">
5560+ <div class="flex-container wide100p flexGap10">
55905561 <div class="flex4 flex-container justifySpaceBetweenflexFlowColumn marginBot5flexNoGap">
55915562 <smalldiv class="flex-container alignItemsBaseline" for="delay" data-i18n="DelayjustifySpaceBetween">
55925563 <spansmall for="characterFilter" data-i18n="DelayFilter to Character(s)">
5593- Delay
5564+ Filter to Character(s)
55945565 </spansmall>
5595- <i class="fa-solid fa-comments fa-xs"></i>
5566+ <label class="checkbox_label flexNoGap margin-r5" for="character_exclusion">
5596- </small>
5567+ <input type="checkbox" name="character_exclusion" />
5597- </div>
5568+ <span>
5598- <div class="range-block-range">
5569+ <small data-i18n="Character Exclusion">Character Exclusion</small>
5599- <input class="text_pole margin0" name="delay" type="number" placeholder="No delay" min="0" max="999999">
5570+ </span>
5571+ </label>
5572+ </div>
5573+ <div class="range-block-range">
5574+ <select name="characterFilter" class="select2_multi_sameline" multiple>
5575+ <option value="">
5576+ <span data-i18n="-- Characters not found --">-- Characters not found --</span>
5577+ </option>
5578+ </select>
5579+ </div>
56005580 </div>
56015581 </div>
5602- </div>
5582+ <div name="WIEntryBottomControls" class="flex-container flex1 justifySpaceBetween world_entry_form_horizontal">
56035583 <div class="flex-container wide100pflexFlowColumn flexGap10flexNoGap wi-enter-footer-text ">
56045584 <divlabel class="flex4checkbox flex-container flexFlowColumn flexNoGap">
5605- <div class="flex-container justifySpaceBetween">
5585+ <input type="checkbox" name="selective" />
5606- <small for="characterFilter" data-i18n="Filter to Characters or Tags">
5586+ <span data-i18n="Selective">Selective</span>
5607- Filter to Characters or Tags
5587+ </label>
5608- </small>
5588+ <label class="checkbox flex-container">
56095589 <labelinput classtype="checkbox_label flexNoGap margin-r5checkbox" forname="character_exclusionuseProbability" />
56105590 <inputspan typedata-i18n="checkbox"Use name="character_exclusionProbability">Use Probability</span>
5611- <span>
5591+ </label>
5612- <small title="Switch the Character/Tags filter around to exclude the listed characters and tags from matching for this entry" data-i18n="[title]Switch the Character/Tags filter around to exclude the listed characters and tags from matching for this entry">
5592+ <label class="checkbox flex-container">
5613- <span data-i18n="Exclude">Exclude</span>
5593+ <input type="checkbox" name="addMemo">
5614- <div class="fa-solid fa-circle-info opacity50p"></div>
5594+ <span data-i18n="Add Memo">Add Memo</span>
5615- </small>
5616- </span>
56175595 </label>
56185596 </div>
5619- <div class="range-block-range">
5620- <select name="characterFilter" class="select2_multi_sameline" multiple>
5621- <option value="">
5622- <span data-i18n="-- Characters not found --">-- Characters not found --</span>
5623- </option>
5624- </select>
5625- </div>
5626- </div>
5627- </div>
5628- <div name="WIEntryBottomControls" class="flex-container flex1 justifySpaceBetween world_entry_form_horizontal">
5629- <div class="flex-container flexFlowColumn flexNoGap wi-enter-footer-text ">
5630- <label class="checkbox flex-container">
5631- <input type="checkbox" name="selective" />
5632- <span data-i18n="Selective">Selective</span>
5633- </label>
5634- <label class="checkbox flex-container">
5635- <input type="checkbox" name="useProbability" />
5636- <span data-i18n="Use Probability">Use Probability</span>
5637- </label>
5638- <label class="checkbox flex-container">
5639- <input type="checkbox" name="addMemo">
5640- <span data-i18n="Add Memo">Add Memo</span>
5641- </label>
56425597 </div>
56435598 </div>
56445599 </div>
56455600 </divform>
5646- </form>
5647- </div>
5648- </div>
5649- <div id="character_template" class="template_element">
5650- <div class="character_select entity_block flex-container wide100p alignitemsflexstart" chid="" id="">
5651- <div class="avatar" title="">
5652- <img src="">
56535601 </div>
5654- <div class="flex-container wide100pLess70px character_select_container">
5602+ </div>
56555603 <div classid="wide100pcharacter_template" character_name_blockclass="template_element">
5656- <span class="ch_name"></span>
5604+ <div class="character_select entity_block flex-container wide100p alignitemsflexstart" chid="" id="">
5657- <small class="ch_additional_info ch_add_placeholder">+++</small>
5605+ <div class="avatar" title="">
56585606 <smallimg classsrc="ch_additional_info character_version"></small>
5659- <small class="ch_additional_info ch_avatar_url"></small>
5607+ </div>
5608+ <div class="flex-container wide100pLess70px character_select_container">
5609+ <div class="wide100p character_name_block">
5610+ <span class="ch_name"></span>
5611+ <small class="ch_additional_info ch_add_placeholder">+++</small>
5612+ <small class="ch_additional_info character_version"></small>
5613+ <small class="ch_additional_info ch_avatar_url"></small>
5614+ </div>
5615+ <i class="ch_fav_icon fa-solid fa-star"></i>
5616+ <input class="ch_fav" value="" hidden />
5617+ <div class="ch_description"></div>
5618+ <div class="tags tags_inline"></div>
56605619 </div>
5661- <i class="ch_fav_icon fa-solid fa-star"></i>
5662- <input class="ch_fav" value="" hidden />
5663- <div class="ch_description"></div>
5664- <div class="tags tags_inline"></div>
56655620 </div>
56665621 </div>
5667- </div>
5622+ <div id="tag_template" class="template_element">
56685623 <divspan id="tag_template" class="template_elementtag">
56695624 <span id="" class="tagtag_name"></span>
56705625 <spani class="tag_namefa-solid fa-circle-xmark tag_remove"></spani>
5671- <i class="fa-solid fa-circle-xmark tag_remove"></i>
5626+ </span>
5672- </span>
5673- </div>
5674- <div id="openai_logit_bias_template" class="template_element">
5675- <div class="openai_logit_bias_form">
5676- <input class="openai_logit_bias_text text_pole" data-i18n="[placeholder]Text or token ids" placeholder="Text or [token ids]" />
5677- <input class="openai_logit_bias_value text_pole" type="number" min="-100" value="0" max="100" />
5678- <i class="menu_button fa-solid fa-xmark openai_logit_bias_remove"></i>
5679- </form>
5680- </div>
5681- </div>
5682- <div id="logit_bias_template" class="template_element">
5683- <div class="logit_bias_form">
5684- <input class="logit_bias_text text_pole" data-i18n="[placeholder]Type here..." placeholder="type here..." />
5685- <input class="logit_bias_value text_pole" type="number" min="-100" value="0" max="100" step="0.01" />
5686- <i class="menu_button fa-solid fa-xmark logit_bias_remove"></i>
56875627 </div>
5688- </div>
5628+ <div id="openai_logit_bias_template" class="template_element">
5689- <div id="completion_prompt_manager_popup" class="drawer-content" style="display:none;">
5629+ <div class="openai_logit_bias_form">
5690- <div id="completion_prompt_manager_popup_inspect">
5630+ <input class="openai_logit_bias_text text_pole" data-i18n="[placeholder]Text or token ids" placeholder="Text or [token ids]" />
5691- <h3>Inspect</h3>
5631+ <input class="openai_logit_bias_value text_pole" type="number" min="-100" value="0" max="100" />
5692- <div class="completion_prompt_manager_popup_entry">
5632+ <i class="menu_button fa-solid fa-xmark openai_logit_bias_remove"></i>
5693- <form class="completion_prompt_manager_popup_entry_form">
5694- <div class="completion_prompt_manager_popup_entry_form_control">
5695- <div class="completion_prompt_manager_popup_header">
5696- <label for="completion_prompt_manager_popup_entry_form_prompt">
5697- <span>Prompt List</span>
5698- </label>
5699- <a id="completion_prompt_manager_popup_close_button" title="close" data-i18n="[title]close" class="fa-solid fa-close menu_button"></a>
5700- </div>
5701- <div class="text_muted">The list of prompts associated with this marker.</div>
5702- <div id="completion_prompt_manager_popup_entry_form_inspect_list"></div>
5703- </div>
57045633 </form>
57055634 </div>
57065635 </div>
57075636 <div id="completion_prompt_manager_popup_editlogit_bias_template" class="template_element">
57085637 <h3div data-i18nclass="prompt_manager_editlogit_bias_form">Edit</h3>
5709- <div class="completion_prompt_manager_popup_entry">
5638+ <input class="logit_bias_text text_pole" data-i18n="[placeholder]Type here..." placeholder="type here..." />
5710- <form class="completion_prompt_manager_popup_entry_form">
5639+ <input class="logit_bias_value text_pole" type="number" min="-100" value="0" max="100" step="0.01" />
5711- <div class="flex-container gap10px">
5640+ <i class="menu_button fa-solid fa-xmark logit_bias_remove"></i>
5712- <div class="completion_prompt_manager_popup_entry_form_control flex1">
5641+ </div>
5713- <label for="completion_prompt_manager_popup_entry_form_name">
5642+ </div>
5714- <span data-i18n="prompt_manager_name">Name</span>
5643+ <div id="completion_prompt_manager_popup" class="drawer-content" style="display:none;">
5715- </label>
5644+ <div id="completion_prompt_manager_popup_inspect">
5716- <div class="text_muted" data-i18n="A name for this prompt.">A name for this prompt.</div>
5645+ <h3>Inspect</h3>
5717- <input id="completion_prompt_manager_popup_entry_form_name" class="text_pole" type="text" name="name" />
5646+ <div class="completion_prompt_manager_popup_entry">
5718- </div>
5647+ <form class="completion_prompt_manager_popup_entry_form">
57195648 <div class="completion_prompt_manager_popup_entry_form_control flex1">
57205649 <labeldiv forclass="completion_prompt_manager_popup_entry_form_rolecompletion_prompt_manager_popup_header">
57215650 <spanlabel data-i18nfor="Rolecompletion_prompt_manager_popup_entry_form_prompt">Role</span>
5722- </label>
5651+ <span>Prompt List</span>
5723- <div class="text_muted" data-i18n="To whom this message will be attributed.">To whom this message will be attributed.</div>
5652+ </label>
5724- <select id="completion_prompt_manager_popup_entry_form_role" class="text_pole" name="role">
5653+ <a id="completion_prompt_manager_popup_close_button" title="close" data-i18n="[title]close" class="fa-solid fa-close menu_button"></a>
5725- <option data-i18n="System" value="system">System</option>
5654+ </div>
5726- <option data-i18n="User" value="user">User</option>
5655+ <div class="text_muted">The list of prompts associated with this marker.</div>
5727- <option data-i18n="AI Assistant" value="assistant">AI Assistant</option>
5656+ <div id="completion_prompt_manager_popup_entry_form_inspect_list"></div>
5728- </select>
5729- </div>
5730- </div>
5731- <div class="flex-container gap10px">
5732- <div class="completion_prompt_manager_popup_entry_form_control flex1">
5733- <label for="completion_prompt_manager_popup_entry_form_injection_position">
5734- <span data-i18n="prompt_manager_position">Position</span>
5735- </label>
5736- <div class="text_muted" data-i18n="Injection position. Relative (to other prompts in prompt manager) or In-chat @ Depth.">Injection position. Relative (to other prompts in prompt manager) or In-chat @ Depth.</div>
5737- <select id="completion_prompt_manager_popup_entry_form_injection_position" class="text_pole" name="injection_position">
5738- <option data-i18n="prompt_manager_relative" value="0">Relative</option>
5739- <option data-i18n="prompt_manager_in_chat" value="1">In-chat</option>
5740- </select>
57415657 </div>
5742- <div id="completion_prompt_manager_depth_block" class="completion_prompt_manager_popup_entry_form_control flex1">
5658+ </form>
5743- <label for="completion_prompt_manager_popup_entry_form_injection_depth">
5659+ </div>
5744- <span data-i18n="prompt_manager_depth">Depth</span>
5660+ </div>
5745- </label>
5661+ <div id="completion_prompt_manager_popup_edit">
5746- <div class="text_muted" data-i18n="Injection depth. 0 = after the last message, 1 = before the last message, etc.">Injection depth. 0 = after the last message, 1 = before the last message, etc.</div>
5662+ <h3 data-i18n="prompt_manager_edit">Edit</h3>
5747- <input id="completion_prompt_manager_popup_entry_form_injection_depth" class="text_pole" type="number" name="injection_depth" min="0" max="999" value="4" />
5663+ <div class="completion_prompt_manager_popup_entry">
5664+ <form class="completion_prompt_manager_popup_entry_form">
5665+ <div class="flex-container gap10px">
5666+ <div class="completion_prompt_manager_popup_entry_form_control flex1">
5667+ <label for="completion_prompt_manager_popup_entry_form_name">
5668+ <span data-i18n="prompt_manager_name">Name</span>
5669+ </label>
5670+ <div class="text_muted" data-i18n="A name for this prompt.">A name for this prompt.</div>
5671+ <input id="completion_prompt_manager_popup_entry_form_name" class="text_pole" type="text" name="name" />
5672+ </div>
5673+ <div class="completion_prompt_manager_popup_entry_form_control flex1">
5674+ <label for="completion_prompt_manager_popup_entry_form_role">
5675+ <span data-i18n="Role">Role</span>
5676+ </label>
5677+ <div class="text_muted" data-i18n="To whom this message will be attributed.">To whom this message will be attributed.</div>
5678+ <select id="completion_prompt_manager_popup_entry_form_role" class="text_pole" name="role">
5679+ <option data-i18n="System" value="system">System</option>
5680+ <option data-i18n="User" value="user">User</option>
5681+ <option data-i18n="AI Assistant" value="assistant">AI Assistant</option>
5682+ </select>
5683+ </div>
57485684 </div>
5749- </div>
5685+ <div class="flex-container gap10px">
57505686 <div class="completion_prompt_manager_popup_entry_form_control flex1">
57515687 <divlabel classfor="flex-container alignItemsCentercompletion_prompt_manager_popup_entry_form_injection_position">
5752- <div class="flex1">
5688+ <span data-i18n="prompt_manager_position">Position</span>
5753- <label for="completion_prompt_manager_popup_entry_form_prompt">
5754- <span data-i18n="Prompt">Prompt</span>
57555689 </label>
57565690 <div class="text_muted" data-i18n="TheInjection promptposition. Relative (to beother sentprompts in prompt manager) or In-chat @ Depth.">TheInjection promptposition. Relative (to beother sentprompts in prompt manager) or In-chat @ Depth.</div>
5691+ <select id="completion_prompt_manager_popup_entry_form_injection_position" class="text_pole" name="injection_position">
5692+ <option data-i18n="prompt_manager_relative" value="0">Relative</option>
5693+ <option data-i18n="prompt_manager_in_chat" value="1">In-chat</option>
5694+ </select>
57575695 </div>
57585696 <div id="completion_prompt_manager_forbid_overrides_blockcompletion_prompt_manager_depth_block" class="completion_prompt_manager_popup_entry_form_control flex1">
5759- <label class="checkbox_label" for="completion_prompt_manager_popup_entry_form_forbid_overrides" title="This prompt cannot be overridden by character cards, even if overrides are preferred." data-i18n="[title]This prompt cannot be overridden by character cards, even if overrides are preferred.">
5697+ <label for="completion_prompt_manager_popup_entry_form_injection_depth">
5760- <input type="checkbox" id="completion_prompt_manager_popup_entry_form_forbid_overrides" name="forbid_overrides" />
5698+ <span data-i18n="prompt_manager_depth">Depth</span>
5761- <span data-i18n="prompt_manager_forbid_overrides">Forbid Overrides</span>
57625699 </label>
5700+ <div class="text_muted" data-i18n="Injection depth. 0 = after the last message, 1 = before the last message, etc.">Injection depth. 0 = after the last message, 1 = before the last message, etc.</div>
5701+ <input id="completion_prompt_manager_popup_entry_form_injection_depth" class="text_pole" type="number" name="injection_depth" min="0" max="999" value="4" />
57635702 </div>
57645703 </div>
57655704 <textarea id="completion_prompt_manager_popup_entry_form_prompt"div class="text_pole" name="promptcompletion_prompt_manager_popup_entry_form_control">
5705+ <div class="flex-container alignItemsCenter">
5706+ <div class="flex1">
5707+ <label for="completion_prompt_manager_popup_entry_form_prompt">
5708+ <span data-i18n="Prompt">Prompt</span>
5709+ </label>
5710+ <div class="text_muted" data-i18n="The prompt to be sent.">The prompt to be sent.</div>
5711+ </div>
5712+ <div id="completion_prompt_manager_forbid_overrides_block">
5713+ <label class="checkbox_label" for="completion_prompt_manager_popup_entry_form_forbid_overrides" title="This prompt cannot be overridden by character cards, even if overrides are preferred." data-i18n="[title]This prompt cannot be overridden by character cards, even if overrides are preferred.">
5714+ <input type="checkbox" id="completion_prompt_manager_popup_entry_form_forbid_overrides" name="forbid_overrides" />
5715+ <span data-i18n="prompt_manager_forbid_overrides">Forbid Overrides</span>
5716+ </label>
5717+ </div>
5718+ </div>
5719+ <textarea id="completion_prompt_manager_popup_entry_form_prompt" class="text_pole" name="prompt">
57665720 </textarea>
57675721 </div>
57685722 <div class="completion_prompt_manager_popup_entry_form_footer">
57695723 <a id="completion_prompt_manager_popup_entry_form_close" title="close" data-i18n="[title]close" class="fa-solid fa-close menu_button"></a>
57705724 <a id="completion_prompt_manager_popup_entry_form_reset" title="reset" data-i18n="[title]reset" class="fa-solid fa-undo menu_button"></a>
57715725 <a id="completion_prompt_manager_popup_entry_form_save" title="save" data-i18n="[title]save" class="fa-solid fa-save menu_button" data-pm-prompt=""></a>
57725726 </div>
57735727 </form>
5728+ </div>
57745729 </div>
57755730 </div>
5776- </div>
5731+ <div id="message_template" class="template_element">
5777- <div id="message_template" class="template_element">
5732+ <div class="mes" mesid="" ch_name="" is_user="" is_system="" bookmark_link="">
57785733 <div class="mes" mesid="" ch_name="" is_user="for_checkbox"></div><input is_systemtype="checkbox" bookmark_linkclass="del_checkbox">
5779- <div class="for_checkbox"></div><input type="checkbox" class="del_checkbox">
5734+ <div class="mesAvatarWrapper">
57805735 <div class="mesAvatarWrapperavatar">
57815736 <divimg classsrc="avatar">
5782- <img src="">
5737+ </div>
5738+ <div class="mesIDDisplay"></div>
5739+ <div class="mes_timer"></div>
5740+ <div class="tokenCounterDisplay"></div>
57835741 </div>
57845742 <div class="mesIDDisplayswipe_left fa-solid fa-chevron-left" style="display: none;"></div>
57855743 <div class="mes_timermes_block"></div>
57865744 <div class="tokenCounterDisplaych_name flex-container justifySpaceBetween"></div>
5787- </div>
5745+ <div class="flex-container flex1 alignitemscenter">
5788- <div class="swipe_left fa-solid fa-chevron-left" style="display: none;"></div>
5746+ <div class="flex-container alignItemsBaseline">
57895747 <divspan class="mes_blockname_text">${characterName}</span>
5790- <div class="ch_name flex-container justifySpaceBetween">
5748+ <i class="mes_ghost fa-solid fa-ghost" title="This message is invisible for the AI" data-i18n="[title]This message is invisible for the AI"></i>
5791- <div class="flex-container flex1 alignitemscenter">
5749+ <small class="timestamp"></small>
5792- <div class="flex-container alignItemsBaseline">
5750+ </div>
5793- <span class="name_text">${characterName}</span>
5794- <i class="mes_ghost fa-solid fa-ghost" title="This message is invisible for the AI" data-i18n="[title]This message is invisible for the AI"></i>
5795- <small class="timestamp"></small>
57965751 </div>
5797- </div>
5752+ <div class="mes_buttons">
5798- <div class="mes_buttons">
5753+ <div title="Message Actions" class="mes_button extraMesButtonsHint fa-solid fa-ellipsis" data-i18n="[title]Message Actions"></div>
5799- <div title="Message Actions" class="mes_button extraMesButtonsHint fa-solid fa-ellipsis" data-i18n="[title]Message Actions"></div>
5754+ <div class="extraMesButtons">
5800- <div class="extraMesButtons">
5755+ <div title="Translate message" class="mes_button mes_translate fa-solid fa-language" data-i18n="[title]Translate message"></div>
58015756 <div title="TranslateGenerate messageImage" class="mes_button mes_translatesd_message_gen fa-solid fa-languagepaintbrush" data-i18n="[title]TranslateGenerate messageImage"></div>
58025757 <div title="Generate ImageNarrate" class="mes_button sd_message_genmes_narrate fa-solid fa-paintbrushbullhorn" data-i18n="[title]Generate ImageNarrate"></div>
58035758 <div title="NarratePrompt" class="mes_button mes_narratemes_prompt fa-solid fa-bullhornsquare-poll-horizontal " data-i18n="[title]NarratePrompt" style="display: none;"></div>
58045759 <div title="PromptExclude message from prompts" class="mes_button mes_promptmes_hide fa-solid fa-square-poll-horizontal eye" data-i18n="[title]Prompt"Exclude style="display:message none;from prompts"></div>
58055760 <div title="ExcludeInclude message fromin prompts" class="mes_button mes_hidemes_unhide fa-solid fa-eye-slash" data-i18n="[title]ExcludeInclude message fromin prompts"></div>
58065761 <div title="IncludeEmbed messagefile inor promptsimage" class="mes_button mes_unhidemes_embed fa-solid fa-eye-slashpaperclip" data-i18n="[title]IncludeEmbed messagefile inor promptsimage"></div>
58075762 <div title="Embed file orCreate imagecheckpoint" class="mes_button mes_embedmes_create_bookmark fa-regular fa-solid fa-paperclipflag-checkered" data-i18n="[title]Embed file orCreate imagecheckpoint"></div>
58085763 <div title="Create checkpointbranch" class="mes_button mes_create_bookmarkmes_create_branch fa-regular fa-solid fa-flagcode-checkeredbranch" data-i18n="[title]Create checkpointBranch"></div>
58095764 <div title="Create branchCopy" class="mes_button mes_create_branchmes_copy fa-regularsolid fa-code-branchcopy " data-i18n="[title]Create BranchCopy"></div>
5810- <div title="Copy" class="mes_button mes_copy fa-solid fa-copy " data-i18n="[title]Copy"></div>
5765+ </div>
5766+ <div title="Open checkpoint chat" class="mes_button mes_bookmark fa-solid fa-flag" data-i18n="[title]Open checkpoint chat"></div>
5767+ <div title="Edit" class="mes_button mes_edit fa-solid fa-pencil " data-i18n="[title]Edit"></div>
58115768 </div>
5812- <div title="Open checkpoint chat" class="mes_button mes_bookmark fa-solid fa-flag" data-i18n="[title]Open checkpoint chat"></div>
5769+ <div class="mes_edit_buttons">
58135770 <div title="Edit" class="mes_button mes_editmes_edit_done menu_button fa-solid fa-pencilcheck" title="Confirm" data-i18n="[title]EditConfirm"></div>
5814- </div>
5771+ <div class="mes_edit_copy menu_button fa-solid fa-copy" title="Copy this message" data-i18n="[title]Copy this message"></div>
5815- <div class="mes_edit_buttons">
5772+ <div class="mes_edit_delete menu_button fa-solid fa-trash-can" title="Delete this message" data-i18n="[title]Delete this message">
5816- <div class="mes_edit_done menu_button fa-solid fa-check" title="Confirm" data-i18n="[title]Confirm"></div>
5773+ </div>
58175774 <div class="mes_edit_copymes_edit_up menu_button fa-solid fa-copychevron-up " title="Copy thisMove message up" data-i18n="[title]Copy thisMove message up"></div>
58185775 <div class="mes_edit_deletemes_edit_down menu_button fa-solid fa-trashchevron-candown" title="Delete thisMove message down" data-i18n="[title]Delete thisMove message down">
5776+ </div>
5777+ <div class="mes_edit_cancel menu_button fa-solid fa-xmark" title="Cancel" data-i18n="[title]Cancel"></div>
58195778 </div>
5820- <div class="mes_edit_up menu_button fa-solid fa-chevron-up " title="Move message up" data-i18n="[title]Move message up"></div>
5779+ </div>
5821- <div class="mes_edit_down menu_button fa-solid fa-chevron-down" title="Move message down" data-i18n="[title]Move message down">
5780+ <div class="mes_text"></div>
5781+ <div class="mes_img_container">
5782+ <div class="mes_img_controls">
5783+ <div title="Enlarge" class="right_menu_button fa-lg fa-solid fa-magnifying-glass mes_img_enlarge" data-i18n="[title]Enlarge"></div>
5784+ <div title="Caption" class="right_menu_button fa-lg fa-solid fa-envelope-open-text mes_img_caption" data-i18n="[title]Caption"></div>
5785+ <div title="Delete" class="right_menu_button fa-lg fa-solid fa-trash-can mes_img_delete" data-i18n="[title]Delete"></div>
58225786 </div>
5823- <div class="mes_edit_cancel menu_button fa-solid fa-xmark" title="Cancel" data-i18n="[title]Cancel"></div>
5787+ <img class="mes_img" src="" />
58245788 </div>
5789+ <div class="mes_bias"></div>
58255790 </div>
5826- <div class="mes_text"></div>
5791+ <div class="swipe_right fa-solid fa-chevron-right" style="display: none;">
58275792 <div class="mes_img_containerswipes-counter"></div>
5828- <div class="mes_img_controls">
5829- <div title="Enlarge" class="right_menu_button fa-lg fa-solid fa-magnifying-glass mes_img_enlarge" data-i18n="[title]Enlarge"></div>
5830- <div title="Caption" class="right_menu_button fa-lg fa-solid fa-envelope-open-text mes_img_caption" data-i18n="[title]Caption"></div>
5831- <div title="Delete" class="right_menu_button fa-lg fa-solid fa-trash-can mes_img_delete" data-i18n="[title]Delete"></div>
5832- </div>
5833- <div class="mes_img_swipes">
5834- <div title="Swipe left" class="right_menu_button fa-lg fa-solid fa-chevron-left mes_img_swipe_left" data-i18n="[title]Swipe left"></div>
5835- <div class="mes_img_swipe_counter">1/1</div>
5836- <div title="Swipe right" class="right_menu_button fa-lg fa-solid fa-chevron-right mes_img_swipe_right" data-i18n="[title]Swipe right"></div>
5837- </div>
5838- <img class="mes_img" src="" />
58395793 </div>
5840- <div class="mes_bias"></div>
5841- </div>
5842- <div class="swipe_right fa-solid fa-chevron-right" style="display: none;">
5843- <div class="swipes-counter"></div>
58445794 </div>
58455795 </div>
5846- </div>
5796+ <div id="group_avatars_template" class="template_element">
58475797 <div id="group_avatars_template" class="template_elementavatar avatar_collage collage_1">
5848- <div class="avatar avatar_collage collage_1">
5798+ <img alt="img1" class="img_1" src="">
5849- <img alt="img1" class="img_1" src="">
5850- </div>
5851- <div class="avatar avatar_collage collage_2">
5852- <img alt="img1" class="img_1" src="">
5853- <img alt="img2" class="img_2" src="">
5854- </div>
5855- <div class="avatar avatar_collage collage_3">
5856- <img alt="img1" class="img_1" src="">
5857- <img alt="img2" class="img_2" src="">
5858- <img alt="img3" class="img_3" src="">
5859- </div>
5860- <div class="avatar avatar_collage collage_4">
5861- <img alt="img1" class="img_1" src="">
5862- <img alt="img2" class="img_2" src="">
5863- <img alt="img3" class="img_3" src="">
5864- <img alt="img4" class="img_4" src="">
5865- </div>
5866- </div>
5867-
5868- <div id="onboarding_template" class="template_element">
5869- <div class="onboarding">
5870- <h3 data-i18n="Welcome to SillyTavern!">Welcome to SillyTavern!</h3>
5871- <ul class="justifyLeft margin-bot-10px">
5872- <li><span data-i18n="welcome_message_part_1">Read the</span> <a href="https://docs.sillytavern.app/" target="_blank" data-i18n="welcome_message_part_2">Official Documentation</a><span data-i18n="welcome_message_part_3">.</span></li>
5873- <li><span data-i18n="welcome_message_part_4">Type</span> <code>/help</code> <span data-i18n="welcome_message_part_5">in chat for commands and macros.</span></li>
5874- <li><span data-i18n="welcome_message_part_6">Join the</span> <a href="https://discord.gg/sillytavern" data-i18n="Discord server" target="_blank">Discord server</a> <span data-i18n="welcome_message_part_7">for info and announcements.</span></li>
5875- </ul>
5876- <div id="onboarding-UI-language-block" class="flex-container alignItemsBaseline">
5877- <span data-i18n="UI Language">Language:</span>
5878- <select id="onboarding_ui_language_select" class="flex1 margin0">
5879- <option value="en">English</option>
5880- </select>
58815799 </div>
5882- <b data-i18n="SillyTavern is aimed at advanced users.">
5800+ <div class="avatar avatar_collage collage_2">
5883- SillyTavern is aimed at advanced users.
5801+ <img alt="img1" class="img_1" src="">
5884- </b>
5802+ <img alt="img2" class="img_2" src="">
5885- <div>
5886- <span data-i18n="If you're new to this, enable the simplified UI mode below.">
5887- If you're new to this, enable the simplified UI mode below.
5888- </span>
5889- <br>
5890- <span data-i18n="Change it later in the 'User Settings' panel.">
5891- Change it later in the 'User Settings' panel.
5892- </span>
58935803 </div>
58945804 <labeldiv class="checkbox_labelavatar avatar_collage collage_3">
58955805 <inputimg typealt="checkboximg1" nameclass="enable_simple_modeimg_1" /src="">
5896- <span data-i18n="Enable simple UI mode">
5806+ <img alt="img2" class="img_2" src="">
5897- Enable simple UI mode
5807+ <img alt="img3" class="img_3" src="">
5898- </span>
5899- </label>
5900- <div class="expander"></div>
5901- <div class="textAlignCenter">
5902- <h3 data-i18n="Looking for AI characters?">
5903- Looking for AI characters?
5904- </h3>
5905- <span>
5906- <span class="menu_button menu_button_icon external_import_button">
5907- <i class="fa-solid fa-cloud-arrow-down"></i>
5908- <span data-i18n="onboarding_import">Import</span>
5909- </span>
5910- <span data-i18n="from supported sources or view">
5911- from supported sources or view
5912- </span>
5913- <span class="open_characters_library menu_button menu_button_icon">
5914- <i class="fa-solid fa-image-portrait"></i>
5915- <span data-i18n="Sample characters">Sample characters</span>
5916- </span>
5917- </span>
59185808 </div>
59195809 <div class="expanderavatar avatar_collage collage_4"></div>
5920- <h3 data-i18n="Your Persona">
5810+ <img alt="img1" class="img_1" src="">
5921- Your Persona
5811+ <img alt="img2" class="img_2" src="">
5922- </h3>
5812+ <img alt="img3" class="img_3" src="">
5923- <div class="justifyLeft margin-bot-10px">
5813+ <img alt="img4" class="img_4" src="">
5924- <span data-i18n="Before you get started, you must select a persona name.">
5925- Before you get started, you must select a persona name.
5926- </span>
5927- <br>
5928- <span data-i18n="welcome_message_part_8">This can be changed at any time via the</span> <code><i class="fa-solid fa-face-smile"></i></code> <span data-i18n="welcome_message_part_9">icon.</span>
59295814 </div>
5930- <h4 data-i18n="Persona Name:">Persona Name:</h4>
59315815 </div>
5932- </div>
5816+
59335817 <div id="group_member_templateonboarding_template" class="template_element">
59345818 <div class="group_memberonboarding">
5935- <div class="avatar">
5819+ <h3 data-i18n="Welcome to SillyTavern!">Welcome to SillyTavern!</h3>
5936- <img alt="Avatar" src="" />
5820+ <ul class="justifyLeft margin-bot-10px">
5937- </div>
5821+ <li><span data-i18n="welcome_message_part_1">Read the</span> <a href="https://docs.sillytavern.app/" target="_blank" data-i18n="welcome_message_part_2">Official Documentation</a><span data-i18n="welcome_message_part_3">.</span></li>
5938- <div class="group_member_name">
5822+ <li><span data-i18n="welcome_message_part_4">Type</span> <code>/help</code> <span data-i18n="welcome_message_part_5">in chat for commands and macros.</span></li>
5939- <div class="ch_name"></div>
5823+ <li><span data-i18n="welcome_message_part_6">Join the</span> <a href="https://discord.gg/sillytavern" data-i18n="Discord server" target="_blank">Discord server</a> <span data-i18n="welcome_message_part_7">for info and announcements.</span></li>
5940- <div class="tags tags_inline"></div>
5824+ </ul>
5941- </div>
5825+ <div id="onboarding-UI-language-block" class="flex-container alignItemsBaseline">
5942- <input class="ch_fav" value="" hidden />
5826+ <span data-i18n="UI Language">Language:</span>
5943- <div class="queue_position"></div>
5827+ <select id="onboarding_ui_language_select" class="flex1 margin0">
5944- <div class="group_member_icon">
5828+ <option value="en">English</option>
5945- <div title="Temporarily disable automatic replies from this character" data-action="disable" class="right_menu_button fa-solid fa-lg fa-comment-slash" data-i18n="[title]Temporarily disable automatic replies from this character"></div>
5829+ </select>
5946- <div title="Enable automatic replies from this character" data-action="enable" class="right_menu_button fa-solid fa-lg fa-comment-slash" data-i18n="[title]Enable automatic replies from this character"></div>
5830+ </div>
5947- <div title="Trigger a message from this character" data-action="speak" class="right_menu_button fa-solid fa-lg fa-comment" data-i18n="[title]Trigger a message from this character"></div>
5831+ <b data-i18n="SillyTavern is aimed at advanced users.">
5948- <div class="flexFlowColumn flex-container">
5832+ SillyTavern is aimed at advanced users.
5949- <div title="Move up" data-action="up" class="right_menu_button fa-solid fa-chevron-up" data-i18n="[title]Move up"></div>
5833+ </b>
5950- <div title="Move down" data-action="down" class="right_menu_button fa-solid fa-chevron-down" data-i18n="[title]Move down"></div>
5834+ <div>
5835+ <span data-i18n="If you're new to this, enable the simplified UI mode below.">
5836+ If you're new to this, enable the simplified UI mode below.
5837+ </span>
5838+ <br>
5839+ <span data-i18n="Change it later in the 'User Settings' panel.">
5840+ Change it later in the 'User Settings' panel.
5841+ </span>
59515842 </div>
5952- <div title="View character card" data-action="view" class="right_menu_button fa-solid fa-xl fa-image-portrait" data-i18n="[title]View character card"></div>
5843+ <label class="checkbox_label">
5953- <div title="Remove from group" data-action="remove" class="right_menu_button fa-solid fa-2xl fa-xmark" data-i18n="[title]Remove from group">
5844+ <input type="checkbox" name="enable_simple_mode" />
5845+ <span data-i18n="Enable simple UI mode">
5846+ Enable simple UI mode
5847+ </span>
5848+ </label>
5849+ <div class="expander"></div>
5850+ <div class="textAlignCenter">
5851+ <h3 data-i18n="Looking for AI characters?">
5852+ Looking for AI characters?
5853+ </h3>
5854+ <span>
5855+ <span class="menu_button menu_button_icon external_import_button">
5856+ <i class="fa-solid fa-cloud-arrow-down"></i>
5857+ <span data-i18n="onboarding_import">Import</span>
5858+ </span>
5859+ <span data-i18n="from supported sources or view">
5860+ from supported sources or view
5861+ </span>
5862+ <span class="open_characters_library menu_button menu_button_icon">
5863+ <i class="fa-solid fa-image-portrait"></i>
5864+ <span data-i18n="Sample characters">Sample characters</span>
5865+ </span>
5866+ </span>
5867+ </div>
5868+ <div class="expander"></div>
5869+ <h3 data-i18n="Your Persona">
5870+ Your Persona
5871+ </h3>
5872+ <div class="justifyLeft margin-bot-10px">
5873+ <span data-i18n="Before you get started, you must select a persona name.">
5874+ Before you get started, you must select a persona name.
5875+ </span>
5876+ <br>
5877+ <span data-i18n="welcome_message_part_8">This can be changed at any time via the</span> <code><i class="fa-solid fa-face-smile"></i></code> <span data-i18n="welcome_message_part_9">icon.</span>
59545878 </div>
5955- <div title="Add to group" data-action="add" class="right_menu_button fa-solid fa-2xl fa-plus" data-i18n="[title]Add to group"></div>
5879+ <h4 data-i18n="Persona Name:">Persona Name:</h4>
59565880 </div>
59575881 </div>
5958- </div>
5882+ <div id="group_member_template" class="template_element">
59595883 <div id="group_list_template" class="template_elementgroup_member">
59605884 <div class="group_select entity_block flex-container wide100p alignitemsflexstartavatar">
5961- <div class="avatar">
5885+ <img alt="Avatar" src="" />
5962- <img src="">
5886+ </div>
5963- </div>
5887+ <div class="group_member_name">
5964- <div class="flex-container wide100pLess70px gap5px group_select_container">
5965- <div class="wide100p group_name_block character_name_block">
59665888 <div class="ch_name"></div>
59675889 <smalldiv class="ch_additional_infotags group_select_countertags_inline"></smalldiv>
59685890 </div>
5969- <small class="character_name_block_sub_line">in this group</small>
5970- <i class='group_fav_icon fa-solid fa-star'></i>
59715891 <input class="ch_fav" value="" hidden />
59725892 <div class="group_select_block_list ch_descriptionqueue_position"></div>
59735893 <div class="tags tags_inlinegroup_member_icon"></div>
5894+ <div title="Temporarily disable automatic replies from this character" data-action="disable" class="right_menu_button fa-solid fa-lg fa-comment-slash" data-i18n="[title]Temporarily disable automatic replies from this character"></div>
5895+ <div title="Enable automatic replies from this character" data-action="enable" class="right_menu_button fa-solid fa-lg fa-comment-slash" data-i18n="[title]Enable automatic replies from this character"></div>
5896+ <div title="Trigger a message from this character" data-action="speak" class="right_menu_button fa-solid fa-lg fa-comment" data-i18n="[title]Trigger a message from this character"></div>
5897+ <div class="flexFlowColumn flex-container">
5898+ <div title="Move up" data-action="up" class="right_menu_button fa-solid fa-chevron-up" data-i18n="[title]Move up"></div>
5899+ <div title="Move down" data-action="down" class="right_menu_button fa-solid fa-chevron-down" data-i18n="[title]Move down"></div>
5900+ </div>
5901+ <div title="View character card" data-action="view" class="right_menu_button fa-solid fa-xl fa-image-portrait" data-i18n="[title]View character card"></div>
5902+ <div title="Remove from group" data-action="remove" class="right_menu_button fa-solid fa-2xl fa-xmark" data-i18n="[title]Remove from group">
5903+ </div>
5904+ <div title="Add to group" data-action="add" class="right_menu_button fa-solid fa-2xl fa-plus" data-i18n="[title]Add to group"></div>
5905+ </div>
59745906 </div>
59755907 </div>
5976- </div>
5908+ <div id="group_list_template" class="template_element">
5977- <div id="bogus_folder_template" class="template_element">
5909+ <div class="group_select entity_block flex-container wide100p alignitemsflexstart">
59785910 <div class="bogus_folder_select entity_block flex-container wide100p alignitemsflexstartavatar">
5979- <div class="avatar flex alignitemscenter textAlignCenter">
5911+ <img src="">
5980- <i class="bogus_folder_icon fa-solid fa-xl"></i>
5912+ </div>
5981- </div>
5913+ <div class="flex-container wide100pLess70px gap5px group_select_container">
59825914 <div class="flex-containerwide100p wide100pLess70pxgroup_name_block character_select_containercharacter_name_block">
59835915 <div class="wide100p character_name_blockch_name"></div>
59845916 <spansmall class="ch_namech_additional_info group_select_counter"></spansmall>
5985- <small class="ch_additional_info bogus_folder_counter"></small>
5917+ </div>
5918+ <small class="character_name_block_sub_line">in this group</small>
5919+ <i class='group_fav_icon fa-solid fa-star'></i>
5920+ <input class="ch_fav" value="" hidden />
5921+ <div class="group_select_block_list ch_description"></div>
5922+ <div class="tags tags_inline"></div>
59865923 </div>
5987- <small class="character_name_block_sub_line bogus_folder_hidden_counter"></small>
5988- <div class="bogus_folder_avatars_block avatars_inline avatars_inline_small tags tags_inline"></div>
59895924 </div>
59905925 </div>
5991- </div>
5926+ <div id="bogus_folder_template" class="template_element">
5992- <div id="bogus_folder_back_template" class="template_element">
5927+ <div class="bogus_folder_select entity_block flex-container wide100p alignitemsflexstart">
59935928 <div class="bogus_folder_select bogus_folder_select_backavatar flex-container wide100p alignitemsflexstart" id="BogusFolderBack"alignitemscenter tagid="backtextAlignCenter">
5994- <div class="avatar flex alignitemscenter textAlignCenter">
5929+ <i class="bogus_folder_icon fa-solid fa-xl"></i>
5995- <i class="bogus_folder_icon fa-solid fa-xl fa-right-from-bracket fa-flip-horizontal"></i>
5930+ </div>
5996- </div>
5931+ <div class="flex-container wide100pLess70px character_select_container">
59975932 <div class="bogus_folder_back_placeholder flex alignitemscenterwide100p textAlignCentercharacter_name_block">
5998- <i class="bogus_folder_icon fa-solid fa-xl fa-right-from-bracket fa-flip-horizontal"></i>
5933+ <span class="ch_name"></span>
5999- </div>
5934+ <small class="ch_additional_info bogus_folder_counter"></small>
6000- <div class="flex-container wide100pLess70px character_select_container height100p alignitemscenter">
5935+ </div>
60015936 <divsmall class="wide100pcharacter_name_block_sub_line character_name_blockbogus_folder_hidden_counter"></small>
60025937 <spandiv class="ch_namebogus_folder_avatars_block avatars_inline avatars_inline_small tags tags_inline">Go back</spandiv>
60035938 </div>
60045939 </div>
60055940 </div>
6006- </div>
5941+ <div id="bogus_folder_back_template" class="template_element">
60075942 <div class="bogus_folder_select bogus_folder_select_back flex-container wide100p alignitemsflexstart" id="inline_avatar_templateBogusFolderBack" classtagid="template_elementback">
60085943 <div class="avatar inline_avatar flex alignitemscenter textAlignCenter">
6009- <img src="">
5944+ <i class="bogus_folder_icon fa-solid fa-xl fa-right-from-bracket fa-flip-horizontal"></i>
5945+ </div>
5946+ <div class="bogus_folder_back_placeholder flex alignitemscenter textAlignCenter">
5947+ <i class="bogus_folder_icon fa-solid fa-xl fa-right-from-bracket fa-flip-horizontal"></i>
5948+ </div>
5949+ <div class="flex-container wide100pLess70px character_select_container height100p alignitemscenter">
5950+ <div class="wide100p character_name_block">
5951+ <span class="ch_name">Go back</span>
5952+ </div>
5953+ </div>
5954+ </div>
60105955 </div>
6011- </div>
5956+ <div id="inline_avatar_template" class="template_element">
6012- <div id="alternate_greetings_template" class="template_element">
5957+ <div class="avatar inline_avatar flex alignitemscenter textAlignCenter">
6013- <div class="alternate_grettings flexFlowColumn flex-container">
5958+ <img src="">
6014- <div class="title_restorable">
6015- <h3><span data-i18n="Alternate Greetings">Alternate Greetings</span></h3>
6016- <div title="Add" class="menu_button fa-solid fa-plus add_alternate_greeting" data-i18n="[title]Add"></div>
60175959 </div>
6018- <small class="justifyLeft" data-i18n="Alternate_Greetings_desc">
5960+ </div>
6019- These will be displayed as swipes on the first message when starting a new chat.
5961+ <div id="alternate_greetings_template" class="template_element">
6020- Group members can select one of them to initiate the conversation.
5962+ <div class="alternate_grettings flexFlowColumn flex-container">
6021- </small>
5963+ <div class="title_restorable">
6022- <hr>
5964+ <h3><span data-i18n="Alternate Greetings">Alternate Greetings</span></h3>
6023- <div class="alternate_greetings_list flexFlowColumn flex-container wide100p">
5965+ <div title="Add" class="menu_button fa-solid fa-plus add_alternate_greeting" data-i18n="[title]Add"></div>
6024- <strong class="alternate_grettings_hint margin-bot-10px">
5966+ </div>
6025- <span data-i18n="alternate_greetings_hint_1">Click the</span> <i class="fa-solid fa-plus"></i> <span data-i18n="alternate_greetings_hint_2">button to get started!</span>
5967+ <small class="justifyLeft" data-i18n="Alternate_Greetings_desc">
6026- </strong>
5968+ These will be displayed as swipes on the first message when starting a new chat.
5969+ Group members can select one of them to initiate the conversation.
5970+ </small>
5971+ <hr>
5972+ <div class="alternate_greetings_list flexFlowColumn flex-container wide100p">
5973+ <strong class="alternate_grettings_hint margin-bot-10px">
5974+ <span data-i18n="alternate_greetings_hint_1">Click the</span> <i class="fa-solid fa-plus"></i> <span data-i18n="alternate_greetings_hint_2">button to get started!</span>
5975+ </strong>
5976+ </div>
60275977 </div>
60285978 </div>
6029- </div>
5979+ <div id="alternate_greeting_form_template" class="template_element">
60305980 <div id="alternate_greeting_form_template" class="template_elementalternate_greeting">
60315981 <div class="alternate_greetingtitle_restorable">
6032- <div class="title_restorable">
5982+ <strong><span data-i18n="Alternate Greeting #">Alternate Greeting #</span><span class="greeting_index"></span></strong>
6033- <strong><span data-i18n="Alternate Greeting #">Alternate Greeting #</span><span class="greeting_index"></span></strong>
5983+ <div class="menu_button fa-solid fa-trash-alt delete_alternate_greeting"></div>
6034- <div class="menu_button fa-solid fa-trash-alt delete_alternate_greeting"></div>
5984+ </div>
5985+ <textarea name="alternate_greetings" data-i18n="[placeholder](This will be the first message from the character that starts every chat)" placeholder="(This will be the first message from the character that starts every chat)" class="text_pole textarea_compact alternate_greeting_text" value="" autocomplete="off" rows="16"></textarea>
60355986 </div>
6036- <textarea name="alternate_greetings" data-i18n="[placeholder](This will be the first message from the character that starts every chat)" placeholder="(This will be the first message from the character that starts every chat)" class="text_pole textarea_compact alternate_greeting_text" maxlength="50000" value="" autocomplete="off" rows="16"></textarea>
60375987 </div>
6038- </div>
60395988
60405989 <!-- chat and input bar -->
60415990 <div id="typing_indicator_template" class="template_element">
60425991 <div class="typing_indicator"><span class="typing_indicator_name">CHAR</span> is typing</div>
60435992 </div>
60445993 <div id="message_file_template" class="template_element">
60455994 <div class="mes_file_container">
60465995 <div class="fa-lg fa-solid fa-file-alt mes_file_icon"></div>
60475996 <div class="mes_file_name"></div>
60485997 <div class="mes_file_size"></div>
60495998 <div class="right_menu_button mes_file_open fa-solid fa-magnifying-glass" title="View contents" data-i18n="[title]View contents"></div>
60505999 <div class="right_menu_button mes_file_delete fa-solid fa-trash-can" title="Remove the file" data-i18n="[title]Remove the file"></div>
6000+ </div>
60516001 </div>
60526002 </div>
60536003 <div id="movingDivs">
@@ -6070,7 +6020,7 @@
60706020 <b data-i18n="Unique to this chat">Unique to this chat</b>.<br>
60716021 <span data-i18n="Checkpoints inherit the Note from their parent, and can be changed individually after that.">Checkpoints inherit the Note from their parent, and can be changed individually after that.</span><br>
60726022 </small>
60736023 <textarea id="extension_floating_prompt" class="text_pole textarea_compact" rows="8" maxlength="50000"></textarea>
60746024 <div class="extension_token_counter">
60756025 <span data-i18n="extension_token_counter">Tokens:</span> <span id="extension_floating_prompt_token_counter">0</span>
60766026 </div>
@@ -6127,7 +6077,7 @@
61276077 <div class="inline-drawer-content">
61286078 <small data-i18n="Will be automatically added as the author's note for this character. Will be used in groups, but can't be modified when a group chat is open.">Will be automatically added as the author's note for this character. Will be used in groups, but
61296079 can't be modified when a group chat is open.</small>
61306080 <textarea id="extension_floating_chara" class="text_pole textarea_compact" rows="8" maxlength="50000" placeholder="Example:&#10;[Scenario: wacky adventures; Genre: romantic comedy; Style: verbose, creative]"></textarea>
61316081 <div class="extension_token_counter">
61326082 <span data-i18n="extension_token_counter">Tokens:</span> <span id="extension_floating_chara_token_counter">0</span>
61336083 </div>
@@ -6159,7 +6109,7 @@
61596109 </div>
61606110 <div class="inline-drawer-content">
61616111 <small data-i18n="Will be automatically added as the Author's Note for all new chats.">Will be automatically added as the Author's Note for all new chats.</small>
61626112 <textarea id="extension_floating_default" class="text_pole textarea_compact" rows="8" maxlength="50000" placeholder="Example:&#10;[Scenario: wacky adventures; Genre: romantic comedy; Style: verbose, creative]"></textarea>
61636113 <div class="extension_token_counter">
61646114 <span data-i18n="extension_token_counter">Tokens:</span> <span id="extension_floating_default_token_counter">0</span>
61656115 </div>
@@ -6505,60 +6455,7 @@
65056455 </a>
65066456 </div>
65076457 </div>
6508- <div id="export_format_popup" class="list-group">
6458+
6509- <div class="export_format list-group-item" data-format="png">PNG</div>
6510- <div class="export_format list-group-item" data-format="json">JSON</div>
6511- </div>
6512- <div id="zoomed_avatar_template" class="template_element">
6513- <div class="zoomed_avatar">
6514- <div class="panelControlBar flex-container">
6515- <div class="fa-fw fa-solid fa-grip drag-grabber"></div>
6516- <div class="fa-fw fa-solid fa-circle-xmark dragClose" id="closeZoom"></div>
6517- </div>
6518- <div class="zoomed_avatar_container">
6519- <img class="zoomed_avatar_img" src="" data-izoomify-url="" data-izoomify-magnify="1.8" data-izoomify-duration="300" alt="">
6520- </div>
6521- </div>
6522- </div>
6523- <template id="generic_draggable_template">
6524- <div class="draggable">
6525- <div class="dragTitle"></div>
6526- <div class="panelControlBar flex-container">
6527- <div class="fa-fw fa-solid fa-grip drag-grabber"></div>
6528- <div class="fa-fw fa-solid fa-circle-xmark dragClose"></div>
6529- </div>
6530- </div>
6531- </template>
6532- <div id="user_avatar_template" class="template_element">
6533- <div class="avatar-container">
6534- <div imgfile="" class="avatar">
6535- <img src="" alt="User Avatar">
6536- </div>
6537- <div class="flex-container wide100pLess70px character_select_container">
6538- <div class="wide100p character_name_block">
6539- <span class="ch_name flex1"></span>
6540- <div class="avatar-buttons">
6541- <button class="menu_button bind_user_name" title="Bind user name to that avatar" data-i18n="[title]Bind user name to that avatar">
6542- <i class="fa-fw fa-solid fa-user-edit"></i>
6543- </button>
6544- <button class="menu_button set_persona_image" title="Change persona image" data-i18n="[title]Change persona image">
6545- <i class="fa-fw fa-solid fa-image"></i>
6546- </button>
6547- <button class="menu_button set_default_persona" title="Select this as default persona for the new chats." data-i18n="[title]Select this as default persona for the new chats.">
6548- <i class="fa-fw fa-solid fa-crown"></i>
6549- </button>
6550- <button class="menu_button duplicate_persona" title="Duplicate persona" data-i18n="[title]Duplicate persona">
6551- <i class="fa-fw fa-solid fa-clone"></i>
6552- </button>
6553- <button class="menu_button delete_avatar" title="Delete persona" data-i18n="[title]Delete persona">
6554- <i class="fa-fw fa-solid fa-trash-alt"></i>
6555- </button>
6556- </div>
6557- </div>
6558- <div class="ch_description"></div>
6559- </div>
6560- </div>
6561- </div>
65626459 <!-- Script includes -->
65636460 <script src="lib/diff_match_patch.js"></script>
65646461 <script src="lib/object-hasown.js"></script>
@@ -6610,4 +6507,4 @@
66106507 </script>
66116508</body>
66126509
6613-</html>
6613 \ No newline at end of file
6510+</html>
public/script.js+7 -2
@@ -454,7 +454,9 @@ export const event_types = {
454454 // TODO: Naming convention is inconsistent with other events
455455 CHARACTER_DELETED: 'characterDeleted',
456456 CHARACTER_DUPLICATED: 'character_duplicated',
457- SMOOTH_STREAM_TOKEN_RECEIVED: 'smooth_stream_token_received',
457+ /** @deprecated The event is aliased to STREAM_TOKEN_RECEIVED. */
458+ SMOOTH_STREAM_TOKEN_RECEIVED: 'stream_token_received',
459+ STREAM_TOKEN_RECEIVED: 'stream_token_received',
458460 FILE_ATTACHMENT_DELETED: 'file_attachment_deleted',
459461 WORLDINFO_FORCE_ACTIVATE: 'worldinfo_force_activate',
460462 OPEN_CHARACTER_LIBRARY: 'open_character_library',
@@ -3122,6 +3124,7 @@ class StreamingProcessor {
31223124 if (logprobs) {
31233125 this.messageLogprobs.push(...(Array.isArray(logprobs) ? logprobs : [logprobs]));
31243126 }
3127+ await eventSource.emit(event_types.STREAM_TOKEN_RECEIVED, text);
31253128 await sw.tick(() => this.onProgressStreaming(this.messageId, this.continueMessage + text));
31263129 }
31273130 const seconds = (timestamps[timestamps.length - 1] - timestamps[0]) / 1000;
@@ -10148,7 +10151,7 @@ jQuery(async function () {
1014810151 }
1014910152 });
1015010153
1015110154 $(document).on('click', '.mes_edit_cancel', async function () {
1015210155 let text = chat[this_edit_mes_id]['mes'];
1015310156
1015410157 $(this).closest('.mes_block').find('.mes_text').empty();
@@ -10166,6 +10169,8 @@ jQuery(async function () {
1016610169 ));
1016710170 appendMediaToMessage(chat[this_edit_mes_id], $(this).closest('.mes'));
1016810171 addCopyToCodeBlocks($(this).closest('.mes'));
10172+
10173+ await eventSource.emit(event_types.MESSAGE_UPDATED, this_edit_mes_id);
1016910174 this_edit_mes_id = undefined;
1017010175 });
1017110176
public/scripts/RossAscends-mods.js+1 -1
@@ -296,7 +296,7 @@ export async function favsToHotswap() {
296296
297297 //helpful instruction message if no characters are favorited
298298 if (favs.length == 0) {
299299 container.html(`<small><span><i class="fa-solid fa-star"></i>&nbsp;${DOMPurify.sanitize(container.attr('no_favs'))}</span></small>`);
300300 return;
301301 }
302302
public/scripts/extensions/memory/index.js+46 -24
@@ -15,6 +15,7 @@ import {
1515 generateRaw,
1616 getMaxContextSize,
1717 setExtensionPrompt,
18+ streamingProcessor,
1819} from '../../../script.js';
1920import { is_group_generating, selected_group } from '../../group-chats.js';
2021import { loadMovingUIState } from '../../power-user.js';
@@ -408,8 +409,8 @@ async function onChatEvent() {
408409 return;
409410 }
410411
411412 // Generation isStreaming in -progress, summary prevented
412413 if (is_send_pressstreamingProcessor && !streamingProcessor.isFinished) {
413414 return;
414415 }
415416
@@ -446,15 +447,9 @@ async function onChatEvent() {
446447 delete chat[chat.length - 1].extra.memory;
447448 }
448449
449- try {
450+ summarizeChat(context)
450- await summarizeChat(context);
451+ .catch(console.error)
451- }
452+ .finally(saveLastValues);
452- catch (error) {
453- console.log(error);
454- }
455- finally {
456- saveLastValues();
457- }
458453}
459454
460455/**
@@ -567,7 +562,7 @@ async function getSummaryPromptForNow(context, force) {
567562 await waitUntilCondition(() => is_group_generating === false, 1000, 10);
568563 }
569564 // Wait for the send button to be released
570565 await waitUntilCondition(() => is_send_press === false, 30000, 100);
571566 } catch {
572567 console.debug('Timeout waiting for is_send_press');
573568 return '';
@@ -650,19 +645,29 @@ async function summarizeChatWebLLM(context, force) {
650645 params.max_tokens = extension_settings.memory.overrideResponseLength;
651646 }
652647
653- const summary = await generateWebLlmChatPrompt(messages, params);
648+ try {
654- const newContext = getContext();
649+ inApiCall = true;
650+ const summary = await generateWebLlmChatPrompt(messages, params);
651+ const newContext = getContext();
655652
656- // something changed during summarization request
653+ if (!summary) {
657- if (newContext.groupId !== context.groupId ||
654+ console.warn('Empty summary received');
658- newContext.chatId !== context.chatId ||
655+ return;
659- (!newContext.groupId && (newContext.characterId !== context.characterId))) {
656+ }
660- console.log('Context changed, summary discarded');
661- return;
662- }
663657
664- setMemoryContext(summary, true, lastUsedIndex);
658+ // something changed during summarization request
665- return summary;
659+ if (newContext.groupId !== context.groupId ||
660+ newContext.chatId !== context.chatId ||
661+ (!newContext.groupId && (newContext.characterId !== context.characterId))) {
662+ console.log('Context changed, summary discarded');
663+ return;
664+ }
665+
666+ setMemoryContext(summary, true, lastUsedIndex);
667+ return summary;
668+ } finally {
669+ inApiCall = false;
670+ }
666671}
667672
668673async function summarizeChatMain(context, force, skipWIAN) {
@@ -677,12 +682,18 @@ async function summarizeChatMain(context, force, skipWIAN) {
677682 let index = null;
678683
679684 if (prompt_builders.DEFAULT === extension_settings.memory.prompt_builder) {
680- summary = await generateQuietPrompt(prompt, false, skipWIAN, '', '', extension_settings.memory.overrideResponseLength);
685+ try {
686+ inApiCall = true;
687+ summary = await generateQuietPrompt(prompt, false, skipWIAN, '', '', extension_settings.memory.overrideResponseLength);
688+ } finally {
689+ inApiCall = false;
690+ }
681691 }
682692
683693 if ([prompt_builders.RAW_BLOCKING, prompt_builders.RAW_NON_BLOCKING].includes(extension_settings.memory.prompt_builder)) {
684694 const lock = extension_settings.memory.prompt_builder === prompt_builders.RAW_BLOCKING;
685695 try {
696+ inApiCall = true;
686697 if (lock) {
687698 deactivateSendButtons();
688699 }
@@ -700,12 +711,18 @@ async function summarizeChatMain(context, force, skipWIAN) {
700711 summary = await generateRaw(rawPrompt, '', false, false, prompt, extension_settings.memory.overrideResponseLength);
701712 index = lastUsedIndex;
702713 } finally {
714+ inApiCall = false;
703715 if (lock) {
704716 activateSendButtons();
705717 }
706718 }
707719 }
708720
721+ if (!summary) {
722+ console.warn('Empty summary received');
723+ return;
724+ }
725+
709726 const newContext = getContext();
710727
711728 // something changed during summarization request
@@ -840,6 +857,11 @@ async function summarizeChatExtras(context) {
840857 const summary = await callExtrasSummarizeAPI(resultingString);
841858 const newContext = getContext();
842859
860+ if (!summary) {
861+ console.warn('Empty summary received');
862+ return;
863+ }
864+
843865 // something changed during summarization request
844866 if (newContext.groupId !== context.groupId
845867 || newContext.chatId !== context.chatId
public/scripts/instruct-mode.js+37 -10
@@ -7,7 +7,7 @@ import {
77 power_user,
88 context_presets,
99} from './power-user.js';
1010import { regexFromString, resetScrollHeight } from './utils.js';
1111
1212/**
1313 * @type {any[]} Instruct mode presets.
@@ -78,28 +78,29 @@ function migrateInstructModeSettings(settings) {
7878 * Loads instruct mode settings from the given data object.
7979 * @param {object} data Settings data object.
8080 */
8181export async function loadInstructMode(data) {
8282 if (data.instruct !== undefined) {
8383 instruct_presets = data.instruct;
8484 }
8585
8686 migrateInstructModeSettings(power_user.instruct);
8787
88+ $('#instruct_enabled').parent().find('i').toggleClass('toggleEnabled', !!power_user.instruct.enabled);
89+ $('#instructSettingsBlock, #InstructSequencesColumn').toggleClass('disabled', !power_user.instruct.enabled);
90+ $('#instruct_bind_to_context').parent().find('i').toggleClass('toggleEnabled', !!power_user.instruct.bind_to_context);
91+
8892 controls.forEach(control => {
8993 const $element = $(`#${control.id}`);
9094
9195 if (control.isCheckbox) {
9296 $element.prop('checked', power_user.instruct[control.property]);
9397 } else {
9498 $element[0].valinnerText = (power_user.instruct[control.property]);
9599 }
96100
97101 $element.on('input', async function () {
98102 power_user.instruct[control.property] = control.isCheckbox ? !!$(this).prop('checked') : $(this)[0].val()innerText;
99103 saveSettingsDebounced();
100- if (!control.isCheckbox) {
101- await resetScrollHeight($element);
102- }
103104 });
104105
105106 if (control.trigger) {
@@ -107,6 +108,9 @@ export function loadInstructMode(data) {
107108 }
108109 });
109110
111+ $('#instruct_system_sequence').css('height', 'auto');
112+ $('#instruct_system_suffix').css('height', 'auto');
113+
110114 instruct_presets.forEach((preset) => {
111115 const name = preset.name;
112116 const option = document.createElement('option');
@@ -604,11 +608,29 @@ jQuery(() => {
604608
605609 $('#instruct_system_same_as_user').on('input', function () {
606610 const state = !!$(this).prop('checked');
607- $('#instruct_system_sequence').prop('disabled', state);
611+ if (state) {
608612 $('#instruct_system_suffixinstruct_system_sequence_block').propaddClass('disabled', state);
613+ $('#instruct_system_suffix_block').addClass('disabled');
614+ $('#instruct_system_sequence').css('height', 'auto');
615+ $('#instruct_system_suffix').css('height', 'auto');
616+ $('#instruct_system_sequence').prop('contenteditable', false);
617+ $('#instruct_system_suffix').prop('contenteditable', false);
618+ } else {
619+ $('#instruct_system_sequence_block').removeClass('disabled');
620+ $('#instruct_system_suffix_block').removeClass('disabled');
621+ $('#instruct_system_sequence').css('height', '');
622+ $('#instruct_system_suffix').css('height', '');
623+ $('#instruct_system_sequence').prop('contenteditable', true);
624+ $('#instruct_system_suffix').prop('contenteditable', true);
625+ }
626+
609627 });
610628
611629 $('#instruct_enabled').on('change', function () {
630+ //color toggle for the main switch
631+ $('#instruct_enabled').parent().find('i').toggleClass('toggleEnabled', !!power_user.instruct.enabled);
632+ $('#instructSettingsBlock, #InstructSequencesColumn').toggleClass('disabled', !power_user.instruct.enabled);
633+
612634 if (!power_user.instruct.bind_to_context) {
613635 return;
614636 }
@@ -622,6 +644,10 @@ jQuery(() => {
622644 }
623645 });
624646
647+ $('#instruct_bind_to_context').on('change', function () {
648+ $('#instruct_bind_to_context').parent().find('i').toggleClass('toggleEnabled', !!power_user.instruct.bind_to_context);
649+ });
650+
625651 $('#instruct_presets').on('change', function () {
626652 const name = String($(this).find(':selected').val());
627653 const preset = instruct_presets.find(x => x.name === name);
@@ -641,7 +667,8 @@ jQuery(() => {
641667 if (control.isCheckbox) {
642668 $element.prop('checked', power_user.instruct[control.property]).trigger('input');
643669 } else {
644670 $element[0].valinnerText = (power_user.instruct[control.property]).trigger('input');
671+ $element.trigger('input');
645672 }
646673 }
647674 });
public/scripts/power-user.js+12 -15
@@ -1481,7 +1481,7 @@ async function loadPowerUserSettings(settings, data) {
14811481 $('#auto_swipe_minimum_length').val(power_user.auto_swipe_minimum_length);
14821482 $('#auto_swipe_blacklist').val(power_user.auto_swipe_blacklist.join(', '));
14831483 $('#auto_swipe_blacklist_threshold').val(power_user.auto_swipe_blacklist_threshold);
14841484 $('#custom_stopping_strings').valtext(power_user.custom_stopping_strings);
14851485 $('#custom_stopping_strings_macro').prop('checked', power_user.custom_stopping_strings_macro);
14861486 $('#fuzzy_search_checkbox').prop('checked', power_user.fuzzy_search);
14871487 $('#persona_show_notifications').prop('checked', power_user.persona_show_notifications);
@@ -1511,7 +1511,7 @@ async function loadPowerUserSettings(settings, data) {
15111511 $('#waifuMode').prop('checked', power_user.waifuMode);
15121512 $('#movingUImode').prop('checked', power_user.movingUI);
15131513 $('#noShadowsmode').prop('checked', power_user.noShadows);
15141514 $('#start_reply_with').valtext(power_user.user_prompt_bias);
15151515 $('#chat-show-reply-prefix-checkbox').prop('checked', power_user.show_user_prompt_bias);
15161516 $('#auto_continue_enabled').prop('checked', power_user.auto_continue.enabled);
15171517 $('#auto_continue_allow_chat_completions').prop('checked', power_user.auto_continue.allow_chat_completions);
@@ -1613,7 +1613,7 @@ async function loadPowerUserSettings(settings, data) {
16131613 switchReducedMotion();
16141614 switchCompactInputArea();
16151615 reloadMarkdownProcessor(power_user.render_formulas);
16161616 await loadInstructMode(data);
16171617 await loadContextSettings();
16181618 loadMaxContextUnlocked();
16191619 switchWaifuMode();
@@ -1761,13 +1761,14 @@ async function loadContextSettings() {
17611761 if (control.isCheckbox) {
17621762 $element.prop('checked', power_user.context[control.property]);
17631763 } else {
17641764 $element[0].val(innerText = power_user.context[control.property]);
17651765 }
1766+ console.log(`Setting ${$element.prop('id')} to ${power_user.context[control.property]}`);
17661767
17671768 // If the setting already exists, no need to duplicate it
17681769 // TODO: Maybe check the power_user object for the setting instead of a flag?
17691770 $element.on('input keyup', async function () {
17701771 const value = control.isCheckbox ? !!$(this).prop('checked') : $(this)[0].val()innerText;
17711772 if (control.isGlobalSetting) {
17721773 power_user[control.property] = value;
17731774 } else {
@@ -1775,9 +1776,6 @@ async function loadContextSettings() {
17751776 }
17761777
17771778 saveSettingsDebounced();
1778- if (!control.isCheckbox) {
1779- await resetScrollHeight($element);
1780- }
17811779 });
17821780 });
17831781
@@ -1791,7 +1789,7 @@ async function loadContextSettings() {
17911789 });
17921790
17931791 $('#context_presets').on('change', function () {
17941792 const name = String($(this).find(':selected').valtext());
17951793 const preset = context_presets.find(x => x.name === name);
17961794
17971795 if (!preset) {
@@ -1816,9 +1814,8 @@ async function loadContextSettings() {
18161814 .prop('checked', control.isGlobalSetting ? power_user[control.property] : power_user.context[control.property])
18171815 .trigger('input');
18181816 } else {
1819- $element
1817+ $element[0].innerText = (control.isGlobalSetting ? power_user[control.property] : power_user.context[control.property])
1820- .val(control.isGlobalSetting ? power_user[control.property] : power_user.context[control.property])
1818+ $element.trigger('input');
1821- .trigger('input');
18221819 }
18231820 }
18241821 });
@@ -3120,7 +3117,7 @@ $(document).ready(() => {
31203117 });
31213118
31223119 $('#start_reply_with').on('input', function () {
31233120 power_user.user_prompt_bias = String($(this)[0].val()innerText);
31243121 saveSettingsDebounced();
31253122 });
31263123
@@ -3652,7 +3649,7 @@ $(document).ready(() => {
36523649 });
36533650
36543651 $('#custom_stopping_strings').on('input', function () {
36553652 power_user.custom_stopping_strings = String($(this)[0].val(innerText).trim();
36563653 saveSettingsDebounced();
36573654 });
36583655
public/scripts/sse-stream.js+0 -2
@@ -1,4 +1,3 @@
1-import { eventSource, event_types } from '../script.js';
21import { power_user } from './power-user.js';
32import { delay } from './utils.js';
43
@@ -268,7 +267,6 @@ export class SmoothEventSourceStream extends EventSourceStream {
268267 hasFocus && await delay(getDelay(lastStr));
269268 controller.enqueue(new MessageEvent(event.type, { data: JSON.stringify(parsed.data) }));
270269 lastStr = parsed.chunk;
271- hasFocus && await eventSource.emit(event_types.SMOOTH_STREAM_TOKEN_RECEIVED, parsed.chunk);
272270 }
273271 } catch (error) {
274272 console.debug('Smooth Streaming parsing error', error);
public/style.css+32 -15
@@ -1602,6 +1602,7 @@ body[data-stscript-style] .hljs.language-stscript {
16021602 .hljs-pipe {
16031603 color: var(--ac-style-color-punctuation);
16041604 }
1605+
16051606 .hljs-pipebreak {
16061607 color: var(--ac-style-color-type);
16071608 }
@@ -1695,6 +1696,7 @@ body[data-stscript-style] .hljs.language-stscript {
16951696 background-color: var(--ac-color-selectedBackground);
16961697 color: var(--ac-color-selectedText);
16971698 }
1699+
16981700 &.selected.not-selectable>* {
16991701 background-color: var(--ac-color-notSelectableBackground);
17001702 color: var(--ac-color-notSelectableText);
@@ -1776,11 +1778,13 @@ body[data-stscript-style] .hljs.language-stscript {
17761778 padding: 0.25em 0.25em 0.5em 0.25em;
17771779 border-bottom: 1px solid var(--ac-color-border);
17781780
17791781 > .head {
17801782 display: flex;
17811783 gap: 0.5em;
17821784 }
1783- > .head > .name, > .name {
1785+
1786+ >.head>.name,
1787+ >.name {
17841788 flex: 1 1 auto;
17851789 font-weight: bold;
17861790 color: var(--ac-color-text);
@@ -1790,20 +1794,25 @@ body[data-stscript-style] .hljs.language-stscript {
17901794 text-decoration: 1px dotted underline;
17911795 }
17921796 }
1793- > .head > .source {
1797+
1798+ >.head>.source {
17941799 padding: 0 0.5em;
17951800 cursor: help;
17961801 display: flex;
17971802 align-items: center;
17981803 gap: 0.5em;
1804+
17991805 &.isThirdParty.isExtension {
18001806 color: #F89406;
18011807 }
1808+
18021809 &.isCore {
18031810 color: transparent;
1811+
18041812 &.isExtension {
18051813 color: #51A351;
18061814 }
1815+
18071816 &:after {
18081817 content: '';
18091818 order: -1;
@@ -2605,7 +2614,8 @@ select option:not(:checked) {
26052614 color: var(--golden) !important;
26062615}
26072616
26082617.world_set {,
2618+.toggleEnabled {
26092619 color: var(--active) !important;
26102620}
26112621
@@ -5398,6 +5408,7 @@ body:not(.movingUI) .drawer-content.maximized {
53985408.popup:has(.faPicker) {
53995409 /* Fix height for fa picker popup, otherwise search is making it resize weirdly */
54005410 height: 70%;
5411+
54015412 .popup-content {
54025413 display: flex;
54035414 flex-direction: column;
@@ -5407,7 +5418,8 @@ body:not(.movingUI) .drawer-content.maximized {
54075418.faPicker-container {
54085419 display: flex;
54095420 flex-direction: column;
54105421 overflow: hidden;;
5422+ ;
54115423}
54125424
54135425.faQuery-container {
@@ -5417,22 +5429,23 @@ body:not(.movingUI) .drawer-content.maximized {
54175429.faPicker {
54185430 flex: 1 1 auto;
54195431 overflow: auto;
54205432 gap: 1em;
54215433 display: grid;
54225434 grid-template-columns: repeat(auto-fill, minmax(3.5em, 1fr));
54235435
54245436 .menu_button {
54255437 aspect-ratio: 1 / 1;
54265438 font-size: 2em;
54275439 height: 1lh;
54285440 line-height: 1.2;
54295441 padding: 0.25em;
54305442 width: unset;
54315443 box-sizing: content-box;
5444+
54325445 &.hidden {
54335446 display: none;
54345447 }
54355448 }
54365449}
54375450
54385451.faPicker:not(:has(:not(.hidden)))::after {
@@ -5440,3 +5453,7 @@ body:not(.movingUI) .drawer-content.maximized {
54405453 color: var(--SmartThemeBodyColor);
54415454 opacity: 0.7;
54425455}
5456+
5457+#advanced-formatting-button div[contenteditable] {
5458+ overflow-wrap: anywhere;
5459+}