nsarrazin HF Staff commited on
Commit
75adc78
·
1 Parent(s): 1f73dd7

fix: improve render performance in app

Browse files
src/routes/conversation/[id]/+page.svelte CHANGED
@@ -242,7 +242,6 @@
242
  );
243
  }
244
 
245
- messages = [...messages];
246
  const userMessage = messages.find((message) => message.id === messageId);
247
  const messageToWriteTo = messages.find((message) => message.id === messageToWriteToId);
248
  if (!messageToWriteTo) {
@@ -284,17 +283,24 @@
284
  update.token = update.token.replaceAll("\0", "");
285
  }
286
 
287
- messageToWriteTo.updates = [...(messageToWriteTo.updates ?? []), update];
 
 
 
 
 
 
 
 
 
 
 
 
 
288
 
289
  if (update.type === MessageUpdateType.Stream && !$settings.disableStream) {
290
  messageToWriteTo.content += update.token;
291
  pending = false;
292
- messages = [...messages];
293
- } else if (
294
- update.type === MessageUpdateType.WebSearch ||
295
- update.type === MessageUpdateType.Tool
296
- ) {
297
- messages = [...messages];
298
  } else if (
299
  update.type === MessageUpdateType.Status &&
300
  update.status === MessageUpdateStatus.Error
@@ -315,17 +321,13 @@
315
  ...(messageToWriteTo.files ?? []),
316
  { type: "hash", value: update.sha, mime: update.mime, name: update.name },
317
  ];
318
- messages = [...messages];
319
  } else if (update.type === MessageUpdateType.Reasoning) {
320
  if (!messageToWriteTo.reasoning) {
321
  messageToWriteTo.reasoning = "";
322
  }
323
  if (update.subtype === MessageReasoningUpdateType.Stream) {
324
  messageToWriteTo.reasoning += update.token;
325
- } else {
326
- messageToWriteTo.updates = [...(messageToWriteTo.updates ?? []), update];
327
  }
328
- messages = [...messages];
329
  }
330
  }
331
  } catch (err) {
 
242
  );
243
  }
244
 
 
245
  const userMessage = messages.find((message) => message.id === messageId);
246
  const messageToWriteTo = messages.find((message) => message.id === messageToWriteToId);
247
  if (!messageToWriteTo) {
 
283
  update.token = update.token.replaceAll("\0", "");
284
  }
285
 
286
+ // dont write updates for reasoning stream and normal stream to reduce render load
287
+ // but handle the rest
288
+
289
+ // Skip storing high-frequency updates to reduce render load
290
+ const isHighFrequencyUpdate =
291
+ (update.type === MessageUpdateType.Reasoning &&
292
+ update.subtype === MessageReasoningUpdateType.Stream) ||
293
+ update.type === MessageUpdateType.Stream ||
294
+ (update.type === MessageUpdateType.Status &&
295
+ update.status === MessageUpdateStatus.KeepAlive);
296
+
297
+ if (!isHighFrequencyUpdate) {
298
+ messageToWriteTo.updates = [...(messageToWriteTo.updates ?? []), update];
299
+ }
300
 
301
  if (update.type === MessageUpdateType.Stream && !$settings.disableStream) {
302
  messageToWriteTo.content += update.token;
303
  pending = false;
 
 
 
 
 
 
304
  } else if (
305
  update.type === MessageUpdateType.Status &&
306
  update.status === MessageUpdateStatus.Error
 
321
  ...(messageToWriteTo.files ?? []),
322
  { type: "hash", value: update.sha, mime: update.mime, name: update.name },
323
  ];
 
324
  } else if (update.type === MessageUpdateType.Reasoning) {
325
  if (!messageToWriteTo.reasoning) {
326
  messageToWriteTo.reasoning = "";
327
  }
328
  if (update.subtype === MessageReasoningUpdateType.Stream) {
329
  messageToWriteTo.reasoning += update.token;
 
 
330
  }
 
331
  }
332
  }
333
  } catch (err) {