Skip to content

Releases: Textualize/textual

The focused release

18 Mar 14:32
2c52fd7

Choose a tag to compare

Lots of refinements and enhancements here!

[0.53.0] - 2023-03-18

Added

  • Mapping of ANSI colors to hex codes configurable via App.ansi_theme_dark and App.ansi_theme_light #4192
  • Pilot.resize_terminal to resize the terminal in testing #4212
  • Added sort_children method #4244
  • Support for pseudo-classes in nested TCSS #4039

Fixed

  • Fixed TextArea.code_editor missing recently added attributes #4172
  • Fixed Sparkline not working with data in a deque #3899
  • Tooltips are now cleared when the related widget is no longer under them #3045
  • Simplified tree-sitter highlight queries for HTML, which also seems to fix segfault issue #4195
  • Fixed DirectoryTree.path no longer reacting to new values #4208
  • Fixed content size cache with Pretty widget #4211
  • Fixed grid-gutter interaction with Pretty widget #4219
  • Fixed TextArea styling issue on alternate screens #4220
  • Fixed writing to invisible RichLog #4223
  • Fixed RichLog.min_width not being used #4223
  • Rename CollapsibleTitle.action_toggle to action_toggle_collapsible to fix clash with DOMNode.action_toggle #4221
  • Markdown component classes weren't refreshed when watching for CSS #3464
  • Rename Switch.action_toggle to action_toggle_switch to fix clash with DOMNode.action_toggle #4262
  • Fixed OptionList.OptionHighlighted leaking out of Select #4224
  • Fixed Tab enable/disable messages leaking into TabbedContent #4233
  • Fixed a style leak from TabbedContent #4232
  • Fixed active hidden scrollbars not releasing the mouse #4274
  • Fixed the mouse not being released when hiding a TextArea while mouse selection is happening #4292
  • Fix mouse scrolling not working when mouse cursor is over a disabled child widget #4242

Changed

  • Clicking a non focusable widget focus ancestors #4236
  • BREAKING: widget class names must start with a capital letter or an underscore _ #4252
  • BREAKING: for many widgets, messages are now sent when programmatic changes that mirror user input are made #4256
    • Changed Collapsible
    • Changed Markdown
    • Changed Select
    • Changed SelectionList
    • Changed TabbedContent
    • Changed Tabs
    • Changed TextArea
    • Changed Tree
  • Improved ETA calculation for ProgressBar #4271
  • BREAKING: AppFocus and AppBlur are now posted when the terminal window gains or loses focus, if the terminal supports this #4265
    • When the terminal window loses focus, the currently-focused widget will also lose focus.
    • When the terminal window regains focus, the previously-focused widget will regain focus.
  • TextArea binding for ctrl+k will now delete the line if the line is empty #4277
  • The active tab (in Tabs) / tab pane (in TabbedContent) can now be unset #4241

The sin tax release

20 Feb 10:41
74875ae

Choose a tag to compare

Fixes a SyntaxWarning

[0.52.1] - 2024-02-20

Fixed

  • Fixed the check for animation level in LoadingIndicator #4188

The Envy release

19 Feb 16:26
5d21a0a

Choose a tag to compare

A few modest changes, with a focus on env vars for some reason.

[0.52.0] - 2024-02-19

Changed

  • Textual now writes to stderr rather than stdout #4177

Added

  • Added an asyncio lock attribute Widget.lock to be used to synchronize widget state #4134
  • Added support for environment variable TEXTUAL_ANIMATIONS to control what animations Textual displays #4062
  • Add attribute App.animation_level to control whether animations on that app run or not #4062
  • Added support for a TEXTUAL_SCREENSHOT_LOCATION environment variable to specify the location of an automated screenshot #4181
  • Added support for a TEXTUAL_SCREENSHOT_FILENAME environment variable to specify the filename of an automated screenshot #4181
  • Added an asyncio lock attribute Widget.lock to be used to synchronize widget state #4134
  • Widget.remove_children now accepts a CSS selector to specify which children to remove #4183
  • Widget.batch combines widget locking and app update batching #4183

The American friends release

15 Feb 17:33
8007c8f

Choose a tag to compare

Mostly fixes in this updated.

Note the breaking change below...

[0.51.0] - 2024-02-15

Added

  • TextArea now has read_only mode #4151
  • Add some syntax highlighting to TextArea default theme #4149
  • Add undo and redo to TextArea #4124
  • Added support for command palette command discoverability #4154

Fixed

  • Fixed out-of-view Tab not being scrolled into view when Tabs.active is assigned #4150
  • Fixed TabbedContent.TabActivate not being posted when TabbedContent.active is assigned #4150

Changed

  • Breaking change: Renamed TextArea.tab_behaviour to TextArea.tab_behavior #4124
  • TextArea.theme now defaults to "css" instead of None, and is no longer optional #4157

The tiny tint release

09 Feb 18:22
718e54e

Choose a tag to compare

[0.50.1] - 2024-02-09

Fixed

  • Fixed tint applied to ANSI colors #4142

The half a century release

08 Feb 17:37
ca3d9f6

Choose a tag to compare

A relatively small release for the benefit of an app we are going to release soon.

[0.50.0] - 2024-02-08

Fixed

  • Fixed issue with ANSI colors not being converted to truecolor #4138
  • Fixed duplicate watch methods being attached to DOM nodes #4030
  • Fixed using watch to create additional watchers would trigger other watch methods #3878

Added

  • Added support for configuring dark and light themes for code in Markdown #3997

The one release to bind them all release

07 Feb 13:13
d2a586b

Choose a tag to compare

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...

[0.49.0] - 2024-02-07

Fixed

  • Fixed scrolling in long OptionList by adding max height of 100% #4021
  • Fixed DirectoryTree.clear_node not clearing the node specified #4122

Changed

  • DirectoryTree.reload and DirectoryTree.reload_node now preserve state when reloading #4056
  • Fixed a crash in the TextArea when performing a backward replace #4126
  • Fixed selection not updating correctly when pasting while there's a non-zero selection #4126
  • Breaking change: TextArea will not use Escape to shift focus if the tab_behaviour is the default #4110
  • TextArea cursor will now be invisible before first focus #4128
  • Fix toggling TextArea.cursor_blink reactive when widget does not have focus #4128

Added

  • Added DOMQuery.set #4075
  • Added DOMNode.set_reactive #4075
  • Added DOMNode.data_bind #4075
  • Added DOMNode.action_toggle #4075
  • Added Worker.cancelled_event #4075
  • Tree (and DirectoryTree) grew an attribute lock that can be used for synchronization across coroutines #4056

The "truly your forgiveness I implore" release.

02 Feb 16:43
6459878

Choose a tag to compare

Hotfix for two issues.

[0.48.2] - 2024-02-02

Fixed

  • Fixed a hang in the Linux driver when connected to a pipe #4104
  • Fixed broken OptionList Option.id mappings #4101

Changed

  • Breaking change: keyboard navigation in RadioSet, ListView, OptionList, and SelectionList, no longer allows highlighting disabled items #3881

The nevermore bug release

01 Feb 11:34
ecb8257

Choose a tag to compare

A small oversight with the TextArea theme

[0.48.1] - 2023-02-01

Fixed

  • TextArea uses CSS theme by default instead of monokai #4091

The "As of some one gently wrapping, wrapping at my chamber door" release.

01 Feb 10:24
7f1d0f8

Choose a tag to compare

The highlight of this release is the addition of soft wrapping to the TextArea, which you can see below:

soft-wrapping-demo.mp4

This makes TextArea one of our most powerful widgets. Looking forward to seeing what you build with it!

Note there is a breaking change here. The TextArea now defaults to a multi-line soft-wrapped editor rather than a more code oriented editor. If you want the original behaviour, use the code_editor classmethod. i.e. replace TextArea with TextArea.code_editor.

Also in this release is a new suspend decorator which will temporarily suspend the currently running app and allow you to launch another terminal app (which doesn't even need to be a Textual app).

There are plenty of other fixes and enhancements. See below for the full details...

[0.48.0] - 2023-02-01

Changed

  • Breaking change: Significant changes to TextArea.__init__ default values/behaviour #3933
    • soft_wrap=True - soft wrapping is now enabled by default.
    • show_line_numbers=False - line numbers are now disabled by default.
    • tab_behaviour="focus" - pressing the tab key now switches focus instead of indenting by default.
  • Breaking change: TextArea default theme changed to CSS, and default styling changed #4074
  • Breaking change: DOMNode.has_pseudo_class now accepts a single name only #3970
  • Made textual.cache (formerly textual._cache) public #3976
  • Tab.label can now be used to change the label of a tab #3979
  • Changed the default notification timeout from 3 to 5 seconds #4059
  • Prior scroll animations are now cancelled on new scrolls #4081

Added

  • Added DOMNode.has_pseudo_classes #3970
  • Added Widget.allow_focus and Widget.allow_focus_children #3989
  • Added TextArea.soft_wrap reactive attribute added #3933
  • Added TextArea.tab_behaviour reactive attribute added #3933
  • Added TextArea.code_editor classmethod/alternative constructor #3933
  • Added TextArea.wrapped_document attribute which can convert between wrapped visual coordinates and locations #3933
  • Added show_line_numbers to TextArea.__init__ #3933
  • Added component classes allowing TextArea to be styled using CSS #4074
  • Added Query.blur and Query.focus #4012
  • Added MessagePump.message_queue_size #4012
  • Added TabbedContent.active_pane #4012
  • Added App.suspend #4064
  • Added App.action_suspend_process #4064

Fixed

  • Parameter animate from DataTable.move_cursor was being ignored #3840
  • Fixed a crash if DirectoryTree.show_root was set before the DOM was fully available #2363
  • Live reloading of TCSS wouldn't apply CSS changes to screens under the top screen of the stack #3931
  • SelectionList option IDs are usable as soon as the widget is instantiated #3903
  • Fix issue with Strip.crop when crop window start aligned with strip end #3998
  • Fixed Strip.crop_extend #4011
  • Fix for percentage dimensions #4037
  • Fixed a crash if the TextArea language was set but tree-sitter language binaries were not installed #4045
  • Ensuring TextArea.SelectionChanged message only sends when the updated selection is different #3933
  • Fixed declaration after nested rule set causing a parse error #4012
  • ID and class validation was too lenient #3954
  • Fixed CSS watcher crash if file becomes unreadable (even temporarily) #4079
  • Fixed display of keys when used in conjunction with other keys #3050
  • Fixed double detection of Escape on Windows #4038