Files
AppKit/Directory.Build.props
T
james.maesandCodex 7f70c31517 feat(logging): preserve structured templates, fields, and scopes
Adapt existing IActivityLog sinks to standard ILogger without adding interface
requirements. Store original templates, rendered messages, typed JSON scalar
fields, event identity and async scopes. Preserve full exception text, daily
retention, failure containment, and thread-safe writes.

Migrate update events, framework crash nets and samples to source-generated
logging. Pin Microsoft.Extensions.Logging.Abstractions 10.0.12 (MIT) rather
than implementing template parsing. Advance the unreleased minor to 0.2.0
and document legacy API compatibility and explicit scalar/JSON value policy.

Validation: 146 unit tests, 12 sample UI tests, 100% core/updates coverage,
zero-warning build, formatting and hooks passed. Dependency scan reported
no known vulnerabilities. Starter migration and public rollout remain #5.

Refs: #5, #8
Co-Authored-By: Codex (GPT-6) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-10 13:07:45 -05:00

73 lines
3.3 KiB
XML

<Project>
<!-- KofTwentyTwo .NET quality gate (standards: K22-CODE-CS, from
KofTwentyTwo/standards configs/dotnet). Every rule fails `dotnet build` locally
exactly as it fails in CI. -->
<PropertyGroup>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<LangVersion>latest</LangVersion>
<IsPackable>false</IsPackable>
<!-- Warnings are errors; analyzers and .editorconfig style run in every build. -->
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<MSBuildTreatWarningsAsErrors>true</MSBuildTreatWarningsAsErrors>
<AnalysisLevel>latest-recommended</AnalysisLevel>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<!-- Required for IDE0005 (unused usings) to run during build. CS1591 (missing XML
doc) stays on for packable projects and is silenced for everything else below. -->
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<!-- Reproducible builds with source-linked symbols. -->
<Deterministic>true</Deterministic>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
<!-- Supply chain: audit direct AND transitive packages; pin the whole graph. -->
<NuGetAudit>true</NuGetAudit>
<NuGetAuditMode>all</NuGetAuditMode>
<NuGetAuditLevel>low</NuGetAuditLevel>
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<!-- CI: normalized paths, and restore must match the committed lock files exactly. -->
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true' or '$(CI)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
<RestoreLockedMode>true</RestoreLockedMode>
</PropertyGroup>
<!-- Only shipped libraries must document their public API. -->
<PropertyGroup Condition="'$(IsPackable)' != 'true'">
<NoWarn>$(NoWarn);CS1591</NoWarn>
</PropertyGroup>
<ItemGroup>
<!-- Repository-wide analyzers; versions live in Directory.Packages.props. -->
<PackageReference Include="Meziantou.Analyzer" PrivateAssets="all" IncludeAssets="runtime; build; native; contentfiles; analyzers" />
</ItemGroup>
<!-- Single version source for every package in the repo; they always release
together. Local builds are <prefix>-dev; release builds pass an explicit
-p:Version=<tag-version>, which overrides both parts. SourceLink appends the
git commit as "+<sha>" on AssemblyInformationalVersion. -->
<PropertyGroup>
<VersionPrefix>0.2.0</VersionPrefix>
<VersionSuffix>dev</VersionSuffix>
</PropertyGroup>
<!-- Package metadata shared by every packable project. -->
<PropertyGroup>
<Authors>James Maes</Authors>
<Copyright>Copyright (c) 2026 James Maes (KofTwentyTwo)</Copyright>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageProjectUrl>https://github.com/KofTwentyTwo/AppKit</PackageProjectUrl>
<RepositoryUrl>https://github.com/KofTwentyTwo/AppKit</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageTags>windows;desktop;winui;wpf;velopack</PackageTags>
</PropertyGroup>
</Project>