Skip to content

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

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

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

Conversation

@poxet

@poxet poxet commented Jul 26, 2026

Copy link
Copy Markdown
Collaborator

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

External (patch):

  • Microsoft.Extensions.Logging 10.0.8 -> 10.0.10
  • System.Speech 10.0.8 -> 10.0.10
  • System.Text.Json 10.0.8 -> 10.0.10 (sample)

Internal:

  • Tharga.Runtime 0.1.14 -> 0.1.15

Verified locally: dotnet test -c Release passes.

External (patch):
- Microsoft.Extensions.Logging 10.0.8 -> 10.0.10
- System.Speech 10.0.8 -> 10.0.10
- System.Text.Json 10.0.8 -> 10.0.10 (sample)

Internal:
- Tharga.Runtime 0.1.14 -> 0.1.15
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.Console, Tharga.Console.Speech: net8.0;net9.0;net10.0 -> net10.0
- SampleConsole, SampleCoreConsole: net9.0 -> net10.0
- Tharga.Console.Standard (netstandard2.0) unchanged
- SampleFrameworkConsole (.NET Framework 4.8) unchanged

Bumps MAJOR_MINOR 4.1 -> 4.2 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 (→ 4.2.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.
poxet added 2 commits July 26, 2026 13:46
All three packages published their RepositoryUrl as
https://github.com/poxet/tharga-console.git, the old personal
repo, so "View source" on nuget.org sent people there instead
of to this one. PackageProjectUrl was already correct.

Takes effect on the next publish.
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.
Dependencies
- Tharga.Runtime 0.1.15 -> 1.0.0, Tharga.Test.Toolkit 1.14.11 -> 1.14.12
  and Tharga.Mcp 0.1.7 -> 1.0.0, where referenced. Tier 0 is released, so
  these are the versions the tier builds against.

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.
- Verified by packing a distinctive version: 2.3.7 produces an assembly
  reporting 2.3.7.0, not the 1.0.0.0 default.

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. Steps declaring `shell: bash` run under
  `bash -eo pipefail`, so that killed the step outright; steps without it
  use the default `bash -e` and only survived by luck.

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.
TextWriterInterceptor redeclared TextWriter.Null and CoreNewLine with
`new`, hiding the base members. Neither was ever assigned, so
TextWriterInterceptor.Null was always null instead of TextWriter.Null and
the shadowed CoreNewLine was dead. Nothing referenced either, so both are
gone and the inherited members apply.

IntExtensions.Max called Any() and then Max(), enumerating the source
twice, which is wrong for a lazy or single-pass sequence. It now walks
the sequence once.

VariableStore.Get and ActionCommandBase both dereferenced a lookup that
can return null - SingleOrDefault over a reference type, and GetProperty
for an unknown name - surfacing as a bare NullReferenceException naming
nothing. Both now throw an InvalidOperationException that says what was
missing.

ConsoleBase.SetLocation probed ContainsKey before assigning, but the
indexer already adds or replaces. Removed the extra lookup.

ActionConsole, EventConsole and NullConsole overrode Equals and
GetHashCode with bodies that only called base, which is the default
behaviour. Removed, clearing the reference-equality warnings.
@poxet
poxet force-pushed the chore/dependency-patch-bumps branch from f2cdacb to 085a129 Compare July 26, 2026 15:07
@poxet
poxet merged commit b8991a0 into master Jul 26, 2026
6 of 7 checks passed
@github-actions

Copy link
Copy Markdown

Released as v4.2.0 — https://github.com/Tharga/Console/releases/tag/4.2.0

This branch had an error being deployed

1 failed deployment
prerelease — 085a1291 Deployed Jul 26, 2026 by poxet via prerelease #31
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