Skip to content

Release v2.1.0-rc.2 - #5250

Merged
tig merged 2 commits into
mainfrom
release/v2.1.0-rc.2
May 7, 2026
Merged

Release v2.1.0-rc.2#5250
tig merged 2 commits into
mainfrom
release/v2.1.0-rc.2

Conversation

@tig

@tig tig commented May 7, 2026

Copy link
Copy Markdown
Member

Release v2.1.0-rc.2

This is a rc pre-release.

Version: 2.1.0-rc.2
NuGet Package: Terminal.Gui 2.1.0-rc.2

What happens when this PR is merged

  1. ✅ The Finalize Release workflow will automatically create tag v2.1.0-rc.2
  2. ✅ The Publish workflow will build and push to NuGet.org
  3. ✅ A GitHub Release will be created with auto-generated notes
  4. ✅ A back-merge PR from maindevelop will be opened

Checklist

  • CI passes on this PR
  • Version looks correct: 2.1.0-rc.2
  • Release notes reviewed (will be auto-generated on merge)

tig and others added 2 commits May 7, 2026 16:07
Back-merge v2.1.0-rc.1 from main into develop
The fix from #5243 ("Fixes #5259. AOT: use source-generated JSON
serializer for dictionary construction in DeepCloner") was reverted
when release/v2.1.0-rc.1 merged origin/main back at 94dca98. That
merge had conflicts in DeepCloner.cs and ConfigurationManager.cs and
the resolution picked main's pre-#5243 versions, dropping:

  - 27 lines from DeepCloner.cs (the SourceGenerationContext.GetTypeInfo
    fallback in CreateDictionaryInstance, plus its leading comment)

and re-adding 54 lines to ConfigurationManager.cs:

  - CloneHardCodedPropertyValue and the per-type clone helpers
    (CloneKeyBindings, ClonePlatformKeyBinding, CloneKeyArray) that
    #5243 had removed in favor of generic DeepCloner handling
  - the call site change from DeepClone to CloneHardCodedPropertyValue

PRs #5246 (rc.1 → main) and #5247 (rc.1 backmerge → develop) carried
the broken state forward. v2.1.0-beta.1 was tagged before the merge
(no fix); v2.1.0-rc.1 was tagged after but doesn't have it either.

Repro: `dotnet publish Examples/NativeAot -c Release -r win-x64
--self-contained -p:PublishAot=true` against current develop crashes
at module init with `MissingMethodException: No parameterless
constructor defined for type Dictionary<ColorName16, string>`. Same
crash a downstream AOT consumer (clet) hit and tracked as #5239#5240#5242#5243#5248.

This commit checks DeepCloner.cs and ConfigurationManager.cs out of
11d6e27 (the original PR #5243 merge), restoring the source-gen
fallback and removing the per-type helpers. Verified locally:

  - `dotnet build Terminal.Gui/Terminal.Gui.csproj -c Release` → 0 errors
  - clet AOT publish + `clet.exe --version` runs cleanly (was crashing
    against rc.1; now exits 0 with the local TG nupkg pinned)

Refs #5239, #5242, #5243, #5248, #5259.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@tig
tig merged commit 47e6cc0 into main May 7, 2026
31 checks passed
@tig
tig deleted the release/v2.1.0-rc.2 branch May 7, 2026 22:32
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