v6.0.0

Textualize/textualv6.0.0Aug 31, 2025by willmcgugan

AI Summary

A large update featuring optimizations to the line API, a new `Binding.Group` for key management, and various improvements to TextArea and Header widgets.

Key Highlights

  • Optimizations to the line API to avoid applying background styles to widget content.
  • New `Binding.Group` for managing key bindings.
  • New `TextArea` features including suggestions and placeholders.
  • New `Header.format_title` and `App.format_title` for easier customization.

Breaking Changes

  • The `renderable` property on `Static` is now `content`.
  • `HeaderTitle` widget is now a static with no `text` and `sub_text` reactives.
  • Renamed `Label` constructor argument `renderable` to `content`.
  • Optimization to line API to avoid applying background styles to widget content.

New Features

  • `bar_renderable` to `ProgressBar`
  • `OptionList.set_options`
  • `TextArea.suggestion`
  • `TextArea.placeholder`
  • `Header.format_title` and `App.format_title`
  • `Widget.get_line_filters` and `App.get_line_filters`
  • `Binding.Group`
  • `DOMNode.displayed_children`
  • `TextArea.hide_suggestion_on_blur`
  • `OptionList.highlighted_option`
  • `TextArea.update_suggestion`
  • `textual.getters.app`

Full Release Notes

This is a fairly large update, with some new features and optimizations.

There are a few breaking changes, which are unlikely to impact many apps. Unless you have build custom line-API widgets. See below for the details.

You may have to regenerate your snapshot tests,  mostly as a result of the optimizations. I wouldn't expect the changes result in any material changes.

Thanks to all contributors!

# [6.0.0] - 2025-08-31

### Fixed

- Fix type hint for SelectType: only hashable types are allowed. https://github.com/Textualize/textual/pull/6034
- Fixed `Content.expand_tabs` https://github.com/Textualize/textual/pull/6038
- Fixed return value for `Pilot.double_click` and `Pilot.triple_click` https://github.com/Textualize/textual/pull/6035
- Fixed sizing issue with `Pretty` widget https://github.com/Textualize/textual/pull/6040 https://github.com/Textualize/textual/pull/6041
- Fixed garbled inline app output when `inline_no_clear=True` https://github.com/Textualize/textual/pull/6080

### Added

- Added `bar_renderable` to `ProgressBar` widget https://github.com/Textualize/textual/pull/5963
- Added `OptionList.set_options` https://github.com/Textualize/textual/pull/6048
- Added `TextArea.suggestion` https://github.com/Textualize/textual/pull/6048
- Added `TextArea.placeholder` https://github.com/Textualize/textual/pull/6048
- Added `Header.format_title` and `App.format_title` for easier customization of title in the Header https://github.com/Textualize/textual/pull/6051
- Added `Widget.get_line_filters` and `App.get_line_filters` https://github.com/Textualize/textual/pull/6057
- Added `Binding.Group` https://github.com/Textualize/textual/pull/6070
- Added `DOMNode.displayed_children` https://github.com/Textualize/textual/pull/6070
- Added `TextArea.hide_suggestion_on_blur` boolean https://github.com/Textualize/textual/pull/6070
- Added `OptionList.highlighted_option` property https://github.com/Textualize/textual/pull/6090
- Added `TextArea.update_suggestion` method https://github.com/Textualize/textual/pull/6090
- Added `textual.getters.app` https://github.com/Textualize/textual/pull/6089

### Changed

- Breaking change: The `renderable` property on the `Static` widget has been changed to `content`. https://github.com/Textualize/textual/pull/6041
- Breaking change: `HeaderTitle` widget is now a static, with no `text` and `sub_text` reactives https://github.com/Textualize/textual/pull/6051
- Breaking change: Renamed `Label` constructor argument `renderable` to `content` for consistency https://github.com/Textualize/textual/pull/6045
- Breaking change: Optimization to line API to avoid applying background styles to widget content. In practice this means that you can no longer rely on blank Segments automatically getting the background color.