Release v2.1.0-rc.3#5256
Merged
Merged
Conversation
Adds --smoke-test flag to NativeAot example that creates all views, verifies no AOT crashes, and exits. CI now runs the published AOT binary after dotnet publish to catch runtime AOT regressions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Back-merge v2.1.0-rc.2 from main into develop
Adds Examples/NativeAot/SmokeTest — a standalone project that references Terminal.Gui via PackageReference (not ProjectReference) and AOT-publishes + runs it. This catches AOT runtime errors that only manifest when consuming the NuGet package, where trimming decisions differ from a direct project reference. CI flow: Pack → AOT publish (ProjectRef) → run → AOT publish (NuGet) → run Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Two paths leak OSC 8 hyperlink state into adjacent rendering: 1. In `OutputBufferImpl.SetAttributeAndDirty`, when a cell that previously carried a URL is overdrawn by content with no `CurrentUrl` set (e.g. a parent view filling its content area, or a Link whose displayed text shrank), the cell becomes dirty but the stale entry stays in `_urlMap`. The next render wraps that cell in OSC 8, so unrelated content appears hyperlinked. Now the entry is removed when `CurrentUrl` is null/empty. 2. In `OutputBase.Write`, when dirty cells with a URL are flushed mid-row because a clean cell follows, the OSC 8 start sequence is emitted to the terminal but `outputStringBuilder` is cleared while `_lastUrl` stays set. If the row ends without another flush the existing `outputStringBuilder.Length <= 0` early-`continue` skips the OSC 8 close, leaving the hyperlink open across the row boundary so later rows render as part of the link. Now the close is emitted at end of row whenever `_lastUrl` is set. Adds three regression tests in `OutputBaseTests`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
SmokeTest was inside Examples/NativeAot/ so its Program.cs got auto-included in NativeAot.csproj (SDK default glob), causing 'more than one entry point' error. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
SmokeTest.csproj uses PackageReference Version='*' to pick up the freshly-packed local nupkg. Central Package Management (NU1008) blocks inline Version attributes, so opt this CI-only project out. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…oke test Instead of just creating views and exiting, smoke tests now use RunAsync with a 5-second CancellationToken timeout to exercise the full app lifecycle: Init → Run → layout → draw → event loop → stop. DisableRealDriverIO=1 env var enables headless execution in CI. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
In CI, dotnet pack produces a prerelease version (e.g. 2.1.0-PullRequest5251.135). NuGet's Version='*' only matches stable releases, so it was resolving an old stable package from nuget.org that didn't have RunAsync. Version='*-*' matches prerelease versions too. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The NuGet-based SmokeTest added complexity (CPM opt-out, prerelease version resolution, packageSourceMapping) without catching different bugs. The ILC runs the same analysis regardless of reference type. The ProjectReference-based NativeAot --smoke-test already: - Produces a real AOT native binary via dotnet publish - Runs it with DisableRealDriverIO for headless CI - Exercises full app lifecycle via RunAsync with timeout Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add AOT smoke test to CI
Fixes #4892. OSC 8 hyperlink rendering does not clean up
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v2.1.0-rc.3
This is a rc pre-release.
Version:
2.1.0-rc.3NuGet Package:
Terminal.Gui 2.1.0-rc.3What happens when this PR is merged
v2.1.0-rc.3main→developwill be openedChecklist
2.1.0-rc.3