{"id":242261,"date":"2025-08-28T12:56:53","date_gmt":"2025-08-28T12:56:53","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/markdown-renderer-for-github\/"},"modified":"2026-06-15T02:38:18","modified_gmt":"2026-06-15T02:38:18","slug":"markdown-renderer-for-github","status":"publish","type":"plugin","link":"https:\/\/lt.wordpress.org\/plugins\/markdown-renderer-for-github\/","author":23328473,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.9.4","stable_tag":"2.9.4","tested":"7.0","requires":"6.8","requires_php":"8.2","requires_plugins":null,"header_name":"Markdown Renderer for GitHub","header_author":"Wakalab","header_description":"Renders GFM (GitHub Flavored Markdown) content beautifully on the front end using JavaScript libraries. It supports syntax highlighting for code blocks and diagram rendering with Mermaid.js.","assets_banners_color":"2c4e5a","last_updated":"2026-06-15 02:38:18","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/wakalab.dev\/","header_plugin_uri":"https:\/\/wakalab.dev\/products\/markdown-renderer-for-github\/","header_author_uri":"https:\/\/wakalab.dev\/","rating":0,"author_block_rating":0,"active_installs":10,"downloads":2883,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"noricku","date":"2025-08-28 13:02:25"},"1.1.0":{"tag":"1.1.0","author":"noricku","date":"2025-08-28 20:31:35"},"1.1.1":{"tag":"1.1.1","author":"noricku","date":"2025-08-29 00:43:44"},"1.1.2":{"tag":"1.1.2","author":"noricku","date":"2025-08-29 13:21:26"},"1.10.0":{"tag":"1.10.0","author":"noricku","date":"2026-01-08 16:48:49"},"1.10.2":{"tag":"1.10.2","author":"noricku","date":"2026-01-08 17:39:12"},"1.11.0":{"tag":"1.11.0","author":"noricku","date":"2026-01-09 12:31:19"},"1.11.1":{"tag":"1.11.1","author":"noricku","date":"2026-01-11 08:17:03"},"1.13.0":{"tag":"1.13.0","author":"noricku","date":"2026-01-13 11:53:19"},"1.14.0":{"tag":"1.14.0","author":"noricku","date":"2026-01-15 00:13:28"},"1.14.1":{"tag":"1.14.1","author":"noricku","date":"2026-01-15 07:22:59"},"1.3.0":{"tag":"1.3.0","author":"noricku","date":"2025-11-18 12:58:51"},"1.3.2":{"tag":"1.3.2","author":"noricku","date":"2025-12-25 02:40:18"},"1.3.6":{"tag":"1.3.6","author":"noricku","date":"2025-12-25 15:28:49"},"1.3.8":{"tag":"1.3.8","author":"noricku","date":"2025-12-25 16:01:02"},"1.3.9":{"tag":"1.3.9","author":"noricku","date":"2025-12-26 00:09:39"},"1.4.0":{"tag":"1.4.0","author":"noricku","date":"2025-12-27 23:54:19"},"1.6.0":{"tag":"1.6.0","author":"noricku","date":"2026-01-01 00:15:33"},"1.7.0":{"tag":"1.7.0","author":"noricku","date":"2026-01-01 08:36:45"},"1.7.10":{"tag":"1.7.10","author":"noricku","date":"2026-01-03 04:24:56"},"1.7.11":{"tag":"1.7.11","author":"noricku","date":"2026-01-03 08:27:51"},"1.7.12":{"tag":"1.7.12","author":"noricku","date":"2026-01-04 03:39:26"},"1.7.13":{"tag":"1.7.13","author":"noricku","date":"2026-01-05 01:46:17"},"1.7.14":{"tag":"1.7.14","author":"noricku","date":"2026-01-05 05:59:00"},"1.7.2":{"tag":"1.7.2","author":"noricku","date":"2026-01-01 15:38:28"},"1.7.3":{"tag":"1.7.3","author":"noricku","date":"2026-01-01 16:16:50"},"1.7.4":{"tag":"1.7.4","author":"noricku","date":"2026-01-01 23:08:16"},"1.7.5":{"tag":"1.7.5","author":"noricku","date":"2026-01-02 01:11:39"},"1.7.7":{"tag":"1.7.7","author":"noricku","date":"2026-01-02 01:56:57"},"1.7.8":{"tag":"1.7.8","author":"noricku","date":"2026-01-03 02:42:58"},"1.7.9":{"tag":"1.7.9","author":"noricku","date":"2026-01-03 03:33:43"},"1.8.0":{"tag":"1.8.0","author":"noricku","date":"2026-01-06 09:24:52"},"1.9.0":{"tag":"1.9.0","author":"noricku","date":"2026-01-07 07:53:44"},"1.9.1":{"tag":"1.9.1","author":"noricku","date":"2026-01-08 13:27:03"},"2.0.1":{"tag":"2.0.1","author":"noricku","date":"2026-01-19 10:08:15"},"2.0.2":{"tag":"2.0.2","author":"noricku","date":"2026-01-19 10:18:07"},"2.0.3":{"tag":"2.0.3","author":"noricku","date":"2026-01-20 11:47:00"},"2.2.0":{"tag":"2.2.0","author":"noricku","date":"2026-01-23 09:30:36"},"2.3.0":{"tag":"2.3.0","author":"noricku","date":"2026-01-27 02:28:24"},"2.4.1":{"tag":"2.4.1","author":"noricku","date":"2026-01-30 01:46:09"},"2.5.0":{"tag":"2.5.0","author":"noricku","date":"2026-02-02 13:24:08"},"2.6.0":{"tag":"2.6.0","author":"noricku","date":"2026-03-06 03:16:55"},"2.7.0":{"tag":"2.7.0","author":"noricku","date":"2026-03-10 02:53:11"},"2.7.1":{"tag":"2.7.1","author":"noricku","date":"2026-03-12 02:24:23"},"2.7.11":{"tag":"2.7.11","author":"noricku","date":"2026-05-27 03:41:02"},"2.7.13":{"tag":"2.7.13","author":"noricku","date":"2026-05-27 07:14:18"},"2.7.14":{"tag":"2.7.14","author":"noricku","date":"2026-05-29 16:00:08"},"2.7.17":{"tag":"2.7.17","author":"noricku","date":"2026-06-02 08:54:22"},"2.7.2":{"tag":"2.7.2","author":"noricku","date":"2026-03-12 02:24:23"},"2.7.3":{"tag":"2.7.3","author":"noricku","date":"2026-03-12 03:02:39"},"2.7.4":{"tag":"2.7.4","author":"noricku","date":"2026-03-12 06:25:30"},"2.7.5":{"tag":"2.7.5","author":"noricku","date":"2026-03-12 16:38:01"},"2.7.6":{"tag":"2.7.6","author":"noricku","date":"2026-03-17 04:37:20"},"2.7.7":{"tag":"2.7.7","author":"noricku","date":"2026-03-18 04:59:40"},"2.7.8":{"tag":"2.7.8","author":"noricku","date":"2026-05-21 09:05:31"},"2.8.0":{"tag":"2.8.0","author":"noricku","date":"2026-06-03 12:39:40"},"2.8.1":{"tag":"2.8.1","author":"noricku","date":"2026-06-04 05:56:18"},"2.9.0":{"tag":"2.9.0","author":"noricku","date":"2026-06-08 03:32:02"},"2.9.1":{"tag":"2.9.1","author":"noricku","date":"2026-06-10 02:41:31"},"2.9.2":{"tag":"2.9.2","author":"noricku","date":"2026-06-11 12:02:28"},"2.9.3":{"tag":"2.9.3","author":"noricku","date":"2026-06-14 07:54:00"},"2.9.4":{"tag":"2.9.4","author":"noricku","date":"2026-06-15 02:38:18"}},"upgrade_notice":{"2.9.1":"<p>Maintenance release: multilingual taxonomy assignments, fresher WordPress.org readme metadata, and a readiness-test fix. Safe, recommended update.<\/p>","2.9.0":"<p>Adds on-demand language fallbacks, interactive chart controls, and WordPress.org \/ i18n release-quality automation. Upgrading regenerates the plugin&#039;s cached front-end assets.<\/p>","2.8.0":"<p>Adds optional server-side Mermaid rendering, a configurable PlantUML server, per-language SEO meta descriptions, and an interactive diagram toolbar.<\/p>","2.7.15":"<p>Major front-end performance pass: on-demand Shiki grammars, Web Worker highlighting, diagram baking\/caching, and reduced layout shift.<\/p>","1.0.0":"<p>First official release with GitHub Flavored Markdown rendering.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3431939,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3431939,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3566758,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3431939,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3431939,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3572359,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"phpExtensionBundles\":[\"kitchen-sink\"],\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"markdown-renderer-for-github\"},\"options\":{\"activate\":true}},{\"step\":\"runPHP\",\"code\":\"<?php\\n\\\/\\\/ Markdown Renderer for GitHub - Live Preview demo page (Issue #843).\\n\\\/\\\/ Runs once inside WordPress Playground after the plugin is installed.\\nrequire_once '\\\/wordpress\\\/wp-load.php';\\n\\n$gfmr_demo_markdown = <<<'GFMR_DEMO_MD'\\n## Syntax highlighting (Shiki)\\n\\n```javascript\\n\\\/\\\/ Fetch the latest releases for a GitHub repository\\nasync function getReleases( repo ) {\\n    const res = await fetch( `\\\/repos\\\/${ repo }\\\/releases` );\\n    if ( ! res.ok ) {\\n        throw new Error( `Request failed: ${ res.status }` );\\n    }\\n    return res.json();\\n}\\n```\\n\\n```python\\ndef fibonacci(n: int) -> int:\\n    \\\"\\\"\\\"Return the n-th Fibonacci number.\\\"\\\"\\\"\\n    a, b = 0, 1\\n    for _ in range(n):\\n        a, b = b, a + b\\n    return a\\n```\\n\\n## Mermaid diagrams\\n\\n```mermaid\\nflowchart TD\\n    A[Write Markdown] --> B{GitHub Flavored?}\\n    B -->|Yes| C[Shiki highlight]\\n    B -->|Yes| D[Mermaid diagram]\\n    C --> E[Beautiful output]\\n    D --> E\\n```\\n\\n## Chart.js charts\\n\\n```chart\\n{\\n  \\\"type\\\": \\\"bar\\\",\\n  \\\"data\\\": {\\n    \\\"labels\\\": [ \\\"Jan\\\", \\\"Feb\\\", \\\"Mar\\\" ],\\n    \\\"datasets\\\": [\\n      { \\\"label\\\": \\\"Revenue\\\", \\\"data\\\": [ 10, 20, 30 ] },\\n      { \\\"label\\\": \\\"Expenses\\\", \\\"data\\\": [ 4, 8, 12 ] }\\n    ]\\n  }\\n}\\n```\\n\\n## Tables and formatting\\n\\n| Feature | Free | Renders like GitHub |\\n| --- | --- | --- |\\n| Syntax highlighting | Yes | Yes |\\n| Mermaid diagrams | Yes | Yes |\\n| Chart.js charts | Yes | Yes |\\n\\n**bold**, *italic*, ~~strikethrough~~ and `inline code`.\\n\\n> GitHub Flavored Markdown, rendered natively in WordPress.\\nGFMR_DEMO_MD;\\n\\n$gfmr_demo_html = <<<'GFMR_DEMO_HTML'\\n<h2>Syntax highlighting (Shiki)<\\\/h2>\\n<pre><code class=\\\"language-javascript\\\">\\\/\\\/ Fetch the latest releases for a GitHub repository\\nasync function getReleases( repo ) {\\n    const res = await fetch( `\\\/repos\\\/${ repo }\\\/releases` );\\n    if ( ! res.ok ) {\\n        throw new Error( `Request failed: ${ res.status }` );\\n    }\\n    return res.json();\\n}<\\\/code><\\\/pre>\\n<pre><code class=\\\"language-python\\\">def fibonacci(n: int) -&gt; int:\\n    &quot;&quot;&quot;Return the n-th Fibonacci number.&quot;&quot;&quot;\\n    a, b = 0, 1\\n    for _ in range(n):\\n        a, b = b, a + b\\n    return a<\\\/code><\\\/pre>\\n<h2>Mermaid diagrams<\\\/h2>\\n<pre><code class=\\\"language-mermaid\\\">flowchart TD\\n    A[Write Markdown] --&gt; B{GitHub Flavored?}\\n    B --&gt;|Yes| C[Shiki highlight]\\n    B --&gt;|Yes| D[Mermaid diagram]\\n    C --&gt; E[Beautiful output]\\n    D --&gt; E<\\\/code><\\\/pre>\\n<h2>Chart.js charts<\\\/h2>\\n<pre><code class=\\\"language-chart\\\">{\\n  &quot;type&quot;: &quot;bar&quot;,\\n  &quot;data&quot;: {\\n    &quot;labels&quot;: [ &quot;Jan&quot;, &quot;Feb&quot;, &quot;Mar&quot; ],\\n    &quot;datasets&quot;: [\\n      { &quot;label&quot;: &quot;Revenue&quot;, &quot;data&quot;: [ 10, 20, 30 ] },\\n      { &quot;label&quot;: &quot;Expenses&quot;, &quot;data&quot;: [ 4, 8, 12 ] }\\n    ]\\n  }\\n}<\\\/code><\\\/pre>\\n<h2>Tables and formatting<\\\/h2>\\n<table>\\n<thead><tr><th>Feature<\\\/th><th>Free<\\\/th><th>Renders like GitHub<\\\/th><\\\/tr><\\\/thead>\\n<tbody>\\n<tr><td>Syntax highlighting<\\\/td><td>Yes<\\\/td><td>Yes<\\\/td><\\\/tr>\\n<tr><td>Mermaid diagrams<\\\/td><td>Yes<\\\/td><td>Yes<\\\/td><\\\/tr>\\n<tr><td>Chart.js charts<\\\/td><td>Yes<\\\/td><td>Yes<\\\/td><\\\/tr>\\n<\\\/tbody>\\n<\\\/table>\\n<p><strong>bold<\\\/strong>, <em>italic<\\\/em>, <del>strikethrough<\\\/del> and <code>inline code<\\\/code>.<\\\/p>\\n<blockquote><p>GitHub Flavored Markdown, rendered natively in WordPress.<\\\/p><\\\/blockquote>\\nGFMR_DEMO_HTML;\\n\\n\\\/\\\/ serialize_block() escapes \\\"--\\\", \\\"<\\\" and \\\">\\\" inside the block-comment\\n\\\/\\\/ attributes; the Mermaid \\\"-->\\\" arrows would otherwise terminate the comment.\\n$gfmr_demo_block = serialize_block( array(\\n    'blockName'    => 'gfm-renderer\\\/markdown',\\n    'attrs'        => array(\\n        'content' => $gfmr_demo_markdown,\\n        'html'    => $gfmr_demo_html,\\n    ),\\n    'innerBlocks'  => array(),\\n    'innerHTML'    => '',\\n    'innerContent' => array(),\\n) );\\n\\n\\\/\\\/ wp_insert_post() expects slashed data; without wp_slash() the \\\\u003c\\n\\\/\\\/ escapes produced by serialize_block() are stripped and the demo renders\\n\\\/\\\/ as raw text.\\n$gfmr_demo_page_id = wp_insert_post( wp_slash( array(\\n    'post_title'   => 'Markdown Renderer for GitHub - Live Demo',\\n    'post_status'  => 'publish',\\n    'post_type'    => 'page',\\n    'post_content' => $gfmr_demo_block,\\n) ) );\\n\\nif ( $gfmr_demo_page_id && ! is_wp_error( $gfmr_demo_page_id ) ) {\\n    update_option( 'blogname', 'Markdown Renderer for GitHub' );\\n    update_option( 'show_on_front', 'page' );\\n    update_option( 'page_on_front', $gfmr_demo_page_id );\\n}\\n\"}]}"}},"all_blocks":{"gfm-renderer\/markdown":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"gfm-renderer\/markdown","version":"0.1.0","title":"Markdown","category":"text","icon":"editor-code","description":"Write in GitHub Flavored Markdown with real-time preview.","keywords":["markdown","gfm","github","code"],"attributes":{"content":{"type":"string","default":""},"html":{"type":"string","default":""},"renderedDiagramsHtml":{"type":"string","default":""},"mermaidBgColor":{"type":"string","default":"transparent"},"shikiTheme":{"type":"string","default":""},"showFrontmatter":{"type":"boolean","default":false},"frontmatterData":{"type":"object","default":{}},"languages":{"type":"object","default":{}},"defaultLanguage":{"type":"string","default":"en"},"availableLanguages":{"type":"array","default":[],"items":{"type":"string"}},"showLanguageSwitcher":{"type":"boolean","default":true}},"example":{"attributes":{"content":"# Heading 1\n\n**Bold** text and *italic* text.\n\n- List item 1\n- List item 2\n\n```javascript\nconst greeting = \"Hello, World!\";\nconsole.log(greeting);\n```"}},"supports":{"html":false,"className":true,"customClassName":true,"align":["wide","full"]},"textdomain":"markdown-renderer-for-github","editorScript":"gfmr-renderer-editor","editorStyle":["gfmr-variables","gfmr-theme-variables","gfmr-table-styles","gfmr-code-blocks","gfmr-mermaid-styles","gfmr-renderer-editor-css","gfmr-multilingual-editor"],"style":["gfmr-variables","gfmr-table-styles","gfmr-code-blocks","gfmr-frontmatter","gfmr-block-style"]}},"tagged_versions":["1.0.0","1.1.0","1.1.1","1.1.2","1.10.0","1.10.2","1.11.0","1.11.1","1.13.0","1.14.0","1.14.1","1.3.0","1.3.2","1.3.6","1.3.8","1.3.9","1.4.0","1.6.0","1.7.0","1.7.10","1.7.11","1.7.12","1.7.13","1.7.14","1.7.2","1.7.3","1.7.4","1.7.5","1.7.7","1.7.8","1.7.9","1.8.0","1.9.0","1.9.1","2.0.1","2.0.2","2.0.3","2.2.0","2.3.0","2.4.1","2.5.0","2.6.0","2.7.0","2.7.1","2.7.11","2.7.13","2.7.14","2.7.17","2.7.2","2.7.3","2.7.4","2.7.5","2.7.6","2.7.7","2.7.8","2.8.0","2.8.1","2.9.0","2.9.1","2.9.2","2.9.3","2.9.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3566867,"resolution":"1","location":"assets","locale":"","width":1280,"height":860},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3566867,"resolution":"2","location":"assets","locale":"","width":1280,"height":860},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3566867,"resolution":"3","location":"assets","locale":"","width":646,"height":591},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3566758,"resolution":"4","location":"assets","locale":"","width":646,"height":470},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3566867,"resolution":"5","location":"assets","locale":"","width":390,"height":844},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3566867,"resolution":"6","location":"assets","locale":"","width":1280,"height":860}},"screenshots":{"1":"<strong>Gutenberg Block Integration<\/strong> - Easy-to-use Markdown block in the WordPress block editor with live preview","2":"<strong>Beautiful Syntax Highlighting<\/strong> - Professional code presentation with copy button functionality and native support for 30+ languages","3":"<strong>Interactive Mermaid Diagrams<\/strong> - Create flowcharts, sequence diagrams, and more with zoom functionality","4":"<strong>GitHub-Style Tables &amp; Formatting<\/strong> - Perfect rendering of tables, task lists, and other GFM features","5":"<strong>Mobile-Responsive Design<\/strong> - All features work seamlessly across desktop, tablet, and mobile devices","6":"<strong>Admin Settings<\/strong> - Simple configuration options for themes and performance optimization"}},"plugin_section":[],"plugin_tags":[2510,1673,4608,166215,4609],"plugin_category":[],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-242261","plugin","type-plugin","status-publish","hentry","plugin_tags-chart","plugin_tags-github","plugin_tags-markdown","plugin_tags-mermaid","plugin_tags-syntax-highlighting","plugin_committers-noricku"],"banners":{"banner":"https:\/\/ps.w.org\/markdown-renderer-for-github\/assets\/banner-772x250.png?rev=3431939","banner_2x":"https:\/\/ps.w.org\/markdown-renderer-for-github\/assets\/banner-1544x500.png?rev=3431939","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/markdown-renderer-for-github\/assets\/icon.svg?rev=3566758","icon":"https:\/\/ps.w.org\/markdown-renderer-for-github\/assets\/icon.svg?rev=3566758","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/markdown-renderer-for-github\/assets\/screenshot-1.png?rev=3566867","caption":"<strong>Gutenberg Block Integration<\/strong> - Easy-to-use Markdown block in the WordPress block editor with live preview"},{"src":"https:\/\/ps.w.org\/markdown-renderer-for-github\/assets\/screenshot-2.png?rev=3566867","caption":"<strong>Beautiful Syntax Highlighting<\/strong> - Professional code presentation with copy button functionality and native support for 30+ languages"},{"src":"https:\/\/ps.w.org\/markdown-renderer-for-github\/assets\/screenshot-3.png?rev=3566867","caption":"<strong>Interactive Mermaid Diagrams<\/strong> - Create flowcharts, sequence diagrams, and more with zoom functionality"},{"src":"https:\/\/ps.w.org\/markdown-renderer-for-github\/assets\/screenshot-4.png?rev=3566758","caption":"<strong>GitHub-Style Tables &amp; Formatting<\/strong> - Perfect rendering of tables, task lists, and other GFM features"},{"src":"https:\/\/ps.w.org\/markdown-renderer-for-github\/assets\/screenshot-5.png?rev=3566867","caption":"<strong>Mobile-Responsive Design<\/strong> - All features work seamlessly across desktop, tablet, and mobile devices"},{"src":"https:\/\/ps.w.org\/markdown-renderer-for-github\/assets\/screenshot-6.png?rev=3566867","caption":"<strong>Admin Settings<\/strong> - Simple configuration options for themes and performance optimization"}],"raw_content":"<!--section=description-->\n<p>Markdown Renderer for GitHub brings GitHub-quality content rendering to WordPress. Paste GitHub Flavored Markdown (GFM) - code blocks, tables, task lists, and diagrams - and it renders just like it does on GitHub.com, with no manual HTML and no copy-paste screenshots. Built for technical bloggers, documentation teams, educators, and anyone publishing code-heavy content.<\/p>\n\n<p>Write blog posts and documentation in Markdown with automatic code highlighting for every fenced code block - READMEs, tutorials, and changelogs render beautifully as-is.<\/p>\n\n<p><strong>Key Features:<\/strong><\/p>\n\n<p>\ud83c\udfa8 <strong>Beautiful Syntax Highlighting<\/strong>\n* Powered by Shiki - the same syntax highlighter used by VS Code\n* Native grammars for 30+ programming languages, with alias and approximate-grammar fallbacks for many more\n* Two carefully tuned themes - GitHub Light and GitHub Dark - with automatic light\/dark switching\n* Automatic language detection<\/p>\n\n<p>\ud83d\udcca <strong>Mermaid Diagram Support<\/strong>\n* 9 diagram types: flowcharts, sequence, class, state, Gantt, user journey, Git graph, ER, and pie charts\n* Professional diagram rendering\n* Interactive zoom functionality\n* Error handling with user-friendly messages<\/p>\n\n<p>\ud83d\udcc8 <strong>Chart.js Chart Support<\/strong>\n* Create line, bar, pie, doughnut, and more chart types\n* 8 chart types including scatter, bubble, radar, and Polar Area\n* Simple JSON configuration in ```chart fenced code blocks\n* Responsive and interactive charts<\/p>\n\n<p>\ud83c\udf31 <strong>PlantUML Diagram Support (optional, opt-in)<\/strong>\n* UML and more from ```plantuml fenced code blocks\n* PlantUML has no in-browser renderer, so diagrams are produced by an external PlantUML\/Kroki server\n* Ships ready to configure, but no content is sent off-site until you set a server URL and accept the privacy notice in the settings (see the Third Party Services section)<\/p>\n\n<p>\u2728 <strong>GitHub Flavored Markdown<\/strong>\n* Tables, task lists, strikethrough\n* Automatic URL linking\n* Footnotes support\n* 100% compatible with GitHub markdown<\/p>\n\n<p>\ud83d\udccb <strong>Copy Button Feature<\/strong>\n* One-click code copying\n* GitHub-style user experience\n* Full accessibility support\n* Mobile-friendly design<\/p>\n\n<p>\u26a1 <strong>Performance Optimized<\/strong>\n* Asset lazy loading - libraries load only on pages that use them\n* Minimal performance impact\n* Self-contained - no external CDN required\n* Optimized for WordPress<\/p>\n\n<p>\ud83c\udf0d <strong>Developer Friendly<\/strong>\n* Clean, semantic HTML output\n* Extensive hooks and filters\n* Translation ready (i18n)\n* WordPress coding standards<\/p>\n\n<p><strong>Perfect for:<\/strong>\n* Technical blogs and tutorials\n* Documentation websites\n* Code portfolios\n* Educational content\n* API documentation\n* Developer resources<\/p>\n\n<h3>Technical Requirements<\/h3>\n\n<ul>\n<li>WordPress 6.8 or higher<\/li>\n<li>PHP 8.2 or higher<\/li>\n<li>Modern browser with JavaScript enabled<\/li>\n<li>Recommended: 128MB+ PHP memory limit<\/li>\n<li>Recommended: gzip or Brotli compression enabled for static JavaScript on your web server<\/li>\n<\/ul>\n\n<p><strong>Why server compression matters:<\/strong>\nThe syntax-highlighting and diagram libraries are large when uncompressed (Shiki ~2.35 MB, Mermaid ~3.2 MB) but shrink dramatically when delivered with gzip or Brotli (Shiki ~302 KB, Mermaid ~908 KB). For the best front-end performance, ensure your web server compresses static JavaScript (for example mod_deflate\/mod_brotli on Apache, or the gzip\/brotli directives on nginx). Most managed hosts and CDNs enable this by default. The plugin adds a <strong>Tools &rarr; Site Health<\/strong> check that reports whether these bundles are actually being served compressed.<\/p>\n\n<h3>Support<\/h3>\n\n<p>For support, please visit the WordPress.org support forum for this plugin. Our team actively monitors and responds to support requests.<\/p>\n\n<p><strong>Before posting a support request:<\/strong>\n* Check the FAQ section above for common questions\n* Ensure you're using the latest version of the plugin\n* Include your WordPress and PHP versions in your support request<\/p>\n\n<p><strong>Feature Requests:<\/strong>\nWe welcome feature suggestions! Please post them in the support forum with detailed descriptions of your use case.<\/p>\n\n<h3>Source Code<\/h3>\n\n<p>This plugin uses build tools for development efficiency.<\/p>\n\n<p><strong>Compressed File Source Code:<\/strong>\n* <strong>build\/index.js<\/strong>: WordPress Block Editor integration code\n  * Source: blocks\/markdown\/src\/ folder\n  * Build: npm run build\n* <strong>assets\/libs\/shiki\/shiki.min.js<\/strong>: Shiki syntax highlighter (self-contained bundle, no CDN)\n  * Source: scripts\/vendor\/shiki-entry.mjs\n  * Build: npm run vendor:shiki<\/p>\n\n<p><strong>Source Code Access:<\/strong>\n* <strong>GitHub Repository<\/strong>: https:\/\/github.com\/my-biz-dev\/markdown-renderer-for-github\n* <strong>License<\/strong>: GPL v2 or later\n* <strong>Development Branch<\/strong>: main<\/p>\n\n<p><strong>Build Instructions:<\/strong>\n1. Install Node.js 22 LTS (see .nvmrc)\n2. Install dependencies with <code>npm install<\/code>\n3. Build with <code>npm run build<\/code>\n4. Run tests with <code>npm run test<\/code><\/p>\n\n<p><strong>Developer Resources:<\/strong>\n* <strong>Development Environment Setup<\/strong>: See CLAUDE.md and docs\/DEVELOPMENT.md\n* <strong>Contributing<\/strong>: See CONTRIBUTING.md\n* <strong>Build Process Details<\/strong>: See BUILD.md<\/p>\n\n<h3>Third Party Services<\/h3>\n\n<p>By default this plugin runs entirely on your own server. The core rendering libraries are bundled locally and make no external requests:<\/p>\n\n<ul>\n<li>Shiki syntax highlighter - served from your WordPress installation (no CDN)<\/li>\n<li>Mermaid diagram renderer - served from your WordPress installation (no CDN)<\/li>\n<li>Chart.js chart renderer - served from your WordPress installation (no CDN)<\/li>\n<li>markdown-it parser - bundled locally<\/li>\n<\/ul>\n\n<p><strong>Optional features that contact an external server (opt-in, off by default):<\/strong><\/p>\n\n<p>Two features can send diagram source to an external rendering server. Both are inactive until you explicitly enable, configure a server URL, and accept the in-plugin privacy notice:<\/p>\n\n<ul>\n<li><strong>PlantUML diagrams<\/strong> - PlantUML has no in-browser renderer, so the source of each ```plantuml block is sent to a PlantUML\/Kroki server to produce the image.\n\n<ul>\n<li>Default server (configurable, or self-hostable): https:\/\/www.plantuml.com\/plantuml<\/li>\n<li>Service: PlantUML - https:\/\/plantuml.com\/<\/li>\n<\/ul><\/li>\n<li><strong>Server-side Mermaid rendering (Kroki)<\/strong> - an optional mode that pre-renders Mermaid diagrams on a Kroki server for faster first paint. When enabled, the Mermaid source is sent to the configured server.\n\n<ul>\n<li>Default server (configurable, or self-hostable): https:\/\/kroki.io<\/li>\n<li>Service: Kroki - https:\/\/kroki.io\/<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<p>To keep diagram source private you can point either feature at a server you self-host. When both options are left in their default (disabled) state, no diagram data or any other content leaves your site.<\/p>\n\n<p><strong>Privacy &amp; Security Benefits (default configuration):<\/strong>\n* No tracking, analytics, or data collection\n* No data is transmitted to external servers unless you opt in to PlantUML or server-side Mermaid rendering\n* Works offline and in closed networks with the default settings<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>This plugin does not collect any personal data, and with the default settings all processing happens locally on your server. If you opt in to PlantUML or server-side (Kroki) Mermaid rendering, the source text of those diagrams is sent to the rendering server you configure - choose a server you trust, or self-host one, for sensitive content.<\/p>\n\n<h3>Credits<\/h3>\n\n<ul>\n<li>Syntax highlighting: <a href=\"https:\/\/shiki.style\/\">Shiki<\/a><\/li>\n<li>Diagram rendering: <a href=\"https:\/\/mermaid.js.org\/\">Mermaid<\/a><\/li>\n<li>Chart rendering: <a href=\"https:\/\/www.chartjs.org\/\">Chart.js<\/a><\/li>\n<li>Markdown parsing: <a href=\"https:\/\/markdown-it.github.io\/\">markdown-it<\/a><\/li>\n<\/ul>\n\n<h3>Developer Information<\/h3>\n\n<p>This section provides essential information for developers who want to extend or customize the plugin.<\/p>\n\n<p><strong>For complete API documentation, architecture diagrams, and customization examples, see:<\/strong>\n<a href=\"https:\/\/github.com\/my-biz-dev\/markdown-renderer-for-github\/tree\/main\/docs\">Developer Documentation on GitHub<\/a><\/p>\n\n<h4>Available Hooks and Filters<\/h4>\n\n<p><strong>Actions:<\/strong><\/p>\n\n<ul>\n<li><code>gfmr_metadata_saved<\/code> - Fired when code block metadata is saved\n\n<ul>\n<li>Parameters: <code>$post_id<\/code> (int), <code>$metadata<\/code> (array)<\/li>\n<li>Use case: Sync metadata with external services, logging<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<p><strong>Filters:<\/strong><\/p>\n\n<ul>\n<li><p><code>gfmr_metadata_get_metadata<\/code> - Filter retrieved metadata before use<\/p>\n\n<ul>\n<li>Parameters: <code>$metadata<\/code> (array), <code>$post_id<\/code> (int)<\/li>\n<li>Use case: Custom language detection, metadata modification<\/li>\n<\/ul><\/li>\n<li><p><code>gfmr_schema_data<\/code> - Filter Schema.org JSON-LD data before output<\/p>\n\n<ul>\n<li>Parameters: <code>$schema<\/code> (array), <code>$post<\/code> (WP_Post)<\/li>\n<li>Use case: Add custom schema properties, author profiles<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h4>PHP Constants<\/h4>\n\n<ul>\n<li><code>GFMR_PLUGIN_FILE<\/code> - Plugin main file path<\/li>\n<li><code>GFMR_SLUG<\/code> - Plugin slug ('markdown-renderer-for-github')<\/li>\n<li><code>GFMR_URI<\/code> - Plugin URL<\/li>\n<li><code>GFMR_PATH<\/code> - Plugin directory path<\/li>\n<li><code>GFMR_PLUGIN_PATH<\/code> - Plugin directory name (relative)<\/li>\n<li><code>GFMR_PLUGIN_BASENAME<\/code> - Plugin basename<\/li>\n<li><code>GFMR_ASSETS_PATH<\/code> - Assets directory URL<\/li>\n<\/ul>\n\n<h4>JavaScript Global Objects<\/h4>\n\n<ul>\n<li><code>wpGfmConfig<\/code> - Plugin configuration object<\/li>\n<li><code>wpGfmRenderer<\/code> - Core rendering API (processCodeBlocks, renderContent, initialize)<\/li>\n<li><code>wpGfmHighlighter<\/code> - Highlighter wrapper instance<\/li>\n<li><code>wpGfmShikiHighlighter<\/code> - Actual Shiki highlighter instance<\/li>\n<li><code>wpGfmUnifiedHighlight(code, lang, options)<\/code> - Unified highlight function<\/li>\n<li><code>wpGfmSwitchTheme(newTheme)<\/code> - Theme switching function ('light', 'dark', 'system')<\/li>\n<li><code>wpGfmRenderDiagram(content, element, options)<\/code> - Diagram rendering function<\/li>\n<\/ul>\n\n<h4>Settings Option<\/h4>\n\n<p>Option name: <code>gfmr_theme_settings<\/code><\/p>\n\n<p>Available keys:<\/p>\n\n<ul>\n<li><code>theme<\/code> - Theme setting ('light', 'dark', 'system')<\/li>\n<li><code>schema_enabled<\/code> - Enable Schema.org JSON-LD output (bool)<\/li>\n<li><code>schema_auto_detect_type<\/code> - Auto-detect article type (bool)<\/li>\n<li><code>schema_include_author<\/code> - Include author in schema (bool)<\/li>\n<li><code>schema_include_publisher<\/code> - Include publisher in schema (bool)<\/li>\n<\/ul>\n\n<h4>Plugin Development<\/h4>\n\n<p>This plugin follows WordPress coding standards and provides clean, semantic HTML output.<\/p>\n\n<p><strong>Detailed Documentation:<\/strong><\/p>\n\n<p>For complete documentation including full API reference with code examples, architecture diagrams (Mermaid), step-by-step customization guides, and CSS class reference, visit:<\/p>\n\n<p><a href=\"https:\/\/github.com\/my-biz-dev\/markdown-renderer-for-github\/tree\/main\/docs\">GitHub Developer Documentation<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/markdown-renderer-for-github<\/code> directory, or install the plugin through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Start using the Markdown block in the Gutenberg editor, or wrap your content with <code>[gfm-renderer]<\/code> shortcode.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20github%20flavored%20markdown%3F\"><h3>What is GitHub Flavored Markdown?<\/h3><\/dt>\n<dd><p>GitHub Flavored Markdown (GFM) is an extension of standard Markdown that includes features like tables, task lists, syntax highlighting, and automatic URL linking. It's the same format used on GitHub.com.<\/p><\/dd>\n<dt id=\"which%20programming%20languages%20are%20supported%20for%20syntax%20highlighting%3F\"><h3>Which programming languages are supported for syntax highlighting?<\/h3><\/dt>\n<dd><p>The plugin ships native Shiki grammars for 30+ programming languages, including JavaScript, TypeScript, Python, PHP, Java, C, C++, C#, HTML, CSS, SQL, Go, Rust, and Ruby. Languages without a bundled grammar fall back to a close match, so many more are still highlighted. The highlighting is powered by Shiki, the same engine used by VS Code.<\/p><\/dd>\n<dt id=\"can%20i%20create%20diagrams%20with%20this%20plugin%3F\"><h3>Can I create diagrams with this plugin?<\/h3><\/dt>\n<dd><p>Yes! You can create beautiful diagrams using Mermaid syntax. Nine diagram types are supported:\n* Flowcharts\n* Sequence diagrams\n* Class diagrams\n* State diagrams\n* Gantt charts\n* User journey diagrams\n* Git graphs\n* Entity relationship (ER) diagrams\n* Pie charts<\/p><\/dd>\n<dt id=\"can%20i%20create%20charts%20with%20this%20plugin%3F\"><h3>Can I create charts with this plugin?<\/h3><\/dt>\n<dd><p>Yes! You can create interactive charts using Chart.js with simple JSON configuration. Supported chart types\ninclude:\n* Line and Bar charts\n* Pie and Doughnut charts\n* Scatter, Bubble, Radar, and Polar Area charts<\/p>\n\n<p>Simply use a ```chart fenced code block with your chart configuration in JSON format.<\/p><\/dd>\n<dt id=\"can%20i%20render%20plantuml%20diagrams%2C%20and%20does%20that%20send%20my%20content%20anywhere%3F\"><h3>Can I render PlantUML diagrams, and does that send my content anywhere?<\/h3><\/dt>\n<dd><p>Yes. ```plantuml blocks are supported, but unlike Mermaid and Chart.js, PlantUML has no in-browser renderer. To draw a PlantUML diagram its source is sent to an external PlantUML\/Kroki server (the default is the public https:\/\/www.plantuml.com\/plantuml endpoint, and you can point it at a self-hosted server instead). This is opt-in: nothing is sent until you enable PlantUML, set a server URL, and accept the privacy notice in the settings. See the Third Party Services section for details.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20send%20my%20content%20to%20any%20external%20service%3F\"><h3>Does this plugin send my content to any external service?<\/h3><\/dt>\n<dd><p>By default, no. Shiki, Mermaid, and Chart.js are bundled locally and run entirely on your server with no network requests. Two optional features are the exception and are off until you opt in: PlantUML rendering and server-side (Kroki) Mermaid rendering. Both send diagram source to a rendering server only after you enable and configure them. See the Third Party Services section.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20use%20a%20cdn%20or%20work%20offline%3F\"><h3>Does the plugin use a CDN or work offline?<\/h3><\/dt>\n<dd><p>It does not use a CDN. All rendering libraries (Shiki, Mermaid, Chart.js) ship inside the plugin and are served from your own WordPress installation, so the plugin works offline and in closed or air-gapped networks. This also makes it GDPR-friendly by default. The only network traffic comes from the optional PlantUML and server-side Mermaid (Kroki) features, which stay off until you enable them.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20mobile-friendly%3F\"><h3>Is the plugin mobile-friendly?<\/h3><\/dt>\n<dd><p>Absolutely! All features including syntax highlighting, diagrams, and the copy button work perfectly on mobile devices.<\/p><\/dd>\n<dt id=\"does%20this%20affect%20my%20site%27s%20performance%3F\"><h3>Does this affect my site's performance?<\/h3><\/dt>\n<dd><p>GitHub Flavored Markdown Renderer is designed for minimal performance impact with smart asset lazy loading: the highlighting and diagram libraries load only on pages that actually use them. The libraries are large uncompressed (Shiki ~2.35 MB, Mermaid ~3.2 MB) but shrink to roughly 302 KB and 908 KB over gzip or Brotli, and the plugin adds a Site Health check that confirms your server is compressing them.<\/p><\/dd>\n<dt id=\"what%27s%20the%20difference%20between%20the%20free%20and%20pro%20versions%3F\"><h3>What's the difference between the free and Pro versions?<\/h3><\/dt>\n<dd><p>Every rendering feature described above - GitHub Flavored Markdown, Shiki syntax highlighting, Mermaid diagrams, Chart.js charts, and PlantUML - is included in this free plugin. You do not need Pro to use any of them. The separate Pro add-on is a standalone plugin that builds on the same core and adds developer conveniences: line numbers for code blocks, advanced syntax-highlighting options, custom Shiki themes, and priority support.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20appearance%3F\"><h3>Can I customize the appearance?<\/h3><\/dt>\n<dd><p>Yes, the plugin provides CSS variables and hooks for customization. You can easily match your theme's design.<\/p><\/dd>\n<dt id=\"is%20it%20translation%20ready%3F\"><h3>Is it translation ready?<\/h3><\/dt>\n<dd><p>Yes, the plugin is fully internationalized and translation ready. Japanese translation is included.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20markdown%20content%3F\"><h3>How do I add Markdown content?<\/h3><\/dt>\n<dd><p>There are two ways. In the block editor, use the dedicated \"Markdown\" block. Anywhere else - the Classic editor, a theme template via <code>do_shortcode()<\/code>, or a widget - wrap your Markdown in the <code>[gfmr_markdown]<\/code> enclosing shortcode:<\/p>\n\n<p>`[gfmr_markdown]<\/p><\/dd>\n<dt id=\"heading\"><h3>Heading<\/h3><\/dt>\n<dd><ul>\n<li>list item<\/li>\n<li>another item\n[\/gfmr_markdown]`<\/li>\n<\/ul>\n\n<p>The shortcode renders identically to the block, including Shiki syntax highlighting and Mermaid, Chart.js, and PlantUML diagrams. Override the highlighting theme per shortcode with the <code>theme<\/code> attribute, e.g. <code>[gfmr_markdown theme=\"github-dark\"]<\/code>. To show a literal <code>[gfmr_markdown]<\/code> inside a code block, double the brackets: <code>[[gfmr_markdown]]<\/code>. For best results put the shortcode in the post body or page content; when called from a theme template or widget, some pages may need the plugin assets to be present already (for example a page that also uses a Markdown block or a code block).<\/p><\/dd>\n<dt id=\"can%20i%20write%20blog%20posts%20in%20markdown%20with%20this%20plugin%3F\"><h3>Can I write blog posts in Markdown with this plugin?<\/h3><\/dt>\n<dd><p>Yes. Add the Markdown block to any post or page and write GitHub Flavored Markdown directly in the editor, with a live preview of the rendered result. Existing Markdown files - READMEs, docs, changelogs - can be pasted in as-is.<\/p><\/dd>\n<dt id=\"does%20it%20highlight%20code%20blocks%20automatically%3F\"><h3>Does it highlight code blocks automatically?<\/h3><\/dt>\n<dd><p>Yes. Fenced code blocks get automatic code highlighting out of the box. Name a language for its exact grammar, or let automatic language detection pick one. Highlighting runs entirely on your own site - no external highlighter service is involved.<\/p><\/dd>\n<dt id=\"do%20i%20need%20coding%20knowledge%20to%20use%20this%20plugin%3F\"><h3>Do I need coding knowledge to use this plugin?<\/h3><\/dt>\n<dd><p>Not at all! The plugin works with standard Markdown syntax that's easy to learn. The Gutenberg block provides a user-friendly interface with live preview.<\/p><\/dd>\n<dt id=\"will%20this%20work%20with%20my%20theme%3F\"><h3>Will this work with my theme?<\/h3><\/dt>\n<dd><p>Yes, GitHub Flavored Markdown Renderer is designed to work with any properly coded WordPress theme. The styling is designed to integrate seamlessly with your site's design.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.9.4<\/h4>\n\n<ul>\n<li>Maintenance release: internal CI nightly schedule adjustment only. No changes to plugin functionality.<\/li>\n<\/ul>\n\n<h4>2.9.3<\/h4>\n\n<ul>\n<li>add [gfmr_markdown] shortcode for block-independent Markdown<\/li>\n<li>promote security severity gate to blocking on critical (#837 F-B)<\/li>\n<li>add Lemon Squeezy auto-updater for the standalone Pro plugin<\/li>\n<li>skip Mermaid in SSR code-block highlighting (Issue #861)<\/li>\n<li>nest content-only delegation to avoid dead-branch error<\/li>\n<li>wire up toc_sticky and remove dead chart_zoom_enabled setting<\/li>\n<li>gate PlantUML AJAX proxy behind is_plantuml_enabled()<\/li>\n<li>make get_the_tags callback accept a single argument<\/li>\n<\/ul>\n\n<h4>2.9.2<\/h4>\n\n<ul>\n<li>add WordPress Playground Live Preview blueprint<\/li>\n<li>improve readme discoverability and add settings review footer<\/li>\n<li>Add per-language featured images for built-in multilingual mode<\/li>\n<li>Add release smoke gate manifest and CI locale parity<\/li>\n<li>Add Settings action link to plugin row<\/li>\n<li>give deploy-svn.sh standalone defaults for slug\/SVN vars<\/li>\n<li>remove test-environment artifacts from wp.org screenshots<\/li>\n<li>preserve GFM task list checkboxes through SSR\/baked sanitization<\/li>\n<\/ul>\n\n<h4>2.9.1<\/h4>\n\n<ul>\n<li>add multilingual taxonomy assignments<\/li>\n<li>keep WordPress.org readme tabs fresh and fix version cache-busting<\/li>\n<li>isolate readiness tests from config.sh env leak (README_FILE)<\/li>\n<\/ul>\n\n<h4>2.9.0<\/h4>\n\n<ul>\n<li>add i18n .mo auto-recompile hooks and wporg\/i18n audit agents<\/li>\n<li>add WP-cross-version smoke and timing history median<\/li>\n<li>add diff coverage and security severity gate quality gates<\/li>\n<li>add interactive chart controls<\/li>\n<li>add approximate grammar fallbacks for unbundled languages<\/li>\n<li>add markdown image drop uploads<\/li>\n<li>reveal frontend content on render pipeline failure<\/li>\n<li>stabilise diagram-layout tests against font-metrics flake<\/li>\n<li>use foreignObject bounds for diagram label alignment tests<\/li>\n<li>optimize PR lint and dependency caches<\/li>\n<li>exclude .security-allowlist.json from wp.org dist<\/li>\n<li>reveal Mermaid SSR cache-warmed diagrams<\/li>\n<li>wire roadmap status update into release<\/li>\n<li>repair version-check tooling and sync composer.json version<\/li>\n<li>unify nav waitForURL\/waitForNavigation timeout to 60s<\/li>\n<li>retry WP login in global-setup to absorb startup flakiness<\/li>\n<li>clean up release lock via EXIT trap on early abort<\/li>\n<\/ul>\n\n<h4>2.8.1<\/h4>\n\n<ul>\n<li>improve inline code contrast and stabilize tests<\/li>\n<li>align diagram rendering layouts<\/li>\n<li>repair mermaid state diagram styles<\/li>\n<li>preserve mermaid flowchart polygon transforms<\/li>\n<li>preserve mermaid flowchart path transforms<\/li>\n<li>keep wide mermaid diagrams readable<\/li>\n<li>fit wide mermaid diagrams to container<\/li>\n<li>center chart preview images<\/li>\n<li>update mermaid server privacy gate live<\/li>\n<\/ul>\n\n<h4>2.8.0<\/h4>\n\n<ul>\n<li>live Mermaid bg color and concurrent chart rendering<\/li>\n<li>Add cross-session diagram cache with localStorage persistence<\/li>\n<li>Add SVN trunk cleanup script for stray readiness-results<\/li>\n<li>scan clean dist in plugin-check instead of dev tree<\/li>\n<li>Add shared concurrent-load guard for editor diagram libraries<\/li>\n<li>add non-interactive mode and reduce log noise<\/li>\n<li>Add bounded render cache helper and skip rendered Mermaid blocks<\/li>\n<li>Show friendly notice for PlantUML suppressed diagrams<\/li>\n<li>Add server-side Mermaid rendering via Kroki<\/li>\n<li>add configurable PlantUML server URL<\/li>\n<li>send a sync trigger to wakalab-site on release<\/li>\n<li>Add per-language SEO meta description feature<\/li>\n<li>Add interactive diagram toolbar with expand and collapse<\/li>\n<li>add clipboard image paste with media upload<\/li>\n<li>adaptive debounce + PlantUML completeness guard<\/li>\n<li>skip redundant builds and vendor reinstalls<\/li>\n<li>render baked Mermaid diagrams and code blocks in prerendered content<\/li>\n<li>resolve stale roadmap-update.yml reference in integrated-release STEP 3.4<\/li>\n<\/ul>\n\n<h4>2.7.17<\/h4>\n\n<ul>\n<li>scope and time-box Plugin Check to prevent release hang<\/li>\n<li>isolate E2E compose project to stop release\/CI smoke collision<\/li>\n<\/ul>\n\n<h4>2.7.16<\/h4>\n\n<ul>\n<li>harden release smoke against transient nav timeouts<\/li>\n<\/ul>\n\n<h4>2.7.15<\/h4>\n\n<ul>\n<li>add WordPress.org submission readiness check suite<\/li>\n<li>automate nightly plugin-check parallel diff (Phase 6-A)<\/li>\n<li>Reserve placeholder space to reduce CLS\/FOUC<\/li>\n<li>load frontend styles non-render-blocking with critical CSS<\/li>\n<li>Exclude heavy diagram pages from prerender (WP7.0 spike)<\/li>\n<li>load Shiki grammars on demand per page languages<\/li>\n<li>add Site Health check for diagram bundle compression<\/li>\n<li>add Service Worker for long-term vendor caching<\/li>\n<li>extend diagram cache TTL to 30 days with version-keyed invalidation<\/li>\n<li>bake Chart.js into cached WebP\/PNG images on render<\/li>\n<li>bake editor-rendered diagrams to skip frontend JS<\/li>\n<li>skip Mermaid renderer when diagrams are fully baked<\/li>\n<li>bake SVGs into eviction-proof post meta<\/li>\n<li>Offload Shiki highlighting to Web Worker<\/li>\n<li>Memoize editor Mermaid\/Chart renders with source-keyed cache<\/li>\n<li>defer frontend scripts and schedule non-blocking init<\/li>\n<li>Lazy-load Shiki and Mermaid bundles on demand<\/li>\n<li>Chunk initial block rendering to reduce INP<\/li>\n<li>run setup-php release jobs on ubuntu-latest (fix native runner sudo loop)<\/li>\n<li>make wporg readiness tests resilient to missing jq\/msgfmt<\/li>\n<li>check license.txt with correct lowercase name<\/li>\n<li>avoid set -e abort on (( count++ )) in cleanup_old_reports<\/li>\n<li>replace bash 4 mapfile in cache-cleanup PR job<\/li>\n<li>allow anonymous Mermaid SVG cache warming<\/li>\n<li>add bounded schema-aware cache keys<\/li>\n<li>make plugin check gate executable<\/li>\n<li>restrict baked data: URIs to base64 raster images<\/li>\n<li>harden baked data: URI handling against entity-encoded bypass<\/li>\n<li>Route worker init failure to main-thread highlighter<\/li>\n<li>Prevent readiness script abort from grep|head SIGPIPE under pipefail<\/li>\n<li>Treat undeterminable readiness values as warn, not false fail<\/li>\n<\/ul>","raw_excerpt":"Render GitHub Flavored Markdown in WordPress: Shiki code highlighting, Mermaid diagrams, and Chart.js charts. For documentation and dev blogs.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/242261","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=242261"}],"author":[{"embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/noricku"}],"wp:attachment":[{"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=242261"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=242261"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=242261"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=242261"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=242261"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=242261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}