Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 22 additions & 12 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

- **`Microsoft.SourceLink.GitHub` package reference restored** (§1.7), at the
estate-wide version 10.0.400 and with `PrivateAssets="All"` so it is never a
consumer dependency. It had been removed as redundant — the .NET 8+ SDK does emit
repository metadata and a source-link document map without it, which is accurate as
far as it goes — but the standard requires the explicit reference so that source
linking is pinned to a version the estate controls rather than moving with whichever
SDK feature band happens to build. The `.nuspec`, README, icon and XML docs are
unaffected; the assembly and symbols shift slightly (see below).
- **Canonical CI shape, CodeQL and Dependabot** per
[NextIteration.Standards](https://github.com/StuartMeeks/NextIteration.Standards)
`STANDARD.md` section 3 and 4. `ci.yml` now splits into `build`, a three-platform
Expand All @@ -26,6 +34,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

- **Central Package Management completed and shared build properties centralised.**
`Directory.Packages.props` gains `CentralPackageVersionOverrideEnabled=false`, so a
stray inline `Version=` alongside CPM is now a hard build failure instead of being
silently ignored (§1.3). The seventeen properties every project restated now live in
the root `Directory.Build.props` (§1.2); each csproj keeps only what is genuinely its
own. Non-shipping projects (tests, demo) set `GenerateDocumentationFile=false` to opt
back out. Verified behaviour-preserving: packed before and after from a clean `obj/`
at the same commit, every entry in both the `.nupkg` and `.snupkg` is byte-identical
bar the per-pack `.psmdcp` name.
- **Adopted the standards baseline docs, editor config and SDK pin.**
`SECURITY.md`, `CONTRIBUTING.md`, `CLAUDE.md` and a pull request template added;
`.gitignore` and `.editorconfig` replaced with the canonical copies; `global.json`
Expand All @@ -38,7 +55,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **`SplashTagline.RandomBuiltIn`'s XML doc corrected** from "~200 quotes" to
"~300": the built-in pool holds 313 entries. Documentation only; the pool itself
is unchanged.

- **Test suite migrated to xUnit.net v3 (`xunit.v3` 4.0.0)** from `xunit` 2.9.3.
Contributor-facing only — no library code, public API, or shipped package
contents changed. v3 test projects are self-executing console apps and run on
Expand All @@ -53,19 +69,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
the suite ran on `net10.0` only. Running the full suite locally now requires
the .NET 8 runtime alongside the .NET 10 SDK.

### Removed

- **`Microsoft.SourceLink.GitHub` package reference.** The .NET SDK has bundled
SourceLink since .NET 8; the explicit reference was redundant. Verified
byte-identical `.nuspec` and `.snupkg` output either way — consumers still get
repository metadata and step-through sources.

### Fixed

- **`PackageOutputPath` no longer breaks non-Windows builds.** The hardcoded
`C:\nuget-local\` local dev feed is now guarded to Windows; previously every
`dotnet build` on Linux/macOS and in CI created a literal `C:\nuget-local\`
directory under `src/`.
- **`PackageOutputPath` no longer points at a machine-local path.** Pack output
goes to `artifacts/packages` on every platform (§1.8). It previously pointed at
a hardcoded `C:\nuget-local\` dev feed; unguarded that created a literal
`C:\nuget-local\` directory under `src/` on Linux, macOS and in CI, and even
guarded to Windows it made one contributor's machine layout part of repo config.
- **CI publish job could not check out the repo.** Its `permissions` block listed
only `id-token: write`, and GitHub sets every unlisted scope to `none`, leaving
`actions/checkout` without `contents: read`.
Expand Down
33 changes: 33 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,8 +1,41 @@
<Project>

<!--
STANDARD.md 1.2: every property that is identical across projects lives here
rather than being restated per csproj. Fifteen copies is fifteen chances to
diverge, and the divergence is silent — nothing fails when one csproj quietly
disagrees with its sibling about DebugType.

A csproj carries only what is genuinely specific to it: PackageId, Version,
Description, PackageTags, TargetFrameworks, the package's own URLs, and any
real exception. A non-shipping project (tests, a demo) sets
GenerateDocumentationFile=false to opt back out — sample and fixture code has
no XML docs, and TreatWarningsAsErrors would otherwise fail the build over
every missing one.

EnforceCodeStyleInBuild is deliberately absent. STANDARD.md 1.2.1 is blocked:
TreatWarningsAsErrors promotes every advisory .editorconfig preference to a
hard failure, which produced 490 build errors in Auth. It needs a per-rule
gate-versus-advisory decision before it can be added here.
-->
<PropertyGroup>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
<AnalysisLevel>latest</AnalysisLevel>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<EnablePackageValidation>true</EnablePackageValidation>
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
<DebugType>portable</DebugType>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<ContinuousIntegrationBuild Condition="'$(GITHUB_ACTIONS)' == 'true'">true</ContinuousIntegrationBuild>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<Copyright>© Stuart Meeks</Copyright>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<Authors>Stuart Meeks</Authors>
<Company>Next Iteration</Company>
</PropertyGroup>

</Project>
14 changes: 14 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -1,12 +1,26 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<!--
Hard-fail if a csproj declares <PackageReference Version="…" /> alongside
CPM. Without this MSBuild silently ignores the inline version and uses the
central one — which is the exact drift this file exists to prevent, and it
prevents it without ever saying so. See STANDARD.md 1.3.
-->
<CentralPackageVersionOverrideEnabled>false</CentralPackageVersionOverrideEnabled>
</PropertyGroup>

<ItemGroup>
<!-- Not runtime-aligned: a single common floor at the version actually built
and tested against. All three are pre-1.0 and version independently of the
.NET runtime, so a per-TFM floor would be meaningless — breaking changes
land between minors. STANDARD.md 1.5, not 1.4. -->
<PackageVersion Include="Figgle" Version="0.6.6" />
<PackageVersion Include="Figgle.Fonts" Version="0.6.6" />
<PackageVersion Include="Spectre.Console" Version="0.57.2" />
<!-- Build-time only (PrivateAssets=All), never a consumer dependency.
STANDARD.md 1.7, at the estate-wide version. -->
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="10.0.400" />
</ItemGroup>

<ItemGroup Label="Test">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<!-- Opts out of the Directory.Build.props default. Sample code carries no
XML docs, and TreatWarningsAsErrors would fail the build over every
missing one. Same reasoning as the test project (STANDARD.md 2.7). -->
<GenerateDocumentationFile>false</GenerateDocumentationFile>
</PropertyGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,37 +1,26 @@
<Project Sdk="Microsoft.NET.Sdk">

<!--
Only what is specific to this project. Everything shared with the test and
demo projects lives in the root Directory.Build.props (STANDARD.md 1.2).
-->
<PropertyGroup>
<TargetFrameworks>net8.0;net10.0</TargetFrameworks>
<ImplicitUsings>enable</ImplicitUsings>
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<AnalysisLevel>latest</AnalysisLevel>
</PropertyGroup>

<PropertyGroup>
<PackageId>NextIteration.SpectreConsole.Splash</PackageId>
<Version>0.3.0</Version>
<Description>Configurable Figgle + Spectre.Console splash screen for .NET CLIs — gradient palette, pluggable tagline strategy, single-markup-call render path.</Description>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<!-- Local dev feed, Windows only. Unguarded this created a literal
`C:\nuget-local\` directory on Linux/macOS and in CI. -->
<PackageOutputPath Condition="$([MSBuild]::IsOSPlatform('Windows'))">C:\nuget-local\</PackageOutputPath>
<GeneratePackageOnBuild Condition="'$(Configuration)' == 'Release'">true</GeneratePackageOnBuild>
<PackageOutputPath>$(MSBuildThisFileDirectory)..\..\artifacts\packages</PackageOutputPath>
<IncludeBuildOutput>true</IncludeBuildOutput>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/StuartMeeks/NextIteration.SpectreConsole.Splash</PackageProjectUrl>
<RepositoryUrl>https://github.com/StuartMeeks/NextIteration.SpectreConsole.Splash.git</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageTags>spectre;cli;splash;figgle;ascii-art</PackageTags>
<PackageIcon>icon.png</PackageIcon>
<Copyright>© Stuart Meeks</Copyright>
<EnablePackageValidation>true</EnablePackageValidation>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
<DebugType>portable</DebugType>
<ContinuousIntegrationBuild Condition="'$(GITHUB_ACTIONS)' == 'true'">true</ContinuousIntegrationBuild>
</PropertyGroup>

<ItemGroup>
Expand All @@ -42,6 +31,7 @@
<PackageReference Include="Figgle" />
<PackageReference Include="Figgle.Fonts" />
<PackageReference Include="Spectre.Console" />
<PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" />
<None Include="..\..\README.md" Pack="true" PackagePath="\" />
<None Include="icon.png" Pack="true" PackagePath="" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
<TargetFrameworks>net8.0;net10.0</TargetFrameworks>
<!-- xUnit.net v3 test projects are self-executing console apps. -->
<OutputType>Exe</OutputType>
<ImplicitUsings>enable</ImplicitUsings>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<!-- Opts out of the Directory.Build.props default. Test and fixture code
Expand Down