Remove Scriban: Pure C# Rendering + NativeAOT Hardening
This release replaces the Scriban template engine with pure C# rendering internally. There are
no user-visible output changes — reports look exactly the same as before. The notable effects
are: zero third-party NuGet package dependencies, a smaller NativeAOT binary, and several
AzApi rendering fidelity improvements that came out of the migration.
✨ Features
-
Zero third-party runtime dependencies. Scriban was the only third-party NuGet package
intfplan2md. It has been replaced entirely with pure C# rendering classes. The binary now
has no external library dependencies at all. -
Full reflection-free NativeAOT binary. A new Roslyn source generator (
JsonEmbedGenerator)
embeds role definitions, AzApi documentation mappings, and icon rules as Brotli-compressed
compile-time constants (IlcDisableReflection=trueis now enabled). This improves trim
safety and reduces the risk of NativeAOT publish surprises. -
Smaller NativeAOT binary. Removed the Scriban and
System.Xml.Linqassembly references,
reducing the published image size.
🐛 Bug fixes
-
AzApi resource rendering fidelity. The migration from Scriban templates to C# renderers
exposed several gaps in AzApi output:- Restored per-resource
Type, API documentation link,Body, andOutput Valuessections - Fixed grouped body section rendering and sensitive-path masking for
azapi_resourceand
azapi_update_resource - Fixed sensitive empty-container placeholders (e.g.,
accessPolicies) — rows were
previously omitted - Fixed array table rendering: nested arrays (e.g.,
siteConfig.appSettings) now render as
index-row matrices instead of per-item mini-tables - Fixed AzApi numeric value preservation (
12.0is no longer normalized to12) - Fixed output-values ordering for grouped/sensitive output snapshots
- Restored per-resource
-
Smaller Docker build context. Added
.dockerignoreto exclude docs, test results, and
generated artifacts from the build context, reducing it from ~3.39 GB to ~78 KB.
🔗 Commits
6f517161refactor: remove Scriban and migrate to pure C# rendering424753abfeat: implement azapi-specific C# rendering pipeline for fix #1eb1ac573fix: finalize azapi output values snapshot parity7864eb88fix: implement snapshot parity fixes 12, 4, and 59df5978cfix: implement snapshot parity fixes 11 6 7 82a285718feat: finalize reflection-free embedded json generator integration724271eafix: drop System.Xml.Linq to reduce NativeAOT sized8cc7d68chore: add .dockerignore to exclude unnecessary files from image build context