Skip to content

feat!: drop net8.0/net9.0 and bump dependencies (→ 1.16.0) - #43

Merged
poxet merged 7 commits into
masterfrom
chore/dependency-patch-bumps
Jul 26, 2026
Merged

poxet merged 7 commits into
masterfrom
chore/dependency-patch-bumps

Conversation

@poxet

@poxet poxet commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Patch-level external bumps plus internal Tharga.* bumps to consume the tier-0 releases.

External (patch):

  • Microsoft.Extensions.DependencyInjection.Abstractions 10.0.8 -> 10.0.10
  • Microsoft.Extensions.Options 10.0.8 -> 10.0.10
  • Microsoft.Extensions.Options.ConfigurationExtensions 10.0.8 -> 10.0.10
  • Microsoft.SourceLink.GitHub 10.0.300 -> 10.0.301
  • Microsoft.Extensions.Configuration, .Binder, .DependencyInjection 10.0.8 -> 10.0.10 (tests)

Internal:

  • Tharga.Test.Toolkit 1.14.10 -> 1.14.11 (tests, x2)

Verified locally: dotnet test -c Release passes.

External (patch):
- Microsoft.Extensions.DependencyInjection.Abstractions 10.0.8 -> 10.0.10
- Microsoft.Extensions.Options 10.0.8 -> 10.0.10
- Microsoft.Extensions.Options.ConfigurationExtensions 10.0.8 -> 10.0.10
- Microsoft.SourceLink.GitHub 10.0.300 -> 10.0.301
- Microsoft.Extensions.Configuration, .Binder, .DependencyInjection 10.0.8 -> 10.0.10 (tests)

Internal:
- Tharga.Test.Toolkit 1.14.10 -> 1.14.11 (tests, x2)
@codecov

codecov Bot commented Jul 26, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 70.27027% with 11 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
Tharga.Toolkit.Standard/Timer/ManagedTimer.cs 0.00% 8 Missing ⚠️
...arga.Toolkit.Standard/Compare/CompareExtensions.cs 92.85% 0 Missing and 2 partials ⚠️
Tharga.Toolkit.Standard/Enumeration.cs 0.00% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

BREAKING CHANGE: removes the net8.0 and net9.0 target frameworks.
Consumers must be on .NET 10. Both frameworks reach end of support on
2026-11-10, so they are dropped together rather than in two steps.

- Tharga.Toolkit: net8.0;net9.0;net10.0 -> net10.0
- Tharga.Toolkit.Standard (netstandard2.0) unchanged

Bumps MAJOR_MINOR 1.15 -> 1.16 so this ships as a minor release, not a
patch — a patch that removes a target framework would break consumers
taking a routine update.
@poxet poxet changed the title chore(deps): bump patch-level and internal Tharga.* versions feat!: drop net8.0/net9.0 and bump dependencies (→ 1.16.0) Jul 26, 2026
The package version is computed by CI and passed as -p:PackageVersion at
pack time, so the <Version> in each csproj was never used for the published
package — it only misled. Mcp read 0.1.0 while the build shipped 0.1.x/0.2.x.

Removing it makes the build the single source of truth for the version.
The backlog path was hardcoded to c:\Users\danie\SynologyDrive\..., which
only resolves on one machine under one account. Shared instructions say to
resolve $DOC_ROOT from ~/.claude/settings.json, where it is defined.

10 of 15 sub-projects had the hardcoded form; the other 5 already used
$DOC_ROOT. This aligns them.
The GitHub Actions workflow was not reachable from the solution, so editing
it meant leaving the IDE. LICENSE likewise. Both are now listed under
Solution Items.
…vOps

Dependencies
- Tharga.Test.Toolkit 1.14.11 -> 1.14.12 in both test projects.

Assembly version
- The version is now computed before the build and passed as -p:Version.
  Passing it only to `dotnet pack` set PackageVersion alone, so published
  assemblies reported 1.0.0.0 regardless of release. A `Resolve build
  version` step picks the pre-release version on pull requests and the
  stable one otherwise, so the assembly and the package cannot disagree,
  and the two conditional Pack steps collapse into one.

Version tag lookup
- Guarded the `grep` in the tag lookup with `|| true`. It exits 1 when no
  tag matches, which is what happens the first time a repo starts a new
  MAJOR_MINOR series.

Azure DevOps
- Deleted azure-pipelines.yml and buildnumber.yml. They were dormant but
  not harmless: the pipeline still had an active nuget.org push and a
  stale majorMinor of 1.15 while the repo ships 1.16, so re-enabling it in
  Azure DevOps would have published a conflicting version series. Removed
  the matching solution items too.

Packaging
- NU5048 added to NoWarn. PackageIconUrl is deliberate; Tharga packages
  reference their icon from https://thargelion.net/assets/ so icons are
  maintained centrally and can change without republishing.

CI
- SDK install narrowed to 10.0.x.
Enumeration.GetHashCode returned base.GetHashCode(), a reference-based
hash, while Equals compares the concrete type and Id. Two equal values
therefore hashed differently, so Enumeration misbehaved as a Dictionary
key or in a HashSet. It now hashes the same values Equals compares.

CompareExtensions called GetEnumerator() on the non-generic IEnumerable
in three places and never disposed the result, leaking whatever the
source enumerators held open. They are now disposed in a finally.

GetMatchFromList had a latent infinite loop: when the cast to IEnumerable
produced null the loop condition never changed, so it spun forever. Every
current caller passes an IEnumerable, so it was unreachable in practice,
but it now returns early instead.

ManagedTimer wrote _running outside the lock that guards the matching
test-and-set in TimerEngine, so a restart on another thread was not
guaranteed to see the timer had stopped. The write is now under the same
lock, which is only ever held for that short guard and never while the
task body runs, so it cannot deadlock.
@poxet
poxet merged commit d671e68 into master Jul 26, 2026
7 of 8 checks passed
@github-actions

Copy link
Copy Markdown

Released as v1.16.0 — https://github.com/Tharga/Toolkit/releases/tag/1.16.0

This branch had an error being deployed

1 failed deployment
prerelease — 4b9356fa Deployed Jul 26, 2026 by poxet via prerelease #18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant