Releases: xshaheen/headless-sdk
Releases · xshaheen/headless-sdk
Release list
0.2.0
Breaking Changes
- The bumped analyzer baseline introduces new rules that participate immediately under
AnalysisLevel=latest-alland escalate to errors on CI. This is intentional policy: the mandatory baseline tightens with each SDK release, and consumer code that was warning-free may need updates. Individual rules can now be disabled per project through the consumer's.editorconfig(see the NoWarn migration below). - Builds driven by AI coding agents now treat warnings as errors (
HeadlessIsLlmContext); agent sessions on code with pre-existing warnings fail where they previously succeeded. Opt out withHeadlessIsLlmContext=false. - Consumer
.editorconfigseverities for previously-NoWarn'd rules now take effect:/nowarnno longer wins, so a consumer config that raises one of those rules will start reporting it. Clearing$(NoWarn)no longer re-enables baseline-disabled rules; re-enablement goes through editorconfig severities. - Project-body downgrades of
Deterministic,AnalysisLevel, orAnalysisModeno longer take effect; the mandatory baseline is re-asserted after the project body in every consumption mode, closing a loophole in the documented authoritative contract. - The
embeddedandsnupkgsymbol formats embed untracked sources (including source-generator output) into shipped PDBs. Review generated content for sensitive values or opt out withEmbedUntrackedSources=false.
Added
- AI coding-agent detection (
HeadlessIsLlmContext, auto-detected from Claude Code, Codex, Cursor, Copilot, Gemini, Windsurf, Zed, Cline, Aider, and other agent environment variables): agent-driven builds treat compiler, analyzer, nullable, and MSBuild warnings as errors without inheriting CI-only behavior (SBOM, locked restore, coverage). Consumer-overridable withHeadlessIsLlmContext=false. - Analyzer rule-coverage gate: a repository test reflection-loads the nine mandatory analyzer packages, enumerates every supported diagnostic, and fails when an analyzer version bump introduces a rule that is neither tuned in a shipped editorconfig nor recorded in the reviewed package-defaults baseline — new rules now require an explicit severity decision instead of arriving silently.
Changed
- Advisory defaults (
WarningLevel,Features,ReportAnalyzer,SuppressNETCoreSdkPreviewMessage,CheckEolTargetFramework,SuppressTfmSupportBuildWarnings) are now guarded so a consumerDirectory.Build.propsvalue wins under both MSBuild-SDK andPackageReferenceconsumption. The mandatory baseline (Deterministic,AnalysisLevel,AnalysisMode, analyzer execution) is re-asserted after the project body, so both consumption modes now behave identically for it as well. - Analyzer-rule disables moved from
$(NoWarn)to the shipped editorconfigs asseverity = none, so a consumer.editorconfigcan re-enable any baseline-disabled rule per project (/nowarncannot be overridden downstream).$(NoWarn)now carries only diagnostics analyzer config cannot express:CS1712,NU5104, theCS1573/CS1591documentation pair, and the Aspire-hostCA1707relaxation. Test-project relaxations moved intoHeadless.NET.Sdk.Tests.editorconfig, andCA2007enforcement is now expressed purely through the baselinenoneplus theHeadlessEnforceConfigureAwaitoverlay. - Updated the mandatory analyzer baseline:
Meziantou.Analyzer3.0.75 → 3.0.125,Microsoft.CodeAnalysis.BannedApiAnalyzers4.14.0 → 5.6.0, andMicrosoft.VisualStudio.Threading.Analyzers17.14.15 → 18.7.23. The remaining six analyzer packages were already at their latest published versions. - Analyzer versions are now single-sourced through
Directory.Packages.propsand covered by the Dependabot anchor project, so analyzer bump PRs open automatically;VersionConsistencyTestsenforces consistency between the central pins, the shipped version properties, and the nuspec dependency ranges. - The
embeddedandsnupkgsymbol formats now defaultEmbedUntrackedSources=trueso untracked sources (source-generator output, generated files) stay debuggable from the PDB; SourceLink cannot fetch files the repository does not track. Consumer-set values win, andHeadlessSymbolFormat=nonestays on Microsoft defaults.
Fixed
GenerateSBOM=truenow resolves the SBOM tooling from the restore-resolved package location under MSBuild SDK consumption, fixing packs whenMicrosoft.Sbom.Targetsis satisfied from a NuGet fallback folder or shared cache. UnderPackageReferenceconsumption, restore evaluation cannot see package-delivered references (ExcludeRestorePackageImports), so such consumers must restore the tooling into their local packages folder before packing; this limitation is now documented in the shipped targets.- Integration-test consumer restores now use the host global packages folder as a read-only NuGet fallback and no longer pass
RestoreIgnoreFailedSources=true: restores resolve without network access in the common case, and genuine restore failures surface loudly instead of being masked. - The shipped packaging targets no longer inject the SDK author's tag into consumer
PackageTags; consumer tags pass through untouched. - Platform contract tests now report as skipped instead of passed when running on a non-matching operating system.
0.1.1
Release notes are maintained in CHANGELOG.md.