Releases: Textualize/textual
The Are you the Keymaster Release?
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
Mostly tree related fixes and a updates. Enjoy.
[0.81.0] - 2024-09-25
Added
- Added
x_axis
andy_axis
parameters toWidget.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
The Scanners release
The best decade release
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 todock
,hatch
andsplit
styles #4982 - Support for
"none"
added to box and border style properties (e.gwidget.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 toNone
#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 to2
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 toNone
#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 respectingwidth
parameter #4978 - Fixed
RichLog
writing at wrong width whenwrite
occurs before width is known (e.g. incompose
oron_mount
) #4978 - Fixed
RichLog.write
incorrectly shrinking width toRichLog.min_width
whenshrink=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
The Query faster Release
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
, andScreen.ESCAPE_TO_MINIMIZE
#4951 - Added
DOMNode.query_exactly_one
#4950 - Added
SelectorSet.is_simple
#4950
Changed
The Push it to the Max Release
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:
[0.78.0] - 2024-08-27
Added
The lucky number 77 release
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
andupper_case_keys
from Footer. These can be implemented inApp.get_key_display
. - Renamed
SystemCommands
toSystemCommandsProvider
#4920 - Breaking change: Removed
ClassicFooter
widget (please use newFooter
widget) #4921 - Disallowed
Screen
instances inApp.SCREENS
andApp.MODES
Fixed
The Key Release
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 ofcrop_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
toDOMNode.automatic_refresh
to allow for customization #4847