From 7ce52046fd076e22405d2e2893e8b5085cf3329d Mon Sep 17 00:00:00 2001 From: RossAsscends <124905043+RossAscends@users.noreply.github.com> Date: Sat, 4 Mar 2023 04:00:40 +0900 Subject: [PATCH] New toggle features: Auto-Connect & Auto-Load-Chat 1. new function - Auto-connect to API 2. new function - Auto-load last character/chat Both of these have toggles in the right menu at the bottom in a "Power user options" section. Both only load if settings.json has a pre-defined setting for them. (won't fire on first load after install) --- public/User Avatars/you1.png | Bin 2930 -> 0 bytes public/index.html | 159 +++++++++++++++++++++++++---------- public/style.css | 22 +++-- server.js | 26 +++--- 4 files changed, 142 insertions(+), 65 deletions(-) delete mode 100644 public/User Avatars/you1.png diff --git a/public/User Avatars/you1.png b/public/User Avatars/you1.png deleted file mode 100644 index e241153a433d82c49cb18450b0da1dbf89631fe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2930 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 diff --git a/public/index.html b/public/index.html index 52ce17239..d76f7e2c3 100644 --- a/public/index.html +++ b/public/index.html @@ -81,6 +81,7 @@ var generatedPromtCache = ''; var characters = []; var this_chid; + var active_character; var backgrounds = []; var default_avatar = 'img/fluffy.png'; var is_colab = false; @@ -150,6 +151,8 @@ var anchor_order = 0; var style_anchor = true; var character_anchor = true; + var auto_connect = false; + var auto_load_chat = false; var main_api = 'kobold'; //novel settings @@ -201,18 +204,20 @@ $.get("/csrf-token") .then(data => { token = data.token; + getCharacters(); getSettings("def"); getLastVersion(); - getCharacters(); - + //getCharacters(); printMessages(); getBackgrounds(); getUserAvatars(); + }); + - $('#characloud_url').click(function(){ - window.open('https://boosty.to/tavernai', '_blank'); - }); + $('#characloud_url').click(function(){ + window.open('https://boosty.to/tavernai', '_blank'); + }); function checkOnlineStatus(){ //console.log(online_status); if(online_status == 'no_connection'){ @@ -341,7 +346,7 @@ this_avatar = "characters/"+item.avatar+"#"+Date.now(); } - $("#rm_print_characters_block").prepend('
'+item.name+'
'); + $("#rm_print_characters_block").prepend('
'+item.name+'
'); //console.log(item.name); }); @@ -1099,7 +1104,7 @@ addOneMessage(chat[chat.length-1]); $( "#send_but" ).css("display", "inline"); $( "#loading_mes" ).css("display", "none"); -console.log('/savechat called by /Generate'); +//console.log('/savechat called by /Generate'); saveChat(); }else{ //console.log('run force_name2 protocol'); @@ -1161,7 +1166,7 @@ console.log('/savechat called by /Generate'); }); } async function getChat() { -console.log('/getChat entered'); +//console.log('/getChat entered'); //console.log(characters[this_chid].chat); jQuery.ajax({ type: 'POST', @@ -1182,16 +1187,16 @@ console.log('/getChat entered'); } //chat = data; chat_create_date = chat[0]['create_date']; -console.log('/getchat saw chat_create_date: '+chat_create_date); +//console.log('/getchat saw chat_create_date: '+chat_create_date); chat.shift(); }else{ chat_create_date = humanizedISO8601DateTime(); } //console.log(chat); -console.log('getChatResults called by /getchat'); +//console.log('getChatResults called by /getchat'); getChatResult(); -console.log('savechat called by /getchat'); +//console.log('savechat called by /getchat'); saveChat(); }, error: function (jqXHR, exception) { @@ -1388,12 +1393,13 @@ console.log('savechat called by /getchat'); } function select_selected_character(chid){ //character select - + //console.log('select_selected_character() -- starting with input of -- '+chid+' (name:'+characters[chid].name+')'); select_rm_create(); menu_type = 'character_edit'; $( "#delete_button_div" ).css("display", "block"); $( "#rm_button_selected_ch" ).css("class","selected-right-tab"); var display_name = characters[chid].name; + $( "#rm_button_selected_ch" ).children("h2").text(display_name); @@ -1432,6 +1438,10 @@ console.log('savechat called by /getchat'); $("#name_div").css("display", "none"); $("#form_create").attr("actiontype", "editcharacter"); + active_character = chid; + //console.log('select_selected_character() -- active_character -- '+chid+'(ChID of '+display_name+')'); + saveSettings(); + //console.log('select_selected_character() -- called saveSettings() to save -- active_character -- '+active_character+'(ChID of '+display_name+')'); } $(document).on('click', '.character_select', function(){ if(this_chid !== $(this).attr("chid")){ @@ -1441,8 +1451,7 @@ console.log('savechat called by /getchat'); this_chid = $(this).attr("chid"); clearChat(); chat.length = 0; - getChat(); - + getChat(); } }else{ selected_button = 'character_edit'; @@ -1728,8 +1737,7 @@ console.log('savechat called by /getchat'); if($("#form_create").attr("actiontype") == "createcharacter"){ if($("#character_name_pole").val().length > 0){ -console.log('/createcharacter entered'); -console.log('CharCreate formData: '+formData); +//console.log('/createcharacter entered'); jQuery.ajax({ type: 'POST', url: '/createcharacter', @@ -1772,7 +1780,7 @@ console.log('CharCreate formData: '+formData); select_rm_info("Character created"); $('#rm_info_block').transition({ opacity: 1.0 ,duration: 2000}); -console.log('/getcharacters called after /createchracter'); +//console.log('/getcharacters called after /createchracter'); getCharacters(); }else{ $('#result_info').html(html); @@ -1786,7 +1794,7 @@ console.log('/getcharacters called after /createchracter'); $('#result_info').html("Name not entered"); } }else{ -console.log('Avatar Button Value:'+$("#add_avatar_button").val()); +//console.log('Avatar Button Value:'+$("#add_avatar_button").val()); jQuery.ajax({ type: 'POST', @@ -2191,6 +2199,16 @@ console.log('Avatar Button Value:'+$("#add_avatar_button").val()); character_anchor = !!$('#character_anchor').prop('checked'); saveSettings(); }); + + $('#auto-connect-checkbox').change(function() { + auto_connect = !!$('#auto-connect-checkbox').prop('checked'); + saveSettings(); + }); + $('#auto-load-chat-checkbox').change(function() { + auto_load_chat = !!$('#auto-load-chat-checkbox').prop('checked'); + saveSettings(); + }); + $(document).on('input', '#rep_pen', function() { rep_pen = $(this).val(); if(isInt(rep_pen)){ @@ -2235,7 +2253,7 @@ console.log('Avatar Button Value:'+$("#add_avatar_button").val()); /////////////////////////////////////////// async function getSettings(type){//timer - + //console.log('getSettings() pinging server for settings request'); jQuery.ajax({ type: 'POST', url: '/getsettings', @@ -2249,33 +2267,36 @@ console.log('Avatar Button Value:'+$("#add_avatar_button").val()); contentType: "application/json", //processData: false, success: function(data){ +// console.log('processing loaded settings'); if(data.result != 'file not find'){ +// console.log('getSettings() -- settings file found'); settings = JSON.parse(data.settings); if(settings.username !== undefined){ +// console.log('getSettings() -- Username -- '+settings.username); if(settings.username !== ''){ name1 = settings.username; $('#your_name').val(name1); } } - - - //Novel + + //Load which API we are using if(settings.main_api != undefined){ main_api = settings.main_api; $("#main_api option[value="+main_api+"]").attr('selected', 'true'); changeMainAPI(); } + //load Novel API KEY is exists if(settings.api_key_novel != undefined){ api_key_novel = settings.api_key_novel; $("#api_key_novel").val(api_key_novel); } + //load the rest of the Novel settings without any checks model_novel = settings.model_novel; $("#model_novel_select option[value="+model_novel+"]").attr('selected', 'true'); novelai_setting_names = data.novelai_setting_names; novelai_settings = data.novelai_settings; novelai_settings.forEach(function(item, i, arr) { - novelai_settings[i] = JSON.parse(item); }); var arr_holder = {}; @@ -2290,7 +2311,8 @@ console.log('Avatar Button Value:'+$("#add_avatar_button").val()); preset_settings_novel = settings.preset_settings_novel; $("#settings_perset_novel option[value="+novelai_setting_names[preset_settings_novel]+"]").attr('selected', 'true'); - //Kobold + + //Load KoboldAI settings koboldai_setting_names = data.koboldai_setting_names; koboldai_settings = data.koboldai_settings; koboldai_settings.forEach(function(item, i, arr) { @@ -2307,13 +2329,19 @@ console.log('Avatar Button Value:'+$("#add_avatar_button").val()); koboldai_setting_names = arr_holder; preset_settings = settings.preset_settings; - + + //Load AI model config settings (temp, context length, anchors, and anchor order) temp = settings.temp; amount_gen = settings.amount_gen; if(settings.max_context !== undefined) max_context = parseInt(settings.max_context); if(settings.anchor_order !== undefined) anchor_order = parseInt(settings.anchor_order); if(settings.style_anchor !== undefined) style_anchor = !!settings.style_anchor; if(settings.character_anchor !== undefined) character_anchor = !!settings.character_anchor; + + //load poweruser options + if(settings.auto_connect !== undefined) auto_connect = !!settings.auto_connect; + if(settings.auto_load_chat !== undefined) auto_load_chat = !!settings.auto_load_chat; + rep_pen = settings.rep_pen; rep_pen_size = settings.rep_pen_size; @@ -2327,6 +2355,9 @@ console.log('Avatar Button Value:'+$("#add_avatar_button").val()); $('#character_anchor').prop('checked', character_anchor); $("#anchor_order option[value="+anchor_order+"]").attr('selected', 'true'); + $('#auto-connect-checkbox').prop('checked', auto_connect); + $('#auto-load-chat-checkbox').prop('checked', auto_load_chat); + $('#max_context').val(max_context); $('#max_context_counter').html(max_context+' Tokens'); @@ -2360,7 +2391,7 @@ console.log('Avatar Button Value:'+$("#add_avatar_button").val()); $('#rep_pen_size_novel').val(rep_pen_size_novel); $('#rep_pen_size_counter_novel').html(rep_pen_size_novel+" Tokens"); - ////////////////////// + //Enable GUI deference settings if GUI is selected for Kobold if(preset_settings == 'gui'){ $("#settings_perset option[value=gui]").attr('selected', 'true'); $("#range_block").children().prop("disabled", true); @@ -2384,17 +2415,36 @@ console.log('Avatar Button Value:'+$("#add_avatar_button").val()); } - //User + //Load User's Name and Avatar user_avatar = settings.user_avatar; $('.mes').each(function(){ if($(this).attr('ch_name') == name1){ $(this).children('.avatar').children('img').attr('src', 'User Avatars/'+user_avatar); } }); - + + //Load the API server URL from settings api_server = settings.api_server; $('#api_url_text').val(api_server); + + //RossAscends: auto-connect to last API function (fires when API URL exists in settings and auto_connect is true) + if(api_server !== ''&& auto_connect == true){ + $('#api_button').click(); + } } + + //RossAscends: auto-load last character function (fires when active_character is defined and auto_load_chat is true) + if(settings.active_character !== undefined){ + //console.log('getSettings() -- active_character -- '+settings.active_character); + if(settings.active_character !== ''){ + active_character = settings.active_character; + //console.log('getSettings() -- auto_load_chat -- '+auto_load_chat); + if (auto_load_chat == true){ + //console.log('getSettings() - trying to click .character_select div with ID #CharID'+active_character); + $('#CharID'+active_character).click(); //will auto-select and load chat of last selected character is auto_load_chat is true + } + } + } if(!is_checked_colab) isColab(); }, @@ -2408,7 +2458,7 @@ console.log('Avatar Button Value:'+$("#add_avatar_button").val()); } async function saveSettings(type){ - +//console.log('saveSettings() -- pinging server to save settings.'); jQuery.ajax({ type: 'POST', url: '/savesettings', @@ -2424,6 +2474,8 @@ console.log('Avatar Button Value:'+$("#add_avatar_button").val()); anchor_order: anchor_order, style_anchor: style_anchor, character_anchor: character_anchor, + auto_connect: auto_connect, + auto_load_chat: auto_load_chat, main_api: main_api, api_key_novel: api_key_novel, rep_pen: rep_pen, @@ -2431,10 +2483,11 @@ console.log('Avatar Button Value:'+$("#add_avatar_button").val()); model_novel: model_novel, temp_novel: temp_novel, rep_pen_novel: rep_pen_novel, - rep_pen_size_novel: rep_pen_size_novel + rep_pen_size_novel: rep_pen_size_novel, + active_character: active_character                  }), beforeSend: function(){ - +//console.log('saveSettings() -- active_character -- '+active_character); }, cache: false, @@ -2578,14 +2631,14 @@ console.log('Avatar Button Value:'+$("#add_avatar_button").val()); if(!is_send_press){ name1 = $("#your_name").val(); if(name1 === undefined || name1 == '') name1 = default_user_name; - console.log(name1); + //console.log(name1); saveSettings('change_name'); } }); //Select chat async function getAllCharaChats() { - console.log('entered getAllCharaChats'); + //console.log('getAllCharaChats() pinging server for character chat history.'); $('#select_chat_div').html(''); //console.log(characters[this_chid].chat); jQuery.ajax({ @@ -2601,12 +2654,11 @@ console.log('Avatar Button Value:'+$("#add_avatar_button").val()); success: function(data){ $('#load_select_chat_div').css('display', 'none'); let dataArr = Object.values(data); - console.log('dataArr = '+ Object.values(data)); data = dataArr.sort((a, b) => a['file_name'].localeCompare(b['file_name'])); data = data.reverse(); for (const key in data) { - let strlen = 40; + let strlen = 300; let mes = data[key]['mes']; if(mes !== undefined){ if(mes.length > strlen){ @@ -2628,11 +2680,11 @@ console.log('Avatar Button Value:'+$("#add_avatar_button").val()); //chat = data; //getChatResult(); //saveChat(); - console.log('Finished getAllCharaChats successfully'); + //console.log('getAllCharaChats() -- Finished successfully'); }, error: function (jqXHR, exception) { //getChatResult(); - console.log('Failed to Finished getAllCharaChats'); + //console.log('getAllCharaChats() -- Failed'); console.log(exception); console.log(jqXHR); @@ -2833,7 +2885,7 @@ console.log('Avatar Button Value:'+$("#add_avatar_button").val()); $("#chat_import_file_type").val(format); //console.log(format); var formData = new FormData($("#form_import_chat").get(0)); -console.log('/importchat entered with: '+formData); +//console.log('/importchat entered with: '+formData); jQuery.ajax({ type: 'POST', url: '/importchat', @@ -3132,7 +3184,7 @@ console.log('/importchat entered with: '+formData); -
+

Your Avatar

@@ -3143,17 +3195,23 @@ console.log('/importchat entered with: '+formData);
-
-

Pro Settings

+ +
+

Pro Settings

+
-

Amount generation

select
- +

Amount generation

+
select
+
-

Context Size

select
+

Context Size

+
select
-

Anchors Order

Helps to increase the length of messages (?)
+ +

Anchors Order

+
Helps to increase the length of messages (?)

Character Anchor

Style Anchor

+
+
+ +
+

Power User Options

+
+

Auto-connects Last Server

+

Auto-load Last Chat

+
+ +