diff --git a/aiserver.py b/aiserver.py index d9c28944..2ea480a6 100644 --- a/aiserver.py +++ b/aiserver.py @@ -2262,7 +2262,7 @@ def reset_model_settings(): koboldai_vars.newlinemode = "n" koboldai_vars.revision = None -def load_model(use_gpu=True, gpu_layers=None, disk_layers=None, initial_load=False, online_model="", use_breakmodel_args=False, breakmodel_args_default_to_cpu=False): +def load_model(use_gpu=True, gpu_layers=None, disk_layers=None, initial_load=False, online_model="", use_breakmodel_args=False, breakmodel_args_default_to_cpu=False, url=None): global model global generator global torch @@ -2921,10 +2921,12 @@ def load_model(use_gpu=True, gpu_layers=None, disk_layers=None, initial_load=Fal from transformers import GPT2TokenizerFast tokenizer = GPT2TokenizerFast.from_pretrained("EleutherAI/gpt-neo-2.7B", revision=koboldai_vars.revision, cache_dir="cache") loadsettings() + koboldai_vars.colaburl = url if url is not None else koboldai_vars.colaburl elif(koboldai_vars.model == "OAI"): from transformers import GPT2TokenizerFast tokenizer = GPT2TokenizerFast.from_pretrained("gpt2", revision=koboldai_vars.revision, cache_dir="cache") loadsettings() + koboldai_vars.colaburl = url if url is not None else koboldai_vars.colaburl # Load the TPU backend if requested elif(koboldai_vars.use_colab_tpu or koboldai_vars.model in ("TPUMeshTransformerGPTJ", "TPUMeshTransformerGPTNeoX")): global tpu_mtj_backend @@ -8107,7 +8109,7 @@ def UI_2_load_model(data): koboldai_vars.model = data['model'] koboldai_vars.custmodpth = data['path'] print("loading Model") - load_model(use_gpu=data['use_gpu'], gpu_layers=data['gpu_layers'], disk_layers=data['disk_layers'], online_model=data['online_model']) + load_model(use_gpu=data['use_gpu'], gpu_layers=data['gpu_layers'], disk_layers=data['disk_layers'], online_model=data['online_model'], url=koboldai_vars.colaburl) #==================================================================# # Event triggered when load story is clicked diff --git a/static/koboldai.js b/static/koboldai.js index ff4d6d21..a7c3c71b 100644 --- a/static/koboldai.js +++ b/static/koboldai.js @@ -1509,7 +1509,12 @@ function world_info_entry(data) { world_info_data[data.uid] = data; //delete the existing world info and recreate + var original_focus = null; if (document.getElementById("world_info_"+data.uid)) { + //First let's get the id of the element we're on so we can restore it after removing the object + original_focus = document.activeElement.id; + //console.log("Active ID: "+original_focus); + //console.log(document.activeElement); document.getElementById("world_info_"+data.uid).remove(); } world_info_card_template = document.getElementById("world_info_"); @@ -1616,8 +1621,10 @@ function world_info_entry(data) { wpp_name.value = data.wpp.name; } if ('attributes' in data.wpp) { + i = -1; for (const [attribute, values] of Object.entries(data.wpp.attributes)) { if (attribute != '') { + i += 1; attribute_area = document.createElement("div"); label = document.createElement("span"); label.textContent = "\xa0\xa0\xa0\xa0Attribute: "; @@ -1627,10 +1634,13 @@ function world_info_entry(data) { input.type = "text"; input.setAttribute("uid", data.uid); input.setAttribute("data_type", "attribute"); + input.id = "wpp_"+data.uid+"_attr_"+i input.onchange = function() {do_wpp(this.parentElement.parentElement)}; attribute_area.append(input); world_info_wpp_area.append(attribute_area); + j=-1; for (value of values) { + j+=1; value_area = document.createElement("div"); label = document.createElement("span"); label.textContent = "\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0Value: "; @@ -1641,6 +1651,7 @@ function world_info_entry(data) { input.value = value; input.setAttribute("uid", data.uid); input.setAttribute("data_type", "value"); + input.id = "wpp_"+data.uid+"_value_"+i+"_"+j; value_area.append(input); world_info_wpp_area.append(value_area); } @@ -1652,6 +1663,7 @@ function world_info_entry(data) { input.type = "text"; input.setAttribute("uid", data.uid); input.setAttribute("data_type", "value"); + input.id = "wpp_"+data.uid+"_value_"+i+"_blank"; input.onchange = function() {do_wpp(this.parentElement.parentElement)}; value_area.append(input); world_info_wpp_area.append(value_area); @@ -1667,6 +1679,7 @@ function world_info_entry(data) { input.type = "text"; input.setAttribute("uid", data.uid); input.setAttribute("data_type", "attribute"); + input.id = "wpp_"+data.uid+"_attr_blank"; input.onchange = function() {do_wpp(this.parentElement.parentElement)}; attribute_area.append(input); world_info_wpp_area.append(attribute_area); @@ -1757,6 +1770,11 @@ function world_info_entry(data) { document.getElementById("world_info_basic_text_"+wpp_toggle.getAttribute('uid')).classList.remove("hidden"); } + if (document.getElementById(original_focus)) { + //for some reason we have to wrap this in a timmer + setTimeout(function() {document.getElementById(original_focus).focus()}, 0); + } + assign_world_info_to_action(null, data.uid); update_token_lengths(); @@ -2823,6 +2841,7 @@ function add_tags(tags, data) { text.setAttribute("contenteditable", true); text.setAttribute("uid", data.uid); text.setAttribute("tag", tag); + text.id = "world_info_tags_text_"+data.uid+"_"+tag; text.onblur = function () { for (var i = 0; i < world_info_data[this.getAttribute('uid')]['key'].length; i++) { if (world_info_data[this.getAttribute('uid')]['key'][i] == this.getAttribute("tag")) { @@ -2848,6 +2867,7 @@ function add_tags(tags, data) { text.textContent = " "; text.setAttribute("uid", data.uid); text.setAttribute("contenteditable", true); + text.id = "world_info_tags_text_"+data.uid+"_blank"; text.onblur = function () { world_info_data[this.getAttribute('uid')]['key'].push(this.textContent); send_world_info(this.getAttribute('uid')); @@ -2880,6 +2900,7 @@ function add_secondary_tags(tags, data) { text.setAttribute("contenteditable", true); text.setAttribute("uid", data.uid); text.setAttribute("tag", tag); + text.id = "world_info_secondtags_text_"+data.uid+"_"+tag; text.onblur = function () { for (var i = 0; i < world_info_data[this.getAttribute('uid')]['keysecondary'].length; i++) { if (world_info_data[this.getAttribute('uid')]['keysecondary'][i] == this.getAttribute("tag")) { @@ -2905,6 +2926,7 @@ function add_secondary_tags(tags, data) { text.textContent = " "; text.setAttribute("uid", data.uid); text.setAttribute("contenteditable", true); + text.id = "world_info_secondtags_text_"+data.uid+"_blank"; text.onblur = function () { world_info_data[this.getAttribute('uid')]['keysecondary'].push(this.textContent); send_world_info(this.getAttribute('uid'));