diff --git a/scripts/claude-bridge.js b/scripts/claude-bridge.js
index dd2a006..0626d07 100644
--- a/scripts/claude-bridge.js
+++ b/scripts/claude-bridge.js
@@ -545,7 +545,7 @@ async function sendMessage(message, requestId, model = null, contextOverride = n
} else if (block.type === 'thinking' && block.thinking) {
// Extended Thinking — als kollabierbaren Block im ChatGPT/Claude.ai-Style
const thinkLines = block.thinking.split('\n').length;
- const escaped = block.thinking.replace(//g, '>');
+ const escaped = block.thinking.replace(/&/g, '&').replace(//g, '>');
const collapsed = `Überlegung${thinkLines} Zeilen
${escaped}
\n\n`;
fullText += collapsed;
sendEvent('text', { text: collapsed });
diff --git a/src/lib/components/ChatPanel.svelte b/src/lib/components/ChatPanel.svelte
index b950897..6a41d0f 100644
--- a/src/lib/components/ChatPanel.svelte
+++ b/src/lib/components/ChatPanel.svelte
@@ -68,9 +68,9 @@
for (const pattern of thinkingPatterns) {
const match = text.match(pattern);
if (match && match[1] && match[1].split('\n').length > 5) {
- const thinkingPart = match[1].trim();
+ const thinkingPart = match[1].trim().replace(/&/g, '&').replace(//g, '>');
const answerPart = match[2].trim();
- const lines = thinkingPart.split('\n').length;
+ const lines = match[1].trim().split('\n').length;
return `Überlegung${lines} Zeilen
${thinkingPart}
\n\n${answerPart}`;
}
}