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
29 changes: 28 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [2.2.0] — 2026-10-06

Moves to **Spectre.Console.Cli 0.57.2**. Spectre.Console.Cli now ships on its own release
line, and 0.57 changed `AsyncCommand<TSettings>.ExecuteAsync` from `protected` to `public`.
The six credential commands follow suit. Widening an override is a compatible change for
this package (package validation against 2.1.0 passes), but **raising the floor affects your
own commands**: once you upgrade, every `AsyncCommand`/`Command` in your app built against
0.55 has to declare its `Execute`/`ExecuteAsync` override `public`, or the build fails with
CS0507.

No provider-facing interface changed. The provider packages' `[2.1.0, 3.0.0)` range already
resolves against 2.2.0.

### Changed

- **Spectre.Console.Cli floor raised from 0.55.0 to 0.57.2**, matching Spectre.Console.
- **`ExecuteAsync` on `AddCredentialCommand`, `DeleteCredentialCommand`,
`ExportCredentialsCommand`, `ImportCredentialsCommand`, `ListCredentialsCommand` and
`SelectCredentialCommand` is now `public`**, as Spectre.Console.Cli 0.57 requires.

### Documentation

- README: the command-handler sample uses a `public override`, and Requirements lists the
real floors (Spectre.Console.Cli 0.57.2+; `net10.0` platform packages 10.0.12+, not
10.0.10+).

## [2.1.0] — 2026-09-21

Fixes a **data-loss bug in the local file backend** and, in doing so, retires the
Expand Down Expand Up @@ -926,7 +952,8 @@ Consumers needed a way to read a specific stored credential's secret at runtime
- SourceLink, deterministic builds, embedded symbols, published symbol packages.
- `TreatWarningsAsErrors=true`, `AnalysisLevel=latest` — zero-warning public API.

[Unreleased]: https://github.com/StuartMeeks/NextIteration.SpectreConsole.Auth/compare/v2.1.0...HEAD
[Unreleased]: https://github.com/StuartMeeks/NextIteration.SpectreConsole.Auth/compare/v2.2.0...HEAD
[2.2.0]: https://github.com/StuartMeeks/NextIteration.SpectreConsole.Auth/releases/tag/v2.2.0
[2.1.0]: https://github.com/StuartMeeks/NextIteration.SpectreConsole.Auth/releases/tag/v2.1.0
[2.0.0]: https://github.com/StuartMeeks/NextIteration.SpectreConsole.Auth/releases/tag/v2.0.0
[1.1.0]: https://github.com/StuartMeeks/NextIteration.SpectreConsole.Auth/releases/tag/v1.1.0
Expand Down
7 changes: 4 additions & 3 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,13 @@
between minors, so a low floor would be both meaningless and risky.
STANDARD.md 1.5.

Spectre.Console.Cli's latest stable is 0.55.0 (no 0.56/0.57 exists); it
requires Spectre.Console >= 0.55.0, which 0.57.2 satisfies.
Spectre.Console.Cli moved to its own release line and now matches
Spectre.Console at 0.57.2. 0.57 made AsyncCommand.ExecuteAsync public
(it was protected), so every override here is public.
-->
<ItemGroup>
<PackageVersion Include="Spectre.Console" Version="0.57.2" />
<PackageVersion Include="Spectre.Console.Cli" Version="0.55.0" />
<PackageVersion Include="Spectre.Console.Cli" Version="0.57.2" />
</ItemGroup>

<!-- Build / source-link tooling. PrivateAssets="All" in the csproj. STANDARD.md 1.7. -->
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ And from inside any of your command handlers:
```csharp
public sealed class SyncCommand(AdobeAuthenticationService auth) : AsyncCommand
{
protected override async Task<int> ExecuteAsync(CommandContext context, CancellationToken cancellationToken)
public override async Task<int> ExecuteAsync(CommandContext context, CancellationToken cancellationToken)
{
var token = await auth.AuthenticateAsync(cancellationToken);
// use token.GetAuthorizationHeader() on outgoing requests
Expand Down Expand Up @@ -431,9 +431,9 @@ change made to strengthen encryption. Register after, and verify with
## Requirements

- **.NET 8.0** or **.NET 10.0** (the package multi-targets `net8.0;net10.0`)
- **Spectre.Console** 0.57.2+ and **Spectre.Console.Cli** 0.55.0+
- **Spectre.Console** 0.57.2+ and **Spectre.Console.Cli** 0.57.2+
- **Microsoft.Extensions.DependencyInjection.Abstractions** — 8.0.2+ on `net8.0`,
10.0.10+ on `net10.0`
10.0.12+ on `net10.0`

Dependency floors are set per target framework, so a `net8.0` consumer is never dragged
off its own 8.0.x servicing line.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public sealed class Settings : AccountsCommandSettings
}

/// <inheritdoc />
protected override async Task<int> ExecuteAsync(CommandContext context, Settings settings, CancellationToken cancellationToken)
public override async Task<int> ExecuteAsync(CommandContext context, Settings settings, CancellationToken cancellationToken)
{
try
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public sealed class DeleteCredentialCommand(ICredentialManager credentialManager
private readonly ICredentialManager _credentialManager = credentialManager;

/// <inheritdoc />
protected override async Task<int> ExecuteAsync(CommandContext context, Settings settings, CancellationToken cancellationToken)
public override async Task<int> ExecuteAsync(CommandContext context, Settings settings, CancellationToken cancellationToken)
{
try
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public sealed class ExportCredentialsCommand(ICredentialManager credentialManage
private readonly ICredentialManager _credentialManager = credentialManager;

/// <inheritdoc />
protected override async Task<int> ExecuteAsync(CommandContext context, Settings settings, CancellationToken cancellationToken)
public override async Task<int> ExecuteAsync(CommandContext context, Settings settings, CancellationToken cancellationToken)
{
try
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public sealed class ImportCredentialsCommand(ICredentialManager credentialManage
private readonly ICredentialManager _credentialManager = credentialManager;

/// <inheritdoc />
protected override async Task<int> ExecuteAsync(CommandContext context, Settings settings, CancellationToken cancellationToken)
public override async Task<int> ExecuteAsync(CommandContext context, Settings settings, CancellationToken cancellationToken)
{
try
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public sealed class Settings : AccountsCommandSettings
}

/// <inheritdoc />
protected override async Task<int> ExecuteAsync(CommandContext context, Settings settings, CancellationToken cancellationToken)
public override async Task<int> ExecuteAsync(CommandContext context, Settings settings, CancellationToken cancellationToken)
{
try
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public sealed class SelectCredentialCommand(ICredentialManager credentialManager
private readonly ICredentialManager _credentialManager = credentialManager;

/// <inheritdoc />
protected override async Task<int> ExecuteAsync(CommandContext context, Settings settings, CancellationToken cancellationToken)
public override async Task<int> ExecuteAsync(CommandContext context, Settings settings, CancellationToken cancellationToken)
{
try
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

<PropertyGroup>
<PackageId>NextIteration.SpectreConsole.Auth</PackageId>
<Version>2.1.0</Version>
<Version>2.2.0</Version>
<Description>Credential storage, encryption, and Spectre.Console CLI commands for managing provider credentials in CLI tools.</Description>
<GeneratePackageOnBuild Condition="'$(Configuration)' == 'Release'">true</GeneratePackageOnBuild>
<PackageOutputPath>$(MSBuildThisFileDirectory)..\..\artifacts\packages</PackageOutputPath>
Expand Down
Loading