The Quickening Release
This is a large release!
v0.86.0 Adds an entirely new theming system and an updated demo (Run python -m textual).
The new theming system standardizes the look-and-feel of widgets. This should mean they will look pretty when used in combination, and you will need less tweaking of your UI. If your app already has a customized look and feel, you may need to make a few style changes. Let us know if you need any help with that (jump on the Discord server).
Here's what the demo looks like now:
Screen.Recording.2024-11-16.at.19.08.15.mov
Use the command palette to switch themes...
[0.86.0] - 2024-11-16
Fixed
- Fixed duplicated key displays in the help panel #5037
 - Fixed 
TextAreamouse selection with tab characters #5212 - Fixed 
Tabsnot updating the highlighting after removing a tab #5218 
Added
- Added 
App.themereactive attribute #5087 - Added various starter themes #5087
 - Added "Change theme" command to command palette #5087
 - Added 
variantparameter toLabelwidget for quick access to common styles #5087 - Added 
App.get_themewhich returns a theme by name #5087 - Added 
App.register_themeandApp.unregister_theme#5087 - Added 
App.theme_changed_signal#5087 - Added 
App.available_themesproperty which returns a mapping of theme names toThemeinstances #5087 - Added 
App.current_themeproperty which returns the currently active theme object #5087 - Added 
App.get_theme_variable_defaultswhich returns a mapping of theme variables to their default values #5087 - Added 
App.searchwhich allows bringing up a fuzzy search list of commands on-demand #5087 - Added 
App.search_themeswhich allows bringing up a fuzzy search list of themes on-demand #5087 - Added 
textual.theme.ThemeProvider, a command palette provider which returns all registered themes #5087 - Added several new built-in CSS variables #5087
 - Added support for in-band terminal resize protocol #5217
 - Added TEXTUAL_THEME environment var, which should be a comma separated list of desired themes #5238
 - Added 
Widget.is_scrolling#5238 - Added 
Tree.add_json#5238 
Changed
Driver.process_eventis nowDriver.process_message#5217Driver.send_eventis nowDriver.send_message#5217- Added 
can_focusandcan_focus_childrenparameters to scrollable container types. #5226 - Added 
textual.lazy.Reveal#5226 - Added 
Screen.action_blur#5226 Clickevents can now be used with the on decorator to match the originally clicked widget #5238- Breaking change: Removed 
App.darkreactive attribute #5087 - Breaking change: To improve consistency, several changes have been made to default widget CSS and the CSS variables which ship with Textual. On upgrading, your app will likely look different. All of these changes can be overidden with your own CSS. #5087
 
Removed
- Removed 
App.HOVER_EFFECTS_SCROLL_PAUSE#5238