The lean application framework for Python. Build sophisticated user interfaces with a simple Python API. Run your apps in the terminal and a web browser.
The highlight of this release is the new inline
feature, which allows you to run Textual apps below the prompt, rather than in application mode.
We also have a bunch of additional languages for the TextArea widget, and some fixes.
https://github.com/Textualize/textual/assets/554369/9d961904-cf91-41a4-9c6a-b86e5889d3f6
https://github.com/Textualize/textual/assets/554369/4c4d6a68-5ffc-47ac-a4af-cf11a5e97da6
Widget.compose
or workers weren't bubbling up in tests https://github.com/Textualize/textual/issues/4282
DataTable
scrolling issues by changing max-height
back to 100% https://github.com/Textualize/textual/issues/4286
Button
not rendering correctly with console markup https://github.com/Textualize/textual/issues/4328
Document.start
and end
location properties for convenience https://github.com/Textualize/textual/pull/4267
TextArea
https://github.com/Textualize/textual/pull/4350
inline
parameter to run
and run_async
to run app inline (under the prompt). https://github.com/Textualize/textual/pull/4343
mouse
parameter to disable mouse support https://github.com/Textualize/textual/pull/4343
The ProgressBar widget now has a much improved ETA calculation
TextArea
when undoing an edit to a selection the selection was made backwards https://github.com/Textualize/textual/issues/4301
total
reactive https://github.com/Textualize/textual/pull/4316
Input
waits until an edit has been made, after entry to the widget, before offering a suggestion https://github.com/Textualize/textual/pull/4335
Lots of refinements and enhancements here!
App.ansi_theme_dark
and App.ansi_theme_light
https://github.com/Textualize/textual/pull/4192
Pilot.resize_terminal
to resize the terminal in testing https://github.com/Textualize/textual/issues/4212
sort_children
method https://github.com/Textualize/textual/pull/4244
TextArea.code_editor
missing recently added attributes https://github.com/Textualize/textual/pull/4172
Sparkline
not working with data in a deque
https://github.com/Textualize/textual/issues/3899
DirectoryTree.path
no longer reacting to new values https://github.com/Textualize/textual/issues/4208
grid-gutter
interaction with Pretty widget https://github.com/Textualize/textual/pull/4219
TextArea
styling issue on alternate screens https://github.com/Textualize/textual/pull/4220
RichLog
https://github.com/Textualize/textual/pull/4223
RichLog.min_width
not being used https://github.com/Textualize/textual/pull/4223
CollapsibleTitle.action_toggle
to action_toggle_collapsible
to fix clash with DOMNode.action_toggle
https://github.com/Textualize/textual/pull/4221
Switch.action_toggle
to action_toggle_switch
to fix clash with DOMNode.action_toggle
https://github.com/Textualize/textual/issues/4262
OptionList.OptionHighlighted
leaking out of Select
https://github.com/Textualize/textual/issues/4224
Tab
enable/disable messages leaking into TabbedContent
https://github.com/Textualize/textual/issues/4233
TabbedContent
https://github.com/Textualize/textual/issues/4232
TextArea
while mouse selection is happening https://github.com/Textualize/textual/issues/4292
_
https://github.com/Textualize/textual/pull/4252
Collapsible
Markdown
Select
SelectionList
TabbedContent
Tabs
TextArea
Tree
AppFocus
and AppBlur
are now posted when the terminal window gains or loses focus, if the terminal supports this https://github.com/Textualize/textual/pull/4265
Tabs
) / tab pane (in TabbedContent
) can now be unset https://github.com/Textualize/textual/issues/4241
Fixes a SyntaxWarning
LoadingIndicator
https://github.com/Textualize/textual/issues/4188
A few modest changes, with a focus on env vars for some reason.
asyncio
lock attribute Widget.lock
to be used to synchronize widget state https://github.com/Textualize/textual/issues/4134
TEXTUAL_ANIMATIONS
to control what animations Textual displays https://github.com/Textualize/textual/pull/4062
App.animation_level
to control whether animations on that app run or not https://github.com/Textualize/textual/pull/4062
TEXTUAL_SCREENSHOT_LOCATION
environment variable to specify the location of an automated screenshot https://github.com/Textualize/textual/pull/4181/
TEXTUAL_SCREENSHOT_FILENAME
environment variable to specify the filename of an automated screenshot https://github.com/Textualize/textual/pull/4181/
asyncio
lock attribute Widget.lock
to be used to synchronize widget state https://github.com/Textualize/textual/issues/4134
Widget.remove_children
now accepts a CSS selector to specify which children to remove https://github.com/Textualize/textual/pull/4183
Widget.batch
combines widget locking and app update batching https://github.com/Textualize/textual/pull/4183
Mostly fixes in this updated.
Note the breaking change below...
read_only
mode https://github.com/Textualize/textual/pull/4151
Tab
not being scrolled into view when Tabs.active
is assigned https://github.com/Textualize/textual/issues/4150
TabbedContent.TabActivate
not being posted when TabbedContent.active
is assigned https://github.com/Textualize/textual/issues/4150
TextArea.tab_behaviour
to TextArea.tab_behavior
https://github.com/Textualize/textual/pull/4124
TextArea.theme
now defaults to "css"
instead of None, and is no longer optional https://github.com/Textualize/textual/pull/4157
A relatively small release for the benefit of an app we are going to release soon.
watch
to create additional watchers would trigger other watch methods https://github.com/Textualize/textual/issues/3878
Markdown
https://github.com/Textualize/textual/issues/3997
This release adds data binding, which can help you write lean code. There are also a few new methods, fixes, and enhancements. See below for the full details...
OptionList
by adding max height of 100% https://github.com/Textualize/textual/issues/4021
DirectoryTree.clear_node
not clearing the node specified https://github.com/Textualize/textual/issues/4122
DirectoryTree.reload
and DirectoryTree.reload_node
now preserve state when reloading https://github.com/Textualize/textual/issues/4056
TextArea
will not use Escape
to shift focus if the tab_behaviour
is the default https://github.com/Textualize/textual/issues/4110
TextArea
cursor will now be invisible before first focus https://github.com/Textualize/textual/pull/4128
TextArea.cursor_blink
reactive when widget does not have focus https://github.com/Textualize/textual/pull/4128
Tree
(and DirectoryTree
) grew an attribute lock
that can be used for synchronization across coroutines https://github.com/Textualize/textual/issues/4056