From 2c2cf21542ba841f5e77ce1154214373225c9884 Mon Sep 17 00:00:00 2001 From: Sinduri Guntupalli Date: Sun, 31 May 2026 19:33:43 +0200 Subject: [PATCH 1/4] fix(css): keep docs-ext-link underline continuous across descenders Browser default text-decoration-skip-ink: auto breaks the underline around any descender (commas, p, g, y, etc.), making links like 'Audit, Deny, and Warn' render with visible gaps. Set it to 'none' so the underline stays continuous. Signed-off-by: Sinduri Guntupalli --- src/index.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/index.css b/src/index.css index 15209128..4b4236b5 100644 --- a/src/index.css +++ b/src/index.css @@ -924,6 +924,7 @@ html { text-decoration-thickness: 2px; text-underline-offset: 2px; text-decoration-color: hsl(var(--primary)); + text-decoration-skip-ink: none; border-radius: 2px; transition: color 200ms ease, text-decoration-color 200ms ease; } From 16247513d06e05adc98d91af25dc1694ee75299d Mon Sep 17 00:00:00 2001 From: Sinduri Guntupalli Date: Sun, 31 May 2026 19:47:19 +0200 Subject: [PATCH 2/4] fix: render inline markdown in author-controlled string fields Short single-line YAML fields (audience, tool.description, step.title, adventure.story, contributor.about, rewards.eligibility, tier.description, rewards.rankingNote) were rendered as plain text, so markdown syntax such as backticks for inline code, **bold**, and [links](url) appeared literally instead of being formatted. The 'familiarity with basic `kubectl` and YAML will help.' string on the lex-imperfecta beginner page surfaced this. Add a MarkdownInline component (react-markdown configured to unwrap

and strip block-level elements via disallowedElements) and route every author-controlled prose field through it. Plain text passes through unchanged so non-markdown content keeps rendering correctly. Extract the shared inline renderers (a, code, strong, em) into markdownInlineComponents.tsx so both MarkdownContent and MarkdownInline use the same styling. Document the rule in CLAUDE.md and styleguide.md. Signed-off-by: Sinduri Guntupalli --- CLAUDE.md | 1 + src/components/AdventureCard.tsx | 3 +- src/components/ChallengeBuildersSection.tsx | 3 +- src/components/MarkdownContent.tsx | 62 ++------------------- src/components/MarkdownInline.tsx | 29 ++++++++++ src/components/RewardsCard.tsx | 7 ++- src/components/WalkthroughSection.tsx | 3 +- src/components/markdownInlineComponents.tsx | 57 +++++++++++++++++++ src/pages/AdventureDetail.tsx | 3 +- src/pages/ChallengeDetail.tsx | 5 +- src/test/markdownInline.test.tsx | 53 ++++++++++++++++++ styleguide.md | 18 ++++++ 12 files changed, 179 insertions(+), 65 deletions(-) create mode 100644 src/components/MarkdownInline.tsx create mode 100644 src/components/markdownInlineComponents.tsx create mode 100644 src/test/markdownInline.test.tsx diff --git a/CLAUDE.md b/CLAUDE.md index 2dc6578f..67dc2fb1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -195,6 +195,7 @@ When diagnosing a bug, especially in the production build, follow these rules wi - **Buttons:** use raw `