# Markdown Renderer for GitHub - Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [2.11.2] - 2026-07-31
### Added
- Add GitHub-style alerts (NOTE/TIP/IMPORTANT/WARNING/CAUTION)
- Add GitHub-style emoji shortcode support
- Add opt-in uninstall data cleanup
- Gate destructive settings behind explicit confirmation in AI abilities
### Fixed
- Guard early-exit vendor restore and stale vendor.backup detection
- Lazy-load markdown-it fallback renderer for multilingual blocks
- Cover vendor.backup.stale-* dirs in all exclusion configs

## [2.11.1] - 2026-07-29
### Changed
- Bake WP-CLI and apt tooling into the E2E image
### Fixed
- Compare downloads_drop within the same release class
- Back out the v2.11.1 bump that PR #1129 swept in

## [2.11.0] - 2026-07-24
### Added
- add Pro code-block editor translations and JSON coverage test
- add Pro custom theme support with fail-closed validation
- integrate custom Shiki themes into runtime and SSR
- add custom Shiki theme admin UI
- add Free-core strip for Pro custom Shiki themes
- Add modest Free vs Pro info section to settings Manual tab
- add Pro-gated financial candlestick and OHLC charts
- invite wp.org review and announce external links for a11y
- add high-level AI orchestration abilities
- Add screenshots 7-8 for Chart.js and rendered output preview
- add C4 Model architecture diagrams via a c4 code block
### Fixed
- fix chronically-failing Woodpecker steps
- fix standalone-mode fatals and Docker Pro setup race (#1074)
- register custom Shiki theme objects in frontend createHighlighter()
- place file args before --fix in .lintstagedrc.js commands
- remove dead gfmr-highlighter.js module and its stale dependents
- pin npm to <11 and guard esbuild lock subtree drop
- Increase ps aux memory test timeout and resync changelog

## [2.10.5] - 2026-07-13
### Added
- add availability field to roadmap schema and validation
- add Pro code-block enhancement pack with Free-core strip (#1033)
- sync Pro bundled Free core version during release
### Fixed
- configure GFMR Pro Lemon Squeezy product
- connect GFMR Pro updater endpoint
- align version metadata with bundled core
- repair license activation package
- unify LSQ update endpoint path and add drift guard
- guard pro-package.sh copy steps against leaked symlinks
- register wp-cli gfmr command via classmap autoload trigger

## [2.10.4] - 2026-07-03
### Added
- Add in-plugin Manual content to settings page
- add shared client-side SVG allowlist sanitizer
### Fixed
- update GfmrLicenseManagerTest/GfmrPremiumFeatureGateTest to match current implementation
- fix Patchwork/Brain Monkey bootstrap ordering for 3 test files
- reconcile ExternalServiceDependencyTest with current implementation
- allow markdown-label tags and text transform in SVG sanitizer
- preserve multilingual SSR body on initial load
- Stabilize Mermaid diagram reveal
- prevent frontend rendering regressions

## [2.10.3] - 2026-06-29
### Added
- Add admin manual submenus
### Fixed
- Count multiline translations without msgfmt
- Satisfy PHP lint for admin pages

## [2.10.2] - 2026-06-26
### Added
- Add live style-preset preview to settings page
### Fixed
- Align light theme code background with GitHub #f6f8fa
- render default-language body in multilingual blocks for untranslated visitor language

## [2.10.1] - 2026-06-24
### Added
- Size Mermaid lightbox from SVG natural viewBox
- Add idempotent demo-post seeder for local verification
### Fixed
- hide Save Changes button on the Extensions settings tab
- hide copy button label text via gfmr-copy-text class

## [2.10.0] - 2026-06-23
### Added
- Prune stale non-standard asset subdirs in SVN deploy
- exclude CJK-subject commits from changelog and guard commit subjects
- add WordPress.org stats tracker
- verify wp.org publish after deploy
- add KaTeX latex rendering support
- add markdown style presets
- add advisory CI reports for knip and bundle size
- add post-merge quality threshold alert
- add local Plugin Check husky gate
- add language switcher disable hook
- Add init-stage timeout to Shiki worker manager
- differential re-render on OS theme change
- Scope MutationObserver code-block processing to inserted roots
- Add WordPress Abilities API foundation for AI agents
### Changed
- reduce PR CI work
- cache SSR allowed-html allow-list per request
- short-circuit has_markdown_patterns backtick detection
- batch SSR cache reads in code-block pass
- Cache base SVG allowed-tags array per request
- Add filterable worker line threshold
### Fixed
- generate SVN tag as clean svn copy after trunk commit
- resolve knip quality threshold breach
- Repair task list checkbox attr spacing before kses (Issue #854)
- align frontmatter date expectations with js-yaml v5
- Keep chart container light background on dark themes
- Revert js-yaml to v4 and pin against v5 major bump
- Keep frontmatter dates as strings via JSON_SCHEMA

## [2.9.4] - 2026-06-15
### Changed
- Maintenance release: internal CI nightly schedule adjustment only. No changes to plugin functionality.

## [2.9.3] - 2026-06-14
### Added
- add [gfmr_markdown] shortcode for block-independent Markdown
- promote security severity gate to blocking on critical (#837 F-B)
- add Lemon Squeezy auto-updater for the standalone Pro plugin
### Fixed
- skip Mermaid in SSR code-block highlighting (Issue #861)
- nest content-only delegation to avoid dead-branch error
- wire up toc_sticky and remove dead chart_zoom_enabled setting
- gate PlantUML AJAX proxy behind is_plantuml_enabled()
- make get_the_tags callback accept a single argument

## [2.9.2] - 2026-06-11
### Added
- add WordPress Playground Live Preview blueprint
- improve readme discoverability and add settings review footer
- Add per-language featured images for built-in multilingual mode
- Add release smoke gate manifest and CI locale parity
- Add Settings action link to plugin row
### Fixed
- give deploy-svn.sh standalone defaults for slug/SVN vars
- remove test-environment artifacts from wp.org screenshots
- preserve GFM task list checkboxes through SSR/baked sanitization

## [2.9.1] - 2026-06-10
### Added
- add multilingual taxonomy assignments
- keep WordPress.org readme tabs fresh and fix version cache-busting
### Fixed
- isolate readiness tests from config.sh env leak (README_FILE)

## [2.9.0] - 2026-06-08
### Added
- add i18n .mo auto-recompile hooks and wporg/i18n audit agents
- add WP-cross-version smoke and timing history median
- add diff coverage and security severity gate quality gates
- add interactive chart controls
- add approximate grammar fallbacks for unbundled languages
- add markdown image drop uploads
### Fixed
- reveal frontend content on render pipeline failure
- stabilise diagram-layout tests against font-metrics flake
- use foreignObject bounds for diagram label alignment tests
- optimize PR lint and dependency caches
- exclude .security-allowlist.json from wp.org dist
- reveal Mermaid SSR cache-warmed diagrams
- wire roadmap status update into release
- repair version-check tooling and sync composer.json version
- unify nav waitForURL/waitForNavigation timeout to 60s
- retry WP login in global-setup to absorb startup flakiness
- clean up release lock via EXIT trap on early abort

## [2.8.1] - 2026-06-04
### Fixed
- improve inline code contrast and stabilize tests
- align diagram rendering layouts
- repair mermaid state diagram styles
- preserve mermaid flowchart polygon transforms
- preserve mermaid flowchart path transforms
- keep wide mermaid diagrams readable
- fit wide mermaid diagrams to container
- center chart preview images
- update mermaid server privacy gate live

## [2.8.0] - 2026-06-03
### Added
- live Mermaid bg color and concurrent chart rendering
- Add cross-session diagram cache with localStorage persistence
- Add SVN trunk cleanup script for stray readiness-results
- scan clean dist in plugin-check instead of dev tree
- Add shared concurrent-load guard for editor diagram libraries
- add non-interactive mode and reduce log noise
- Add bounded render cache helper and skip rendered Mermaid blocks
- Show friendly notice for PlantUML suppressed diagrams
- Add server-side Mermaid rendering via Kroki
- add configurable PlantUML server URL
- send a sync trigger to wakalab-site on release
- Add per-language SEO meta description feature
- Add interactive diagram toolbar with expand and collapse
- add clipboard image paste with media upload
### Changed
- adaptive debounce + PlantUML completeness guard
- skip redundant builds and vendor reinstalls
### Fixed
- render baked Mermaid diagrams and code blocks in prerendered content
- resolve stale roadmap-update.yml reference in integrated-release STEP 3.4

## [2.7.17] - 2026-06-02
### Fixed
- scope and time-box Plugin Check to prevent release hang
- isolate E2E compose project to stop release/CI smoke collision

## [2.7.16] - 2026-06-02
### Fixed
- harden release smoke against transient nav timeouts

## [2.7.15] - 2026-06-02
### Added
- add WordPress.org submission readiness check suite
- automate nightly plugin-check parallel diff (Phase 6-A)
- Reserve placeholder space to reduce CLS/FOUC
- load frontend styles non-render-blocking with critical CSS
- Exclude heavy diagram pages from prerender (WP7.0 spike)
- load Shiki grammars on demand per page languages
- add Site Health check for diagram bundle compression
- add Service Worker for long-term vendor caching
- extend diagram cache TTL to 30 days with version-keyed invalidation
- bake Chart.js into cached WebP/PNG images on render
- bake editor-rendered diagrams to skip frontend JS
- skip Mermaid renderer when diagrams are fully baked
- bake SVGs into eviction-proof post meta
- Offload Shiki highlighting to Web Worker
- Memoize editor Mermaid/Chart renders with source-keyed cache
### Changed
- defer frontend scripts and schedule non-blocking init
- Lazy-load Shiki and Mermaid bundles on demand
- Chunk initial block rendering to reduce INP
### Fixed
- run setup-php release jobs on ubuntu-latest (fix native runner sudo loop)
- make wporg readiness tests resilient to missing jq/msgfmt
- check license.txt with correct lowercase name
- avoid set -e abort on (( count++ )) in cleanup_old_reports
- replace bash 4 mapfile in cache-cleanup PR job
- allow anonymous Mermaid SVG cache warming
- add bounded schema-aware cache keys
- make plugin check gate executable
- restrict baked data: URIs to base64 raster images
- harden baked data: URI handling against entity-encoded bypass
- Route worker init failure to main-thread highlighter
- Prevent readiness script abort from grep|head SIGPIPE under pipefail
- Treat undeterminable readiness values as warn, not false fail

## [2.7.14] - 2026-05-30
## [2.7.13] - 2026-05-27
## [2.7.12] - 2026-05-27
## [2.7.11] - 2026-05-27
## [2.7.10] - 2026-05-27

## [2.7.9] - 2026-05-27
## [2.7.8] - 2026-05-21
## [2.7.7] - 2026-03-18
## [2.7.6] - 2026-03-17
## [2.7.5] - 2026-03-13
## [2.7.4] - 2026-03-12
## [2.7.3] - 2026-03-12
## [2.7.1] - 2026-03-12
## [2.7.0] - 2026-03-10
## [2.6.0] - 2026-03-06
## [2.5.0] - 2026-02-02
## [2.4.1] - 2026-01-30

## [2.4.0] - 2026-01-30
## [2.3.0] - 2026-01-26
## [2.2.0] - 2026-01-23
## [2.1.0] - 2026-01-23
## [2.0.3] - 2026-01-20
## [2.0.2] - 2026-01-19
## [2.0.1] - 2026-01-19
## [2.0.0] - 2026-01-19

## [1.16.0] - 2026-01-19
## [1.16.0] - 2026-01-16
## [1.15.0] - 2026-01-16
## [1.14.1] - 2026-01-15
## [1.14.0] - 2026-01-15
## [1.13.0] - 2026-01-13
## [1.12.0] - 2026-01-13
## [1.11.1] - 2026-01-11
## [1.11.0] - 2026-01-09
## [1.10.3] - 2026-01-09
## [1.10.2] - 2026-01-09
## [1.10.0] - 2026-01-09
## [1.9.1] - 2026-01-08
## [1.9.0] - 2026-01-07
## [1.8.0] - 2026-01-06
## [1.7.14] - 2026-01-05
## [1.7.13] - 2026-01-05
## [1.7.12] - 2026-01-04
## [1.7.11] - 2026-01-03
## [1.7.10] - 2026-01-03
## [1.7.9] - 2026-01-03
## [1.7.8] - 2026-01-03
## [1.7.7] - 2026-01-02
## [1.7.6] - 2026-01-02
## [1.7.5] - 2026-01-02
## [1.7.4] - 2026-01-02
## [1.7.3] - 2026-01-02
## [1.7.2] - 2026-01-02
## [1.7.0] - 2026-01-01
## [1.6.0] - 2026-01-01
## [1.5.0] - 2026-01-01
## [1.4.0] - 2025-12-28
## [1.3.9] - 2025-12-26
## [1.3.8] - 2025-12-26
## [1.3.7] - 2025-12-26
## [1.3.6] - 2025-12-26
## [1.3.5] - 2025-12-26
## [1.3.2] - 2025-12-25
## [1.3.1] - 2025-12-25
## [1.3.0] - 2025-11-18
## [1.2.0] - 2025-11-18
## [1.1.2] - 2025-08-29
## [1.1.1] - 2025-08-29
## [1.1.0] - 2025-08-28
## [1.0.0] - 2025-08-13
