Skip to content

Feat/markdown improvements - #545

Merged
linkdotnet merged 2 commits into
masterfrom
feat/markdown-improvements
Sep 13, 2026
Merged

linkdotnet merged 2 commits into
masterfrom
feat/markdown-improvements

Conversation

@linkdotnet

Copy link
Copy Markdown
Owner

No description provided.

Copilot AI lite review requested due to automatic review settings September 13, 2026 17:59
@linkdotnet
linkdotnet merged commit 61e7aad into master Sep 13, 2026
4 checks passed
@linkdotnet
linkdotnet deleted the feat/markdown-improvements branch September 13, 2026 18:02

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Address the critical unescaped info-string injection and the Bootstrap table-renderer registration issue.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Adds Markdown rendering improvements for external links, task lists, code badges, responsive tables, and TOC text handling.

Changes:

  • Adds external-link indicators and styling.
  • Adds responsive table wrapping, task-list styling, and code-language badges.
  • Updates extension registration, TOC filtering, and unit tests.
File summaries
File Summary Review notes
tests/LinkDotNet.Blog.UnitTests/Web/Features/MarkdownConverterTests.cs Tests new Markdown behaviors. Reviewed.
src/LinkDotNet.Blog.Web/wwwroot/css/basic.css Styles task lists and code badges. Reviewed.
src/LinkDotNet.Blog.Web/Features/ResponsiveTableExtension.cs Wraps rendered tables responsively. Moderate issue: the renderer lookup may miss Bootstrap’s specialized renderer, preventing registration.
src/LinkDotNet.Blog.Web/Features/MarkdownConverter.cs Registers extensions and filters inline HTML from TOC text. Reviewed.
src/LinkDotNet.Blog.Web/Features/ExternalLinkExtension.cs Marks HTTP(S) links as external. Reviewed.
src/LinkDotNet.Blog.Web/Features/CopyCodeBlockToClipboardExtension.cs Adds code-language badges and extension registration. Critical issue: unescaped fenced-code info strings can inject markup or scripts.
Review details

Suppressed comments (1)

src/LinkDotNet.Blog.Web/Features/ResponsiveTableExtension.cs:21

  • This extension is registered after UseBootstrap(), but FindExact<HtmlTableRenderer>() only matches the base renderer. Bootstrap installs a specialized renderer for its table class (the existing CalloutExtension has to use an assignable lookup for the same reason), so this lookup can return null and the responsive wrapper is never registered; the new table-container behavior then does not occur. Find and replace the active Bootstrap table renderer while preserving its Bootstrap rendering behavior.
        var originalTableRenderer = htmlRenderer.ObjectRenderers.FindExact<HtmlTableRenderer>();
  • Files reviewed: 6/6 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

renderer.Write("""<div class="position-relative">""");
if (obj is FencedCodeBlock { Info.Length: > 0 } fenced)
{
renderer.Write($"""<span class="badge bg-secondary position-absolute top-0 start-0 m-2 code-lang-badge">{fenced.Info}</span>""");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants