diff --git a/aiserver.py b/aiserver.py index b466dba4..8f54677a 100644 --- a/aiserver.py +++ b/aiserver.py @@ -2410,6 +2410,7 @@ def lua_startup(): koboldai_vars.lua_koboldbridge.obliterate_multiverse() print("{0}{1}{2}".format(colors.RED, "***LUA ERROR***: ", colors.END), end="", file=sys.stderr) print("{0}{1}{2}".format(colors.RED, str(e).replace("\033", ""), colors.END), file=sys.stderr) + socketio.emit("error", str(e), broadcast=True, room="UI_2") exit(1) print(colors.GREEN + "OK!" + colors.END) @@ -2470,6 +2471,7 @@ def load_lua_scripts(): print("{0}{1}{2}".format(colors.RED, "***LUA ERROR***: ", colors.END), end="", file=sys.stderr) print("{0}{1}{2}".format(colors.RED, str(e).replace("\033", ""), colors.END), file=sys.stderr) print("{0}{1}{2}".format(colors.YELLOW, "Lua engine stopped; please open 'Userscripts' and press Load to reinitialize scripts.", colors.END), file=sys.stderr) + socketio.emit("error", str(e), broadcast=True, room="UI_2") if(koboldai_vars.serverstarted): set_aibusy(0) @@ -2960,6 +2962,7 @@ def execute_inmod(): print("{0}{1}{2}".format(colors.RED, "***LUA ERROR***: ", colors.END), end="", file=sys.stderr) print("{0}{1}{2}".format(colors.RED, str(e).replace("\033", ""), colors.END), file=sys.stderr) print("{0}{1}{2}".format(colors.YELLOW, "Lua engine stopped; please open 'Userscripts' and press Load to reinitialize scripts.", colors.END), file=sys.stderr) + socketio.emit("error", str(e), broadcast=True, room="UI_2") set_aibusy(0) def execute_genmod(): @@ -2978,6 +2981,7 @@ def execute_outmod(): print("{0}{1}{2}".format(colors.RED, "***LUA ERROR***: ", colors.END), end="", file=sys.stderr) print("{0}{1}{2}".format(colors.RED, str(e).replace("\033", ""), colors.END), file=sys.stderr) print("{0}{1}{2}".format(colors.YELLOW, "Lua engine stopped; please open 'Userscripts' and press Load to reinitialize scripts.", colors.END), file=sys.stderr) + socketio.emit("error", str(e), broadcast=True, room="UI_2") set_aibusy(0) if(koboldai_vars.lua_koboldbridge.resend_settings_required): koboldai_vars.lua_koboldbridge.resend_settings_required = False @@ -4112,9 +4116,11 @@ def generate(txt, minimum, maximum, found_entries=None): print("{0}{1}{2}".format(colors.RED, "***LUA ERROR***: ", colors.END), end="", file=sys.stderr) print("{0}{1}{2}".format(colors.RED, str(e).replace("\033", ""), colors.END), file=sys.stderr) print("{0}{1}{2}".format(colors.YELLOW, "Lua engine stopped; please open 'Userscripts' and press Load to reinitialize scripts.", colors.END), file=sys.stderr) + socketio.emit("error", str(e), broadcast=True, room="UI_2") else: emit('from_server', {'cmd': 'errmsg', 'data': 'Error occurred during generator call; please check console.'}, broadcast=True, room="UI_1") print("{0}{1}{2}".format(colors.RED, traceback.format_exc().replace("\033", ""), colors.END), file=sys.stderr) + socketio.emit("error", str(e), broadcast=True, room="UI_2") set_aibusy(0) return @@ -4417,9 +4423,11 @@ def tpumtjgenerate(txt, minimum, maximum, found_entries=None): print("{0}{1}{2}".format(colors.RED, "***LUA ERROR***: ", colors.END), end="", file=sys.stderr) print("{0}{1}{2}".format(colors.RED, str(e).replace("\033", ""), colors.END), file=sys.stderr) print("{0}{1}{2}".format(colors.YELLOW, "Lua engine stopped; please open 'Userscripts' and press Load to reinitialize scripts.", colors.END), file=sys.stderr) + socketio.emit("error", str(e), broadcast=True, room="UI_2") else: emit('from_server', {'cmd': 'errmsg', 'data': 'Error occurred during generator call; please check console.'}, broadcast=True, room="UI_1") print("{0}{1}{2}".format(colors.RED, traceback.format_exc().replace("\033", ""), colors.END), file=sys.stderr) + socketio.emit("error", str(e), broadcast=True, room="UI_2") set_aibusy(0) return @@ -6202,7 +6210,7 @@ def file_popup(popup_title, starting_folder, return_event, upload=True, jailed=T def get_files_folders(starting_folder): import stat - session['current_folder'] = starting_folder + session['current_folder'] = os.path.abspath(starting_folder).replace("\\", "/") item_check = session['popup_item_check'] show_breadcrumbs = session['popup_show_breadcrumbs'] show_hidden = session['popup_show_hidden'] @@ -6567,6 +6575,15 @@ def UI_2_phrase_bias_update(biases): def UI_2_relay(data): socketio.emit(data[0], data[1], **data[2]) +#==================================================================# +# Event triggered when program errors out +#==================================================================# +def my_except_hook(exctype, value, traceback): + print("sending error to clients") + socketio.emit("error", "{}: {}".format(exctype, value), broadcast=True, room="UI_2") + sys.__excepthook__(exctype, value, traceback) +sys.excepthook = my_except_hook + #==================================================================# # Test diff --git a/static/koboldai.js b/static/koboldai.js index b1bbfd76..eebee863 100644 --- a/static/koboldai.js +++ b/static/koboldai.js @@ -22,6 +22,7 @@ socket.on("world_info_entry", function(data){world_info_entry(data);}); socket.on("world_info_folder", function(data){world_info_folder(data);}); socket.on("delete_new_world_info_entry", function(data){document.getElementById("world_info_-1").remove();}); socket.on("delete_world_info_entry", function(data){document.getElementById("world_info_"+data).remove();}); +socket.on("error", function(data){show_error_message(data);}); //socket.onAny(function(event_name, data) {console.log({"event": event_name, "class": data.classname, "data": data});}); var presets = {}; @@ -1079,7 +1080,7 @@ function world_info_entry(data) { if (!(document.getElementById("world_info_folder_"+data.folder))) { folder = document.createElement("div"); - console.log("Didn't find folder " + data.folder); + //console.log("Didn't find folder " + data.folder); } else { folder = document.getElementById("world_info_folder_"+data.folder); } @@ -1248,6 +1249,11 @@ function world_info_folder(data) { } } +function show_error_message(data) { + error_message_box = document.getElementById('error_message'); + error_message_box.classList.remove("hidden"); + error_message_box.querySelector("#popup_list_area").textContent = data; +} //--------------------------------------------UI to Server Functions---------------------------------- function save_as_story(response) { if (response == "overwrite?") { @@ -1335,11 +1341,11 @@ function send_world_info(uid) { //--------------------------------------------General UI Functions------------------------------------ function do_biases(data) { - console.log(data); + //console.log(data); //clear out our old bias lines let bias_list = Object.assign([], document.getElementsByClassName("bias")); for (item of bias_list) { - console.log(item); + //console.log(item); item.parentNode.removeChild(item); } @@ -1586,7 +1592,7 @@ function unhide_wi_folder(folder) { function dragStart(e) { e.dataTransfer.setData('text/plain', e.target.id); - console.log(e.target.id); + //console.log(e.target.id); e.dataTransfer.dropEffect = "move"; setTimeout(() => { e.target.classList.add('hidden'); @@ -1635,7 +1641,7 @@ function drop(e) { // get the draggable element const id = e.dataTransfer.getData('text/plain'); const draggable = document.getElementById(id); - console.log(id); + //console.log(id); dragged_id = draggable.id.split("_").slice(-1)[0]; drop_id = element.id.split("_").slice(-1)[0]; @@ -1958,8 +1964,8 @@ function detect_enter_text(e) { e.cancelBubble = true; } //get element - console.log("Doing Text Enter"); - console.log(e.currentTarget.activeElement); + //console.log("Doing Text Enter"); + //console.log(e.currentTarget.activeElement); if (e.currentTarget.activeElement != undefined) { var item = $(e.currentTarget.activeElement); item.onchange(); diff --git a/templates/popups.html b/templates/popups.html index 5271fb4e..1828d0a7 100644 --- a/templates/popups.html +++ b/templates/popups.html @@ -80,4 +80,17 @@ + + + + \ No newline at end of file