Skip to content

Releases: Textualize/textual

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

The Key Release

09 Aug 09:24
6f5eb41
Compare
Choose a tag to compare

Mostly fixes, but there are some refactored code in this release related to key handling and bindings. If you encounter an issues, let us know!

[0.76.0]

Changed

  • Input cursor will no longer jump to the end on focus #4773
  • Removed Size.cip_size, which was a clone of crop_size
  • Widgets with auto dimensions will now grow if there is a scrollbar #4844
  • Don't do automatic refresh when widget is not visible #4847
  • Renamed DOMNode._automatic_refresh to DOMNode.automatic_refresh to allow for customization #4847

Fixed

  • Input cursor blink effect will now restart correctly when any action is performed on the input #4773
  • Fixed bindings on same key not updating description #4850

Hotfix for slow UI

07 Aug 15:46
Compare
Choose a tag to compare

[0.75.1] - 2024-08-02

Fixed

  • Fixed issue with Enter events causing unresponsive UI #4833

The 74-75 Release

01 Aug 15:06
fcab581
Compare
Choose a tag to compare

https://www.youtube.com/watch?v=BgNTBgJjIRI&ab_channel=LyricsDope

[0.75.0] - 2024-08-01

Added

  • Added App.open_url to open URLs in the web browser. When running via the WebDriver, the URL will be opened in the browser that is controlling the app (web side not yet live) #4819
  • Added Widget.is_mouse_over #4818
  • Added node attribute to events.Enter and events.Leave #4818

Changed

  • events.Enter and events.Leave events now bubble. #4818
  • Renamed Widget.mouse_over to Widget.mouse_hover #4818

Fixed

  • Fixed issue with mutate_reactive and data binding #4828

The Year Zero Release

25 Jul 11:00
262b3af
Compare
Choose a tag to compare

Mostly fixes and a small (potentially breaking) change.

[0.74.0] - 2024-07-25

Fixed

  • Fixed issues in Kitty terminal after exiting app #4779
  • Fixed exception when removing Selects #4786
  • Fixed issue with non-clickable Footer keys #4798
  • Fixed issue with recompose not working from Mount handler #4802

Changed

  • Calling Screen.dismiss with no arguments will invoke the screen callback with None (previously the callback wasn't invoke at all). #4795

The Taste the Rainbow Release

18 Jul 15:47
22d0d42
Compare
Choose a tag to compare

This is a rather large release. Lots of fixes and enhancements, including optimizations to the DataTable.

There's also a rather nifty addition to the ProgressBar widget. Checkout the gradient:

Screen.Recording.2024-07-18.at.14.17.05.mov

We've also polished the API docs, which should hopefully make them easier to navigate...

https://textual.textualize.io/api/app/

[0.73.0] - 2024-07-18

Added

  • Added TextArea.line_number_start reactive attribute #4471
  • Added TextArea.matching_bracket_location property #4764
  • Added DOMNode.mutate_reactive #4731
  • Added "quality" parameter to textual.color.Gradient #4739
  • Added textual.color.Gradient.get_rich_color #4739
  • Widget.remove_children now accepts an iterable if widgets in addition to a selector #4735
  • Raise ValueError with improved error message when number of cells inserted using DataTable.add_row doesn't match the number of columns in the table #4742
  • Add Tree.move_cursor to programmatically move the cursor without selecting the node #4753
  • Added Footer component style handling of padding for the key/description #4651
  • StringKey is now exported from data_table #4760
  • TreeNode.add and TreeNode.add_leaf now accepts before and after arguments to position a new node #4772
  • Added a gradient parameter to the ProgressBar widget #4774

Fixed

  • Fixed issue with Tabs where disabled tabs could still be activated by clicking the underline #4701
  • Fixed scroll_visible with margin #4719
  • Fixed programmatically disabling button stuck in hover state #4724
  • Fixed DataTable poor performance on startup and focus change when rows contain multi-line content #4748
  • Fixed Tree and DirectoryTree horizontal scrolling off-by-2 #4744
  • Fixed text-opacity in component styles #4747
  • Ensure Tree.select_node sends NodeSelected message #4753
  • Fixed message handlers not working when message types are assigned as the value of class vars #3940
  • Fixed CommandPalette not focusing the input when opened when App.AUTO_FOCUS doesn't match the input #4763
  • SelectionList.SelectionToggled will now be sent for each option when a bulk toggle is performed (e.g. toggle_all). Previously no messages were sent at all. #4759
  • Fixed focus styles not being updated on blur #4771

Changed

  • "Discover" hits in the command palette are no longer sorted alphabetically #4720
  • TreeNodeSelected messages are now posted before TreeNodeExpanded messages
    when an expandable node is selected #4753
  • Markdown.LinkClicked.href is now automatically unquoted #4749
  • The mouse cursor hover effect of Tree and DirectoryTree will no longer linger after the mouse leaves the widget #4766

The Prune Release

09 Jul 12:11
b1b27f6
Compare
Choose a tag to compare

A fixes release. The largest of which is a refactor to the logic of removing widgets, which should resolve some instability on shutdown in particular.

[0.72.0] - 2024-07-09

Changed

  • More predictable DOM removals. #4708

Fixed

  • Fixed clicking separator in OptionList moving cursor #4710
  • Fixed scrolling issue in OptionList #4709