Releases: tui-cs/Terminal.Gui
Release list
v2.5.0
Breaking changes
This is a minor bump because v2 still accepts planned API breaks. Apps that compiled against 2.4.17 may need source changes.
-
View.Textis no longer virtual (#5371 / #5366)- Use
OnTextChanging(string proposedValue)/TextChangingto validate or cancel. - Use
OnTextChanged()for post-change sync. TextFieldusesView.Textdirectly (nonewhider).
- Use
-
IAcceptTargetmoved toTerminal.Gui.Input(#5395 / #5369)- Add
using Terminal.Gui.Input;.
- Add
-
Legacy
ConfigurationManagerremoved (#5416 / #4367)- Replacement:
TuiConfigurationBuilderand Settings POCOs (ButtonSettings.Current, etc.). config.jsonis nested only. Convert old flat-key files withTools/MigrateConfig.- Types marked
[Obsolete]in 2.4.17 (#5411) are gone.
- Replacement:
See docfx/docs/breaking-changes-2.5.0.md and the configuration deep dive.
Highlights
- Editable NumericUpDown
- TableView horizontal scrolling for wide content
- Native ANSI size detection; platform detection cleanup
- SynchronizationContext fix
- Kitty protocol: preserve repeated legacy input after detection
- DropDownList: hide active popover on DeRegister (#5635)
- NativeAOT: RuneJsonConverter no longer trips IL2026 (#5659)
What's Changed
- Back-merge v2.4.17 from main into develop by @tig in #5586
- Fixes #5469 - Add editable text mode to NumericUpDown by @tig with @Copilot in #5587
- Fixes #5579. SynchronizationContext is not correctly implemented in v2 by @BDisp in #5588
- Bump GitVersion.MsBuild from 6.8.1 to 6.8.2 by @dependabot[bot] in #5589
- Bump Serilog from 4.3.1 to 4.4.0 by @dependabot[bot] in #5590
- Bump System.IO.Abstractions from 22.1.1 to 22.2.0 by @dependabot[bot] in #5591
- Bump Microsoft.NET.Test.Sdk from 18.7.0 to 18.8.1 by @dependabot[bot] in #5593
- Bump Microsoft.Extensions.Configuration and Microsoft.Extensions.Configuration.Binder by @dependabot[bot] in #5595
- Bump TestableIO.System.IO.Abstractions.TestingHelpers from 22.1.1 to 22.2.0 by @dependabot[bot] in #5592
- Bump actions/setup-dotnet from 5 to 6 by @dependabot[bot] in #5598
- Bump Microsoft.Extensions.Options from 10.0.9 to 10.0.10 by @dependabot[bot] in #5597
- Bump actions/setup-go from 6 to 7 by @dependabot[bot] in #5599
- Fixes #5604 - Fix and simplify platform detection by @kasperk81 in #5600
- ci: read the release branch name from env instead of interpolating it by @kobihikri in #5603
- Bump Microsoft.Extensions.Configuration.Json from 10.0.7 to 10.0.10 by @dependabot[bot] in #5605
- Fix TIOCGWINSZ on other platforms by @kasperk81 in #5610
- Bump Microsoft.Extensions.Configuration and Microsoft.Extensions.Configuration.Binder by @dependabot[bot] in #5612
- Bump Microsoft.Extensions.Options from 10.0.10 to 10.0.11 by @dependabot[bot] in #5614
- Bump Microsoft.NET.Test.Sdk from 18.8.1 to 18.9.0 by @dependabot[bot] in #5621
- Bump Microsoft.Net.Compilers.Toolset from 5.6.0 to 5.9.0 by @dependabot[bot] in #5626
- Fixes #5468. Fix TextValidateField cursor rendering by @lyrae-versebound in #5620
- Fixes #5601. Synchronize dirty-row flags after output by @YourRobotOverlord in #5602
- Fixes #5617. Prefer native ANSI size detection by @alsi-lawr in #5619
- Fixes #5369 - BREAKING CHANGE - Move IAcceptTarget to Terminal.Gui.Input namespace by @tig with @Copilot in #5395
- Fixes #5616. Preserve repeated legacy input after kitty detection by @alsi-lawr in #5618
- Fix TableView horizontal scrolling for wide content by @tig with @Copilot in #5609
- Bump Microsoft.CodeAnalysis.Analyzers and Microsoft.CodeAnalysis.CSharp by @dependabot[bot] in #5628
- Bump xunit.v3 from 3.2.2 to 4.0.0 by @dependabot[bot] in #5623
- Bump xunit.runner.visualstudio from 3.1.5 to 4.0.0 by @dependabot[bot] in #5622
- Fixes #5366 - BREAKING CHANGE - Make View.Text notifications CWP-compliant and non-virtual by @tig in #5371
- Fixes #5632. Prevent Shortcut help text overdraw by @YourRobotOverlord in #5634
- Addresses #5627. Skip clean runs during output flush by @YourRobotOverlord in #5633
- Fixes #5640. Prevent custom renderer text overdraw by @YourRobotOverlord in #5642
- Fixes #5638. Scope ANSI key deduplication by @YourRobotOverlord in #5644
- Bump Microsoft.Extensions.Configuration.Json from 10.0.10 to 10.0.11 by @dependabot[bot] in #5646
- Bump Xunit.Combinatorial from 2.0.24 to 2.1.41 by @dependabot[bot] in #5647
- Fixes #5639. Harden TextView text synchronization by @YourRobotOverlord in #5645
- FIXES #4367 - BREAKING CHANGE - Remove legacy ConfigurationManager after MEC migration by @tig in #5416
- Addresses #5630. Bump next version to 2.5.0 for breaking API +semver: minor by @tig in #5656
- Docs: 2.5.0 CM/MEC leftovers for #5630 by @tig in #5658
- Fixes NativeAOT IL2026 in RuneJsonConverter by @tig in #5659
- Fixes #5635. Hide active popover on DeRegister to clear stale cells by @tig in #5657
- Release v2.5.0-beta.1 by @tig in #5660
- Back-merge v2.5.0-beta.1 from main into develop by @tig in #5661
- Release v2.5.0 by @tig in #5673
New Contributors
- @kobihikri made their first contribution in #5603
- @lyrae-versebound made their first contribution in #5620
- @alsi-lawr made their first contribution in #5619
Full Changelog: v2.4.17...v2.5.0
v2.5.0-beta.1
Breaking changes
This is a beta pre-release of a minor bump. v2 still accepts planned API breaks. Apps that compiled against 2.4.17 may need source changes.
-
View.Textis no longer virtual (#5371 / #5366)- Use
OnTextChanging(string proposedValue)/TextChangingto validate or cancel. - Use
OnTextChanged()for post-change sync. TextFieldusesView.Textdirectly (nonewhider).
- Use
-
IAcceptTargetmoved toTerminal.Gui.Input(#5395 / #5369)- Add
using Terminal.Gui.Input;.
- Add
-
Legacy
ConfigurationManagerremoved (#5416 / #4367)- Replacement:
TuiConfigurationBuilderand Settings POCOs (ButtonSettings.Current, etc.). config.jsonis nested only. Convert old flat-key files withTools/MigrateConfig.- Types marked
[Obsolete]in 2.4.17 (#5411) are gone.
- Replacement:
See Breaking changes 2.5.0 and Migrating ConfigurationManager to TuiConfigurationBuilder.
Highlights
- Editable NumericUpDown
- TableView horizontal scrolling for wide content
- Native ANSI size detection; platform detection cleanup
- SynchronizationContext fix
- Kitty protocol: preserve repeated legacy input after detection
- DropDownList: hide active popover on DeRegister (stale cells, #5635)
- NativeAOT: RuneJsonConverter no longer trips IL2026
Auto-generated
Breaking Changes
- Fixes #5369 - BREAKING CHANGE - Move IAcceptTarget to Terminal.Gui.Input namespace by @tig with @Copilot in #5395
- Fixes #5366 - BREAKING CHANGE - Make View.Text notifications CWP-compliant and non-virtual by @tig in #5371
- FIXES #4367 - BREAKING CHANGE - Remove legacy ConfigurationManager after MEC migration by @tig in #5416
What's Changed
- Back-merge v2.4.17 from main into develop by @tig in #5586
- Fixes #5469 - Add editable text mode to NumericUpDown by @tig with @Copilot in #5587
- Fixes #5579. SynchronizationContext is not correctly implemented in v2 by @BDisp in #5588
- Bump GitVersion.MsBuild from 6.8.1 to 6.8.2 by @dependabot in #5589
- Bump Serilog from 4.3.1 to 4.4.0 by @dependabot in #5590
- Bump System.IO.Abstractions from 22.1.1 to 22.2.0 by @dependabot in #5591
- Bump Microsoft.NET.Test.Sdk from 18.7.0 to 18.8.1 by @dependabot in #5593
- Bump Microsoft.Extensions.Configuration and Microsoft.Extensions.Configuration.Binder by @dependabot in #5595
- Bump TestableIO.System.IO.Abstractions.TestingHelpers from 22.1.1 to 22.2.0 by @dependabot in #5592
- Bump actions/setup-dotnet from 5 to 6 by @dependabot in #5598
- Bump Microsoft.Extensions.Options from 10.0.9 to 10.0.10 by @dependabot in #5597
- Bump actions/setup-go from 6 to 7 by @dependabot in #5599
- Fixes #5604 - Fix and simplify platform detection by @kasperk81 in #5600
- ci: read the release branch name from env instead of interpolating it by @kobihikri in #5603
- Bump Microsoft.Extensions.Configuration.Json from 10.0.7 to 10.0.10 by @dependabot in #5605
- Fix TIOCGWINSZ on other platforms by @kasperk81 in #5610
- Bump Microsoft.Extensions.Configuration and Microsoft.Extensions.Configuration.Binder by @dependabot in #5612
- Bump Microsoft.Extensions.Options from 10.0.10 to 10.0.11 by @dependabot in #5614
- Bump Microsoft.NET.Test.Sdk from 18.8.1 to 18.9.0 by @dependabot in #5621
- Bump Microsoft.Net.Compilers.Toolset from 5.6.0 to 5.9.0 by @dependabot in #5626
- Fixes #5468. Fix TextValidateField cursor rendering by @lyrae-versebound in #5620
- Fixes #5601. Synchronize dirty-row flags after output by @YourRobotOverlord in #5602
- Fixes #5617. Prefer native ANSI size detection by @alsi-lawr in #5619
- Fixes #5616. Preserve repeated legacy input after kitty detection by @alsi-lawr in #5618
- Fix TableView horizontal scrolling for wide content by @tig with @Copilot in #5609
- Bump Microsoft.CodeAnalysis.Analyzers and Microsoft.CodeAnalysis.CSharp by @dependabot in #5628
- Bump xunit.v3 from 3.2.2 to 4.0.0 by @dependabot in #5623
- Bump xunit.runner.visualstudio from 3.1.5 to 4.0.0 by @dependabot in #5622
- Fixes #5632. Prevent Shortcut help text overdraw by @YourRobotOverlord in #5634
- Addresses #5627. Skip clean runs during output flush by @YourRobotOverlord in #5633
- Fixes #5640. Prevent custom renderer text overdraw by @YourRobotOverlord in #5642
- Fixes #5638. Scope ANSI key deduplication by @YourRobotOverlord in #5644
- Bump Microsoft.Extensions.Configuration.Json from 10.0.10 to 10.0.11 by @dependabot in #5646
- Bump Xunit.Combinatorial from 2.0.24 to 2.1.41 by @dependabot in #5647
- Fixes #5639. Harden TextView text synchronization by @YourRobotOverlord in #5645
- Addresses #5630. Bump next version to 2.5.0 for breaking API +semver: minor by @tig in #5656
- Docs: 2.5.0 CM/MEC leftovers for #5630 by @tig in #5658
- Fixes NativeAOT IL2026 in RuneJsonConverter by @tig in #5659
- Fixes #5635. Hide active popover on DeRegister to clear stale cells by @tig in #5657
- Release v2.5.0-beta.1 by @tig in #5660
New Contributors
- @kobihikri made their first contribution in #5603
- @lyrae-versebound made their first contribution in #5620
- @alsi-lawr made their first contribution in #5619
Full Changelog: v2.4.17...v2.5.0-beta.1
v2.4.17
What's Changed
- Back-merge v2.4.16 from main into develop by @tig in #5564
- Fixes #5544 #issuecomment-4836836706. FileDialog/OpenDialog: one unre… by @BDisp in #5569
- Bump GitVersion.MsBuild from 6.7.0 to 6.8.0 by @dependabot[bot] in #5571
- Bump Microsoft.Extensions.Options from 10.0.7 to 10.0.9 by @dependabot[bot] in #5568
- Bump GitVersion.MsBuild from 6.8.0 to 6.8.1 by @dependabot[bot] in #5572
- Bump Microsoft.Net.Compilers.Toolset from 5.3.0 to 5.6.0 by @dependabot[bot] in #5575
- Bump Spectre.Console from 0.57.1 to 0.57.2 by @dependabot[bot] in #5576
- Bump gittools/actions from 4.5.0 to 4.7.0 by @dependabot[bot] in #5578
- Fixes FileDialog hiding hidden/system entries (dotfiles) after IgnoreInaccessible change by @tig in #5581
- Kh/5498 width height event contract by @harder in #5577
- Fixes IsReparsePoint fail-open and PopoverMenu.DefaultKey binding collision (release v2.4.17 blockers) by @tig in #5583
- Release v2.4.17 by @tig in #5584
Full Changelog: v2.4.16...v2.4.17
v2.4.16
What's Changed
- Back-merge v2.4.14-beta.1 from main into develop by @tig in #5558
- Fixes #5499. Skip SetNeedsLayout when Dim.Auto text recompute yields unchanged size by @harder in #5549
- Remove legacy "Create Release" workflow (release.yml) by @tig in #5560
- Fixes #5561 - Make TuiConfigurationBuilder flat-key binding trim/AOT-safe by @tig in #5562
- Release v2.4.16 by @tig in #5563
Full Changelog: v2.4.15...v2.4.16
v2.4.15
Release v2.4.15
Stable release from main. Promotes the validated v2.4.14-beta.1 content to stable, including the ConfigurationManager → MEC migration (#5411) with the code-review fixes (flat-key/scalar-Theme MEC binding and the MecThemeManager static-event leak).
- Version: 2.4.15
- Type: stable
The package is published to NuGet.org via the publish workflow.
v2.4.14-beta.1
What's Changed
- Back-merge v2.4.13 from main into develop by @tig in #5554
- Fixes #5555. Preserve explicit Scheme role reassignment by @YourRobotOverlord in #5556
- Prepares for Fixing #4943 - Refactors
ConfigurationManagerto be based onMECby @tig with @Copilot in #5411 - Release v2.4.14-beta.1 by @tig in #5557
Full Changelog: v2.4.13...v2.4.14-beta.1
v2.4.13
What's Changed
- Back-merge v2.4.12 from main into develop by @tig in #5551
- Fixes #5544. FileDialog/OpenDialog: one unreadable entry makes the entire directory render empty (
FileDialogState.GetChildrenswallows the exception) by @BDisp in #5548 - Release v2.4.13 by @tig in #5553
Full Changelog: v2.4.12...v2.4.13
v2.4.12
What's Changed
- Back-merge v2.4.11 from main into develop by @tig in #5541
- Fixes #5525. Document v2 agent gotchas by @tig with @Copilot in #5539
- Bump Spectre.Console from 0.57.0 to 0.57.1 by @dependabot[bot] in #5542
- Partially addresses #4522: document NeedsLayout invariant + lock in layout-convergence guards by @harder in #5500
- Fixes #5517. DropDownList dropped list uses Menu scheme for distinct background by @tig in #5545
- Fix #5543: release raster graphics when their view stops being rendered by @tig in #5547
- Release v2.4.12 by @tig in #5550
Full Changelog: v2.4.11...v2.4.12
v2.4.11
What's Changed
- Back-merge v2.4.10 from main into develop by @tig in #5532
- docs(getting-started): use Accepted for side effects (canonical rule) by @tig in #5534
- tui-cs cleanup by @tig in #5536
- back merge main->develop by @tig in #5537
- readme tweak by @tig in #5538
- Bound UICatalog in-memory log capture to stop long-run memory growth by @tig with @Copilot in #5465
- Fix #5518: Padding adornment fills with stale attribute when parent skips ClearViewport (#5358) by @tig in #5519
- Release v2.4.11 by @tig in #5540
Full Changelog: v2.4.10...v2.4.11
v2.4.10
What's Changed
- Rename internal references: gui-cs → tui-cs by @tig in #5528
- Back-merge v2.4.9 from main into develop by @tig in #5529
- Bump Microsoft.NET.Test.Sdk from 18.6.0 to 18.7.0 by @dependabot[bot] in #5523
- docs(ai-primer): document four high-value v2 gotchas agents miss by @tig in #5530
- Release v2.4.10 by @tig in #5531
Full Changelog: v2.4.9...v2.4.10