Skip to content

Releases: Textualize/textual

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

The Push it to the Max Release

27 Aug 12:24
6aebb0e
Compare
Choose a tag to compare

This release adds a new maximize method, which you can use to temporarily full the screen with any given widget. This can be great for allowing the user to focus on a particular view.

You can maximize via the command palette, or you can bind a key with the action screen.maximize.

Here are some screenshots of this feature in action:

Screenshot 2024-08-27 at 13 17 19 Screenshot 2024-08-27 at 13 17 24 Screenshot 2024-08-27 at 13 17 30

[0.78.0] - 2024-08-27

Added

  • Added Maximize and Minimize system commands. #4931
  • Added Screen.maximize, Screen.minimize, Screen.action_maximize, Screen.action_minimize, Widget.is_maximized, Widget.allow_maximize. #4931
  • Added Widget.ALLOW_MAXIMIZE, Screen.ALLOW_IN_MAXIMIZED_VIEW classvars #4931

The lucky number 77 release

22 Aug 14:18
0638f2f
Compare
Choose a tag to compare

This is quite a large release!

We've done a lot of work on the command palette to make it easier to work with and use.

We've also added a "help panel" which you can summon from the command palette. This will give you context sensitive help, and a summary of all the key bindings. Here it is in action:

Screen.Recording.2024-08-22.at.15.13.22.mov

Also in the command palette is a "save screenshot" command, which will save a screenshot of the current screen. Very handy for adding to documentation.

There are a number of other smaller changes, fixes, and a few breaking changes. See the detailed release notes below:

[0.77.0] - 2024-08-22

Added

  • Added tooltip to Binding #4859
  • Added a link to the command palette to the Footer (set show_command_palette=False to disable) #4867
  • Added TOOLTIP_DELAY to App to customize time until a tooltip is displayed
  • Added "Show keys" option to system commands to show a summary of key bindings. #4876
  • Added "split" CSS style, currently undocumented, and may change. #4876
  • Added Region.get_spacing_between #4876
  • Added App.COMMAND_PALETTE_KEY to change default command palette key binding #4867
  • Added App.get_key_display #4890
  • Added DOMNode.BINDING_GROUP #4906
  • Added DOMNode.HELP classvar which contains Markdown help to be shown in the help panel #4915
  • Added App.get_system_commands #4920
  • Added "Save Screenshot" system command #4922

Changed

  • Removed caps_lock and num_lock modifiers #4861
  • Keys such as escape and space are now displayed in lower case in footer #4876
  • Changed default command palette binding to ctrl+p #4867
  • Removed ctrl_to_caret and upper_case_keys from Footer. These can be implemented in App.get_key_display.
  • Renamed SystemCommands to SystemCommandsProvider #4920
  • Breaking change: Removed ClassicFooter widget (please use new Footer widget) #4921
  • Disallowed Screen instances in App.SCREENS and App.MODES

Fixed

  • Fix crash when validate_on value isn't a set #4868
  • Fix Input.cursor_blink having no effect on the blink cycle after mounting #4869
  • Fixed scrolling by page not taking scrollbar in to account #4916
  • Fixed App.MODES being the same for all instances -- per-instance modes now exist internally