Reasoning inline edit improvements + style

8fb95f9a8401cd6e82097ddd2d8e822a56677291

Wolfsblvt <wolfsblvt@gmail.com>

2 files changed, +32 -5Ignore whitespace
public/script.js+21 -0
@@ -7306,6 +7306,11 @@ async function messageEditDone(div) {
73067306 appendMediaToMessage(mes, div.closest('.mes'));
73077307 addCopyToCodeBlocks(div.closest('.mes'));
73087308
7309+ const reasoningEditDone = mesBlock.find('.mes_reasoning_edit_done:visible');
7310+ if (reasoningEditDone.length > 0) {
7311+ reasoningEditDone.trigger('click');
7312+ }
7313+
73097314 await eventSource.emit(event_types.MESSAGE_UPDATED, this_edit_mes_id);
73107315 this_edit_mes_id = undefined;
73117316 await saveChatConditional();
@@ -10813,6 +10818,12 @@ jQuery(async function () {
1081310818 var edit_mes_id = $(this).closest('.mes').attr('mesid');
1081410819 this_edit_mes_id = edit_mes_id;
1081510820
10821+ // Also edit reasoning, if it exists
10822+ const reasoningEdit = $(this).closest('.mes_block').find('.mes_reasoning_edit:visible');
10823+ if (reasoningEdit.length > 0) {
10824+ reasoningEdit.trigger('click');
10825+ }
10826+
1081610827 var text = chat[edit_mes_id]['mes'];
1081710828 if (chat[edit_mes_id]['is_user']) {
1081810829 this_edit_mes_chname = name1;
@@ -10946,6 +10957,11 @@ jQuery(async function () {
1094610957 appendMediaToMessage(chat[this_edit_mes_id], $(this).closest('.mes'));
1094710958 addCopyToCodeBlocks($(this).closest('.mes'));
1094810959
10960+ const reasoningEditDone = $(this).closest('.mes_block').find('.mes_reasoning_edit_cancel:visible');
10961+ if (reasoningEditDone.length > 0) {
10962+ reasoningEditDone.trigger('click');
10963+ }
10964+
1094910965 await eventSource.emit(event_types.MESSAGE_UPDATED, this_edit_mes_id);
1095010966 this_edit_mes_id = undefined;
1095110967 });
@@ -11400,6 +11416,11 @@ jQuery(async function () {
1140011416 }
1140111417 });
1140211418
11419+ $(document).on('click', '.mes_reasoning_summary', function () {
11420+ // If you toggle summary header while editing reasoning, yup - we just cancel it
11421+ $(this).closest('.mes').find('.mes_reasoning_edit_cancel:visible').trigger('click');
11422+ });
11423+
1140311424 $(document).keyup(function (e) {
1140411425 if (e.key === 'Escape') {
1140511426 const isEditVisible = $('#curEditTextarea').is(':visible') || $('.reasoning_edit_textarea').length > 0;
public/style.css+11 -5
@@ -106,6 +106,8 @@
106106 --tool-cool-color-picker-btn-bg: transparent;
107107 --tool-cool-color-picker-btn-border-color: transparent;
108108
109+ --mes-right-spacing: 30px;
110+
109111 --avatar-base-height: 50px;
110112 --avatar-base-width: 50px;
111113 --avatar-base-border-radius: 2px;
@@ -345,12 +347,18 @@ input[type='checkbox']:focus-visible {
345347 border-left: 2px solid var(--SmartThemeEmColor);
346348 border-radius: 2px;
347349 padding: 5px;
348- padding-left: 14px;
349350 margin-bottom: 0.5rem;
350351 overflow-y: auto;
351352 color: var(--SmartThemeEmColor);
352353}
353354
355+.mes_reasoning_details {
356+ margin-right: var(--mes-right-spacing);
357+}
358+.mes_reasoning_details .mes_reasoning_summary {
359+ margin-right: calc(var(--mes-right-spacing) * -1);
360+}
361+
354362.mes_reasoning *:last-child {
355363 margin-bottom: 0;
356364}
@@ -391,7 +399,6 @@ input[type='checkbox']:focus-visible {
391399.mes_bias:empty,
392400.mes_reasoning:empty,
393401.mes_reasoning_details:has(.mes_reasoning:empty),
394-.mes_block:has(.edit_textarea) .mes_reasoning_details,
395402.mes_reasoning_details:not([open]) .mes_reasoning_actions,
396403.mes_reasoning_details:has(.reasoning_edit_textarea) .mes_reasoning,
397404.mes_reasoning_details:not(:has(.reasoning_edit_textarea)) .mes_reasoning_actions .edit_button,
@@ -1123,12 +1130,11 @@ body .panelControlBar {
11231130}
11241131
11251132.last_mes:has(.mes_text:empty):has(.mes_reasoning_details[open]) .mes_reasoning:not(:empty) {
11261133 margin-bottom: 30pxvar(--mes-right-spacing);
11271134}
11281135
1129-.last_mes .mes_reasoning,
11301136.last_mes .mes_text {
11311137 padding-right: 30pxvar(--mes-right-spacing);
11321138}
11331139
11341140/* SWIPE RELATED STYLES*/