Refactor reasoning placeholder clean-up

8b5e0df2d70b80d265a208cc021537c967e5a4d8

Cohee <18619528+Cohee1207@users.noreply.github.com>

2 files changed, +14 -10Showing whitespace changes
public/script.js+7 -4
@@ -3194,10 +3194,6 @@ class StreamingProcessor {
31943194 this.#checkDomElements(messageId);
31953195 this.#updateMessageBlockVisibility();
31963196 const currentTime = new Date();
3197- // Don't waste time calculating token count for streaming
3198- const tokenCountText = (this.reasoning || '') + processedText;
3199- const currentTokenCount = isFinal && power_user.message_token_count_enabled ? getTokenCount(tokenCountText, 0) : 0;
3200- const timePassed = formatGenerationTimer(this.timeStarted, currentTime, currentTokenCount);
32013197 chat[messageId]['mes'] = processedText;
32023198 chat[messageId]['gen_started'] = this.timeStarted;
32033199 chat[messageId]['gen_finished'] = currentTime;
@@ -3214,6 +3210,10 @@ class StreamingProcessor {
32143210 }
32153211 }
32163212
3213+ // Don't waste time calculating token count for streaming
3214+ const tokenCountText = (this.reasoning || '') + processedText;
3215+ const currentTokenCount = isFinal && power_user.message_token_count_enabled ? getTokenCount(tokenCountText, 0) : 0;
3216+
32173217 if (currentTokenCount) {
32183218 chat[messageId]['extra']['token_count'] = currentTokenCount;
32193219 if (this.messageTokenCounterDom instanceof HTMLElement) {
@@ -3236,10 +3236,13 @@ class StreamingProcessor {
32363236 if (this.messageTextDom instanceof HTMLElement) {
32373237 this.messageTextDom.innerHTML = formattedText;
32383238 }
3239+
3240+ const timePassed = formatGenerationTimer(this.timeStarted, currentTime, currentTokenCount);
32393241 if (this.messageTimerDom instanceof HTMLElement) {
32403242 this.messageTimerDom.textContent = timePassed.timerValue;
32413243 this.messageTimerDom.title = timePassed.timerTitle;
32423244 }
3245+
32433246 this.setFirstSwipe(messageId);
32443247 }
32453248
public/scripts/reasoning.js+7 -6
@@ -27,6 +27,7 @@ function getMessageFromJquery(element) {
2727 */
2828export class PromptReasoning {
2929 static REASONING_PLACEHOLDER = '\u200B';
30+ static REASONING_PLACEHOLDER_REGEX = new RegExp(`${PromptReasoning.REASONING_PLACEHOLDER}$`);
3031
3132 constructor() {
3233 this.counter = 0;
@@ -121,8 +122,8 @@ function registerReasoningSlashCommands() {
121122 callback: (_args, value) => {
122123 const messageId = !isNaN(Number(value)) ? Number(value) : chat.length - 1;
123124 const message = chat[messageId];
124125 const reasoning = String(message?.extra?.reasoning ?? '');
125126 return reasoning !== .replace(PromptReasoning.REASONING_PLACEHOLDER ? reasoning :REASONING_PLACEHOLDER_REGEX, '');
126127 },
127128 }));
128129
@@ -151,7 +152,7 @@ function registerReasoningSlashCommands() {
151152 return '';
152153 }
153154
154155 message.extra.reasoning = String(value ?? '');
155156 await saveChatConditional();
156157
157158 closeMessageEditor('reasoning');
@@ -181,12 +182,12 @@ function setReasoningEventHandlers(){
181182 return;
182183 }
183184
184185 const reasoning = String(message?.extra?.reasoning ?? '');
185186 const chatElement = document.getElementById('chat');
186187 const textarea = document.createElement('textarea');
187188 const reasoningBlock = messageBlock.find('.mes_reasoning');
188189 textarea.classList.add('reasoning_edit_textarea');
189190 textarea.value = reasoning === .replace(PromptReasoning.REASONING_PLACEHOLDER ?REASONING_PLACEHOLDER_REGEX, '' : reasoning);
190191 $(textarea).insertBefore(reasoningBlock);
191192
192193 if (!CSS.supports('field-sizing', 'content')) {
@@ -277,7 +278,7 @@ function setReasoningEventHandlers(){
277278
278279 $(document).on('pointerup', '.mes_reasoning_copy', async function () {
279280 const { message } = getMessageFromJquery(this);
280281 const reasoning = String(message?.extra?.reasoning ?? '').replace(PromptReasoning.REASONING_PLACEHOLDER_REGEX, '');
281282
282283 if (!reasoning) {
283284 return;