TL;DR: mdr v2.1.0 ("Fernandel") brings significant performance modernization under .NET 10, a brand-new automated test suite, an autonomous end-to-end WinGet release and tracking pipeline, and hardened security scanning.
Following the jump to NativeAOT in 2.0, this release modernizes the rendering engine under the hood: code block syntax highlighters now utilize compile-time [GeneratedRegex] source generators, theme palettes leverage immutable FrozenDictionary lookups, and the document ingestion pipeline streams lines with pooled buffers for zero-allocation reading. A comprehensive 27-test suite now validates formatting, markdown parsing, and terminal keybindings on every pull request.
On the release engineering front, our distribution automation has been completely rebuilt to match wtop. Building a release now generates signed, provenance-attested NativeAOT binaries across all major platforms, logs a proactive Microsoft Defender (WDSI) verification issue, and delegates upstream package publishing to an autonomous tracker that monitors Azure Pipeline validations on microsoft/winget-pkgs until the PR is merged.
This release is named in honor of legendary French actor and comedian Fernandel, celebrated worldwide for the Don Camillo series.
Key Highlights
- Modernized Rendering Engine: Switched to compile-time regex source generators ([GeneratedRegex]), immutable FrozenDictionary palettes, canonical language ID cache keys, and pooled line streaming.
- Unit Test Suite: Added 27 automated tests covering table formatting, blockquotes, syntax highlighting, and theme cycling.
- Autonomous WinGet & Release Pipeline: Synchronized distribution workflows with wtop—featuring automated upstream PR management, live Azure status tracking, and proactive Defender false-positive staging.
- Enhanced Security: Integrated automated Snyk code analysis and open-source vulnerability scanning into the CI gate.
What's Changed
- feat(ci): enhance winget tracker to report PR labels and validation anomalies by @michaelsanford in #28
- feat(winget): enhance tracking and draft workflow for downstream releases by @michaelsanford in #29
- chore(ci): remove qodana workflow and configuration by @michaelsanford in #30
- fix(render): key the keyword cache by a canonical language id by @michaelsanford in #32
- ci: add Snyk dependency and code scanning by @michaelsanford in #31
- ci(snyk): mark repo public so scans stop consuming the private-test quota by @michaelsanford in #33
- fix(ci): repair winget-track.yml so the workflow can parse at all by @michaelsanford in #34
- ci: replace paths-ignore with a changes gate so required checks always report by @michaelsanford in #36
- ci: guard the build steps, not the job, so matrix contexts still report by @michaelsanford in #37
- docs(winget): track the pending-fixes notes in git, and record the parse error by @michaelsanford in #35
- chore(deps): bump actions/checkout from 7.0.0 to 7.0.1 by @dependabot[bot] in #40
- chore(deps): bump actions/setup-dotnet from 5.4.0 to 6.0.0 by @dependabot[bot] in #39
- chore(deps): bump actions/attest-build-provenance from 4.1.1 to 4.2.2 by @dependabot[bot] in #38
- chore(render): apply .NET modernizations and add unit test suite by @michaelsanford in #41
- ci(winget): synchronize release and winget tracking workflows with wtop by @michaelsanford in #42
- chore(docs): update version codenames and net10 references for v2.1.0 by @michaelsanford in #43
Full Changelog: v2.0.0...v2.1.0