Skip to content

Releases: Textualize/textual

The Freddy's hotfix Release

26 Oct 18:39
Compare
Choose a tag to compare

Hotfix to fix saving screenshots on Windows

[0.85.1] - 2024-10-26

Fixed

  • Fixed encoding issue when saving files such as screenshots on Windows #5182

The Freddy's Revenge Release

25 Oct 15:06
Compare
Choose a tag to compare

This versions updates the demo app. The previous demo was written quite a while ago and needed a refresh. It's not quite finished (there are plenty more widgets to cover), but it is still a bug improvement over the old one.

python -m textual

Give it a shot, we think it is pretty fun to play with.

Screen.Recording.2024-10-25.at.16.02.46.mov

There are a number of other updates in this release, and some under-the-hood changes for even smoother updates and optimizations. See below for the full list...

Enjoy!

[0.85.0] - 2024-10-25

Changed

  • Grid will now size children to the maximum height of a row #5113
  • Markdown links will be opened with App.open_url automatically #5113
  • The universal selector (*) will now not match widgets with the class -textual-system (scrollbars, notifications etc) #5113
  • Renamed Screen.can_view and Widget.can_view to Screen.can_view_entire and Widget.can_view_entire #5174

Added

  • Added Link widget #5113
  • Added open_links to Markdown and MarkdownViewer widgets #5113
  • Added App.DEFAULT_MODE #5113
  • Added Containers.HorizontalGroup and Containers.VerticalGroup #5113
  • Added $, £, , (, ) symbols to Digits #5113
  • Added Button.action parameter to invoke action when clicked #5113
  • Added immediate parameter to scroll methods #5164
  • Added textual._loop.loop_from_index #5164
  • Added min_color and max_color to Sparklines constructor, which take precedence over CSS #5174
  • Added new demo python -m textual, not quite finished but better than the old one #5174
  • Added Screen.can_view_partial and Widget.can_view_partial #5174
  • Added App.is_web property to indicate if the app is running via a web browser #5128
  • Enter and Leave events can now be used with the on decorator #5159

Fixed

  • Fixed glitchy ListView #5163

The Who You Gonna Call Release

22 Oct 13:20
3d65f2b
Compare
Choose a tag to compare

This was mainly a hotfix for a potential infinite loop in the TextArea, although there are a few fun additions: see below

[0.84.0] - 2024-10-22

Fixed

  • Fixed RadioSet not being scrollable #5100
  • Fixed infinite loop in TextArea #5154

Added

  • Added background-tint CSS rule #5117
  • Added :first-of-type, :last-of-type, :odd, and :even pseudo classes #5139

The Enhanced AF Release

10 Oct 13:55
afc310a
Compare
Choose a tag to compare

The Digits widget can now display A-F, so you can use hex!

Screenshot 2024-10-10 at 17 51 02

See below for the full changes.

[0.83.0] - 2024-10-10

Added

  • Added support for A-F to Digits widget #5094
  • Added Region.constrain #5097

Changed

  • Screen.ALLOW_IN_MAXIMIZED_VIEW will now default to App.ALLOW_IN_MAXIMIZED_VIEW #5088
  • Widgets matching .-textual-system will now be included in the maximize view by default #5088
  • Digits are now thin by default, style with text-style: bold to get bold digits #5094
  • Made Widget.absolute_offset public #5097
  • Tooltips are now displayed directly below the mouse cursor #5097
  • Region.inflect will now assume that margins overlap #5097
  • Pilot.click and friends will now accept a widget, in addition to a selector #5095

The Are you the Keymaster Release?

03 Oct 10:12
d76000d
Compare
Choose a tag to compare

The highlight of this release is the new keymap support, which enables dynamic configuration of keys -- so you can now provide a way for users of your app to customize key bindings.

Keymaps aren't documented beyond the API level at the moment. That will happen in a few releases. In the meantime, @darrenburns has written up this new feature (which he also implemented) on his blog. Check it out:

https://darren.codes/posts/textual-keymaps/

See below for the full changes:

[0.82.0] - 2024-10-03

Fixed

  • Fixed issue with screen not updating when auto_refresh was enabled #5063
  • Fixed issues regarding loading indicator #5079
  • Fixed issues with inspecting the lazy loaded widgets module #5080

Added

  • Added DOMNode.is_on_screen property #5063
  • Added support for keymaps (user configurable key bindings) #5038
  • Added descriptions to bindings for all internal widgets, and updated casing to be consistent #5062

Changed

  • Breaking change: Widget.set_loading no longer return an awaitable #5079

The glitch-free-tree release

25 Sep 15:00
c75b169
Compare
Choose a tag to compare

Mostly tree related fixes and a updates. Enjoy.

[0.81.0] - 2024-09-25

Added

  • Added x_axis and y_axis parameters to Widget.scroll_to_region #5047
  • Added Tree.move_cursor_to_line #5052

Changed

  • Tree will no longer scroll the X axis when moving the cursor #5047
  • DirectoryTree will no longer select the first node #5052

Fixed

  • Fixed widgets occasionally not getting Resize events #5048
  • Fixed tree regression #5052
  • Fixed glitch with single line inline widget #5054

The Scanners release

24 Sep 11:22
c81df43
Compare
Choose a tag to compare

Couple of crash fixes, see below for details...

[0.80.1] - 2024-09-24

Fixed

  • Fixed crash when exiting the app prematurely #5039
  • Fixed exception constructing TextArea outside of App #5045

The best decade release

23 Sep 14:59
322a85c
Compare
Choose a tag to compare

This is a large release!

The feature I am most excited about is the new MaskedInput widget, a contribution by Angelo Mottola. Here's a quick preview:

Screen.Recording.2024-09-23.at.15.33.49.mov

Here's the full release notes...

[0.80.0] - 2024-09-23

Added

  • Added MaskedInput widget #4783
  • Input validation for floats and integers accept embedded underscores, e.g., "1_234_567" is valid. #4784
  • Support for "none" value added to dock, hatch and split styles #4982
  • Support for "none" added to box and border style properties (e.g widget.style.border = "none") #4982
  • Docstrings added to most style properties #4982
  • Added ansi_color switch to App to permit ANSI (themed) colors #5000
  • Added :ansi pseudo class #5000
  • Added -ansi-scrollbar style to widgets #5000
  • Added App.INLINE_PADDING to define the number of spaces above inline apps #5000
  • Added nocolor psuedoclass when NO_COLOR env var is set
  • BINDING_GROUP_TITLE now defaults to None #5023
  • Added TreeNode.siblings, TreeNode.next_sibling, TreeNode.previous_sibling, TreeNode.is_collapsed #5023
  • Added additional bindings to Tree widget #5023
  • Added Tree.center_scroll #5023
  • Added Tree.unselect #5023

Changed

  • Input validation for integers no longer accepts scientific notation like '1.5e2'; must be castable to int. #4784
  • Default scrollbar-size-vertical changed to 2 in inline styles to match Widget default CSS (unlikely to affect users) #4982
  • Removed border-right from Toast #4984
  • Some fixes in RichLog result in slightly different semantics, see docstrings for details #4978
  • Changed how scrollbars are rendered (will have no visual effect, but will break snapshot tests) #5000
  • Added enabled switch to filters (mostly used internally) #5000
  • BINDING_GROUP_TITLE now defaults to None #5023
  • Breaking change: Changed how scrollbars are rendered so they work in ansi mode (will break snapshots) #5023

Fixed

  • Input validation of floats no longer accepts NaN (not a number). #4784
  • Fixed issues with screenshots by simplifying segments only for snapshot tests #4929
  • Fixed RichLog.write not respecting width parameter #4978
  • Fixed RichLog writing at wrong width when write occurs before width is known (e.g. in compose or on_mount) #4978
  • Fixed RichLog.write incorrectly shrinking width to RichLog.min_width when shrink=True (now shrinks to fit content area instead) #4978
  • Fixed flicker when setting dark reactive on startup #4989
  • Fixed command palette not sorting search results by their match score #4994
  • Fixed DataTable cached height issue on re-populating the table when using auto-height rows #4992
  • Fixed inline app output being cleared when inline_no_clear=True #5019

The Wedding Anniversary Release

31 Aug 16:30
563b119
Compare
Choose a tag to compare

A hotfix

[0.79.1] - 2024-08-31

Fixed

  • Fixed broken updates when non active screen changes #4957

The Query faster Release

30 Aug 15:30
ea03bbc
Compare
Choose a tag to compare

This release optimizes query_one and changes the semantics a little. query_one will no longer raise a TooManyMatches if there is more than a single widget matching the selector. For the old behavior, you can use the new query_exactly_one method.

See also https://textual.textualize.io/guide/devtools/#serve

Check below for the full details!

[0.79.0] - 2024-08-30

Added

  • Added DOMNode.check_consume_key #4940
  • Added App.ESCAPE_TO_MINIMIZE, App.screen_to_minimize, and Screen.ESCAPE_TO_MINIMIZE #4951
  • Added DOMNode.query_exactly_one #4950
  • Added SelectorSet.is_simple #4950

Changed

  • KeyPanel will show multiple keys if bound to the same action #4940
  • Breaking change: DOMNode.query_one will not raise TooManyMatches #4950