From d8d743dd44fe07894ca2667342caade5d9121f0e Mon Sep 17 00:00:00 2001 From: Stuart Meeks Date: Sat, 20 Jun 2026 01:06:55 +0000 Subject: [PATCH] v0.7.0: multi-target net8.0 and net10.0 The package now ships assemblies for both net8.0 (current LTS) and net10.0 so consumers no longer need the newest runtime to take a dependency. All dependencies already provide net8.0 assets, so the dependency graph is unchanged. The only source adjustment was swapping the net9.0+ System.Threading.Lock guarding libsecret symbol resolution for a plain object lock; behaviour is identical. - Directory.Build.props: drop the global single-TargetFramework so the src project can multi-target. - src csproj: TargetFramework -> TargetFrameworks net8.0;net10.0; bump Version to 0.7.0. - CHANGELOG: add 0.7.0 entry; backfill missing 0.6.3 link reference. --- CHANGELOG.md | 15 +++++++++++++++ Directory.Build.props | 1 - .../NextIteration.SpectreConsole.Auth.csproj | 4 ++-- .../Persistence/Libsecret/LibsecretInterop.cs | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f42fc9..0dacb49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 --- +## [0.7.0] — 2026-06-20 + +### Added + +- **Multi-targeting `net8.0` and `net10.0`.** The package now ships assemblies for + both `net8.0` (current LTS) and `net10.0`, so consumers no longer need the newest + runtime to take a dependency. All dependencies already provide `net8.0` assets, so + the dependency graph is unchanged. The only source adjustment was swapping the + `net9.0+` `System.Threading.Lock` used to guard libsecret symbol resolution for a + plain `object` lock; behaviour is identical. No public API change. + +--- + ## [0.6.3] — 2026-06-10 ### Changed @@ -135,6 +148,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. +[0.7.0]: https://github.com/StuartMeeks/NextIteration.SpectreConsole.Auth/releases/tag/v0.7.0 +[0.6.3]: https://github.com/StuartMeeks/NextIteration.SpectreConsole.Auth/releases/tag/v0.6.3 [0.6.2]: https://github.com/StuartMeeks/NextIteration.SpectreConsole.Auth/releases/tag/v0.6.2 [0.6.1]: https://github.com/StuartMeeks/NextIteration.SpectreConsole.Auth/releases/tag/v0.6.1 [0.5.0]: https://github.com/StuartMeeks/NextIteration.SpectreConsole.Auth/releases/tag/v0.5.0 diff --git a/Directory.Build.props b/Directory.Build.props index e844269..08993bb 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,6 +1,5 @@ - net10.0 enable true Stuart Meeks diff --git a/src/NextIteration.SpectreConsole.Auth/NextIteration.SpectreConsole.Auth.csproj b/src/NextIteration.SpectreConsole.Auth/NextIteration.SpectreConsole.Auth.csproj index 4d37412..ea6a977 100644 --- a/src/NextIteration.SpectreConsole.Auth/NextIteration.SpectreConsole.Auth.csproj +++ b/src/NextIteration.SpectreConsole.Auth/NextIteration.SpectreConsole.Auth.csproj @@ -1,7 +1,7 @@  - net10.0 + net8.0;net10.0 enable enable en @@ -17,7 +17,7 @@ NextIteration.SpectreConsole.Auth - 0.6.3 + 0.7.0 Stuart Meeks Credential storage, encryption, and Spectre.Console CLI commands for managing provider credentials in CLI tools. true diff --git a/src/NextIteration.SpectreConsole.Auth/Persistence/Libsecret/LibsecretInterop.cs b/src/NextIteration.SpectreConsole.Auth/Persistence/Libsecret/LibsecretInterop.cs index d39ff13..8cab3d7 100644 --- a/src/NextIteration.SpectreConsole.Auth/Persistence/Libsecret/LibsecretInterop.cs +++ b/src/NextIteration.SpectreConsole.Auth/Persistence/Libsecret/LibsecretInterop.cs @@ -309,7 +309,7 @@ internal static void ThrowIfGError(IntPtr error, string operation) private static readonly Dictionary _libraryHandles = []; private static readonly Dictionary _symbolCache = []; - private static readonly Lock _resolveLock = new(); + private static readonly object _resolveLock = new(); private static IntPtr ResolveExport(string library, string symbolName) {