Releases: Textualize/textual
The Who You Gonna Call Release
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
Added
The Enhanced AF Release
The Digits widget can now display A-F, so you can use hex!
See below for the full changes.
[0.83.0] - 2024-10-10
Added
Changed
Screen.ALLOW_IN_MAXIMIZED_VIEW
will now default toApp.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 #5097Pilot.click
and friends will now accept a widget, in addition to a selector #5095
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