Terminal.Gui 2.5.0 Breaking Changes
September 3, 2026 ยท View on GitHub
Terminal.Gui 2.5.0 is a minor bump that includes planned API breaks. Apps that compiled against 2.4.17 may need source changes.
The GitHub Release notes list for this train lives on #5630. This page covers the four breaks that belong in the conceptual docs.
View.Text is no longer virtual
xref:Terminal.Gui.ViewBase.View.Text is a non-virtual property. To validate or cancel a change, override OnTextChanging(string) or subscribe to xref:Terminal.Gui.ViewBase.View.TextChanging. To react after a change, override OnTextChanged or subscribe to xref:Terminal.Gui.ViewBase.View.TextChanged.
TextField uses View.Text directly (no new hider).
See Cancellable Work Pattern and Events.
IAcceptTarget moved to Terminal.Gui.Input
xref:Terminal.Gui.Input.IAcceptTarget now lives in Terminal.Gui.Input. To compile against 2.5.0, add using Terminal.Gui.Input;.
See Command.
ConfigurationManager and [ConfigurationProperty] removed
2.5.0 deletes the legacy ConfigurationManager type and the [ConfigurationProperty] attribute that 2.4.17 marked [Obsolete].
To load themes and settings, use xref:Terminal.Gui.Configuration.TuiConfigurationBuilder and Settings POCOs such as ButtonSettings.Current.
See Configuration and Migrating ConfigurationManager to TuiConfigurationBuilder.
config.json is nested only
A pre-2.5.0 file with dotted keys ("Button.DefaultShadow") or array-shaped Themes / Schemes is not applied. A WARN log names the file.
To convert a legacy file, run Tools/MigrateConfig. Nested JSON is the supported contract.
See Configuration and Migrating ConfigurationManager to TuiConfigurationBuilder.