From 76c3ed1afa5bd9a4c16b895d29d6dc7e57171d48 Mon Sep 17 00:00:00 2001 From: somebody Date: Mon, 28 Nov 2022 22:04:48 -0600 Subject: [PATCH 1/5] Unsave game on wi image change --- aiserver.py | 1 + 1 file changed, 1 insertion(+) diff --git a/aiserver.py b/aiserver.py index 730edc74..90f019fa 100644 --- a/aiserver.py +++ b/aiserver.py @@ -8826,6 +8826,7 @@ def UI_2_set_wi_image(uid): else: # Otherwise assign image koboldai_vars.worldinfo_v2.image_store[uid] = data + koboldai_vars.gamesaved = False return ":)" @app.route("/get_wi_image/", methods=["GET"]) From 378423dd36d637258ee5d94f69721441f13c6713 Mon Sep 17 00:00:00 2001 From: somebody Date: Mon, 28 Nov 2022 22:05:04 -0600 Subject: [PATCH 2/5] Add retry to image context menu --- aiserver.py | 6 ++++++ static/koboldai.js | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/aiserver.py b/aiserver.py index 90f019fa..481c21eb 100644 --- a/aiserver.py +++ b/aiserver.py @@ -9223,6 +9223,12 @@ def UI_2_generate_image_from_prompt(prompt: str): eventlet.sleep(0) generate_story_image(prompt) +@socketio.on("retry_generated_image") +@logger.catch +def UI2_retry_generated_image(data): + eventlet.sleep(0) + generate_story_image(koboldai_vars.picture_prompt) + def generate_story_image(prompt: str, art_guide: str = "") -> None: # This function is a wrapper around generate_image() that integrates the # result with the story (read: puts it in the corner of the screen). diff --git a/static/koboldai.js b/static/koboldai.js index 43f8859d..a3b459f9 100644 --- a/static/koboldai.js +++ b/static/koboldai.js @@ -119,6 +119,7 @@ const context_menu_actions = { "generated-image": [ {label: "View", icon: "search", enabledOn: "ALWAYS", click: imgGenView}, {label: "Download", icon: "download", enabledOn: "ALWAYS", click: imgGenDownload}, + {label: "Retry", icon: "refresh", enabledOn: "ALWAYS", click: imgGenRetry}, {label: "Clear", icon: "clear", enabledOn: "ALWAYS", click: imgGenClear}, ], "wi-img-upload-button": [ @@ -6407,4 +6408,11 @@ function imgGenClear() { const container = $el("#action\\ image"); container.removeAttribute("tooltip"); socket.emit("clear_generated_image", {}); +} + +function imgGenRetry() { + const image = $el(".action_image"); + if (!image) return; + $el("#image-loading").classList.remove("hidden"); + socket.emit("retry_generated_image", {}); } \ No newline at end of file From b6caea023cab2ab29a28b2653326e3b4e3418f63 Mon Sep 17 00:00:00 2001 From: somebody Date: Mon, 28 Nov 2022 22:08:03 -0600 Subject: [PATCH 3/5] Fix errors on non-ui modes of finder --- static/koboldai.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/koboldai.js b/static/koboldai.js index a3b459f9..5ce4736a 100644 --- a/static/koboldai.js +++ b/static/koboldai.js @@ -5449,6 +5449,8 @@ process_cookies(); return; } + if (finder_mode !== "ui") return; + const actionsCount = actions.length; let future = finder_selection_index + delta; From 6db94890b596134e5fce66937b390e4bea7b641d Mon Sep 17 00:00:00 2001 From: somebody Date: Mon, 28 Nov 2022 22:13:01 -0600 Subject: [PATCH 4/5] Add Ctrl+S as shortcut to save story --- static/koboldai.js | 11 ++++++++--- templates/settings flyout.html | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/static/koboldai.js b/static/koboldai.js index 5ce4736a..4f9bdc10 100644 --- a/static/koboldai.js +++ b/static/koboldai.js @@ -75,7 +75,7 @@ var finder_actions = [ {name: "Load Model", icon: "folder_open", type: "action", func: function() { socket.emit('load_model_button', {}); }}, {name: "New Story", icon: "description", type: "action", func: function() { socket.emit('new_story', ''); }}, {name: "Load Story", icon: "folder_open", type: "action", func: function() { socket.emit('load_story_list', ''); }}, - {name: "Save Story", icon: "save", type: "action", func: function() { socket.emit("save_story", null, (response) => {save_as_story(response);}); }}, + {name: "Save Story", icon: "save", type: "action", func: save_story}, {name: "Download Story", icon: "file_download", type: "action", func: function() { document.getElementById('download_iframe').src = 'json'; }}, {name: "Import Story", icon: "file_download", desc: "Import a prompt from aetherroom.club, formerly prompts.aidg.club", type: "action", func: openClubImport }, @@ -130,8 +130,7 @@ const context_menu_actions = { // CTRL-[X] const shortcuts = [ - {key: "k", desc: "Finder", func: open_finder}, - {key: "/", desc: "Help screen", func: () => openPopup("shortcuts-popup")}, + {key: "s", desc: "Save Story", func: save_story}, {key: "z", desc: "Undoes last story action", func: () => socket.emit("back", {}), criteria: canNavigateStoryHistory}, {key: "y", desc: "Redoes last story action", func: () => socket.emit("redo", {}), criteria: canNavigateStoryHistory}, {key: "e", desc: "Retries last story action", func: () => socket.emit("retry", {}), criteria: canNavigateStoryHistory}, @@ -139,6 +138,8 @@ const shortcuts = [ {key: "u", desc: "Focuses Author's Note", func: () => focusEl("#authors_notes")}, // CTRL-N is reserved :^( {key: "g", desc: "Focuses game text", func: () => focusEl("#input_text")}, {key: "l", desc: '"Lock" screen (Not secure)', func: () => socket.emit("privacy_mode", {'enabled': true})}, + {key: "k", desc: "Finder", func: open_finder}, + {key: "/", desc: "Help screen", func: () => openPopup("shortcuts-popup")}, ] const chat = { @@ -652,6 +653,10 @@ function do_probabilities(action) { } +function save_story() { + socket.emit("save_story", null, response => save_as_story(response));; +} + function do_presets(data) { for (select of document.getElementsByClassName('presets')) { //clear out the preset list diff --git a/templates/settings flyout.html b/templates/settings flyout.html index 8afc9723..8e47f947 100644 --- a/templates/settings flyout.html +++ b/templates/settings flyout.html @@ -75,7 +75,7 @@ folder_open Load Story - From f615b5b4a1bec146ebd32918efeb512b225753e1 Mon Sep 17 00:00:00 2001 From: somebody Date: Mon, 28 Nov 2022 22:18:35 -0600 Subject: [PATCH 5/5] Add load story shortcut --- static/koboldai.js | 10 +++++----- templates/settings flyout.html | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/static/koboldai.js b/static/koboldai.js index 4f9bdc10..c172c398 100644 --- a/static/koboldai.js +++ b/static/koboldai.js @@ -74,7 +74,7 @@ const on_colab = $el("#on_colab").textContent == "true"; var finder_actions = [ {name: "Load Model", icon: "folder_open", type: "action", func: function() { socket.emit('load_model_button', {}); }}, {name: "New Story", icon: "description", type: "action", func: function() { socket.emit('new_story', ''); }}, - {name: "Load Story", icon: "folder_open", type: "action", func: function() { socket.emit('load_story_list', ''); }}, + {name: "Load Story", icon: "folder_open", type: "action", func: load_story_list}, {name: "Save Story", icon: "save", type: "action", func: save_story}, {name: "Download Story", icon: "file_download", type: "action", func: function() { document.getElementById('download_iframe').src = 'json'; }}, {name: "Import Story", icon: "file_download", desc: "Import a prompt from aetherroom.club, formerly prompts.aidg.club", type: "action", func: openClubImport }, @@ -131,6 +131,7 @@ const context_menu_actions = { // CTRL-[X] const shortcuts = [ {key: "s", desc: "Save Story", func: save_story}, + {key: "o", desc: "Open Story", func: load_story_list}, {key: "z", desc: "Undoes last story action", func: () => socket.emit("back", {}), criteria: canNavigateStoryHistory}, {key: "y", desc: "Redoes last story action", func: () => socket.emit("redo", {}), criteria: canNavigateStoryHistory}, {key: "e", desc: "Retries last story action", func: () => socket.emit("retry", {}), criteria: canNavigateStoryHistory}, @@ -653,9 +654,8 @@ function do_probabilities(action) { } -function save_story() { - socket.emit("save_story", null, response => save_as_story(response));; -} +function save_story() { socket.emit("save_story", null, response => save_as_story(response)); } +function load_story_list() { socket.emit("load_story_list", ""); } function do_presets(data) { for (select of document.getElementsByClassName('presets')) { @@ -4593,7 +4593,7 @@ async function loadKoboldData(data, filename) { if (data.gamestarted !== undefined) { // Story socket.emit("upload_file", {"filename": filename, "data": JSON.stringify(data)}); - socket.emit("load_story_list", ""); + load_story_list(); } else if (data.folders !== undefined && data.entries !== undefined) { // World Info Folder await postWI(data); diff --git a/templates/settings flyout.html b/templates/settings flyout.html index 8e47f947..ab61ea6f 100644 --- a/templates/settings flyout.html +++ b/templates/settings flyout.html @@ -71,7 +71,7 @@ description New Story -