diff --git a/js/main.js b/js/main.js index 9a620fa9..7e2a457c 100644 --- a/js/main.js +++ b/js/main.js @@ -884,7 +884,7 @@ function setupPasteHandler() { textbox.addEventListener("paste", async (event) => { const text = event.clipboardData?.getData("text"); - if (text && text.length > MAX_PLAIN_TEXT_LENGTH) { + if (text && text.length > MAX_PLAIN_TEXT_LENGTH && document.querySelector("#paste_to_attachment input[data-testid=\"checkbox\"]")?.checked) { event.preventDefault(); const file = new File([text], "pasted_text.txt", { diff --git a/modules/shared.py b/modules/shared.py index 3794206b..59c7dbcd 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -223,6 +223,7 @@ settings = { 'custom_token_bans': '', 'negative_prompt': '', 'dark_theme': True, + 'paste_to_attachment': False, 'default_extensions': [], # Character settings diff --git a/modules/ui.py b/modules/ui.py index 8ec4b165..46403dd9 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -268,6 +268,11 @@ def list_interface_input_elements(): # Model elements elements += list_model_elements() + # Other elements + elements += [ + 'paste_to_attachment' + ] + return elements @@ -473,6 +478,7 @@ def setup_auto_save(): # Session tab (ui_session.py) 'show_controls', 'theme_state', + 'paste_to_attachment' ] for element_name in change_elements: diff --git a/modules/ui_session.py b/modules/ui_session.py index 086a06bf..2ece2251 100644 --- a/modules/ui_session.py +++ b/modules/ui_session.py @@ -12,6 +12,7 @@ def create_ui(): gr.Markdown("## Settings") shared.gradio['save_settings'] = gr.Button('Save settings to user_data/settings.yaml', elem_classes='refresh-button', interactive=not mu) shared.gradio['toggle_dark_mode'] = gr.Button('Toggle light/dark theme 💡', elem_classes='refresh-button') + shared.gradio['paste_to_attachment'] = gr.Checkbox(label='Turn long pasted text into attachments in the Chat tab', value=shared.settings['paste_to_attachment'], elem_id='paste_to_attachment') with gr.Column(): gr.Markdown("## Extensions & flags")