fix(web-search): Text-Bubbles nach Web-Search zu einer Bubble zusammenführen

- history.js: _mergeConsecutiveAssistantTexts überspringt web_search_result
  Messages beim Suchen des vorherigen Text-Blocks, sodass Text vor und
  nach einer Web-Search in der History als eine Bubble gerendert wird
- Text-Blöcke werden mit doppeltem Zeilenumbruch statt Leerzeichen
  zusammengefügt (besseres Markdown-Rendering)
- chat.css: web_search Tool-Box von Opacity-Regel ausgenommen
This commit is contained in:
Meleki committed 2026-03-07 10:06:23 +01:00
1 parent f64052caf4
commit d81dab635a
2 files changed
+10 -5

No files matched your search

+9 -4
View File
@@ -156,13 +156,18 @@ function _mergeConsecutiveAssistantTexts(msgs) {
const result = [];
for (const msg of msgs) {
if (msg.type === 'text' && msg.role === 'assistant') {
const prev = result[result.length - 1];
// Finde den letzten assistant-text in result (überspringe web_search_result dazwischen)
var prev = null;
for (var i = result.length - 1; i >= 0; i--) {
if (result[i].type === 'web_search_result') continue; // Web-Search-Ergebnisse überspringen
if (result[i].type === 'text' && result[i].role === 'assistant') prev = result[i];
break;
}
const isReview = msg.content && (msg.content.startsWith('[Review:') || msg.content.startsWith('[Finalizer:'));
const prevIsReview = prev && prev.content && (prev.content.startsWith('[Review:') || prev.content.startsWith('[Finalizer:'));
if (prev && prev.type === 'text' && prev.role === 'assistant'
&& prev.iteration === msg.iteration && !isReview && !prevIsReview) {
if (prev && prev.iteration === msg.iteration && !isReview && !prevIsReview) {
// Gleiche Iteration: nahtlos zusammenfügen (Web-Search-Fragmente etc.)
prev.content = (prev.content || '') + ' ' + (msg.content || '');
prev.content = (prev.content || '') + '\n\n' + (msg.content || '');
// IDs/Timestamps: letztes behalten (für Mark-Button etc.)
if (msg.id) prev.id = msg.id;
if (msg.createdAt) prev.createdAt = msg.createdAt;