diff --git a/src/core/display.test.ts b/src/core/display.test.ts index 4057a59..4ca4b93 100644 --- a/src/core/display.test.ts +++ b/src/core/display.test.ts @@ -96,6 +96,14 @@ describe('formatReasoningDisplay', () => { ); }); + it('does not convert math-like asterisks to telegram italic formatting', () => { + const spaced = formatReasoningDisplay('2 * 3 * 4', 'telegram'); + const compact = formatReasoningDisplay('2*3*4', 'telegram'); + expect(spaced.parseMode).toBe('HTML'); + expect(spaced.text).toBe('
Thinking\n2 * 3 * 4'); + expect(compact.text).toBe('
Thinking\n2*3*4'); + }); + it('formats non-signal/telegram channels as markdown blockquote', () => { const result = formatReasoningDisplay('line 1\n line 2', 'discord'); expect(result).toEqual({ text: '> **Thinking**\n> line 1\n> line 2' }); diff --git a/src/core/display.ts b/src/core/display.ts index edde551..ecae3cd 100644 --- a/src/core/display.ts +++ b/src/core/display.ts @@ -239,8 +239,11 @@ export function formatReasoningDisplay( .replace(//g, '>'); const html = escaped - .replace(/\*\*(.+?)\*\*/g, '$1') - .replace(/\*(.+?)\*/g, '$1'); + // Only convert likely markdown delimiters: + // - ignore escaped asterisks (\*) + // - ignore in-word/math operators (e.g., 2*3*4, 2 * 3 * 4) + .replace(/(?$1') + .replace(/(?$1'); return { text: `
Thinking\n${html}`, parseMode: 'HTML',