diff --git a/package-lock.json b/package-lock.json index d91b4d8b6..d30ba7dcd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "TavernAI", - "version": "1.1.0", + "version": "1.1.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "TavernAI", - "version": "1.1.0", + "version": "1.1.1", "dependencies": { "@dqbd/tiktoken": "^1.0.2", "axios": "^1.3.4", diff --git a/public/index.html b/public/index.html index 0c0a68ef5..a8510419c 100644 --- a/public/index.html +++ b/public/index.html @@ -815,6 +815,15 @@ Remove Empty New Lines from Output
+
+
+ Custom Chat Separator +
+
+ +
+
+
Anchors Order diff --git a/public/script.js b/public/script.js index 0cc8ca8f5..777de57e0 100644 --- a/public/script.js +++ b/public/script.js @@ -1,5 +1,5 @@ import { humanizedDateTime } from "./scripts/RossAscends-mods.js"; -import { encode, decode } from "../scripts/gpt-2-3-tokenizer/mod.js"; +import { encode } from "../scripts/gpt-2-3-tokenizer/mod.js"; import { kai_settings, @@ -45,6 +45,7 @@ import { disable_personality_formatting, disable_scenario_formatting, always_force_name2, + custom_chat_separator, } from "./scripts/power-user.js"; import { @@ -67,7 +68,7 @@ import { nai_settings, } from "./scripts/nai-settings.js"; -import { debounce, delay, stringFormat } from "./scripts/utils.js"; +import { debounce, delay } from "./scripts/utils.js"; //exporting functions and vars for mods export { @@ -1114,6 +1115,12 @@ async function Generate(type, automatic_trigger, force_name2) {//encode("dsfs"). } } + if (custom_chat_separator && custom_chat_separator.length) { + for (let i = 0; i < mesExamplesArray.length; i++) { + mesExamplesArray[i] = mesExamplesArray[i].replace(//gi, custom_chat_separator); + } + } + if (pin_examples) { for (let example of mesExamplesArray) { if (!is_pygmalion) { @@ -1180,6 +1187,12 @@ async function Generate(type, automatic_trigger, force_name2) {//encode("dsfs"). } } } + if (main_api == 'openai') { + this_max_context = oai_settings.openai_max_context; + } + if (main_api == 'textgenerationwebui') { + this_max_context = (max_context - amount_gen); + } let { worldInfoString, worldInfoBefore, worldInfoAfter } = getWorldInfoPrompt(chat2); let extension_prompt = getExtensionPrompt(); @@ -1347,9 +1360,16 @@ async function Generate(type, automatic_trigger, force_name2) {//encode("dsfs"). setPromtString(); } - if (!is_pygmalion) { + // add a custom dingus (if defined) + if (custom_chat_separator && custom_chat_separator.length) { + mesSendString = custom_chat_separator + '\n' + mesSendString; + } + // add non-pygma dingus + else if (!is_pygmalion) { mesSendString = '\nThen the roleplay chat between ' + name1 + ' and ' + name2 + ' begins.\n' + mesSendString; - } else { + } + // add pygma + else { mesSendString = '\n' + mesSendString; //mesSendString = mesSendString; //This edit simply removes the first "" that is prepended to all context prompts } @@ -1450,7 +1470,7 @@ async function Generate(type, automatic_trigger, force_name2) {//encode("dsfs"). name2, // name2 "", // Context true, // stop at newline - max_context, // Maximum prompt size in tokens + this_max_context, // Maximum prompt size in tokens 1, // num attempts ] }; @@ -4100,6 +4120,7 @@ $(document).ready(function () { var icon = $(this).find('.drawer-icon'); var drawer = $(this).parent().find('.drawer-content'); var drawerWasOpenAlready = $(this).parent().find('.drawer-content').hasClass('openDrawer'); + const pinnedDrawerClicked = drawer.hasClass('pinnedOpen'); if (!drawerWasOpenAlready) { $('.openDrawer').not('.pinnedOpen').slideToggle(200, "swing"); @@ -4110,7 +4131,14 @@ $(document).ready(function () { $(this).closest('.drawer').find('.drawer-content').slideToggle(200, "swing"); } else if (drawerWasOpenAlready) { icon.toggleClass('closedIcon openIcon'); - $('.openDrawer').slideToggle(200, "swing"); + + if (pinnedDrawerClicked) { + $(drawer).slideToggle(200, "swing"); + } + else { + $('.openDrawer').not('.pinnedOpen').slideToggle(200, "swing"); + } + drawer.toggleClass('closedDrawer openDrawer'); } }); diff --git a/public/scripts/RossAscends-mods.js b/public/scripts/RossAscends-mods.js index 94024b430..2286ffe13 100644 --- a/public/scripts/RossAscends-mods.js +++ b/public/scripts/RossAscends-mods.js @@ -287,6 +287,12 @@ $("document").ready(function () { } else { console.log('removing pin class from right nav'); $(RightNavPanel).removeClass('pinnedOpen'); + + if ($(RightNavPanel).hasClass('openDrawer') && $('.openDrawer').length > 1) { + $(RightNavPanel).slideToggle(200, "swing"); + $(rightNavDrawerIcon).toggleClass('openIcon closedIcon'); + $(RightNavPanel).toggleClass('openDrawer closedDrawer'); + } } }); diff --git a/public/scripts/extensions/floating-prompt/index.js b/public/scripts/extensions/floating-prompt/index.js index 6b3059843..ce3381d3e 100644 --- a/public/scripts/extensions/floating-prompt/index.js +++ b/public/scripts/extensions/floating-prompt/index.js @@ -48,6 +48,11 @@ async function moduleWorker() { // take the count of messages lastMessageNumber = Array.isArray(context.chat) && context.chat.length ? context.chat.filter(m => m.is_user).length : 0; + // special case for new chat + if (Array.isArray(context.chat) && context.chat.length === 1) { + lastMessageNumber = 1; + } + if (lastMessageNumber <= 0 || promptInsertionInterval <= 0) { $('#extension_floating_counter').text('No'); return; diff --git a/public/scripts/power-user.js b/public/scripts/power-user.js index e1bdf4aec..e688e9e9f 100644 --- a/public/scripts/power-user.js +++ b/public/scripts/power-user.js @@ -7,6 +7,7 @@ export { disable_scenario_formatting, disable_personality_formatting, always_force_name2, + custom_chat_separator, }; let collapse_newlines = false; @@ -16,6 +17,7 @@ let disable_description_formatting = false; let disable_scenario_formatting = false; let disable_personality_formatting = false; let always_force_name2 = false; +let custom_chat_separator = ''; const storage_keys = { collapse_newlines: "TavernAI_collapse_newlines", @@ -25,6 +27,7 @@ const storage_keys = { disable_scenario_formatting: "TavernAI_disable_scenario_formatting", disable_personality_formatting: "TavernAI_disable_personality_formatting", always_force_name2: "TavernAI_always_force_name2", + custom_chat_separator: "TavernAI_custom_chat_separator", }; function collapseNewlines(x) { @@ -39,6 +42,7 @@ function loadPowerUserSettings() { disable_scenario_formatting = localStorage.getItem(storage_keys.disable_scenario_formatting) == "true"; disable_personality_formatting = localStorage.getItem(storage_keys.disable_personality_formatting) == "true"; always_force_name2 = localStorage.getItem(storage_keys.always_force_name2) == "true"; + custom_chat_separator = localStorage.getItem(storage_keys.custom_chat_separator); $("#force-pygmalion-formatting-checkbox").prop("checked", force_pygmalion_formatting); $("#collapse-newlines-checkbox").prop("checked", collapse_newlines); @@ -47,6 +51,7 @@ function loadPowerUserSettings() { $("#disable-scenario-formatting-checkbox").prop("checked", disable_scenario_formatting); $("#disable-personality-formatting-checkbox").prop("checked", disable_personality_formatting); $("#always-force-name2-checkbox").prop("checked", always_force_name2); + $("#custom_chat_separator").val(custom_chat_separator); } $(document).ready(() => { @@ -87,4 +92,9 @@ $(document).ready(() => { always_force_name2 = !!$(this).prop("checked"); localStorage.setItem(storage_keys.always_force_name2, always_force_name2); }); + + $("#custom_chat_separator").on('input', function() { + custom_chat_separator = $(this).val(); + localStorage.setItem(storage_keys.custom_chat_separator, custom_chat_separator); + }); }); \ No newline at end of file diff --git a/public/style.css b/public/style.css index 09af482fc..5e7a7bade 100644 --- a/public/style.css +++ b/public/style.css @@ -2790,7 +2790,7 @@ filter: invert(20%) sepia(100%) saturate(2518%) hue-rotate(353deg) brightness(93 padding: 10px; border: 1px solid var(--grey30a); box-shadow: 0 0 20px black; - /* min-width:400px; */ + min-width: 400px; overflow-y: scroll; max-height: calc(100vh - 70px); display: none; @@ -2824,6 +2824,7 @@ filter: invert(20%) sepia(100%) saturate(2518%) hue-rotate(353deg) brightness(93 } .drawer-content { + min-width: unset; width: calc(100vw - 10px); position: fixed; left: 0;