From 26d44e84da1a81a070a1d44ff0516a82d21da12e Mon Sep 17 00:00:00 2001 From: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com> Date: Sun, 22 Feb 2026 16:24:59 -0800 Subject: [PATCH] Fix changelog page rendering markdown links as raw text (#320) The InlineCode component only handled backtick code spans but ignored markdown links, causing PR/issue references to display as raw [#N](url) text instead of clickable links. Rename to InlineMarkdown and add link parsing to the split regex. --- web/app/docs/changelog/page.tsx | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/web/app/docs/changelog/page.tsx b/web/app/docs/changelog/page.tsx index ed6a9307..f3f3140a 100644 --- a/web/app/docs/changelog/page.tsx +++ b/web/app/docs/changelog/page.tsx @@ -75,17 +75,24 @@ function parseChangelog(markdown: string): ChangelogVersion[] { return versions; } -function InlineCode({ text }: { text: string }) { - const parts = text.split(/(`[^`]+`)/g); +function InlineMarkdown({ text }: { text: string }) { + const parts = text.split(/(`[^`]+`|\[[^\]]+\]\([^)]+\))/g); return ( <> - {parts.map((part, i) => - part.startsWith("`") && part.endsWith("`") ? ( - {part.slice(1, -1)} - ) : ( - {part} - ) - )} + {parts.map((part, i) => { + if (part.startsWith("`") && part.endsWith("`")) { + return {part.slice(1, -1)}; + } + const linkMatch = part.match(/^\[([^\]]+)\]\(([^)]+)\)$/); + if (linkMatch) { + return ( + + {linkMatch[1]} + + ); + } + return {part}; + })} ); } @@ -115,7 +122,7 @@ export default function ChangelogPage() {