More Mexican Spanish Translation (#1184)

* More spanish translation, fixed typo on index

Praying that typo fix won't mess with the other translations. Changed "idel" for "idle".

* Changed "es-spa" to "es-mx"

For Mexican Spanish. Spanish has a ridiculous amount of variants and the wording that might seem fine to me might be weird or maybe offensive in other variants.

* Trying to translate the View API key pop up

I'm also failing badly

* "Mirostat Mode" was repeated twice. Not anymore.

Also more Mexican Spanish translation.

* Mirostat Tau and Mirostat Era aren't repeated anymore.

* Partially translated AI Response Formatting to es-MX
This commit is contained in:
Call me Jim 2023-09-27 00:52:49 -06:00 committed by GitHub
parent 0569b706dc
commit 02418d2d97
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 427 additions and 391 deletions

View File

@ -6,7 +6,7 @@
"ru-ru", "ru-ru",
"it-it", "it-it",
"nl-nl", "nl-nl",
"es-spa" "es-mx"
], ],
"zh-cn": { "zh-cn": {
"clickslidertips": "点击滑块右侧数字可手动输入", "clickslidertips": "点击滑块右侧数字可手动输入",
@ -114,6 +114,8 @@
"to get your NovelAI API key.": "以获取您的 NovelAI API 密钥。", "to get your NovelAI API key.": "以获取您的 NovelAI API 密钥。",
"Enter it in the box below": "将其输入到下面的输入框中", "Enter it in the box below": "将其输入到下面的输入框中",
"Novel AI Model": "NovelAI 模型", "Novel AI Model": "NovelAI 模型",
"Euterpe": "Euterpe",
"Krake": "Krake",
"No connection": "无连接", "No connection": "无连接",
"oobabooga/text-generation-webui": "", "oobabooga/text-generation-webui": "",
"Make sure you run it with": "确保启动时包含 --api 参数", "Make sure you run it with": "确保启动时包含 --api 参数",
@ -155,9 +157,13 @@
"Always add character's name to prompt": "始终将角色名称添加到提示符中", "Always add character's name to prompt": "始终将角色名称添加到提示符中",
"Keep Example Messages in Prompt": "保持示例消息提示", "Keep Example Messages in Prompt": "保持示例消息提示",
"Remove Empty New Lines from Output": "从输出中删除空的新行", "Remove Empty New Lines from Output": "从输出中删除空的新行",
"Pygmalion Formatting": "Pygmalion 格式",
"Disabled for all models": "对所有模型禁用", "Disabled for all models": "对所有模型禁用",
"Automatic (based on model name)": "自动(基于型号名称)", "Automatic (based on model name)": "自动(基于型号名称)",
"Enabled for all models": "所有模型启用", "Enabled for all models": "所有模型启用",
"Multigen": "Multigen",
"First chunk (tokens)": "第一个区块Tokens",
"Next chunks (tokens)": "接下来的区块Tokens",
"Anchors Order": "锚点顺序", "Anchors Order": "锚点顺序",
"Character then Style": "字符然后样式", "Character then Style": "字符然后样式",
"Style then Character": "样式然后字符", "Style then Character": "样式然后字符",
@ -281,6 +287,7 @@
"Regenerate": "重新生成", "Regenerate": "重新生成",
"PNG": "PNG", "PNG": "PNG",
"JSON": "JSON", "JSON": "JSON",
"WEBP": "WEBP",
"presets": "预设", "presets": "预设",
"Message Sound": "AI 消息提示音", "Message Sound": "AI 消息提示音",
"Author's Note": "作者注释", "Author's Note": "作者注释",
@ -664,6 +671,8 @@
"to get your NovelAI API key.": "あなたの NovelAI API キーを取得するために。", "to get your NovelAI API key.": "あなたの NovelAI API キーを取得するために。",
"Enter it in the box below": "以下のボックスに入力してください", "Enter it in the box below": "以下のボックスに入力してください",
"Novel AI Model": "NovelAI モデル", "Novel AI Model": "NovelAI モデル",
"Euterpe": "Euterpe",
"Krake": "Krake",
"No connection": "接続なし", "No connection": "接続なし",
"oobabooga/text-generation-webui": "", "oobabooga/text-generation-webui": "",
"Make sure you run it with": "必ず --api の引数を含めて起動してください", "Make sure you run it with": "必ず --api の引数を含めて起動してください",
@ -704,9 +713,13 @@
"Always add character's name to prompt": "常にキャラクター名をプロンプトに追加", "Always add character's name to prompt": "常にキャラクター名をプロンプトに追加",
"Keep Example Messages in Prompt": "プロンプトに例示メッセージを保持", "Keep Example Messages in Prompt": "プロンプトに例示メッセージを保持",
"Remove Empty New Lines from Output": "出力から空の改行を削除", "Remove Empty New Lines from Output": "出力から空の改行を削除",
"Pygmalion Formatting": "ピグマリオンフォーマット",
"Disabled for all models": "すべてのモデルで無効", "Disabled for all models": "すべてのモデルで無効",
"Automatic (based on model name)": "自動(モデル名に基づく)", "Automatic (based on model name)": "自動(モデル名に基づく)",
"Enabled for all models": "すべてのモデルで有効", "Enabled for all models": "すべてのモデルで有効",
"Multigen": "マルチジェン",
"First chunk (tokens)": "最初のチャンク(トークン)",
"Next chunks (tokens)": "次のチャンク(トークン)",
"Anchors Order": "アンカーオーダー", "Anchors Order": "アンカーオーダー",
"Character then Style": "キャラクター、次にスタイル", "Character then Style": "キャラクター、次にスタイル",
"Style then Character": "スタイル、次にキャラクター", "Style then Character": "スタイル、次にキャラクター",
@ -829,6 +842,7 @@
"Regenerate": "再生成", "Regenerate": "再生成",
"PNG": "PNG", "PNG": "PNG",
"JSON": "JSON", "JSON": "JSON",
"WEBP": "WEBP",
"presets": "プリセット", "presets": "プリセット",
"Message Sound": "メッセージ音", "Message Sound": "メッセージ音",
"Author's Note": "作者の注記", "Author's Note": "作者の注記",
@ -1216,6 +1230,8 @@
"to get your NovelAI API key.": "자세히 읽어주세요.", "to get your NovelAI API key.": "자세히 읽어주세요.",
"Enter it in the box below": "밑 입력창에 입력하세요.", "Enter it in the box below": "밑 입력창에 입력하세요.",
"Novel AI Model": "NovelAI 모델", "Novel AI Model": "NovelAI 모델",
"Euterpe": "Euterpe",
"Krake": "Krake",
"No connection": "접속 실패", "No connection": "접속 실패",
"oobabooga/text-generation-webui": "oobabooga/text-generation-webui", "oobabooga/text-generation-webui": "oobabooga/text-generation-webui",
"Make sure you run it with": "--api 인수를 반드시 사용해야 합니다.", "Make sure you run it with": "--api 인수를 반드시 사용해야 합니다.",
@ -1255,9 +1271,13 @@
"Always add character's name to prompt": "프롬프트에 항상 캐릭터 이름 삽입", "Always add character's name to prompt": "프롬프트에 항상 캐릭터 이름 삽입",
"Keep Example Messages in Prompt": "예사 답변을 프롬프트에 유지", "Keep Example Messages in Prompt": "예사 답변을 프롬프트에 유지",
"Remove Empty New Lines from Output": "출력에서 빈줄 삭제", "Remove Empty New Lines from Output": "출력에서 빈줄 삭제",
"Pygmalion Formatting": "Pygmalion 서식",
"Disabled for all models": "모든 모델에 비활성화", "Disabled for all models": "모든 모델에 비활성화",
"Automatic (based on model name)": "모델 서식 자동탐지", "Automatic (based on model name)": "모델 서식 자동탐지",
"Enabled for all models": "모든 모델에 활성화", "Enabled for all models": "모든 모델에 활성화",
"Multigen": "다수답변 생성",
"First chunk (tokens)": "첫 말뭉치(토큰수)",
"Next chunks (tokens)": "다음 말뭉치(토큰수)",
"Anchors Order": "Anchors Order", "Anchors Order": "Anchors Order",
"Character then Style": "캐릭터 다음 스타일", "Character then Style": "캐릭터 다음 스타일",
"Style then Character": "스타일 다음 캐릭터", "Style then Character": "스타일 다음 캐릭터",
@ -1381,6 +1401,7 @@
"Regenerate": "재생성", "Regenerate": "재생성",
"PNG": "PNG", "PNG": "PNG",
"JSON": "JSON", "JSON": "JSON",
"WEBP": "WEBP",
"presets": "기본설정", "presets": "기본설정",
"Message Sound": "메시지 효과음", "Message Sound": "메시지 효과음",
"Author's Note": "글쓴이 쪽지", "Author's Note": "글쓴이 쪽지",
@ -1789,6 +1810,8 @@
"to get your NovelAI API key.": "чтобы получить свой API-ключ от NovelAI", "to get your NovelAI API key.": "чтобы получить свой API-ключ от NovelAI",
"Enter it in the box below": "Введите это в окошко ниже", "Enter it in the box below": "Введите это в окошко ниже",
"Novel AI Model": "Модель NovelAI", "Novel AI Model": "Модель NovelAI",
"Euterpe": "Euterpe",
"Krake": "Krake",
"If you are using:": "Если вы используете:", "If you are using:": "Если вы используете:",
"oobabooga/text-generation-webui": "", "oobabooga/text-generation-webui": "",
"Make sure you run it with": "Убедитесь, что при запуске указали аргумент --api", "Make sure you run it with": "Убедитесь, что при запуске указали аргумент --api",
@ -1861,9 +1884,13 @@
"Always add character's name to prompt": "Всегда добавлять имя персонажа в инструкции", "Always add character's name to prompt": "Всегда добавлять имя персонажа в инструкции",
"Keep Example Messages in Prompt": "Сохранять примеры сообщений в инструкции", "Keep Example Messages in Prompt": "Сохранять примеры сообщений в инструкции",
"Remove Empty New Lines from Output": "Удалять пустые строчки из вывода", "Remove Empty New Lines from Output": "Удалять пустые строчки из вывода",
"Pygmalion Formatting": "Форматирование Pygmalion",
"Disabled for all models": "Выключено для всех моделей", "Disabled for all models": "Выключено для всех моделей",
"Automatic (based on model name)": "Автоматически (выбор по названию модели)", "Automatic (based on model name)": "Автоматически (выбор по названию модели)",
"Enabled for all models": "Включить для всех моделей", "Enabled for all models": "Включить для всех моделей",
"Multigen": "Мултиген",
"First chunk (tokens)": "Первый отрезок (в токенах)",
"Next chunks (tokens)": "Следующий отрезок (в токенах)",
"Anchors Order": "Порядок Anchors", "Anchors Order": "Порядок Anchors",
"Character then Style": "Персонаж после Стиля", "Character then Style": "Персонаж после Стиля",
"Style then Character": "Стиль после Персонажа", "Style then Character": "Стиль после Персонажа",
@ -2000,6 +2027,7 @@
"Regenerate": "Повторная генерация", "Regenerate": "Повторная генерация",
"PNG": "PNG", "PNG": "PNG",
"JSON": "JSON", "JSON": "JSON",
"WEBP": "WEBP",
"presets": "Предустановки", "presets": "Предустановки",
"Message Sound": "Звук сообщения", "Message Sound": "Звук сообщения",
"Author's Note": "Авторские заметки", "Author's Note": "Авторские заметки",
@ -3154,6 +3182,8 @@
"to get your NovelAI API key.": "om je NovelAI API-sleutel te verkrijgen.", "to get your NovelAI API key.": "om je NovelAI API-sleutel te verkrijgen.",
"Enter it in the box below": "Voer het in in het vak hieronder", "Enter it in the box below": "Voer het in in het vak hieronder",
"Novel AI Model": "NovelAI-model", "Novel AI Model": "NovelAI-model",
"Euterpe": "Euterpe",
"Krake": "Krake",
"No connection": "Geen verbinding", "No connection": "Geen verbinding",
"oobabooga/text-generation-webui": "oobabooga/text-generation-webui", "oobabooga/text-generation-webui": "oobabooga/text-generation-webui",
"Make sure you run it with": "Zorg ervoor dat je het uitvoert met", "Make sure you run it with": "Zorg ervoor dat je het uitvoert met",
@ -3194,9 +3224,13 @@
"Always add character's name to prompt": "Voeg altijd de naam van het personage toe aan de prompt", "Always add character's name to prompt": "Voeg altijd de naam van het personage toe aan de prompt",
"Keep Example Messages in Prompt": "Behoud voorbeeldberichten in de prompt", "Keep Example Messages in Prompt": "Behoud voorbeeldberichten in de prompt",
"Remove Empty New Lines from Output": "Verwijder lege regels uit de uitvoer", "Remove Empty New Lines from Output": "Verwijder lege regels uit de uitvoer",
"Pygmalion Formatting": "Pygmalion-opmaak",
"Disabled for all models": "Uitgeschakeld voor alle modellen", "Disabled for all models": "Uitgeschakeld voor alle modellen",
"Automatic (based on model name)": "Automatisch (op basis van modelnaam)", "Automatic (based on model name)": "Automatisch (op basis van modelnaam)",
"Enabled for all models": "Ingeschakeld voor alle modellen", "Enabled for all models": "Ingeschakeld voor alle modellen",
"Multigen": "Multigen",
"First chunk (tokens)": "Eerste stuk (tokens)",
"Next chunks (tokens)": "Volgende stukken (tokens)",
"Anchors Order": "Ankersvolgorde", "Anchors Order": "Ankersvolgorde",
"Character then Style": "Personage dan Stijl", "Character then Style": "Personage dan Stijl",
"Style then Character": "Stijl dan Personage", "Style then Character": "Stijl dan Personage",
@ -3320,6 +3354,7 @@
"Regenerate": "Regenereren", "Regenerate": "Regenereren",
"PNG": "PNG", "PNG": "PNG",
"JSON": "JSON", "JSON": "JSON",
"WEBP": "WEBP",
"presets": "sjablonen", "presets": "sjablonen",
"Message Sound": "Berichtgeluid", "Message Sound": "Berichtgeluid",
"Author's Note": "Notitie van auteur", "Author's Note": "Notitie van auteur",
@ -3598,7 +3633,7 @@
"Change persona image": "persona afbeelding wijzigen", "Change persona image": "persona afbeelding wijzigen",
"Delete persona": "persona verwijderen" "Delete persona": "persona verwijderen"
}, },
"es-spa": { "es-mx": {
"clickslidertips": "Haz click en el número al lado de la barra \npara seleccionar un número manualmente.", "clickslidertips": "Haz click en el número al lado de la barra \npara seleccionar un número manualmente.",
"kobldpresets": "Configuraciones de KoboldAI", "kobldpresets": "Configuraciones de KoboldAI",
"guikoboldaisettings": "Configuración actual de la interfaz de KoboldAI", "guikoboldaisettings": "Configuración actual de la interfaz de KoboldAI",
@ -3704,6 +3739,8 @@
"to get your NovelAI API key.": "para conseguir tu NovelAI API key", "to get your NovelAI API key.": "para conseguir tu NovelAI API key",
"Enter it in the box below": "Introduce tu clave API de OpenAI en el siguiente campo", "Enter it in the box below": "Introduce tu clave API de OpenAI en el siguiente campo",
"Novel AI Model": "Modelo IA de NovelAI", "Novel AI Model": "Modelo IA de NovelAI",
"Euterpe": "Euterpe",
"Krake": "Krake",
"No connection": "Desconectado", "No connection": "Desconectado",
"oobabooga/text-generation-webui": "oobabooga/text-generation-webui", "oobabooga/text-generation-webui": "oobabooga/text-generation-webui",
"Make sure you run it with": "Asegúrate de usar el argumento --api cuando se ejecute", "Make sure you run it with": "Asegúrate de usar el argumento --api cuando se ejecute",
@ -3756,6 +3793,35 @@
"API Key": "Clave API", "API Key": "Clave API",
"Get it here:": "Consíguela aquí:", "Get it here:": "Consíguela aquí:",
"View my Kudos": "Ver mis Kudos", "View my Kudos": "Ver mis Kudos",
"Models": "Modelos IA" "Models": "Modelos IA",
"Grammar": "Gramática",
"Type in the desired custom grammar (GBNF).": "Escribe la gramática personalizada deseada (GBNF)",
"forbiddenHeading": "Restringido",
"Enter": "Introduce",
"to use anonymous mode.": "para usar el modo anónimo.",
"Negative Prompt": "Prompt negativo",
"Used if CFG Scale is unset globally, per chat or character.": "Se usa si CFG Scale no está definido globalmente, por chat o por personaje.",
"Mirostat Mode": "Modo Mirostat",
"Mirostat Mode Description": "Un valor de 0 desactiva el Modo Mirostat por completo. 1 es por Mirostat 1.0, y 2 y por Mirostat 2.0.",
"Mirostat Tau Description": "Controla la variabilidad del comportamiento del modelo en el Modo Mirostat. Un valor más alto resulta en más variabilidad.",
"Mirostat Eta Description": "Controla la fuerza del refuerzo positivo en el Modo Mirostat. Un valor más alto resulta en más refuerzo positivo.",
"If you are using:": "Si estás utilizando:",
"Use API key (Only required for Mancer)": "Haz click en este campo (y añade tu clave API)",
"Mancer API key": "Clave API de Mancer",
"Mancer API url": "Link de la API de Mancer",
"Example: https://neuro.mancer.tech/webui/MODEL/api": "Ejemplo: https://neuro.mancer.tech/webui/MODEL/api",
"Context Template": "Plantilla contextual",
"Story String": "String de la historia",
"Example Separator": "Separador de ejemplos",
"Chat Start": "Inicio del chat",
"Instruct Mode": "Modo Instrucción",
"Enabled": "Habilitado",
"Presets": "Plantillas Predefinidas",
"Activation Regex": "Regex de Activación",
"Wrap Sequences with Newline": "Rodear Secuencias con Salto de Línea",
"Replace Macro in Sequences": "Reemplazar Macros en Secuencias",
"Include Names": "Incluír Nombres",
"Force for Groups and Personas": "Forzar por Grupos y Personas",
"System Prompt": "Prompt de Sistema"
} }
} }

View File

@ -39,7 +39,6 @@
<script src="lib/toastr.min.js"></script> <script src="lib/toastr.min.js"></script>
<script src="lib/fuse.js"></script> <script src="lib/fuse.js"></script>
<script src="lib/select2.min.js"></script> <script src="lib/select2.min.js"></script>
<script src="lib/select2-search-placeholder.js"></script>
<script src="lib/seedrandom.min.js"></script> <script src="lib/seedrandom.min.js"></script>
<script src="lib/droll.js"></script> <script src="lib/droll.js"></script>
<script src="lib/localforage.min.js"></script> <script src="lib/localforage.min.js"></script>
@ -73,7 +72,6 @@
<script type="module" src="scripts/group-chats.js"></script> <script type="module" src="scripts/group-chats.js"></script>
<script type="module" src="scripts/kai-settings.js"></script> <script type="module" src="scripts/kai-settings.js"></script>
<script type="module" src="scripts/textgen-settings.js"></script> <script type="module" src="scripts/textgen-settings.js"></script>
<script type="module" src="scripts/mancer-settings.js"></script>
<script type="module" src="scripts/bookmarks.js"></script> <script type="module" src="scripts/bookmarks.js"></script>
<script type="module" src="scripts/horde.js"></script> <script type="module" src="scripts/horde.js"></script>
<script type="module" src="scripts/RossAscends-mods.js"></script> <script type="module" src="scripts/RossAscends-mods.js"></script>
@ -85,7 +83,6 @@
<script type="module" src="scripts/preset-manager.js"></script> <script type="module" src="scripts/preset-manager.js"></script>
<script type="module" src="scripts/filters.js"></script> <script type="module" src="scripts/filters.js"></script>
<script type="module" src="scripts/personas.js"></script> <script type="module" src="scripts/personas.js"></script>
<script type="module" src="scripts/server-history.js"></script>
<title>SillyTavern</title> <title>SillyTavern</title>
</head> </head>
@ -249,7 +246,7 @@
<input id="max_context_unlocked" type="checkbox" /> <input id="max_context_unlocked" type="checkbox" />
<span data-i18n="unlocked">Unlocked</span> <span data-i18n="unlocked">Unlocked</span>
</label> </label>
<div id="max_context_unlocked_warning" class="toggle-description justifyLeft widthUnset"> <div id="max_context_unlocked_warning">
<span data-i18n="only select modls support context sizes greater than 2048 tokens. proceed only is you know you're doing"> <span data-i18n="only select modls support context sizes greater than 2048 tokens. proceed only is you know you're doing">
Only select models support context sizes greater than 2048 tokens. Only select models support context sizes greater than 2048 tokens.
Increase only if you know what you're doing. Increase only if you know what you're doing.
@ -617,7 +614,7 @@
complete.</span> complete.</span>
</div> </div>
</div> </div>
<div class="range-block" data-source="openai,claude,windowai,openrouter,ai21,scale,palm"> <div class="range-block" data-source="openai,claude,windowai,openrouter,ai21,scale">
<div class="range-block-title" data-i18n="Temperature"> <div class="range-block-title" data-i18n="Temperature">
Temperature Temperature
</div> </div>
@ -677,7 +674,7 @@
</div> </div>
</div> </div>
</div> </div>
<div data-newbie-hidden class="range-block" data-source="claude,openrouter,ai21,palm"> <div data-newbie-hidden class="range-block" data-source="claude,openrouter,ai21">
<div class="range-block-title" data-i18n="Top K"> <div class="range-block-title" data-i18n="Top K">
Top K Top K
</div> </div>
@ -692,7 +689,7 @@
</div> </div>
</div> </div>
</div> </div>
<div data-newbie-hidden class="range-block" data-source="openai,claude,openrouter,ai21,scale,palm"> <div data-newbie-hidden class="range-block" data-source="openai,claude,openrouter,ai21,scale">
<div class="range-block-title" data-i18n="Top-p"> <div class="range-block-title" data-i18n="Top-p">
Top P Top P
</div> </div>
@ -733,7 +730,7 @@
</div> </div>
<div id="claude_assistant_prefill_block" data-source="claude" class="range-block"> <div id="claude_assistant_prefill_block" data-source="claude" class="range-block">
<span id="claude_assistant_prefill_text" data-i18n="Assistant Prefill">Assistant Prefill</span> <span id="claude_assistant_prefill_text" data-i18n="Assistant Prefill">Assistant Prefill</span>
<textarea id="claude_assistant_prefill" class="text_pole textarea_compact" name="assistant_prefill autoSetHeight" rows="3" maxlength="5000" data-i18n="[placeholder]Start Claude's answer with..." placeholder="Start Claude's answer with..."></textarea> <textarea id="claude_assistant_prefill" class="text_pole textarea_compact" name="assistant_prefill autoSetHeight" rows="3" maxlength="5000"data-i18n="[placeholder]Start Claude's answer with..." placeholder="Start Claude's answer with..."></textarea>
</div> </div>
</div> </div>
</div> </div>
@ -772,6 +769,22 @@
<textarea id="wi_format_textarea" class="text_pole textarea_compact autoSetHeight" rows="3" placeholder="&mdash;"></textarea> <textarea id="wi_format_textarea" class="text_pole textarea_compact autoSetHeight" rows="3" placeholder="&mdash;"></textarea>
</div> </div>
</div> </div>
<div class="range-block m-t-1">
<div class="range-block">
<div class="range-block-title openai_restorable">
<span data-i18n="NSFW avoidance prompt">NSFW avoidance prompt</span> <!-- Memerlin: This whole part doesn't fit correctly on the window unless you move it and resize it. -->
<div id="nsfw_avoidance_prompt_restore" title="Restore default prompt" class="right_menu_button" data-i18n="[title]Restore default prompt"> <!-- Memerlin: This isn't working.-->
<div class="fa-solid fa-clock-rotate-left"></div>
</div>
</div>
<div class="toggle-description justifyLeft" data-i18n="Prompt that is used when the NSFW toggle is O">
Prompt that is used when the NSFW toggle is OFF
</div>
<div class="wide100p">
<textarea id="nsfw_avoidance_prompt_textarea" class="text_pole textarea_compact autoSetHeight" name="nsfw_prompt" rows="3" placeholder="&mdash;"></textarea>
</div>
</div>
</div>
<div class="range-block m-t-1"> <div class="range-block m-t-1">
<div class="range-block-title openai_restorable" data-i18n="New Chat"> <div class="range-block-title openai_restorable" data-i18n="New Chat">
<span>New Chat</span> <span>New Chat</span>
@ -823,7 +836,7 @@
<div class="range-block m-t-1"> <div class="range-block m-t-1">
<div class="range-block-title openai_restorable" data-i18n="Continue nudge"> <div class="range-block-title openai_restorable" data-i18n="Continue nudge">
<span>Continue nudge</span> <span>Continue nudge</span>
<div id="continue_nudge_prompt_restore" title="Restore new chat prompt" class="right_menu_button"> <div id="continue_nudge_prompt_restore" title="Restore new chat prompt" class="right_menu_button" >
<div class="fa-solid fa-clock-rotate-left"></div> <div class="fa-solid fa-clock-rotate-left"></div>
</div> </div>
</div> </div>
@ -1020,7 +1033,7 @@
<div class="range-block-title" data-i18n="Mirostat Mode"> <div class="range-block-title" data-i18n="Mirostat Mode">
Mirostat Mode Mirostat Mode
</div> </div>
<div class="toggle-description width100p" data-i18n="Mirostat Mode"> <div class="toggle-description width100p" data-i18n="Mirostat Mode Description">
A value of 0 disables Mirostat entirely. A value of 0 disables Mirostat entirely.
<br>1 is for Mirostat 1.0, and 2 is for Mirostat 2.0 <br>1 is for Mirostat 1.0, and 2 is for Mirostat 2.0
</div> </div>
@ -1039,7 +1052,7 @@
<div class="range-block-title" data-i18n="Mirostat Tau"> <div class="range-block-title" data-i18n="Mirostat Tau">
Mirostat Tau Mirostat Tau
</div> </div>
<div class="toggle-description width100p" data-i18n="Mirostat Tau"> <div class="toggle-description width100p" data-i18n="Mirostat Tau Description">
Controls variability of Mirostat outputs Controls variability of Mirostat outputs
</div> </div>
<div class="range-block-range-and-counter"> <div class="range-block-range-and-counter">
@ -1057,7 +1070,7 @@
<div class="range-block-title" data-i18n="Mirostat Eta"> <div class="range-block-title" data-i18n="Mirostat Eta">
Mirostat Eta Mirostat Eta
</div> </div>
<div class="toggle-description width100p" data-i18n="Mirostat Eta"> <div class="toggle-description width100p" data-i18n="Mirostat Eta Description">
Controls learning rate of Mirostat Controls learning rate of Mirostat
</div> </div>
<div class="range-block-range-and-counter"> <div class="range-block-range-and-counter">
@ -1732,7 +1745,7 @@
<option value="koboldhorde"><span data-i18n="KoboldAI Horde">KoboldAI Horde</span></option> <option value="koboldhorde"><span data-i18n="KoboldAI Horde">KoboldAI Horde</span></option>
<option value="textgenerationwebui"><span data-i18n="Text Gen WebUI (ooba/Mancer)">Text Gen WebUI (ooba/Mancer)</span></option> <option value="textgenerationwebui"><span data-i18n="Text Gen WebUI (ooba/Mancer)">Text Gen WebUI (ooba/Mancer)</span></option>
<option value="novel"><span data-i18n="NovelAI">NovelAI</span></option> <option value="novel"><span data-i18n="NovelAI">NovelAI</span></option>
<option value="openai"><span data-i18n="Chat Completion (OpenAI, Claude, Window/OpenRouter, Scale, AI21)">Chat Completion (OpenAI, Claude, Window, OpenRouter, Scale, AI21, PaLM)</span></option> <option value="openai"><span data-i18n="Chat Completion (OpenAI, Claude, Window/OpenRouter, Scale, AI21)">Chat Completion (OpenAI, Claude, Window, OpenRouter, Scale, AI21)</span></option>
</select> </select>
</div> </div>
<div id="kobold_horde" style="position: relative;"> <!-- shows the kobold settings --> <div id="kobold_horde" style="position: relative;"> <!-- shows the kobold settings -->
@ -1767,7 +1780,6 @@
<input id="horde_trusted_workers_only" type="checkbox" /> <input id="horde_trusted_workers_only" type="checkbox" />
<span data-i18n="Trusted workers only">Trusted workers only</span> <span data-i18n="Trusted workers only">Trusted workers only</span>
</label> </label>
<small id="adjustedHordeParams">Context: --, Response: --</small>
<h4 data-i18n="API key">API key</h4> <h4 data-i18n="API key">API key</h4>
<small> <small>
@ -1805,8 +1817,8 @@
<div id="kobold_api_block"> <div id="kobold_api_block">
<h4 data-i18n="API url">API url</h4> <h4 data-i18n="API url">API url</h4>
<small data-i18n="Example: http://127.0.0.1:5000/api ">Example: http://127.0.0.1:5000/api </small> <small data-i18n="Example: http://127.0.0.1:5000/api ">Example: http://127.0.0.1:5000/api </small>
<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"> <input id="api_url_text" name="api_url" class="text_pole" placeholder="http://127.0.0.1:5000/api" maxlength="500" value="" autocomplete="off">
<div id="api_button" class="menu_button" type="submit" data-i18n="Connect" data-server-connect="kobold">Connect</div> <div id="api_button" class="menu_button" type="submit" data-i18n="Connect">Connect</div>
<div id="api_loading" class="api-load-icon fa-solid fa-hourglass fa-spin"></div> <div id="api_loading" class="api-load-icon fa-solid fa-hourglass fa-spin"></div>
</div> </div>
<div id="online_status2"> <div id="online_status2">
@ -1844,6 +1856,8 @@
</a> </a>
</h4> </h4>
<select id="model_novel_select"> <select id="model_novel_select">
<option value="euterpe-v2">Euterpe</option>
<option value="krake-v2">Krake</option>
<option value="clio-v1">Clio</option> <option value="clio-v1">Clio</option>
<option value="kayra-v1">Kayra</option> <option value="kayra-v1">Kayra</option>
</select> </select>
@ -1887,26 +1901,24 @@
For privacy reasons, your API key will be hidden after you reload the page. For privacy reasons, your API key will be hidden after you reload the page.
</div> </div>
<div class="flex1"> <div class="flex1">
<h4>Mancer Model</h4> <h4 data-i18n="Mancer API url">Mancer API url</h4>
<select id="mancer_model"></select> <small data-i18n="Example: https://neuro.mancer.tech/webui/MODEL/api">Example: https://neuro.mancer.tech/webui/MODEL/api </small>
<h4 data-i18n="Mancer API url">Mancer API URL</h4>
<small data-i18n="Example: https://neuro.mancer.tech/webui/MODEL/api">Example: https://neuro.mancer.tech/webui/MODEL/api</small>
<input id="mancer_api_url_text" name="mancer_api_url" class="text_pole wide100p" maxlength="500" value="" autocomplete="off"> <input id="mancer_api_url_text" name="mancer_api_url" class="text_pole wide100p" maxlength="500" value="" autocomplete="off">
</div> </div>
</div> </div>
<div id="tgwebui_api_subpanel" class="flex-container flexFlowColumn"> <div id="tgwebui_api_subpanel" class="flex-container flexFlowColumn">
<div class="flex1"> <div class="flex1">
<h4 data-i18n="Blocking API url">Blocking API URL</h4> <h4 data-i18n="Blocking API url">Blocking API url</h4>
<small data-i18n="Example: http://127.0.0.1:5000/api ">Example: http://127.0.0.1:5000/api </small> <small data-i18n="Example: http://127.0.0.1:5000/api ">Example: http://127.0.0.1:5000/api </small>
<input id="textgenerationwebui_api_url_text" name="textgenerationwebui_api_url" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="ooba_blocking"> <input id="textgenerationwebui_api_url_text" name="textgenerationwebui_api_url" class="text_pole wide100p" maxlength="500" value="" autocomplete="off">
</div> </div>
<div class="flex1"> <div class="flex1">
<h4 data-i18n="Streaming API url">Streaming API URL</h4> <h4 data-i18n="Streaming API url">Streaming API url</h4>
<small data-i18n="Example: ws://127.0.0.1:5005/api/v1/stream">Example: ws://127.0.0.1:5005/api/v1/stream </small> <small data-i18n="Example: ws://127.0.0.1:5005/api/v1/stream">Example: ws://127.0.0.1:5005/api/v1/stream </small>
<input id="streaming_url_textgenerationwebui" type="text" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="ooba_streaming"> <input id="streaming_url_textgenerationwebui" type="text" class="text_pole wide100p" maxlength="500" value="" autocomplete="off">
</div> </div>
</div> </div>
<div id="api_button_textgenerationwebui" class="menu_button" type="submit" data-i18n="Connect" data-server-connect="ooba_blocking,ooba_streaming">Connect</div> <div id="api_button_textgenerationwebui" class="menu_button" type="submit" data-i18n="Connect">Connect</div>
<div id="api_loading_textgenerationwebui" class="api-load-icon fa-solid fa-hourglass fa-spin"></div> <div id="api_loading_textgenerationwebui" class="api-load-icon fa-solid fa-hourglass fa-spin"></div>
</div> </div>
</form> </form>
@ -1926,7 +1938,6 @@
<option value="claude">Claude</option> <option value="claude">Claude</option>
<option value="scale">Scale</option> <option value="scale">Scale</option>
<option value="ai21">AI21</option> <option value="ai21">AI21</option>
<option value="palm">Google PaLM 2</option>
</select> </select>
<form id="openai_form" data-source="openai" action="javascript:void(null);" method="post" enctype="multipart/form-data"> <form id="openai_form" data-source="openai" action="javascript:void(null);" method="post" enctype="multipart/form-data">
<h4><span data-i18n="OpenAI API key">OpenAI API key</span></h4> <h4><span data-i18n="OpenAI API key">OpenAI API key</span></h4>
@ -2147,19 +2158,6 @@
</div> </div>
</form> </form>
<form id="palm_form" data-source="palm" action="javascript:void(null);" method="post" enctype="multipart/form-data">
<h4 data-i18n="PaLM API Key">PaLM API Key</h4>
<div class="flex-container">
<input id="api_key_palm" name="api_key_palm" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off">
<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_palm"></div>
</div>
<div data-for="api_key_palm" class="neutral_warning">
For privacy reasons, your API key will be hidden after you reload the page.
</div>
<!-- Its only purpose is to trigger max context size check -->
<select id="model_palm_select" class="displayNone"></select>
</form>
<div class="flex-container flex"> <div class="flex-container flex">
<div id="api_button_openai" class="menu_button menu_button_icon" type="submit" data-i18n="Connect">Connect</div> <div id="api_button_openai" class="menu_button menu_button_icon" type="submit" data-i18n="Connect">Connect</div>
<div data-source="openrouter" id="openrouter_authorize" class="menu_button menu_button_icon" title="Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai" data-i18n="[title]Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai">Authorize</div> <div data-source="openrouter" id="openrouter_authorize" class="menu_button menu_button_icon" title="Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai" data-i18n="[title]Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai">Authorize</div>
@ -2525,30 +2523,44 @@
Replace Macro in Custom Stopping Strings Replace Macro in Custom Stopping Strings
</span> </span>
</label> </label>
<h4>
<span data-i18n="Pygmalion Formatting">
Pygmalion Formatting
</span>
</h4>
<select id="pygmalion_formatting">
<option value="-1" data-i18n="Disabled for all models">
Disabled for all models
</option>
<option value="0" data-i18n="Automatic (based on model name)">
Automatic (based on model name)
</option>
<option value="1" data-i18n="Enabled for all models">
Enabled for all models
</option>
</select>
</div> </div>
<div data-newbie-hidden> <div data-newbie-hidden>
<h4> <h4>
<span data-i18n="Auto-Continue">Auto-Continue</span> <span data-i18n="Multigen">Multigen</span>
<a href="https://docs.sillytavern.app/usage/core-concepts/advancedformatting/#multigen" class="notes-link" target="_blank">
<span class="note-link-span">?</span>
</a>
</h4> </h4>
<div class="flex-container"> <label class="checkbox_label" for="multigen">
<label class="checkbox_label" for="auto_continue_enabled"> <input id="multigen" type="checkbox" />
<input id="auto_continue_enabled" type="checkbox" />
<span data-i18n="Enabled"> <span data-i18n="Enabled">
Enabled Enabled
</span> </span>
</label> </label>
<label class="checkbox_label" for="auto_continue_allow_chat_completions"> <div class="multigen_settings_block">
<input id="auto_continue_allow_chat_completions" type="checkbox" /> <label for="multigen_1st_chunk">
<span data-i18n="Allow for Chat Completion APIs"> <small><span data-i18n="First chunk (tokens)">First chunk (tokens)</span></small>
Allow for Chat Completion APIs <input id="multigen_first_chunk" type="number" class="text_pole textarea_compact" min="1" max="512" />
</span>
</label> </label>
</div> <label for="multigen_next_chunk">
<small><span data-i18n="Next chunks (tokens)">Next chunks (tokens)</span></small>
<div class="auto_continue_settings_block"> <input id="multigen_next_chunks" type="number" class="text_pole textarea_compact" min="1" max="512" />
<label for="auto_continue_target_length">
<span data-i18n="Target length (tokens)">Target length (tokens)</span>
<input id="auto_continue_target_length" type="number" class="text_pole textarea_compact" min="0" max="1024" />
</label> </label>
</div> </div>
</div> </div>
@ -2723,66 +2735,24 @@
<div class="drawer-icon fa-solid fa-user-cog closedIcon" title="User Settings" data-i18n="[title]User Settings"></div> <div class="drawer-icon fa-solid fa-user-cog closedIcon" title="User Settings" data-i18n="[title]User Settings"></div>
</div> </div>
<div id="user-settings-block" class="drawer-content closedDrawer"> <div id="user-settings-block" class="drawer-content closedDrawer">
<div class="flex-container flexFlowColumn"> <div class="flex-container wide100p alignitemscenter spaceBetween">
<div name="userSettingsRowOne" class="flex-container flexFlowRow alignitemscenter spaceBetween">
<div class="flex-container">
<div class="flex-container flexnowrap alignitemscenter">
<h3><span data-i18n="User Settings">User Settings</span></h3> <h3><span data-i18n="User Settings">User Settings</span></h3>
<select id="ui_mode_select" class="margin0 widthNatural"> <div id="version_display"></div>
</div>
<div id="user-settings-block-content" class="flex-container spaceEvenly">
<div id="UI-Theme-Block" class="flex-container flexFlowColumn wide100p">
<div id="color-picker-block" class="flex-container flexFlowColumn flexNoGap">
<div id="UI-Mode-Block">
<h4 data-i18n="UI Mode">
UI Mode
</h4>
<select id="ui_mode_select" class="margin0 margin-r5">
<option value="0" data-i18n="Simple">Simple</option> <option value="0" data-i18n="Simple">Simple</option>
<option value="1" data-i18n="Advanced">Advanced</option> <option value="1" data-i18n="Advanced">Advanced</option>
</select> </select>
</div> </div>
</div> <div data-newbie-hidden>
<div id="UI-language-block" class="flex-container alignitemscenter"> <h4><span data-i18n="UI Colors">UI Colors</span></h4>
<span data-i18n="UI Language">Language:</span>
<select id="ui_language_select" class="widthNatural flex1 margin0">
<option value="" data-i18n="Default">Default</option>
<option value="en">en</option>
</select>
</div>
<small id="version_display"></small>
</div>
<div name="UserSettingsRowTwo" class="flex-container flexFlowRow">
<textarea id="settingsSearch" class="textarea_compact wide100p" rows="1" placeholder="Search Settings"></textarea>
</div>
</div>
<div id="user-settings-block-content" class="flex-container spaceEvenly">
<div name="UserSettingsFirstColumn" id="UI-Theme-Block" class="flex-container flexFlowColumn wide100p">
<div id="UI-presets-block" class="flex-container flexFlowColumn">
<h4>
<span data-i18n="UI Theme Preset">Theme Preset</span>
</h4>
<div class="flex-container flexnowrap alignitemscenter">
<select id="themes" class="margin0">
</select>
<div id="ui-preset-save-button" title="Save changes to a new theme file" data-i18n="[title]Save changes to a new theme file" class="menu_button margin0">
<i class="fa-solid fa-save"></i>
</div>
</div>
</div>
<div name="themeElements" data-newbie-hidden class="flex-container flexFlowColumn flexNoGap">
<h4><span data-i18n="UI Colors">Theme Settings</span></h4>
<div name="AvatarAndChatDisplay" class="flex-container flexFlowColumn">
<div class="flex-container">
<span data-i18n="Avatar Style">Avatars:</span>
<select id="avatar_style" class="widthNatural flex1 margin0">
<option value="0" data-i18n="Circle">Circle</option>
<option value="1" data-i18n="Rectangle">Rectangle</option>
</select>
</div>
<div class="flex-container">
<span data-i18n="Chat Style:">Chat Style:</span><br>
<select id="chat_display" class="widthNatural flex1 margin0">
<option value="0" data-i18n="Default">Flat</span>
<option value="1" data-i18n="Bubbles">Bubbles</option>
<option value="2" data-i18n="Document">Document</option>
</select>
</div>
</div>
<div id="color-picker-block" class="flex-container flexFlowColumn flexNoGap">
<div class="flex-container"> <div class="flex-container">
<toolcool-color-picker id="main-text-color-picker"></toolcool-color-picker> <toolcool-color-picker id="main-text-color-picker"></toolcool-color-picker>
<span data-i18n="Main Text">Main Text</span> <span data-i18n="Main Text">Main Text</span>
@ -2799,17 +2769,13 @@
<toolcool-color-picker id="shadow-color-picker"></toolcool-color-picker> <toolcool-color-picker id="shadow-color-picker"></toolcool-color-picker>
<span data-i18n="Shadow Color">Text Shadow</span> <span data-i18n="Shadow Color">Text Shadow</span>
</div> </div>
<div class="flex-container"> <!-- <div class="flex-container">
<toolcool-color-picker id="chat-tint-color-picker"></toolcool-color-picker> <toolcool-color-picker id="fastui-bg-color-picker"></toolcool-color-picker>
<span data-i18n="Chat Background">Chat Background</span> <span data-i18n="FastUI BG">FastUI BG</span>
</div> </div> -->
<div class="flex-container"> <div class="flex-container">
<toolcool-color-picker id="blur-tint-color-picker"></toolcool-color-picker> <toolcool-color-picker id="blur-tint-color-picker"></toolcool-color-picker>
<span data-i18n="UI Background">UI Background</span> <span data-i18n="Blur Tint">UI Background</span>
</div>
<div class="flex-container">
<toolcool-color-picker id="border-color-picker"></toolcool-color-picker>
<span data-i18n="UI Border">UI Border</span>
</div> </div>
<div class="flex-container"> <div class="flex-container">
<toolcool-color-picker id="user-mes-blur-tint-color-picker"></toolcool-color-picker> <toolcool-color-picker id="user-mes-blur-tint-color-picker"></toolcool-color-picker>
@ -2820,30 +2786,14 @@
<span data-i18n="AI Message Blur Tint">AI Message</span> <span data-i18n="AI Message Blur Tint">AI Message</span>
</div> </div>
</div> </div>
<div data-newbie-hidden id="font-blur-UIpresets-block" class="flex-container flexFlowColumn flexNoGap">
<div data-newbie-hidden name="FontBlurChatWidthBlock" class="flex-container flexFlowColumn flexNoGap">
<div data-newbie-hidden class="range-block">
<div class="range-block-title" data-i18n="Chat Width (PC)">
Chat Width (PC)
</div>
<div class="range-block-range-and-counter">
<div class="range-block-range">
<input id="chat_width_slider" class="wide100p" type="range" min="25" max="100" step="1" value="50">
</div>
<div class="range-block-counter">
<div contenteditable="true" data-for="chat_width_slider" id="chat_width_slider_counter">
select
</div>
</div>
</div>
</div>
<div id="font-scale-block" class="range-block"> <div id="font-scale-block" class="range-block">
<div class="range-block-title" data-i18n="Font Scale"> <div class="range-block-title" data-i18n="Font Scale">
Font Scale Font Scale
</div> </div>
<div class="range-block-range-and-counter"> <div class="range-block-range-and-counter">
<div class="range-block-range"> <div class="range-block-range">
<input type="range" id="font_scale" name="font_scale" min="0.8" max="1.2" step="0.01"> <input type="range" id="font_scale" name="font_scale" min="0.8" max="1.2" step="0.02">
</div> </div>
<div class="range-block-counter"> <div class="range-block-counter">
<div contenteditable="true" data-for="font_scale" id="font_scale_counter"> <div contenteditable="true" data-for="font_scale" id="font_scale_counter">
@ -2883,60 +2833,86 @@
</div> </div>
</div> </div>
</div> </div>
<div id="UI-language-block" class="flex-container flexFlowColumn">
<h4>
<span data-i18n="UI Language">UI Language</span>
</h4>
<div class="flex-container flexnowrap alignitemscenter">
<select id="ui_language_select" class="margin0 margin-r5">
<option value="" data-i18n="Browser default">
Browser default
</option>
<option value="en">en</option>
</select>
</div>
</div>
<div id="UI-presets-block" class="flex-container flexFlowColumn">
<h4>
<span data-i18n="UI Theme Preset">UI Theme Preset</span>
</h4>
<div class="flex-container flexnowrap alignitemscenter">
<select id="themes" class="margin0 margin-r5">
</select>
<div id="ui-preset-save-button" title="Save changes to a new theme file" data-i18n="[title]Save changes to a new theme file" class="menu_button padding5 margin0">
<i class="fa-solid fa-save"></i>
</div>
</div>
</div>
<div data-newbie-hidden id="MovingUI-presets-block" class="flex-container flexFlowColumn">
<h4>
<span data-i18n="MovingUI Preset">MovingUI Preset</span>
</h4>
<div class="flex-container flexnowrap alignitemscenter">
<select id="movingUIPresets" class="margin0 margin-r5">
</select>
<div id="movingui-preset-save-button" title="Save changes to a new MovingUI preset file" data-i18n="[title]Save movingUI changes to a new file" class="menu_button padding5 margin0">
<i class="fa-solid fa-save"></i>
</div>
</div>
<div id="movingUIreset" class="menu_button whitespacenowrap" data-i18n="Reset Panels">
Reset MovingUI
</div>
</div>
</div> </div>
</div> </div>
<div name="UserSettingsSecondColumn" id="UI-Customization" class="flex-container flexFlowColumn wide100p"> <div id="UI-Customization" class="flex-container wide100p">
<div name="themeToggles"> <div class="ui-settings">
<h4 data-i18n="Theme Toggles">Theme Toggles</h4> <h4><span data-i18n="UI Customization">UI Customization</span></h4>
<label data-newbie-hidden for="fast_ui_mode" class="checkbox_label" title="removes blur from window backgrounds" data-i18n="[title]removes blur from window backgrounds"> <div data-newbie-hidden class="range-block">
<input id="fast_ui_mode" type="checkbox" /> <div class="range-block-title" data-i18n="Chat Width (PC)">
<span data-i18n="No Blur Effect">No Blur Effect</span> Chat Width (PC)
</div>
<div class="range-block-range-and-counter">
<div class="range-block-range">
<input id="chat_width_slider" class="wide100p" type="range" min="25" max="75" step="1" value="50">
<div class="slider_hint">
<span>25%</span>
<span>50%</span>
<span>75%</span>
</div>
</div>
</div>
</div>
<div>
<span data-i18n="Avatar Style">Avatar Style:</span><br>
<label>
<input name="avatar_style" type="radio" value="0" />
<span data-i18n="Circle">Circle</span>
</label> </label>
<label data-newbie-hidden for="noShadowsmode" class="checkbox_label"> <label>
<input id="noShadowsmode" type="checkbox" /> <input name="avatar_style" type="radio" value="1" />
<span data-i18n="No Text Shadows">No Text Shadows</span> <span data-i18n="Rectangle">Rectangle</span>
</label>
<label for="waifuMode" class="checkbox_label">
<input id="waifuMode" type="checkbox" />
<span data-i18n="Waifu Mode">Visual Novel Mode</span>
</label>
<label data-newbie-hidden for="expandMessageActions" class="checkbox_label">
<input id="expandMessageActions" type="checkbox" />
<span data-i18n="Auto-Expand Message Actions">Expand Message Actions</span>
</label>
<label data-newbie-hidden for="messageTimerEnabled" class="checkbox_label">
<input id="messageTimerEnabled" type="checkbox" />
<span data-i18n="Message Timer">Message Timer</span>
</label>
<label data-newbie-hidden for="messageTimestampsEnabled" class="checkbox_label">
<input id="messageTimestampsEnabled" type="checkbox" />
<span data-i18n="Chat Timestamps">Chat Timestamps</span>
</label>
<label data-newbie-hidden for="messageModelIconEnabled" class="checkbox_label">
<input id="messageModelIconEnabled" type="checkbox" />
<span data-i18n="Model Icon">Model Icons</span>
</label>
<label data-newbie-hidden for="mesIDDisplayEnabled" class="checkbox_label">
<input id="mesIDDisplayEnabled" type="checkbox" />
<span data-i18n="Message IDs">Message IDs</span>
</label>
<label data-newbie-hidden for="messageTokensEnabled" class="checkbox_label">
<input id="messageTokensEnabled" type="checkbox" />
<span data-i18n="Show Message Token Count">Message Token Count</span>
</label>
<label data-newbie-hidden for="hotswapEnabled" class="checkbox_label">
<input id="hotswapEnabled" type="checkbox" />
<span data-i18n="Characters Hotswap">Characters Hotswap</span>
</label> </label>
</div> </div>
<h4><span data-i18n="Miscellaneous">Miscellaneous</span></h4> <div>
<span data-i18n="Chat Style:">Message Style:</span><br>
<select id="chat_display">
<option value="0" data-i18n="Default">Flat Chat</span>
<option value="1" data-i18n="Bubbles">Bubble Chat</option>
<option value="2" data-i18n="Document">Single Document</option>
</select>
</div>
<div> <div>
<label for="play_message_sound" class="checkbox_label"> <label for="play_message_sound" class="checkbox_label">
<input id="play_message_sound" type="checkbox" /> <input id="play_message_sound" type="checkbox" />
@ -2952,44 +2928,80 @@
<input id="play_sound_unfocused" type="checkbox" /> <input id="play_sound_unfocused" type="checkbox" />
<span data-i18n="Background Sound Only">Background Sound Only</span> <span data-i18n="Background Sound Only">Background Sound Only</span>
</label> </label>
<label data-newbie-hidden for="fast_ui_mode" class="checkbox_label" title="removes blur and uses alternative background color for divs" data-i18n="[title]removes blur and uses alternative background color for divs">
<label data-newbie-hidden class="checkbox_label" for="relaxed_api_urls" title="Reduce the formatting requirements on API URLS"> <input id="fast_ui_mode" type="checkbox" />
<input id="relaxed_api_urls" type="checkbox" /> <span data-i18n="No Blur Effect">No Blur Effect</span>
<span data-i18n="Relaxed API URLS">Relaxed API URLs</span>
</label> </label>
<label data-newbie-hidden for="noShadowsmode" class="checkbox_label">
<input id="noShadowsmode" type="checkbox" />
<span data-i18n="No Text Shadows">No Text Shadows</span>
</label>
<label for="waifuMode" class="checkbox_label">
<input id="waifuMode" type="checkbox" />
<span data-i18n="Waifu Mode">Visual Novel Mode</span>
</label>
<label for="messageTimerEnabled" class="checkbox_label">
<input id="messageTimerEnabled" type="checkbox" />
<span data-i18n="Message Timer">Message Timer</span>
</label>
<label data-newbie-hidden for="messageTimestampsEnabled" class="checkbox_label">
<input id="messageTimestampsEnabled" type="checkbox" />
<span data-i18n="Chat Timestamps">Chat Timestamps</span>
</label>
<label data-newbie-hidden for="messageModelIconEnabled" class="checkbox_label">
<input id="messageModelIconEnabled" type="checkbox" />
<span data-i18n="Model Icon">Show Model Icons</span>
</label>
<label data-newbie-hidden for="mesIDDisplayEnabled" class="checkbox_label">
<input id="mesIDDisplayEnabled" type="checkbox" />
<span data-i18n="Message IDs">Show Message IDs</span>
</label>
<label data-newbie-hidden for="messageTokensEnabled" class="checkbox_label">
<input id="messageTokensEnabled" type="checkbox" />
<span data-i18n="Show Message Token Count">Show Message Token Count</span>
</label>
<label data-newbie-hidden for="auto_scroll_chat_to_bottom" class="checkbox_label">
<input id="auto_scroll_chat_to_bottom" type="checkbox" />
<span data-i18n="Auto-scroll Chat">Auto-scroll Chat</span>
</label>
<label data-newbie-hidden for="hotswapEnabled" class="checkbox_label">
<input id="hotswapEnabled" type="checkbox" />
<span data-i18n="Characters Hotswap">Characters Hotswap</span>
</label>
<label data-newbie-hidden id="movingUIModeCheckBlock" for="movingUImode" class="checkbox_label"> <label data-newbie-hidden id="movingUIModeCheckBlock" for="movingUImode" class="checkbox_label">
<input id="movingUImode" type="checkbox" /> <input id="movingUImode" type="checkbox" />
<span data-i18n="Movable UI Panels">MovingUI</span> <span data-i18n="Movable UI Panels">Movable UI Panels</span>
</label> </label>
<div data-newbie-hidden id="MovingUI-presets-block" class="flex-container alignitemscenter">
<div class="flex-container alignitemscenter"> <div data-newbie-hidden class="flex-container flexFlowColumn">
<span>MUI Preset:</span> <h4 data-i18n="Send on Enter">
<div class="flex-container flexnowrap"> Send on Enter
<select id="movingUIPresets" class="widthNatural flex1 margin0">
</select>
<div id="movingui-preset-save-button" title="Save changes to a new MovingUI preset file" data-i18n="[title]Save movingUI changes to a new file" class="menu_button margin0">
<i class="fa-solid fa-save"></i>
</div>
</div>
</div>
</div>
<div id="movingUIreset" class="menu_button whitespacenowrap" data-i18n="Reset Panels">
Reset MovingUI
</div>
<div data-newbie-hidden id="CustomCSS-block" class="flex-container flexFlowColumn">
<h4>
<span data-i18n="Custom CSS">Custom CSS</span>
</h4> </h4>
<div class="flex-container flexnowrap alignitemscenter"> <select id="send_on_enter">
<textarea id="customCSS" class="text_pole margin0 margin-r5 textarea_compact monospace"></textarea> <option value="-1" data-i18n="Always disabled">Always disabled</option>
<option value="0" data-i18n="Automatic (desktop)">Automatic (desktop)</option>
<option value="1" data-i18n="Always enabled">Always enabled</option>
</select>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div name="UserSettingsThirdColumn" id="power-user-options-block" class="flex-container wide100p"> <div id="power-user-options-block" class="flex-container wide100p">
<div id="power-user-option-checkboxes"> <div id="power-user-option-checkboxes">
<div data-newbie-hidden name="CharacterHandlingToggles"> <h4 data-i18n="Power User Options">Power User Options</h4>
<h4>Character Handling</h4> <label data-newbie-hidden class="checkbox_label" for="swipes-checkbox">
<input id="swipes-checkbox" type="checkbox" />
<span data-i18n="Swipes">Swipes</span>
</label>
<label data-newbie-hidden class="checkbox_label" for="fuzzy_search_checkbox"> <label data-newbie-hidden class="checkbox_label" for="fuzzy_search_checkbox">
<input id="fuzzy_search_checkbox" type="checkbox" /> <input id="fuzzy_search_checkbox" type="checkbox" />
<span data-i18n="Advanced Character Search">Advanced Character Search</span> <span data-i18n="Advanced Character Search">Advanced Character Search</span>
@ -3002,80 +3014,30 @@
<input id="prefer_character_jailbreak" type="checkbox" /> <input id="prefer_character_jailbreak" type="checkbox" />
<span data-i18n="Prefer Character Card Jailbreak">Prefer Char. JB</span> <span data-i18n="Prefer Character Card Jailbreak">Prefer Char. JB</span>
</label> </label>
<label data-newbie-hidden class="checkbox_label" for="never_resize_avatars">
<input id="never_resize_avatars" type="checkbox" />
<span data-i18n="Never resize avatars">Never resize avatars</span>
</label>
<label data-newbie-hidden class="checkbox_label" for="show_card_avatar_urls">
<input id="show_card_avatar_urls" type="checkbox" />
<span data-i18n="Show avatar filenames">Show avatar filenames</span>
</label>
<label data-newbie-hidden class="checkbox_label" for="import_card_tags">
<input id="import_card_tags" type="checkbox" />
<span data-i18n="Import Card Tags">Import Card Tags</span>
</label>
<label data-newbie-hidden class="checkbox_label" for="spoiler_free_mode">
<input id="spoiler_free_mode" type="checkbox" />
<span data-i18n="Spoiler Free Mode">Spoiler Free Mode</span>
</label>
</div>
<div name="ChatMessageHandlingToggles">
<h4>Chat/Message Handling</h4>
<div data-newbie-hidden class="flex-container alignitemscenter">
<span data-i18n="Send on Enter">
Enter to Send:
</span>
<select id="send_on_enter" class="widthNatural flex1 margin0">
<option value="-1" data-i18n="Disabled">Disabled</option>
<option value="0" data-i18n="Automatic (PC)">Automatic (PC)</option>
<option value="1" data-i18n="Enabled">Enabled</option>
</select>
</div>
<label data-newbie-hidden class="checkbox_label" for="continue_on_send"> <label data-newbie-hidden class="checkbox_label" for="continue_on_send">
<input id="continue_on_send" type="checkbox" /> <input id="continue_on_send" type="checkbox" />
<span data-i18n="Press Send to continue"> <span data-i18n="Press Send to continue">
"Send" to Continue Press "Send" to continue
</span> </span>
</label> </label>
<label class="checkbox_label" for="quick_continue"> <label class="checkbox_label" for="quick_continue">
<input id="quick_continue" type="checkbox" /> <input id="quick_continue" type="checkbox" />
<span data-i18n="Press Send to continue"> <span data-i18n="Press Send to continue">
Quick "Continue" button Show quick "Continue" button
</span> </span>
</label> </label>
<label data-newbie-hidden class="checkbox_label" for="swipes-checkbox">
<input id="swipes-checkbox" type="checkbox" />
<span data-i18n="Swipes">Swipes</span>
</label>
<label class="checkbox_label" for="auto-load-chat-checkbox"> <label class="checkbox_label" for="auto-load-chat-checkbox">
<input id="auto-load-chat-checkbox" type="checkbox" /> <input id="auto-load-chat-checkbox" type="checkbox" />
<span data-i18n="Auto-load Last Chat">Auto-load Last Chat</span> <span data-i18n="Auto-load Last Chat">Auto-load Last Chat</span>
</label> </label>
<label data-newbie-hidden for="auto_scroll_chat_to_bottom" class="checkbox_label">
<input id="auto_scroll_chat_to_bottom" type="checkbox" />
<span data-i18n="Auto-scroll Chat">Auto-scroll Chat</span>
</label>
<label data-newbie-hidden class="checkbox_label" for="auto_save_msg_edits"> <label data-newbie-hidden class="checkbox_label" for="auto_save_msg_edits">
<input id="auto_save_msg_edits" type="checkbox" /> <input id="auto_save_msg_edits" type="checkbox" />
<span data-i18n="Auto-save Message Edits">Auto-save Message Edits</span> <span data-i18n="Auto-save Message Edits">Auto-save Message Edits</span>
</label> </label>
<label data-newbie-hidden class="checkbox_label" for="confirm_message_delete">
<input id="confirm_message_delete" type="checkbox" />
<span data-i18n="Confirm message deletion">Confirm message deletion</span>
</label>
<label class="checkbox_label" for="auto_fix_generated_markdown"> <label class="checkbox_label" for="auto_fix_generated_markdown">
<input id="auto_fix_generated_markdown" type="checkbox" /> <input id="auto_fix_generated_markdown" type="checkbox" />
<span data-i18n="Auto-fix Markdown">Auto-fix Markdown</span> <span data-i18n="Auto-fix Markdown">Auto-fix Markdown</span>
</label> </label>
<label data-newbie-hidden class="checkbox_label" for="render_formulas">
<input id="render_formulas" type="checkbox" />
<span data-i18n="Render Formulas">Render Formulas</span>
<a href="https://docs.sillytavern.app/usage/core-concepts/uicustomization/#formulas-rendering" class="notes-link" target="_blank">
<span class="note-link-span">?</span>
</a>
</label>
<label data-newbie-hidden class="checkbox_label" for="allow_name2_display"> <label data-newbie-hidden class="checkbox_label" for="allow_name2_display">
<input id="allow_name2_display" type="checkbox" /> <input id="allow_name2_display" type="checkbox" />
<span data-i18n="Allow {{char}}: in bot messages">Show {{char}}: in responses</span> <span data-i18n="Allow {{char}}: in bot messages">Show {{char}}: in responses</span>
@ -3090,12 +3052,43 @@
</label> </label>
<label data-newbie-hidden class="checkbox_label" for="disable_group_trimming" title="Allow AI messages in groups to contain lines spoken by other group members."> <label data-newbie-hidden class="checkbox_label" for="disable_group_trimming" title="Allow AI messages in groups to contain lines spoken by other group members.">
<input id="disable_group_trimming" type="checkbox" /> <input id="disable_group_trimming" type="checkbox" />
<span data-i18n="Relax message trim in Groups">Relax message trim in Groups</span> <span data-i18n="Show impersonated replies in groups">Show impersonated replies in groups</span>
</label> </label>
<label data-newbie-hidden class="checkbox_label" for="console_log_prompts"> <label data-newbie-hidden class="checkbox_label" for="console_log_prompts">
<input id="console_log_prompts" type="checkbox" /> <input id="console_log_prompts" type="checkbox" />
<span data-i18n="Log prompts to console">Log prompts to console</span> <span data-i18n="Log prompts to console">Log prompts to console</span>
</label> </label>
<label data-newbie-hidden class="checkbox_label" for="render_formulas">
<input id="render_formulas" type="checkbox" />
<span data-i18n="Render Formulas">Render Formulas</span>
<a href="https://docs.sillytavern.app/usage/core-concepts/uicustomization/#formulas-rendering" class="notes-link" target="_blank">
<span class="note-link-span">?</span>
</a>
</label>
<label data-newbie-hidden class="checkbox_label" for="never_resize_avatars">
<input id="never_resize_avatars" type="checkbox" />
<span data-i18n="Never resize avatars">Never resize avatars</span>
</label>
<label data-newbie-hidden class="checkbox_label" for="show_card_avatar_urls">
<input id="show_card_avatar_urls" type="checkbox" />
<span data-i18n="Show avatar filenames">Show avatar filenames</span>
</label>
<label data-newbie-hidden class="checkbox_label" for="import_card_tags">
<input id="import_card_tags" type="checkbox" />
<span data-i18n="Import Card Tags">Import Card Tags</span>
</label>
<label data-newbie-hidden class="checkbox_label" for="confirm_message_delete">
<input id="confirm_message_delete" type="checkbox" />
<span data-i18n="Confirm message deletion">Confirm message deletion</span>
</label>
<label data-newbie-hidden class="checkbox_label" for="spoiler_free_mode">
<input id="spoiler_free_mode" type="checkbox" />
<span data-i18n="Spoiler Free Mode">Spoiler Free Mode</span>
</label>
<label data-newbie-hidden class="checkbox_label" for="relaxed_api_urls" title="Reduce the formatting requirements on API URLS">
<input id="relaxed_api_urls" type="checkbox" />
<span data-i18n="Relaxed API URLS">Relaxed API URLS</span>
</label>
<div data-newbie-hidden class="inline-drawer wide100p flexFlowColumn"> <div data-newbie-hidden class="inline-drawer wide100p flexFlowColumn">
<div class="inline-drawer-toggle inline-drawer-header"> <div class="inline-drawer-toggle inline-drawer-header">
@ -3117,7 +3110,7 @@
</div> </div>
</div> </div>
</div> </div>
</div>
<div data-newbie-hidden class="flex-container"> <div data-newbie-hidden class="flex-container">
<div id="reload_chat" class="menu_button whitespacenowrap" data-i18n="Reload Chat"> <div id="reload_chat" class="menu_button whitespacenowrap" data-i18n="Reload Chat">
Reload Chat Reload Chat
@ -3283,7 +3276,7 @@
</div> </div>
<div class="right_menu_button fa-solid fa-list-ul" id="rm_button_characters" title="Select/Create Characters" data-i18n="[title]Select/Create Characters"></div> <div class="right_menu_button fa-solid fa-list-ul" id="rm_button_characters" title="Select/Create Characters" data-i18n="[title]Select/Create Characters"></div>
</div> </div>
<div id="HotSwapWrapper" class="alignitemscenter flex-container margin0auto width100p"> <div name="HotSwapWrapper" class="alignitemscenter flex-container margin0auto">
<div class="hotswap flex-container flex1"></div> <div class="hotswap flex-container flex1"></div>
</div> </div>
@ -3296,16 +3289,9 @@
<h2></h2> <h2></h2>
</div> </div>
<div id="result_info" class="flex-container" style="display: none;"> <div id="result_info" class="flex-container" style="display: none;">
<div id="result_info_text" title="Token counts may be inaccurate and provided just for reference." data-i18n="[title]Token counts may be inaccurate and provided just for reference."> <span id="result_info_text" title="Token counts may be inaccurate and provided just for reference." data-i18n="[title]Token counts may be inaccurate and provided just for reference.">
<div> <strong id="result_info_total_tokens">Calculating...</strong> Total Tokens
<strong id="result_info_total_tokens" title="Total tokens">Calculating...</strong>&nbsp;<span data-i18n="Tokens">Tokens</span> </span>
</div>
<div>
<small title="Permanent tokens">
(<span id="result_info_permanent_tokens"></span>&nbsp;<span data-i18n="Permanent">Permanent</span>)
</small>
</div>
</div>
<a id="chartokenwarning" class="right_menu_button fa-solid fa-triangle-exclamation" href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#character-tokens" target="_blank" title="About Token 'Limits'"></a> <a id="chartokenwarning" class="right_menu_button fa-solid fa-triangle-exclamation" href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#character-tokens" target="_blank" title="About Token 'Limits'"></a>
<i title="Click for stats!" class="fa-solid fa-ranking-star right_menu_button rm_stats_button"></i> <i title="Click for stats!" class="fa-solid fa-ranking-star right_menu_button rm_stats_button"></i>
<i title="Toggle character info panel" id="hideCharPanelAvatarButton" class="fa-solid fa-eye right_menu_button"></i> <i title="Toggle character info panel" id="hideCharPanelAvatarButton" class="fa-solid fa-eye right_menu_button"></i>
@ -3321,7 +3307,7 @@
<div id="name_div"> <div id="name_div">
<input id="character_name_pole" name="ch_name" class="text_pole" data-i18n="[placeholder]Name this character" placeholder="Name this character" maxlength="50" value="" autocomplete="off"> <input id="character_name_pole" name="ch_name" class="text_pole" data-i18n="[placeholder]Name this character" placeholder="Name this character" maxlength="50" value="" autocomplete="off">
<div class="extension_token_counter"> <div class="extension_token_counter">
Tokens: <span data-token-counter="character_name_pole" data-token-permanent="true">counting...</span> Tokens: <span data-token-counter="character_name_pole">counting...</span>
</div> </div>
</div> </div>
@ -3403,7 +3389,7 @@
<textarea id="description_textarea" data-i18n="[placeholder]Describe your character's physical and mental traits here." placeholder="Describe your character's physical and mental traits here." class="marginBot5" name="description" placeholder=""></textarea> <textarea id="description_textarea" data-i18n="[placeholder]Describe your character's physical and mental traits here." placeholder="Describe your character's physical and mental traits here." class="marginBot5" name="description" placeholder=""></textarea>
<div class="extension_token_counter"> <div class="extension_token_counter">
Tokens: <span data-token-counter="description_textarea" data-token-permanent="true">counting...</span> Tokens: <span data-token-counter="description_textarea">counting...</span>
</div> </div>
<div id="first_message_div" class="marginBot5 title_restorable"> <div id="first_message_div" class="marginBot5 title_restorable">
@ -3553,7 +3539,7 @@
<div id="rm_character_import" class="right_menu" style="display: none;"> <div id="rm_character_import" class="right_menu" style="display: none;">
<form id="form_import" action="javascript:void(null);" method="post" enctype="multipart/form-data"> <form id="form_import" action="javascript:void(null);" method="post" enctype="multipart/form-data">
<input multiple type="file" id="character_import_file" accept=".json, image/png" name="avatar"> <input multiple type="file" id="character_import_file" accept=".json, image/png, image/webp" name="avatar">
<input id="character_import_file_type" name="file_type" class="text_pole" maxlength="999" size="2" value="" autocomplete="off"> <input id="character_import_file_type" name="file_type" class="text_pole" maxlength="999" size="2" value="" autocomplete="off">
</form> </form>
</div> </div>
@ -3687,7 +3673,7 @@
</h4> </h4>
<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="1" maxlength="20000"></textarea> <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="1" maxlength="20000"></textarea>
<div class="extension_token_counter"> <div class="extension_token_counter">
Tokens: <span data-token-counter="personality_textarea" data-token-permanent="true">counting...</span> Tokens: <span data-token-counter="personality_textarea">counting...</span>
</div> </div>
</div> </div>
@ -3700,7 +3686,7 @@
</h4> </h4>
<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="20000" value="" autocomplete="off" form="form_create" rows="1"></textarea> <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="20000" value="" autocomplete="off" form="form_create" rows="1"></textarea>
<div class="extension_token_counter"> <div class="extension_token_counter">
Tokens: <span data-token-counter="scenario_pole" data-token-permanent="true">counting...</span> Tokens: <span data-token-counter="scenario_pole">counting...</span>
</div> </div>
</div> </div>
@ -3853,7 +3839,6 @@
<div id="tag_view_template" class="template_element"> <div id="tag_view_template" class="template_element">
<div class="tag_view_item"> <div class="tag_view_item">
<div class="tagColorPickerHolder"></div> <div class="tagColorPickerHolder"></div>
<div class="tagColorPicker2Holder"></div>
<div class="tag_view_name" contenteditable="true"></div> <div class="tag_view_name" contenteditable="true"></div>
<div class="tag_view_counter"><span class="tag_view_counter_value"></span>&nbsp;entries</div> <div class="tag_view_counter"><span class="tag_view_counter_value"></span>&nbsp;entries</div>
<div title="Delete tag" class="tag_delete fa-solid fa-trash-can right_menu_button" data-i18n="[title]Delete tag"></div> <div title="Delete tag" class="tag_delete fa-solid fa-trash-can right_menu_button" data-i18n="[title]Delete tag"></div>
@ -3942,18 +3927,6 @@
</div> </div>
</div> </div>
</div> </div>
<div class="flex-container flexFlowColumn flexNoGap wide100p">
<label for="characterFilter" class="range-block-title justifyLeft">
<small data-i18n="Filter to Character(s)">Filter to Character(s)</small>
</label>
<div class="range-block-range">
<select name="characterFilter" multiple>
<option value="">
<span data-i18n="-- Characters not found --">-- Characters not found --</span>
</option>
</select>
</div>
</div>
<div name="WIEntryBottomControls" class="flex-container flex1 justifySpaceBetween world_entry_form_horizontal"> <div name="WIEntryBottomControls" class="flex-container flex1 justifySpaceBetween world_entry_form_horizontal">
<div class="flex-container flexFlowColumn flexNoGap wi-enter-footer-text "> <div class="flex-container flexFlowColumn flexNoGap wi-enter-footer-text ">
<label class="checkbox flex-container"> <label class="checkbox flex-container">
@ -3982,12 +3955,6 @@
Non-recursable Non-recursable
</span> </span>
</label> </label>
<label class="checkbox flex-container alignitemscenter">
<input type="checkbox" name="character_exclusion" />
<span data-i18n="Character Exclusion">
Character Exclusion
</span>
</label>
</div> </div>
<!-- <!--
@ -4529,6 +4496,7 @@
<div id="export_format_popup" class="list-group"> <div id="export_format_popup" class="list-group">
<div class="export_format list-group-item" data-format="png">PNG</div> <div class="export_format list-group-item" data-format="png">PNG</div>
<div class="export_format list-group-item" data-format="json">JSON</div> <div class="export_format list-group-item" data-format="json">JSON</div>
<div class="export_format list-group-item" data-format="webp">WEBP</div>
</div> </div>
<div id="zoomed_avatar_template" class="template_element"> <div id="zoomed_avatar_template" class="template_element">

View File

@ -26,6 +26,8 @@ const INPUT_MAP = {
[SECRET_KEYS.PALM]: '#api_key_palm', [SECRET_KEYS.PALM]: '#api_key_palm',
} }
const forbiddenMessage = `<h3 data-i18n=\"forbiddenHeading\">Forbidden</h3><p>To view your API keys here, set the value of allowKeysExposure to true in config.conf file and restart the SillyTavern server.</p>`
async function clearSecret() { async function clearSecret() {
const key = $(this).data('key'); const key = $(this).data('key');
await writeSecret(key, ''); await writeSecret(key, '');
@ -50,7 +52,7 @@ async function viewSecrets() {
}); });
if (response.status == 403) { if (response.status == 403) {
callPopup('<h3>Forbidden</h3><p>To view your API keys here, set the value of allowKeysExposure to true in config.conf file and restart the SillyTavern server.</p>', 'text'); callPopup(forbiddenMessage, 'text');
return; return;
} }