From c58cef161bdbb1d155e3479b389ecb415eb135d0 Mon Sep 17 00:00:00 2001 From: roboomp Date: Fri, 26 Jun 2026 10:51:42 +0000 Subject: [PATCH] fix(collab): hid advisory tags in transcript markdown Stripped advisory wrapper tags in the collab web Markdown renderer while preserving escaped advisory content and existing raw HTML escaping. Added a regression test for assistant advisory blocks in the collab transcript renderer and documented the fix in the collab-web changelog. Fixes #3559 --- packages/collab-web/CHANGELOG.md | 4 ++++ .../collab-web/src/components/transcript/Markdown.tsx | 2 +- packages/collab-web/test/markdown.test.tsx | 8 ++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/collab-web/CHANGELOG.md b/packages/collab-web/CHANGELOG.md index 02e9b21e2..d084c706a 100644 --- a/packages/collab-web/CHANGELOG.md +++ b/packages/collab-web/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Fixed + +- Hid advisory wrapper tags in collab transcript Markdown while preserving their content. ([#3559](https://github.com/can1357/oh-my-pi/issues/3559)) + ## [16.1.16] - 2026-06-23 ### Added diff --git a/packages/collab-web/src/components/transcript/Markdown.tsx b/packages/collab-web/src/components/transcript/Markdown.tsx index fcac4046f..889314908 100644 --- a/packages/collab-web/src/components/transcript/Markdown.tsx +++ b/packages/collab-web/src/components/transcript/Markdown.tsx @@ -59,7 +59,7 @@ const md = new Marked({ renderer: { // Raw HTML tokens (block + inline both arrive here) are escaped, never emitted. html({ text }) { - const cleaned = text.replace(/<\/?(?:span|text)\b(?:\s[^>]*)?\s*\/?>/gi, ""); + const cleaned = text.replace(/<\/?(?:advisory|span|text)\b(?:\s[^>]*)?\s*\/?>/gi, ""); if (cleaned === "") return ""; return escapeHtml(unescapeHtml(cleaned)); }, diff --git a/packages/collab-web/test/markdown.test.tsx b/packages/collab-web/test/markdown.test.tsx index 2a153ad87..a3db9979c 100644 --- a/packages/collab-web/test/markdown.test.tsx +++ b/packages/collab-web/test/markdown.test.tsx @@ -43,4 +43,12 @@ describe("Transcript Markdown", () => { expect(html).toContain("<▃> & "test" 😀 😀"); }); + it("strips advisory wrapper tags but renders their content", () => { + const html = renderMarkdown('\nKeep this advice.\n'); + + expect(html).toContain("Keep this advice."); + expect(html).not.toContain("<advisory"); + expect(html).not.toContain("</advisory>"); + }); + });