Skip to content

Releases: Textualize/textual

The Hotly Completed Release

10 Mar 10:02
0f0849f

Choose a tag to compare

[8.1.1] - 2026-03-10

Fixed

  • Hotfix for animation on complete #6412

The Paused Released

10 Mar 03:07

Choose a tag to compare

This release should smooth scrolling large documents, particularly for Python < 3.14

[8.1.0] - 2026-03-10

Changed

  • Replace circuar references in DOM with weak references to improve GC times #6410
  • When animating an attribute a second time, the original on_complete is now called #6410

Added

  • Added experimental App.PAUSE_GC_ON_SCROLL_ boolean (disabled by default) #6410

The Direct Tree Release

03 Mar 20:25
431dc7d

Choose a tag to compare

[8.0.2] - 2026-03-03

Changed

  • Themes are now in alphabetical order in command palette #6405

Fixed

  • Fixed issues with Directory Tree #6405

The Juicy Release

01 Mar 19:17
483b3ee

Choose a tag to compare

Small update

[8.0.1] - 2026-03-01

Fixed

  • DirectoryTree runs more operations in a thread to avoid micro-freezes

Changes

  • Some tweaks to garbage collection to reduce gc time #6402

The BLANK to NULL release

16 Feb 17:14
576104f

Choose a tag to compare

The major version change is due to changing Select.BLANK to Select.NULL, to avoid an unfortunate name clash.

See below for the full changes...

[8.0.0] - 2026-02-16

Added

  • Added mode argument to push_screen and push_screen_wait to enable pushing a screen to a non-active mode #6362
  • Added App.mode_change_signal and App.screen_change_signal #6362
  • Added Tabs.get_tab #6362
  • Added Catppuccin Frappe and Macchiato themes #6335

Changed

  • It is no longer a NOOP and warning to dismiss a non-active screen. The dismiss will still work, but the screen may not update if the current mode is not active. #6362
  • Added 50ms delay when switching screens to allow state to udpate and prevent janky flash of old content #6362
  • Breaking change: Changed Select.BLANK to Select.NULL to avoid clash with newer Widget.BLANK Classvar #6374

The extended cursor release

30 Jan 13:48
9737a5a

Choose a tag to compare

The DataTable row cursor will now extend the full width of the datatable, which looks better.

The DataTable will now only emit a *Selected message if clicking a second time.

[7.5.0] - 2026-01-30

  • The DataTable row cursor will extend to the full width if there is excess space #6345
  • The DataTable will send a selected event on click, only if the cell / row / column is currently highlighted #6345

The Pointed Release

25 Jan 20:03
47ecedf

Choose a tag to compare

Adds a pointer rule to TCSS, so you can change how the mouse pointer looks over a given widget.

Screen.Recording.2026-01-25.at.17.33.18.mov

See https://textual.textualize.io/styles/pointer/ for details

[7.4.0] - 2026-01-25

Added

  • Added pointer rule #6339

The Super release

15 Jan 16:33
813aeea

Choose a tag to compare

A few fixes and small features. Enjoy.

[7.3.0] - 2026-01-15

Fixed

  • Fixed triple click on command palette raising an exception #6329

Added

  • Added DOM.query_one_optional
  • Added default parameter to get_component_rich_style get_component_rich_style

Changed

  • Added super+c (command on mac) alternative bindings for copy, for terminals that support it (Ghostty does)
  • Allow Sparkline to be of any height, not just 1 #6171

The Helping Release

11 Jan 17:43
88cbc50

Choose a tag to compare

Small update to the help system. The help panel will look for a HELP attribute on the focused widget, but now it will also look at ancestors until it finds a usable HELP attribute. There are also a few changes to add more titles to the keys area.

[7.2.0] - 2026-01-11

Changed

  • The help panel will look at ancestor widgets for a HELP attribute if there isn't one on the focused widget #6320

The BLANK Release

10 Jan 10:33
600ae3d

Choose a tag to compare

[7.1.0] - 2026-01-10

Fixed

  • Fixed issue with missing refresh #6318

Added

  • Added Widget.BLANK which can optimize rendering of large widgets (typically containers that scroll) #6318