mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
139 KiB
139 KiB
Change Log
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
0.84.0 - 2024-10-22
Fixed
- Fixed
RadioSetnot being scrollable https://github.com/Textualize/textual/issues/5100 - Fixed infinite loop in TextArea https://github.com/Textualize/textual/pull/5154
Added
- Added
background-tintCSS rule https://github.com/Textualize/textual/pull/5117 - Added
:first-of-type,:last-of-type,:odd, and:evenpseudo classes https://github.com/Textualize/textual/pull/5139
0.83.0 - 2024-10-10
Added
- Added support for A-F to Digits widget https://github.com/Textualize/textual/pull/5094
- Added
Region.constrainhttps://github.com/Textualize/textual/pull/5097
Changed
Screen.ALLOW_IN_MAXIMIZED_VIEWwill now default toApp.ALLOW_IN_MAXIMIZED_VIEWhttps://github.com/Textualize/textual/pull/5088- Widgets matching
.-textual-systemwill now be included in the maximize view by default https://github.com/Textualize/textual/pull/5088 - Digits are now thin by default, style with text-style: bold to get bold digits https://github.com/Textualize/textual/pull/5094
- Made
Widget.absolute_offsetpublic https://github.com/Textualize/textual/pull/5097 - Tooltips are now displayed directly below the mouse cursor https://github.com/Textualize/textual/pull/5097
Region.inflectwill now assume that margins overlap https://github.com/Textualize/textual/pull/5097Pilot.clickand friends will now accept a widget, in addition to a selector https://github.com/Textualize/textual/pull/5095
0.82.0 - 2024-10-03
Fixed
- Fixed issue with screen not updating when auto_refresh was enabled https://github.com/Textualize/textual/pull/5063
- Fixed issues regarding loading indicator https://github.com/Textualize/textual/pull/5079
- Fixed issues with inspecting the lazy loaded widgets module https://github.com/Textualize/textual/pull/5080
Added
- Added
DOMNode.is_on_screenproperty https://github.com/Textualize/textual/pull/5063 - Added support for keymaps (user configurable key bindings) https://github.com/Textualize/textual/pull/5038
- Added descriptions to bindings for all internal widgets, and updated casing to be consistent https://github.com/Textualize/textual/pull/5062
Changed
- Breaking change:
Widget.set_loadingno longer return an awaitable https://github.com/Textualize/textual/pull/5079
0.81.0 - 2024-09-25
Added
- Added
x_axisandy_axisparameters toWidget.scroll_to_regionhttps://github.com/Textualize/textual/pull/5047 - Added
Tree.move_cursor_to_linehttps://github.com/Textualize/textual/pull/5052 - Added
Screen.pop_until_activehttps://github.com/Textualize/textual/pull/5069
Changed
- Tree will no longer scroll the X axis when moving the cursor https://github.com/Textualize/textual/pull/5047
- DirectoryTree will no longer select the first node https://github.com/Textualize/textual/pull/5052
Fixed
- Fixed widgets occasionally not getting Resize events https://github.com/Textualize/textual/pull/5048
- Fixed tree regression https://github.com/Textualize/textual/pull/5052
- Fixed glitch with single line inline widget https://github.com/Textualize/textual/pull/5054
0.80.1 - 2024-09-24
Fixed
- Fixed crash when exiting the app prematurely https://github.com/Textualize/textual/pull/5039
- Fixed exception constructing TextArea outside of App https://github.com/Textualize/textual/pull/5045
0.80.0 - 2024-09-23
Added
- Added
MaskedInputwidget https://github.com/Textualize/textual/pull/4783 - Input validation for floats and integers accept embedded underscores, e.g., "1_234_567" is valid. https://github.com/Textualize/textual/pull/4784
- Support for
"none"value added todock,hatchandsplitstyles https://github.com/Textualize/textual/pull/4982 - Support for
"none"added to box and border style properties (e.gwidget.style.border = "none") https://github.com/Textualize/textual/pull/4982 - Docstrings added to most style properties https://github.com/Textualize/textual/pull/4982
- Added
ansi_colorswitch to App to permit ANSI (themed) colors https://github.com/Textualize/textual/pull/5000 - Added
:ansipseudo class https://github.com/Textualize/textual/pull/5000 - Added
-ansi-scrollbarstyle to widgets https://github.com/Textualize/textual/pull/5000 - Added
App.INLINE_PADDINGto define the number of spaces above inline apps https://github.com/Textualize/textual/pull/5000 - Added
nocolorpsuedoclass when NO_COLOR env var is set-BINDING_GROUP_TITLEnow defaults toNonehttps://github.com/Textualize/textual/pull/5023 - Added
TreeNode.siblings,TreeNode.next_sibling,TreeNode.previous_sibling,TreeNode.is_collapsedhttps://github.com/Textualize/textual/pull/5023 - Added additional bindings to Tree widget https://github.com/Textualize/textual/pull/5023
- Added
Tree.center_scrollhttps://github.com/Textualize/textual/pull/5023 - Added
Tree.unselecthttps://github.com/Textualize/textual/pull/5023
Changed
- Input validation for integers no longer accepts scientific notation like '1.5e2'; must be castable to int. https://github.com/Textualize/textual/pull/4784
- Default
scrollbar-size-verticalchanged to2in inline styles to match Widget default CSS (unlikely to affect users) https://github.com/Textualize/textual/pull/4982 - Removed border-right from
Toasthttps://github.com/Textualize/textual/pull/4984 - Some fixes in
RichLogresult in slightly different semantics, see docstrings for details https://github.com/Textualize/textual/pull/4978 - Changed how scrollbars are rendered (will have no visual effect, but will break snapshot tests) https://github.com/Textualize/textual/pull/5000
- Added
enabledswitch to filters (mostly used internally) https://github.com/Textualize/textual/pull/5000 BINDING_GROUP_TITLEnow defaults toNonehttps://github.com/Textualize/textual/pull/5023- Breaking change: Changed how scrollbars are rendered so they work in ansi mode (will break snapshots) https://github.com/Textualize/textual/pull/5023
Fixed
- Input validation of floats no longer accepts NaN (not a number). https://github.com/Textualize/textual/pull/4784
- Fixed issues with screenshots by simplifying segments only for snapshot tests https://github.com/Textualize/textual/issues/4929
- Fixed
RichLog.writenot respectingwidthparameter https://github.com/Textualize/textual/pull/4978 - Fixed
RichLogwriting at wrong width whenwriteoccurs before width is known (e.g. incomposeoron_mount) https://github.com/Textualize/textual/pull/4978 - Fixed
RichLog.writeincorrectly shrinking width toRichLog.min_widthwhenshrink=True(now shrinks to fit content area instead) https://github.com/Textualize/textual/pull/4978 - Fixed flicker when setting
darkreactive on startup https://github.com/Textualize/textual/pull/4989 - Fixed command palette not sorting search results by their match score https://github.com/Textualize/textual/pull/4994
- Fixed
DataTablecached height issue on re-populating the table when using auto-height rows https://github.com/Textualize/textual/pull/4992 - Fixed inline app output being cleared when
inline_no_clear=Truehttps://github.com/Textualize/textual/issues/5019
[0.79.1] - 2024-08-31
Fixed
- Fixed broken updates when non active screen changes https://github.com/Textualize/textual/pull/4957
0.79.0 - 2024-08-30
Added
- Added
DOMNode.check_consume_keyhttps://github.com/Textualize/textual/pull/4940 - Added
App.ESCAPE_TO_MINIMIZE,App.screen_to_minimize, andScreen.ESCAPE_TO_MINIMIZEhttps://github.com/Textualize/textual/pull/4951 - Added
DOMNode.query_exactly_onehttps://github.com/Textualize/textual/pull/4950 - Added
SelectorSet.is_simplehttps://github.com/Textualize/textual/pull/4950
Changed
- KeyPanel will show multiple keys if bound to the same action https://github.com/Textualize/textual/pull/4940
- Breaking change:
DOMNode.query_onewill notraise TooManyMatcheshttps://github.com/Textualize/textual/pull/4950
0.78.0 - 2024-08-27
Added
- Added Maximize and Minimize system commands. https://github.com/Textualize/textual/pull/4931
- Added
Screen.maximize,Screen.minimize,Screen.action_maximize,Screen.action_minimize,Widget.is_maximized,Widget.allow_maximize. https://github.com/Textualize/textual/pull/4931 - Added
Widget.ALLOW_MAXIMIZE,Screen.ALLOW_IN_MAXIMIZED_VIEWclassvars https://github.com/Textualize/textual/pull/4931
0.77.0 - 2024-08-22
Added
- Added
tooltipto Binding https://github.com/Textualize/textual/pull/4859 - Added a link to the command palette to the Footer (set
show_command_palette=Falseto disable) https://github.com/Textualize/textual/pull/4867 - Added
TOOLTIP_DELAYto App to customize time until a tooltip is displayed - Added "Show keys" option to system commands to show a summary of key bindings. https://github.com/Textualize/textual/pull/4876
- Added "split" CSS style, currently undocumented, and may change. https://github.com/Textualize/textual/pull/4876
- Added
Region.get_spacing_betweenhttps://github.com/Textualize/textual/pull/4876 - Added
App.COMMAND_PALETTE_KEYto change default command palette key binding https://github.com/Textualize/textual/pull/4867 - Added
App.get_key_displayhttps://github.com/Textualize/textual/pull/4890 - Added
DOMNode.BINDING_GROUPhttps://github.com/Textualize/textual/pull/4906 - Added
DOMNode.HELPclassvar which contains Markdown help to be shown in the help panel https://github.com/Textualize/textual/pull/4915 - Added
App.get_system_commandshttps://github.com/Textualize/textual/pull/4920 - Added "Save Screenshot" system command https://github.com/Textualize/textual/pull/4922
Changed
- Removed caps_lock and num_lock modifiers https://github.com/Textualize/textual/pull/4861
- Keys such as escape and space are now displayed in lower case in footer https://github.com/Textualize/textual/pull/4876
- Changed default command palette binding to
ctrl+phttps://github.com/Textualize/textual/pull/4867 - Removed
ctrl_to_caretandupper_case_keysfrom Footer. These can be implemented inApp.get_key_display. - Renamed
SystemCommandstoSystemCommandsProviderhttps://github.com/Textualize/textual/pull/4920 - Breaking change: Removed
ClassicFooterwidget (please use newFooterwidget) https://github.com/Textualize/textual/pull/4921 - Disallowed
Screeninstances inApp.SCREENSandApp.MODES
Fixed
- Fix crash when
validate_onvalue isn't a set https://github.com/Textualize/textual/pull/4868 - Fix
Input.cursor_blinkhaving no effect on the blink cycle after mounting https://github.com/Textualize/textual/pull/4869 - Fixed scrolling by page not taking scrollbar in to account https://github.com/Textualize/textual/pull/4916
- Fixed
App.MODESbeing the same for all instances -- per-instance modes now exist internally
0.76.0
Changed
- Input cursor will no longer jump to the end on focus https://github.com/Textualize/textual/pull/4773
- Removed
Size.cip_size, which was a clone ofcrop_size - Widgets with auto dimensions will now grow if there is a scrollbar https://github.com/Textualize/textual/pull/4844
- Don't do automatic refresh when widget is not visible https://github.com/Textualize/textual/pull/4847
- Renamed
DOMNode._automatic_refreshtoDOMNode.automatic_refreshto allow for customization https://github.com/Textualize/textual/pull/4847
Fixed
- Input cursor blink effect will now restart correctly when any action is performed on the input https://github.com/Textualize/textual/pull/4773
- Fixed bindings on same key not updating description https://github.com/Textualize/textual/pull/4850
Added
- Textual will use the
ESCDELAYenv var when detecting escape keys https://github.com/Textualize/textual/pull/4848
0.75.1 - 2024-08-02
Fixed
- Fixed issue with Enter events causing unresponsive UI https://github.com/Textualize/textual/pull/4833
0.75.0 - 2024-08-01
Added
- Added
App.open_urlto open URLs in the web browser. When running via the WebDriver, the URL will be opened in the browser that is controlling the app https://github.com/Textualize/textual/pull/4819 - Added
Widget.is_mouse_overhttps://github.com/Textualize/textual/pull/4818 - Added
nodeattribute toevents.Enterandevents.Leavehttps://github.com/Textualize/textual/pull/4818
Changed
events.Enterandevents.Leaveevents now bubble. https://github.com/Textualize/textual/pull/4818- Renamed
Widget.mouse_overtoWidget.mouse_hoverhttps://github.com/Textualize/textual/pull/4818
Fixed
- Fixed issue with
mutate_reactiveand data binding https://github.com/Textualize/textual/pull/4828
0.74.0 - 2024-07-25
Fixed
- Fixed issues in Kitty terminal after exiting app https://github.com/Textualize/textual/issues/4779
- Fixed exception when removing Selects https://github.com/Textualize/textual/pull/4786
- Fixed issue with non-clickable Footer keys https://github.com/Textualize/textual/pull/4798
- Fixed issue with recompose not working from Mount handler https://github.com/Textualize/textual/pull/4802
Changed
- Calling
Screen.dismisswith no arguments will invoke the screen callback withNone(previously the callback wasn't invoke at all). https://github.com/Textualize/textual/pull/4795
0.73.0 - 2024-07-18
Added
- Added
TextArea.line_number_startreactive attribute https://github.com/Textualize/textual/pull/4471 - Added
TextArea.matching_bracket_locationproperty https://github.com/Textualize/textual/pull/4764 - Added
DOMNode.mutate_reactivehttps://github.com/Textualize/textual/pull/4731 - Added "quality" parameter to
textual.color.Gradienthttps://github.com/Textualize/textual/pull/4739 - Added
textual.color.Gradient.get_rich_colorhttps://github.com/Textualize/textual/pull/4739 Widget.remove_childrennow accepts an iterable if widgets in addition to a selector https://github.com/Textualize/textual/issues/4735- Raise
ValueErrorwith improved error message when number of cells inserted usingDataTable.add_rowdoesn't match the number of columns in the table https://github.com/Textualize/textual/pull/4742 - Add
Tree.move_cursorto programmatically move the cursor without selecting the node https://github.com/Textualize/textual/pull/4753 - Added
Footercomponent style handling of padding for the key/description https://github.com/Textualize/textual/pull/4651 StringKeyis now exported fromdata_tablehttps://github.com/Textualize/textual/pull/4760TreeNode.addandTreeNode.add_leafnow acceptsbeforeandafterarguments to position a new node https://github.com/Textualize/textual/pull/4772- Added a
gradientparameter to theProgressBarwidget https://github.com/Textualize/textual/pull/4774
Fixed
- Fixed issue with
Tabswhere disabled tabs could still be activated by clicking the underline https://github.com/Textualize/textual/issues/4701 - Fixed scroll_visible with margin https://github.com/Textualize/textual/pull/4719
- Fixed programmatically disabling button stuck in hover state https://github.com/Textualize/textual/pull/4724
- Fixed
DataTablepoor performance on startup and focus change when rows contain multi-line content https://github.com/Textualize/textual/pull/4748 - Fixed
TreeandDirectoryTreehorizontal scrolling off-by-2 https://github.com/Textualize/textual/pull/4744 - Fixed text-opacity in component styles https://github.com/Textualize/textual/pull/4747
- Ensure
Tree.select_nodesendsNodeSelectedmessage https://github.com/Textualize/textual/pull/4753 - Fixed message handlers not working when message types are assigned as the value of class vars https://github.com/Textualize/textual/pull/3940
- Fixed
CommandPalettenot focusing the input when opened whenApp.AUTO_FOCUSdoesn't match the input https://github.com/Textualize/textual/pull/4763 SelectionList.SelectionToggledwill now be sent for each option when a bulk toggle is performed (e.g.toggle_all). Previously no messages were sent at all. https://github.com/Textualize/textual/pull/4759- Fixed focus styles not being updated on blur https://github.com/Textualize/textual/pull/4771
Changed
- "Discover" hits in the command palette are no longer sorted alphabetically https://github.com/Textualize/textual/pull/4720
TreeNodeSelectedmessages are now posted beforeTreeNodeExpandedmessages when an expandable node is selected https://github.com/Textualize/textual/pull/4753Markdown.LinkClicked.hrefis now automatically unquoted https://github.com/Textualize/textual/pull/4749- The mouse cursor hover effect of
TreeandDirectoryTreewill no longer linger after the mouse leaves the widget https://github.com/Textualize/textual/pull/4766
0.72.0 - 2024-07-09
Changed
- More predictable DOM removals. https://github.com/Textualize/textual/pull/4708
Fixed
- Fixed clicking separator in OptionList moving cursor https://github.com/Textualize/textual/issues/4710
- Fixed scrolling issue in OptionList https://github.com/Textualize/textual/pull/4709
0.71.0 - 2024-06-29
Changed
- Snapshot tests will normalize SVG output so that changes with no visual impact don't break snapshots, but this release will break most of them.
- Breaking change:
App.push_screennow returns an Awaitable rather than a screen. https://github.com/Textualize/textual/pull/4672 - Breaking change:
Screen.dismissnow returns an Awaitable rather than a bool. https://github.com/Textualize/textual/pull/4672
Fixed
- Fixed grid + keyline when the grid has auto dimensions https://github.com/Textualize/textual/pull/4680
- Fixed mouse code leakage https://github.com/Textualize/textual/pull/4681
- Fixed link inside markdown table not posting a
Markdown.LinkClickedmessage https://github.com/Textualize/textual/issues/4683 - Fixed issue with mouse movements on non-active screen https://github.com/Textualize/textual/pull/4688
0.70.0 - 2024-06-19
Fixed
- Fixed erroneous mouse 'ButtonDown' reporting for mouse movement when any-event mode is enabled in xterm. https://github.com/Textualize/textual/pull/3647
0.69.0 - 2024-06-16
Added
- Added
App.simulate_keyhttps://github.com/Textualize/textual/pull/4657
Fixed
- Fixed issue with pop_screen launched from an action https://github.com/Textualize/textual/pull/4657
Changed
App.check_bindingsis now privateApp.action_check_bindingsis nowApp.action_simulate_key
0.68.0 - 2024-06-14
Added
- Added
ContentSwitcher.add_content
Fixed
- Improved handling of non-tty input https://github.com/Textualize/textual/pull/4647
0.67.1 - 2024-06-12
Changed
- Reverts Vim keys in DataTable, provides alternatives https://github.com/Textualize/textual/pull/4638
0.67.0 - 2024-06-11
Added
- Added support for Kitty's key protocol https://github.com/Textualize/textual/pull/4631
ctrl+pageup/ctrl+pagedownwill scroll page left/right in DataTable https://github.com/Textualize/textual/pull/4633g/Gwill scroll to the top/bottom of the DataTable https://github.com/Textualize/textual/pull/4633- Added simple
hjklkey bindings to move the cursor in DataTable https://github.com/Textualize/textual/pull/4633
Changed
homeandendnow works horizontally instead of vertically in DataTable https://github.com/Textualize/textual/pull/4633TreeandDirectoryTreenodes now have a bigger click target, spanning the full line https://github.com/Textualize/textual/pull/4636
Fixed
- Fixed pageup/pagedown behavior in DataTable https://github.com/Textualize/textual/pull/4633
- Added
App.CLOSE_TIMEOUThttps://github.com/Textualize/textual/pull/4635 - Fixed deadlock on shutdown https://github.com/Textualize/textual/pull/4635
0.66.0 - 2024-06-08
Changed
get_content_heightwill now return 0 if the renderable is Falsey https://github.com/Textualize/textual/pull/4617- Buttons may not be pressed within their "active_effect_duration" to prevent inadvertent activations https://github.com/Textualize/textual/pull/4621
Screen.dismissis now a noop if the screen isn't active. Previously it would raise aScreenStackError, now it returnsFalse. https://github.com/Textualize/textual/pull/4621- Increased window for escape processing to 100ms https://github.com/Textualize/textual/pull/4625
- Tooltips are now hidden when any key is pressed https://github.com/Textualize/textual/pull/4625
Added
- Added
Screen.is_active - Added
iconreactive to Header widget https://github.com/Textualize/textual/pull/4627 - Added
time_formatreactive to Header widget https://github.com/Textualize/textual/pull/4627 - Added
tooltipparameter to input widgets https://github.com/Textualize/textual/pull/4625
0.65.2 - 2024-06-06
Fixed
- Fixed issue with notifications and screen switches https://github.com/Textualize/textual/pull/4615
Added
- Added textual.rlock.RLock https://github.com/Textualize/textual/pull/4615
0.65.1 - 2024-06-05
Fixed
- Fixed hot reloading with hatch rule https://github.com/Textualize/textual/pull/4606
- Fixed hatch style parsing https://github.com/Textualize/textual/pull/4606
0.65.0 - 2024-06-05
Added
- Added Command Palette Opened, Closed, and OptionHighlighted events https://github.com/Textualize/textual/pull/4600
- Added hatch style https://github.com/Textualize/textual/pull/4603
Fixed
- Fixed DataTable cursor flicker on scroll https://github.com/Textualize/textual/pull/4598
Changes
- TabbedContent will automatically make tabs active when a widget in a pane is focused https://github.com/Textualize/textual/issues/4593
0.64.0 - 2024-06-03
Fixed
- Fix traceback on exit https://github.com/Textualize/textual/pull/4575
- Fixed
Markdown.goto_anchorno longer scrolling the heading into view https://github.com/Textualize/textual/pull/4583 - Fixed Footer flicker on initial focus https://github.com/Textualize/textual/issues/4573
0.63.6 - 2024-05-29
Fixed
- Fixed issue with bindings not refreshing https://github.com/Textualize/textual/pull/4571
0.63.5 - 2024-05-28
Fixed
- Fixed data table disappearing from tabs https://github.com/Textualize/textual/pull/4567
Added
- Added
Styles.is_auto_widthandStyle.is_auto_height
0.63.4 - 2024-05-26
Added
- Added
immediateswitch toSignal.publish
Fixed
- Fixed freeze in recompose from bindings https://github.com/Textualize/textual/pull/4558
0.63.3 - 2024-05-24
Fixed
- Fixed
Footergrid size https://github.com/Textualize/textual/pull/4545 - Fixed bindings not updated on auto focus https://github.com/Textualize/textual/pull/4551
Changed
- Attempting to mount on a non-mounted widget now raises a MountError https://github.com/Textualize/textual/pull/4547
0.63.2 - 2024-05-23
Fixed
- Fixed issue with namespaces in links https://github.com/Textualize/textual/pull/4546
0.63.1 - 2024-05-22
Fixed
- Fixed display of multiple bindings https://github.com/Textualize/textual/pull/4543
0.63.0 - 2024-05-22
Fixed
- Fixed actions in links https://github.com/Textualize/textual/pull/4540
Changed
- Breaking change: New Footer (likely a drop in replacement, unless you have customized styles) https://github.com/Textualize/textual/pull/4537
- Stylistic changes to Markdown (simpler headers, less margin, etc) https://github.com/Textualize/textual/pull/4541
0.62.0 - 2024-05-20
Added
- Added
startandendproperties to Markdown Navigator - Added
Widget.anchor,Widget.clear_anchor, andWidget.is_anchoredhttps://github.com/Textualize/textual/pull/4530
0.61.1 - 2024-05-19
Fixed
- Fixed auto grid columns ignoring gutter https://github.com/Textualize/textual/issues/4522
0.61.0 - 2024-05-18
Added
- Added
App.get_default_screenhttps://github.com/Textualize/textual/pull/4520 - Added dynamic binding via
DOMNode.check_actionhttps://github.com/Textualize/textual/pull/4516 - Added
"focused"action namespace so you can bind a key to an action on the focused widget https://github.com/Textualize/textual/pull/4516 - Added "focused" to allowed action namespaces https://github.com/Textualize/textual/pull/4516
Changed
- Breaking change: Actions (as used in bindings) will no longer check the app if they are unhandled. This was undocumented anyway, and not that useful. https://github.com/Textualize/textual/pull/4516
- Breaking change: Renamed
App.namespace_bindingstoactive_bindings
0.60.1 - 2024-05-15
Fixed
- Dependency issue
0.60.0 - 2024-05-14
Fixed
- Fixed auto width not working for option lists https://github.com/Textualize/textual/pull/4507
Added
- Added
DOMNode.query_childrenhttps://github.com/Textualize/textual/pull/4508
0.59.0 - 2024-05-11
Fixed
- Fixed
SelectionListissues after removing an option https://github.com/Textualize/textual/pull/4464 - Fixed
ListViewbugs with the initial index https://github.com/Textualize/textual/pull/4452 - Fixed
Selectnot closing https://github.com/Textualize/textual/pull/4499 - Fixed setting
loading=Falseremoving all child loading indicators https://github.com/Textualize/textual/pull/4499
Changed
- When displaying a message using
App.exit(), the console no longer highlights things such as numbers.
Added
- Added
message_signalto MessagePump, to listen to events sent to another widget. https://github.com/Textualize/textual/pull/4487 - Added
Widget.suppress_clickhttps://github.com/Textualize/textual/pull/4499
0.58.1 - 2024-05-01
Fixed
- Fixed issue with Markdown mounting content lazily https://github.com/Textualize/textual/pull/4466
- Fixed intermittent issue with scrolling to focus
567caf8acb - Fixed issue with scrolling to center https://github.com/Textualize/textual/pull/4469
0.58.0 - 2024-04-25
Fixed
- Fixed
TextAreato end mouse selection only if currently selecting https://github.com/Textualize/textual/pull/4436 - Fixed issue with scroll_to_widget https://github.com/Textualize/textual/pull/4446
- Fixed issue with margins https://github.com/Textualize/textual/pull/4441
Changed
- Added argument to signal callbacks https://github.com/Textualize/textual/pull/4438
0.57.1 - 2024-04-20
Fixed
- Fixed an off-by-one error in the line number of the
Document.endproperty https://github.com/Textualize/textual/issues/4426 - Fixed setting scrollbar colors not updating the scrollbar https://github.com/Textualize/textual/pull/4433
- Fixed flushing in inline mode https://github.com/Textualize/textual/pull/4435
Added
- Added
Offset.clampandSize.clamp_offsethttps://github.com/Textualize/textual/pull/4435
0.57.0 - 2024-04-19
Fixed
- Fixed
Integervalidator missing failure description when not a number https://github.com/Textualize/textual/issues/4413 - Fixed a crash in
DataTableif you clicked a link in the border https://github.com/Textualize/textual/issues/4410 - Fixed issue with cursor position https://github.com/Textualize/textual/pull/4429
Added
- Added
App.copy_to_clipboardhttps://github.com/Textualize/textual/pull/4416
[0.56.4] - 2024-04-09
Fixed
- Disabled terminal synchronization in inline mode as it breaks on some terminals
0.56.3 - 2024-04-08
Fixed
- Fixed inline mode not updating https://github.com/Textualize/textual/issues/4403
0.56.2 - 2024-04-07
Fixed
- Fixed inline mode not clearing with multiple screen
0.56.1 - 2024-04-07
Fixed
- Fixed flicker when non-current screen updates https://github.com/Textualize/textual/pull/4401
Changed
- Removed additional line at the end of an inline app https://github.com/Textualize/textual/pull/4401
0.56.0 - 2024-04-06
Added
- Added
Size.with_widthandSize.with_heighthttps://github.com/Textualize/textual/pull/4393
Fixed
- Fixed issue with inline mode and multiple screens https://github.com/Textualize/textual/pull/4393
- Fixed issue with priority bindings https://github.com/Textualize/textual/pull/4395
Changed
- self.prevent can be used in a widget constructor to prevent messages on mount https://github.com/Textualize/textual/pull/4392
0.55.1 - 2024-04-2
Fixed
- Fixed mouse escape sequences being generated with
mouse=False
0.55.0 - 2024-04-1
Fixed
- Fix priority bindings not appearing in footer when key clashes with focused widget https://github.com/Textualize/textual/pull/4342
- Reverted auto-width change https://github.com/Textualize/textual/pull/4369
Changed
- Exceptions inside
Widget.composeor workers weren't bubbling up in tests https://github.com/Textualize/textual/issues/4282 - Fixed
DataTablescrolling issues by changingmax-heightback to 100% https://github.com/Textualize/textual/issues/4286 - Fixed
Buttonnot rendering correctly with console markup https://github.com/Textualize/textual/issues/4328
Added
- Added
Document.startandendlocation properties for convenience https://github.com/Textualize/textual/pull/4267 - Added support for JavaScript, Golang, Rust, Bash, Java and Kotlin to
TextAreahttps://github.com/Textualize/textual/pull/4350 - Added
inlineparameter torunandrun_asyncto run app inline (under the prompt). https://github.com/Textualize/textual/pull/4343 - Added
mouseparameter to disable mouse support https://github.com/Textualize/textual/pull/4343
0.54.0 - 2024-03-26
Fixed
- Fixed a crash in
TextAreawhen undoing an edit to a selection the selection was made backwards https://github.com/Textualize/textual/issues/4301 - Fixed issue with flickering scrollbars https://github.com/Textualize/textual/pull/4315
- Fixed issue where narrow TextArea would repeatedly wrap due to scrollbar appearing/disappearing https://github.com/Textualize/textual/pull/4334
- Fix progress bar ETA not updating when setting
totalreactive https://github.com/Textualize/textual/pull/4316
Changed
- ProgressBar won't show ETA until there is at least one second of samples https://github.com/Textualize/textual/pull/4316
Inputwaits until an edit has been made, after entry to the widget, before offering a suggestion https://github.com/Textualize/textual/pull/4335
0.53.1 - 2024-03-18
Fixed
- Fixed issue with data binding https://github.com/Textualize/textual/pull/4308
0.53.0 - 2024-03-18
Added
- Mapping of ANSI colors to hex codes configurable via
App.ansi_theme_darkandApp.ansi_theme_lighthttps://github.com/Textualize/textual/pull/4192 Pilot.resize_terminalto resize the terminal in testing https://github.com/Textualize/textual/issues/4212- Added
sort_childrenmethod https://github.com/Textualize/textual/pull/4244 - Support for pseudo-classes in nested TCSS https://github.com/Textualize/textual/issues/4039
Fixed
- Fixed
TextArea.code_editormissing recently added attributes https://github.com/Textualize/textual/pull/4172 - Fixed
Sparklinenot working with data in adequehttps://github.com/Textualize/textual/issues/3899 - Tooltips are now cleared when the related widget is no longer under them https://github.com/Textualize/textual/issues/3045
- Simplified tree-sitter highlight queries for HTML, which also seems to fix segfault issue https://github.com/Textualize/textual/pull/4195
- Fixed
DirectoryTree.pathno longer reacting to new values https://github.com/Textualize/textual/issues/4208 - Fixed content size cache with Pretty widget https://github.com/Textualize/textual/pull/4211
- Fixed
grid-gutterinteraction with Pretty widget https://github.com/Textualize/textual/pull/4219 - Fixed
TextAreastyling issue on alternate screens https://github.com/Textualize/textual/pull/4220 - Fixed writing to invisible
RichLoghttps://github.com/Textualize/textual/pull/4223 - Fixed
RichLog.min_widthnot being used https://github.com/Textualize/textual/pull/4223 - Rename
CollapsibleTitle.action_toggletoaction_toggle_collapsibleto fix clash withDOMNode.action_togglehttps://github.com/Textualize/textual/pull/4221 - Markdown component classes weren't refreshed when watching for CSS https://github.com/Textualize/textual/issues/3464
- Rename
Switch.action_toggletoaction_toggle_switchto fix clash withDOMNode.action_togglehttps://github.com/Textualize/textual/issues/4262 - Fixed
OptionList.OptionHighlightedleaking out ofSelecthttps://github.com/Textualize/textual/issues/4224 - Fixed
Tabenable/disable messages leaking intoTabbedContenthttps://github.com/Textualize/textual/issues/4233 - Fixed a style leak from
TabbedContenthttps://github.com/Textualize/textual/issues/4232 - Fixed active hidden scrollbars not releasing the mouse https://github.com/Textualize/textual/issues/4274
- Fixed the mouse not being released when hiding a
TextAreawhile mouse selection is happening https://github.com/Textualize/textual/issues/4292 - Fix mouse scrolling not working when mouse cursor is over a disabled child widget https://github.com/Textualize/textual/issues/4242
Changed
- Clicking a non focusable widget focus ancestors https://github.com/Textualize/textual/pull/4236
- BREAKING: widget class names must start with a capital letter or an underscore
_https://github.com/Textualize/textual/pull/4252 - BREAKING: for many widgets, messages are now sent when programmatic changes that mirror user input are made https://github.com/Textualize/textual/pull/4256
- Changed
Collapsible - Changed
Markdown - Changed
Select - Changed
SelectionList - Changed
TabbedContent - Changed
Tabs - Changed
TextArea - Changed
Tree
- Changed
- Improved ETA calculation for ProgressBar https://github.com/Textualize/textual/pull/4271
- BREAKING:
AppFocusandAppBlurare now posted when the terminal window gains or loses focus, if the terminal supports this https://github.com/Textualize/textual/pull/4265- When the terminal window loses focus, the currently-focused widget will also lose focus.
- When the terminal window regains focus, the previously-focused widget will regain focus.
- TextArea binding for ctrl+k will now delete the line if the line is empty https://github.com/Textualize/textual/issues/4277
- The active tab (in
Tabs) / tab pane (inTabbedContent) can now be unset https://github.com/Textualize/textual/issues/4241
0.52.1 - 2024-02-20
Fixed
- Fixed the check for animation level in
LoadingIndicatorhttps://github.com/Textualize/textual/issues/4188
0.52.0 - 2024-02-19
Changed
- Textual now writes to stderr rather than stdout https://github.com/Textualize/textual/pull/4177
Added
- Added an
asynciolock attributeWidget.lockto be used to synchronize widget state https://github.com/Textualize/textual/issues/4134 - Added support for environment variable
TEXTUAL_ANIMATIONSto control what animations Textual displays https://github.com/Textualize/textual/pull/4062 - Add attribute
App.animation_levelto control whether animations on that app run or not https://github.com/Textualize/textual/pull/4062 - Added support for a
TEXTUAL_SCREENSHOT_LOCATIONenvironment variable to specify the location of an automated screenshot https://github.com/Textualize/textual/pull/4181/ - Added support for a
TEXTUAL_SCREENSHOT_FILENAMEenvironment variable to specify the filename of an automated screenshot https://github.com/Textualize/textual/pull/4181/ - Added an
asynciolock attributeWidget.lockto be used to synchronize widget state https://github.com/Textualize/textual/issues/4134 Widget.remove_childrennow accepts a CSS selector to specify which children to remove https://github.com/Textualize/textual/pull/4183Widget.batchcombines widget locking and app update batching https://github.com/Textualize/textual/pull/4183
0.51.0 - 2024-02-15
Added
- TextArea now has
read_onlymode https://github.com/Textualize/textual/pull/4151 - Add some syntax highlighting to TextArea default theme https://github.com/Textualize/textual/pull/4149
- Add undo and redo to TextArea https://github.com/Textualize/textual/pull/4124
- Added support for command palette command discoverability https://github.com/Textualize/textual/pull/4154
Fixed
- Fixed out-of-view
Tabnot being scrolled into view whenTabs.activeis assigned https://github.com/Textualize/textual/issues/4150 - Fixed
TabbedContent.TabActivatenot being posted whenTabbedContent.activeis assigned https://github.com/Textualize/textual/issues/4150
Changed
- Breaking change: Renamed
TextArea.tab_behaviourtoTextArea.tab_behaviorhttps://github.com/Textualize/textual/pull/4124 TextArea.themenow defaults to"css"instead of None, and is no longer optional https://github.com/Textualize/textual/pull/4157
Fixed
- Improve support for selector lists in nested TCSS https://github.com/Textualize/textual/issues/3969
- Improve support for rule declarations after nested TCSS rule sets https://github.com/Textualize/textual/issues/3999
0.50.1 - 2024-02-09
Fixed
- Fixed tint applied to ANSI colors https://github.com/Textualize/textual/pull/4142
0.50.0 - 2024-02-08
Fixed
- Fixed issue with ANSI colors not being converted to truecolor https://github.com/Textualize/textual/pull/4138
- Fixed duplicate watch methods being attached to DOM nodes https://github.com/Textualize/textual/pull/4030
- Fixed using
watchto create additional watchers would trigger other watch methods https://github.com/Textualize/textual/issues/3878
Added
- Added support for configuring dark and light themes for code in
Markdownhttps://github.com/Textualize/textual/issues/3997
0.49.0 - 2024-02-07
Fixed
- Fixed scrolling in long
OptionListby adding max height of 100% https://github.com/Textualize/textual/issues/4021 - Fixed
DirectoryTree.clear_nodenot clearing the node specified https://github.com/Textualize/textual/issues/4122
Changed
DirectoryTree.reloadandDirectoryTree.reload_nodenow preserve state when reloading https://github.com/Textualize/textual/issues/4056- Fixed a crash in the TextArea when performing a backward replace https://github.com/Textualize/textual/pull/4126
- Fixed selection not updating correctly when pasting while there's a non-zero selection https://github.com/Textualize/textual/pull/4126
- Breaking change:
TextAreawill not useEscapeto shift focus if thetab_behaviouris the default https://github.com/Textualize/textual/issues/4110 TextAreacursor will now be invisible before first focus https://github.com/Textualize/textual/pull/4128- Fix toggling
TextArea.cursor_blinkreactive when widget does not have focus https://github.com/Textualize/textual/pull/4128
Added
- Added DOMQuery.set https://github.com/Textualize/textual/pull/4075
- Added DOMNode.set_reactive https://github.com/Textualize/textual/pull/4075
- Added DOMNode.data_bind https://github.com/Textualize/textual/pull/4075
- Added DOMNode.action_toggle https://github.com/Textualize/textual/pull/4075
- Added Worker.cancelled_event https://github.com/Textualize/textual/pull/4075
Tree(andDirectoryTree) grew an attributelockthat can be used for synchronization across coroutines https://github.com/Textualize/textual/issues/4056
0.48.2 - 2024-02-02
Fixed
- Fixed a hang in the Linux driver when connected to a pipe https://github.com/Textualize/textual/issues/4104
- Fixed broken
OptionListOption.idmappings https://github.com/Textualize/textual/issues/4101
Changed
- Breaking change: keyboard navigation in
RadioSet,ListView,OptionList, andSelectionList, no longer allows highlighting disabled items https://github.com/Textualize/textual/issues/3881
0.48.1 - 2024-02-01
Fixed
TextAreauses CSS theme by default instead ofmonokaihttps://github.com/Textualize/textual/pull/4091
0.48.0 - 2024-02-01
Changed
- Breaking change: Significant changes to
TextArea.__init__default values/behaviour https://github.com/Textualize/textual/pull/3933soft_wrap=True- soft wrapping is now enabled by default.show_line_numbers=False- line numbers are now disabled by default.tab_behaviour="focus"- pressing the tab key now switches focus instead of indenting by default.
- Breaking change:
TextAreadefault theme changed to CSS, and default styling changed https://github.com/Textualize/textual/pull/4074 - Breaking change:
DOMNode.has_pseudo_classnow accepts a single name only https://github.com/Textualize/textual/pull/3970 - Made
textual.cache(formerlytextual._cache) public https://github.com/Textualize/textual/pull/3976 Tab.labelcan now be used to change the label of a tab https://github.com/Textualize/textual/pull/3979- Changed the default notification timeout from 3 to 5 seconds https://github.com/Textualize/textual/pull/4059
- Prior scroll animations are now cancelled on new scrolls https://github.com/Textualize/textual/pull/4081
Added
- Added
DOMNode.has_pseudo_classeshttps://github.com/Textualize/textual/pull/3970 - Added
Widget.allow_focusandWidget.allow_focus_childrenhttps://github.com/Textualize/textual/pull/3989 - Added
TextArea.soft_wrapreactive attribute added https://github.com/Textualize/textual/pull/3933 - Added
TextArea.tab_behaviourreactive attribute added https://github.com/Textualize/textual/pull/3933 - Added
TextArea.code_editorclassmethod/alternative constructor https://github.com/Textualize/textual/pull/3933 - Added
TextArea.wrapped_documentattribute which can convert between wrapped visual coordinates and locations https://github.com/Textualize/textual/pull/3933 - Added
show_line_numberstoTextArea.__init__https://github.com/Textualize/textual/pull/3933 - Added component classes allowing
TextAreato be styled using CSS https://github.com/Textualize/textual/pull/4074 - Added
Query.blurandQuery.focushttps://github.com/Textualize/textual/pull/4012 - Added
MessagePump.message_queue_sizehttps://github.com/Textualize/textual/pull/4012 - Added
TabbedContent.active_panehttps://github.com/Textualize/textual/pull/4012 - Added
App.suspendhttps://github.com/Textualize/textual/pull/4064 - Added
App.action_suspend_processhttps://github.com/Textualize/textual/pull/4064
Fixed
- Parameter
animatefromDataTable.move_cursorwas being ignored https://github.com/Textualize/textual/issues/3840 - Fixed a crash if
DirectoryTree.show_rootwas set before the DOM was fully available https://github.com/Textualize/textual/issues/2363 - Live reloading of TCSS wouldn't apply CSS changes to screens under the top screen of the stack https://github.com/Textualize/textual/issues/3931
SelectionListoption IDs are usable as soon as the widget is instantiated https://github.com/Textualize/textual/issues/3903- Fix issue with
Strip.cropwhen crop window start aligned with strip end https://github.com/Textualize/textual/pull/3998 - Fixed Strip.crop_extend https://github.com/Textualize/textual/pull/4011
- Fix for percentage dimensions https://github.com/Textualize/textual/pull/4037
- Fixed a crash if the
TextArealanguage was set but tree-sitter language binaries were not installed https://github.com/Textualize/textual/issues/4045 - Ensuring
TextArea.SelectionChangedmessage only sends when the updated selection is different https://github.com/Textualize/textual/pull/3933 - Fixed declaration after nested rule set causing a parse error https://github.com/Textualize/textual/pull/4012
- ID and class validation was too lenient https://github.com/Textualize/textual/issues/3954
- Fixed CSS watcher crash if file becomes unreadable (even temporarily) https://github.com/Textualize/textual/pull/4079
- Fixed display of keys when used in conjunction with other keys https://github.com/Textualize/textual/pull/3050
- Fixed double detection of Escape on Windows https://github.com/Textualize/textual/issues/4038
0.47.1 - 2024-01-05
Fixed
- Fixed nested specificity https://github.com/Textualize/textual/pull/3963
0.47.0 - 2024-01-04
Fixed
Widget.move_childwould break ifbefore/afteris set to the index of the widget inchildhttps://github.com/Textualize/textual/issues/1743- Fixed auto width text not processing markup https://github.com/Textualize/textual/issues/3918
- Fixed
Tree.clearnot retaining the root's expanded state https://github.com/Textualize/textual/issues/3557
Changed
- Breaking change:
Widget.move_childparametersbeforeandafterare now keyword-only https://github.com/Textualize/textual/pull/3896 - Style tweak to toasts https://github.com/Textualize/textual/pull/3955
Added
- Added textual.lazy https://github.com/Textualize/textual/pull/3936
- Added App.push_screen_wait https://github.com/Textualize/textual/pull/3955
- Added nesting of CSS https://github.com/Textualize/textual/pull/3946
0.46.0 - 2023-12-17
Fixed
- Disabled radio buttons could be selected with the keyboard https://github.com/Textualize/textual/issues/3839
- Fixed zero width scrollbars causing content to disappear https://github.com/Textualize/textual/issues/3886
Changed
- The tabs within a
TabbedContentnow prefix their IDs to stop any clash with their associatedTabPanehttps://github.com/Textualize/textual/pull/3815 - Breaking change:
tabis no longer a@ondecorator selector forTabbedContent.TabActivated-- usepaneinstead https://github.com/Textualize/textual/pull/3815
Added
- Added
Collapsible.titlereactive attribute https://github.com/Textualize/textual/pull/3830 - Added a
paneattribute toTabbedContent.TabActivatedhttps://github.com/Textualize/textual/pull/3815 - Added caching of rules attributes and
cacheparameter to Stylesheet.apply https://github.com/Textualize/textual/pull/3880
0.45.1 - 2023-12-12
Fixed
- Fixed issues where styles wouldn't update if changed in mount. https://github.com/Textualize/textual/pull/3860
0.45.0 - 2023-12-12
Fixed
- Fixed
DataTable.update_cellnot raising an error with an invalid column key https://github.com/Textualize/textual/issues/3335 - Fixed
Inputshowing suggestions when not focused https://github.com/Textualize/textual/pull/3808 - Fixed loading indicator not covering scrollbars https://github.com/Textualize/textual/pull/3816
Removed
- Removed renderables/align.py which was no longer used.
Changed
- Dropped ALLOW_CHILDREN flag introduced in 0.43.0 https://github.com/Textualize/textual/pull/3814
- Widgets with an auto height in an auto height container will now expand if they have no siblings https://github.com/Textualize/textual/pull/3814
- Breaking change: Removed
limit_rulesfrom Stylesheet.apply https://github.com/Textualize/textual/pull/3844
Added
- Added
get_loading_widgetto Widget and App customize the loading widget. https://github.com/Textualize/textual/pull/3816 - Added messages
Collapsible.ExpandedandCollapsible.Collapsedthat inherit fromCollapsible.Toggled. https://github.com/Textualize/textual/issues/3824
0.44.1 - 2023-12-4
Fixed
- Fixed slow scrolling when there are many widgets https://github.com/Textualize/textual/pull/3801
0.44.0 - 2023-12-1
Changed
- Breaking change: Dropped 3.7 support https://github.com/Textualize/textual/pull/3766
- Breaking changes https://github.com/Textualize/textual/issues/1530
link-hover-backgroundrenamed tolink-background-hoverlink-hover-colorrenamed tolink-color-hoverlink-hover-stylerenamed tolink-style-hoverTreenow forces a scroll whenscroll_to_nodeis called https://github.com/Textualize/textual/pull/3786- Brought rxvt's use of shift-numpad keys in line with most other terminals https://github.com/Textualize/textual/pull/3769
Added
- Added support for Ctrl+Fn and Ctrl+Shift+Fn keys in urxvt https://github.com/Textualize/textual/pull/3737
- Friendly error messages when trying to mount non-widgets https://github.com/Textualize/textual/pull/3780
- Added
Select.from_valuesclass method that can be used to initialize a Select control with an iterator of values https://github.com/Textualize/textual/pull/3743
Fixed
- Fixed NoWidget when mouse goes outside window https://github.com/Textualize/textual/pull/3790
- Removed spurious print statements from press_keys https://github.com/Textualize/textual/issues/3785
0.43.2 - 2023-11-29
Fixed
- Fixed NoWidget error https://github.com/Textualize/textual/pull/3779
0.43.1 - 2023-11-29
Fixed
- Fixed clicking on scrollbar moves TextArea cursor https://github.com/Textualize/textual/issues/3763
0.43.0 - 2023-11-28
Fixed
- Fixed mouse targeting issue in
TextAreawhen tabs were not fully expanded https://github.com/Textualize/textual/pull/3725 - Fixed
Selectnot updating after changing thepromptreactive https://github.com/Textualize/textual/issues/2983 - Fixed flicker when updating Markdown https://github.com/Textualize/textual/pull/3757
Added
- Added experimental Canvas class https://github.com/Textualize/textual/pull/3669/
- Added
keylinerule https://github.com/Textualize/textual/pull/3669/ - Widgets can now have an ALLOW_CHILDREN (bool) classvar to disallow adding children to a widget https://github.com/Textualize/textual/pull/3758
- Added the ability to set the
labelproperty of aCheckboxhttps://github.com/Textualize/textual/pull/3765 - Added the ability to set the
labelproperty of aRadioButtonhttps://github.com/Textualize/textual/pull/3765 - Added support for various modified edit and navigation keys in urxvt https://github.com/Textualize/textual/pull/3739
- Added app focus/blur for textual-web https://github.com/Textualize/textual/pull/3767
Changed
- Method
MarkdownTableOfContents.set_table_of_contentsrenamed toMarkdownTableOfContents.rebuild_table_of_contentshttps://github.com/Textualize/textual/pull/3730 - Exception
Tree.UnknownNodeIDmoved out ofTree, import fromtextual.widgets.treehttps://github.com/Textualize/textual/pull/3730 - Exception
TreeNode.RemoveRootErrormoved out ofTreeNode, import fromtextual.widgets.treehttps://github.com/Textualize/textual/pull/3730 - Optimized startup time https://github.com/Textualize/textual/pull/3753
- App.COMMANDS or Screen.COMMANDS can now accept a callable which returns a command palette provider https://github.com/Textualize/textual/pull/3756
0.42.0 - 2023-11-22
Fixed
- Duplicate CSS errors when parsing CSS from a screen https://github.com/Textualize/textual/issues/3581
- Added missing
blurpseudo class https://github.com/Textualize/textual/issues/3439 - Fixed visual glitched characters on Windows due to Python limitation https://github.com/Textualize/textual/issues/2548
- Fixed
ScrollableContainerto receive focus https://github.com/Textualize/textual/pull/3632 - Fixed app-level queries causing a crash when the command palette is active https://github.com/Textualize/textual/issues/3633
- Fixed outline not rendering correctly in some scenarios (e.g. on Button widgets) https://github.com/Textualize/textual/issues/3628
- Fixed live-reloading of screen CSS https://github.com/Textualize/textual/issues/3454
Select.valuecould be in an invalid state https://github.com/Textualize/textual/issues/3612- Off-by-one in CSS error reporting https://github.com/Textualize/textual/issues/3625
- Loading indicators and app notifications overlapped in the wrong order https://github.com/Textualize/textual/issues/3677
- Widgets being loaded are disabled and have their scrolling explicitly disabled too https://github.com/Textualize/textual/issues/3677
- Method render on a widget could be called before mounting said widget https://github.com/Textualize/textual/issues/2914
Added
- Exceptions to
textual.widgets.selecthttps://github.com/Textualize/textual/pull/3614InvalidSelectValueErrorfor when setting aSelectto an invalid valueEmptySelectErrorwhen creating/setting aSelectto have no options whenallow_blankisFalse
Selectmethods https://github.com/Textualize/textual/pull/3614clearis_blank
- Constant
Select.BLANKto flag an empty selection https://github.com/Textualize/textual/pull/3614 - Added
restrict,type,max_length, andvalid_emptyto Input https://github.com/Textualize/textual/pull/3657 - Added
Pilot.mouse_downto simulateMouseDownevents https://github.com/Textualize/textual/pull/3495 - Added
Pilot.mouse_upto simulateMouseUpevents https://github.com/Textualize/textual/pull/3495 - Added
Widget.is_mountedproperty https://github.com/Textualize/textual/pull/3709 - Added
TreeNode.refreshhttps://github.com/Textualize/textual/pull/3639
Changed
- CSS error reporting will no longer provide links to the files in question https://github.com/Textualize/textual/pull/3582
- inline CSS error reporting will report widget/class variable where the CSS was read from https://github.com/Textualize/textual/pull/3582
- Breaking change:
Tree.refresh_linehas now become an internal https://github.com/Textualize/textual/pull/3639 - Breaking change: Setting
Select.valuetoNoneno longer clears the selection (SeeSelect.BLANKandSelect.clear) https://github.com/Textualize/textual/pull/3614 - Breaking change:
Buttonno longer inherits fromStatic, now it inherits directly fromWidgethttps://github.com/Textualize/textual/issues/3603 - Rich markup in markdown headings is now escaped when building the TOC https://github.com/Textualize/textual/issues/3689
- Mechanics behind mouse clicks. See this for more details. https://github.com/Textualize/textual/pull/3495
- Breaking change: max/min-width/height now includes padding and border. https://github.com/Textualize/textual/pull/3712
0.41.0 - 2023-10-31
Fixed
- Fixed
Input.cursor_blinkreactive not changing blink state afterInputwas mounted https://github.com/Textualize/textual/pull/3498 - Fixed
Tabs.activeattribute value not being re-assigned after removing a tab or clearing https://github.com/Textualize/textual/pull/3498 - Fixed
DirectoryTreerace-condition crash when changing path https://github.com/Textualize/textual/pull/3498 - Fixed issue with
LRUCache.discardhttps://github.com/Textualize/textual/issues/3537 - Fixed
DataTablenot scrolling to rows that were just added https://github.com/Textualize/textual/pull/3552 - Fixed cache bug with
DataTable.update_cellhttps://github.com/Textualize/textual/pull/3551 - Fixed CSS errors being repeated https://github.com/Textualize/textual/pull/3566
- Fix issue with chunky highlights on buttons https://github.com/Textualize/textual/pull/3571
- Fixed
OptionListevent leakage fromCommandPalettetoApp. - Fixed crash in
LoadingIndicatorhttps://github.com/Textualize/textual/pull/3498 - Fixed crash when
Tabsappeared as a descendant ofTabbedContentin the DOM https://github.com/Textualize/textual/pull/3602 - Fixed the command palette cancelling other workers https://github.com/Textualize/textual/issues/3615
Added
- Add Document
get_index_from_location/get_location_from_indexhttps://github.com/Textualize/textual/pull/3410 - Add setter for
TextArea.texthttps://github.com/Textualize/textual/discussions/3525 - Added
keyargument to theDataTable.sort()method, allowing the table to be sorted using a custom function (or other callable) https://github.com/Textualize/textual/pull/3090 - Added
initialto all css rules, which restores default (i.e. value from DEFAULT_CSS) https://github.com/Textualize/textual/pull/3566 - Added HorizontalPad to pad.py https://github.com/Textualize/textual/pull/3571
- Added
AwaitCompleteclass, to be used for optionally awaitable return values https://github.com/Textualize/textual/pull/3498
Changed
- Breaking change:
Button.ACTIVE_EFFECT_DURATIONclassvar converted toButton.active_effect_durationattribute https://github.com/Textualize/textual/pull/3498 - Breaking change:
Input.blink_timermade private (renamed toInput._blink_timer) https://github.com/Textualize/textual/pull/3498 - Breaking change:
Input.cursor_blinkreactive updated to not run on mount (nowinit=False) https://github.com/Textualize/textual/pull/3498 - Breaking change:
AwaitTabbedContentclass removed https://github.com/Textualize/textual/pull/3498 - Breaking change:
Tabs.remove_tabnow returns anAwaitCompleteinstead of anAwaitRemovehttps://github.com/Textualize/textual/pull/3498 - Breaking change:
Tabs.clearnow returns anAwaitCompleteinstead of anAwaitRemovehttps://github.com/Textualize/textual/pull/3498 TabbedContent.add_panenow returns anAwaitCompleteinstead of anAwaitTabbedContenthttps://github.com/Textualize/textual/pull/3498TabbedContent.remove_panenow returns anAwaitCompleteinstead of anAwaitTabbedContenthttps://github.com/Textualize/textual/pull/3498TabbedContent.clear_panenow returns anAwaitCompleteinstead of anAwaitTabbedContenthttps://github.com/Textualize/textual/pull/3498Tabs.add_tabnow returns anAwaitCompleteinstead of anAwaitMounthttps://github.com/Textualize/textual/pull/3498DirectoryTree.reloadnow returns anAwaitComplete, which may be awaited to ensure the node has finished being processed by the internal queue https://github.com/Textualize/textual/pull/3498Tabs.remove_tabnow returns anAwaitComplete, which may be awaited to ensure the tab is unmounted and internal state is updated https://github.com/Textualize/textual/pull/3498App.switch_modenow returns anAwaitMount, which may be awaited to ensure the screen is mounted https://github.com/Textualize/textual/pull/3498- Buttons will now display multiple lines, and have auto height https://github.com/Textualize/textual/pull/3539
- DataTable now has a max-height of 100vh rather than 100%, which doesn't work with auto
- Breaking change: empty rules now result in an error https://github.com/Textualize/textual/pull/3566
- Improved startup time by caching CSS parsing https://github.com/Textualize/textual/pull/3575
- Workers are now created/run in a thread-safe way https://github.com/Textualize/textual/pull/3586
0.40.0 - 2023-10-11
Added
- Added
loadingreactive property to widgets https://github.com/Textualize/textual/pull/3509
0.39.0 - 2023-10-10
Fixed
Pilot.click/Pilot.hovercan't useScreenas a selector https://github.com/Textualize/textual/issues/3395- App exception when a
Treeis initialized/mounted withdisabled=Truehttps://github.com/Textualize/textual/issues/3407 - Fixed
printlocations not being correctly reported intextual consolehttps://github.com/Textualize/textual/issues/3237 - Fix location of IME and emoji popups https://github.com/Textualize/textual/pull/3408
- Fixed application freeze when pasting an emoji into an application on Windows https://github.com/Textualize/textual/issues/3178
- Fixed duplicate option ID handling in the
OptionListhttps://github.com/Textualize/textual/issues/3455 - Fix crash when removing and updating DataTable cell at same time https://github.com/Textualize/textual/pull/3487
- Fixed fractional styles to allow integer values https://github.com/Textualize/textual/issues/3414
- Stop eating stdout/stderr in headless mode - print works again in tests https://github.com/Textualize/textual/pull/3486
Added
OutOfBoundsexception to be raised byPilothttps://github.com/Textualize/textual/pull/3360TextArea.cursor_screen_offsetproperty for getting the screen-relative position of the cursor https://github.com/Textualize/textual/pull/3408Input.cursor_screen_offsetproperty for getting the screen-relative position of the cursor https://github.com/Textualize/textual/pull/3408- Reactive
cell_padding(and respective parameter) to define horizontal cell padding in data table columns https://github.com/Textualize/textual/issues/3435 - Added
Input.clearmethod https://github.com/Textualize/textual/pull/3430 - Added
TextArea.SelectionChangedandTextArea.Changedmessages https://github.com/Textualize/textual/pull/3442 - Added
wait_for_dismissparameter toApp.push_screenhttps://github.com/Textualize/textual/pull/3477 - Allow scrollbar-size to be set to 0 to achieve scrollable containers with no visible scrollbars https://github.com/Textualize/textual/pull/3488
Changed
- Breaking change: tree-sitter and tree-sitter-languages dependencies moved to
syntaxextra https://github.com/Textualize/textual/pull/3398 Pilot.click/Pilot.hovernow raisesOutOfBoundswhen clicking outside visible screen https://github.com/Textualize/textual/pull/3360Pilot.click/Pilot.hovernow return a Boolean indicating whether the click/hover landed on the widget that matches the selector https://github.com/Textualize/textual/pull/3360- Added a delay to when the
No Matchesmessage appears in the command palette, thus removing a flicker https://github.com/Textualize/textual/pull/3399 - Timer callbacks are now typed more loosely https://github.com/Textualize/textual/issues/3434
0.38.1 - 2023-09-21
Fixed
- Hotfix - added missing highlight files in build distribution https://github.com/Textualize/textual/pull/3370
0.38.0 - 2023-09-21
Added
- Added a TextArea https://github.com/Textualize/textual/pull/2931
- Added :dark and :light pseudo classes
Fixed
- Fixed
DataTablenot updating component styles on hot-reloading https://github.com/Textualize/textual/issues/3312
Changed
- Breaking change: CSS in DEFAULT_CSS is now automatically scoped to the widget (set SCOPED_CSS=False) to disable
- Breaking change: Changed
Markdown.goto_anchorto return a boolean (if the anchor was found) instead ofNonehttps://github.com/Textualize/textual/pull/3334
0.37.1 - 2023-09-16
Fixed
- Fixed the command palette crashing with a
TimeoutErrorin any Python before 3.11 https://github.com/Textualize/textual/issues/3320 - Fixed
Inputevent leakage fromCommandPalettetoApp.
0.37.0 - 2023-09-15
Added
- Added the command palette https://github.com/Textualize/textual/pull/3058
Inputis now validated when focus moves out of it https://github.com/Textualize/textual/pull/3193- Attribute
Input.validate_on(and__init__parameter of the same name) to customise when validation occurs https://github.com/Textualize/textual/pull/3193 - Screen-specific (sub-)title attributes https://github.com/Textualize/textual/pull/3199:
Screen.TITLEScreen.SUB_TITLEScreen.titleScreen.sub_title
- Properties
Header.screen_titleandHeader.screen_sub_titlehttps://github.com/Textualize/textual/pull/3199 - Added
DirectoryTree.DirectorySelectedmessage https://github.com/Textualize/textual/issues/3200 - Added
widgets.Collapsiblecontributed by Sunyoung Yoo https://github.com/Textualize/textual/pull/2989
Fixed
- Fixed a crash when removing an option from an
OptionListwhile the mouse is hovering over the last option https://github.com/Textualize/textual/issues/3270 - Fixed a crash in
MarkdownViewerwhen clicking on a link that contains an anchor https://github.com/Textualize/textual/issues/3094 - Fixed wrong message pump in pop_screen https://github.com/Textualize/textual/pull/3315
Changed
- Widget.notify and App.notify are now thread-safe https://github.com/Textualize/textual/pull/3275
- Breaking change: Widget.notify and App.notify now return None https://github.com/Textualize/textual/pull/3275
- App.unnotify is now private (renamed to App._unnotify) https://github.com/Textualize/textual/pull/3275
Markdown.loadwill now attempt to scroll to a related heading if an anchor is provided https://github.com/Textualize/textual/pull/3244ProgressBarexplicitly supports being set back to its indeterminate state https://github.com/Textualize/textual/pull/3286
0.36.0 - 2023-09-05
Added
- TCSS styles
layerandlayerscan be strings https://github.com/Textualize/textual/pull/3169 App.return_codefor the app return code https://github.com/Textualize/textual/pull/3202- Added
animateswitch toTree.scroll_to_lineandTree.scroll_to_nodehttps://github.com/Textualize/textual/pull/3210 - Added
Rulewidget https://github.com/Textualize/textual/pull/3209 - Added App.current_mode to get the current mode https://github.com/Textualize/textual/pull/3233
Changed
- Reactive callbacks are now scheduled on the message pump of the reactable that is watching instead of the owner of reactive attribute https://github.com/Textualize/textual/pull/3065
- Callbacks scheduled with
call_nextwill now have the same prevented messages as when the callback was scheduled https://github.com/Textualize/textual/pull/3065 - Added
cursor_typeto theDataTableconstructor. - Fixed
push_screennot updating Screen.CSS styles https://github.com/Textualize/textual/issues/3217 DataTable.add_rowacceptsheight=Noneto automatically compute optimal height for a row https://github.com/Textualize/textual/pull/3213
Fixed
- Fixed flicker when calling pop_screen multiple times https://github.com/Textualize/textual/issues/3126
- Fixed setting styles.layout not updating https://github.com/Textualize/textual/issues/3047
- Fixed flicker when scrolling tree up or down a line https://github.com/Textualize/textual/issues/3206
0.35.1
Fixed
- Fixed flash of 80x24 interface in textual-web
0.35.0
Added
- Ability to enable/disable tabs via the reactive
disabledin tab panes https://github.com/Textualize/textual/pull/3152 - Textual-web driver support for Windows
Fixed
- Could not hide/show/disable/enable tabs in nested
TabbedContenthttps://github.com/Textualize/textual/pull/3150
0.34.0 - 2023-08-22
Added
- Methods
TabbedContent.disable_tabandTabbedContent.enable_tabhttps://github.com/Textualize/textual/pull/3112 - Methods
Tabs.disableandTabs.enablehttps://github.com/Textualize/textual/pull/3112 - Messages
Tab.Disabled,Tab.Enabled,Tabs.TabDisabledandTabs.Enabledhttps://github.com/Textualize/textual/pull/3112 - Methods
TabbedContent.hide_tabandTabbedContent.show_tabhttps://github.com/Textualize/textual/pull/3112 - Methods
Tabs.hideandTabs.showhttps://github.com/Textualize/textual/pull/3112 - Messages
Tabs.TabHiddenandTabs.TabShownhttps://github.com/Textualize/textual/pull/3112 - Added
ListView.extendmethod to append multiple items https://github.com/Textualize/textual/pull/3012
Changed
- grid-columns and grid-rows now accept an
autotoken to detect the optimal size https://github.com/Textualize/textual/pull/3107 - LoadingIndicator now has a minimum height of 1 line.
Fixed
- Fixed auto height container with default grid-rows https://github.com/Textualize/textual/issues/1597
- Fixed
page_upandpage_downbug inDataTablewhenshow_header = Falsehttps://github.com/Textualize/textual/pull/3093 - Fixed issue with visible children inside invisible container when moving focus https://github.com/Textualize/textual/issues/3053
0.33.0 - 2023-08-15
Fixed
- Fixed unintuitive sizing behaviour of TabbedContent https://github.com/Textualize/textual/issues/2411
- Fixed relative units not always expanding auto containers https://github.com/Textualize/textual/pull/3059
- Fixed background refresh https://github.com/Textualize/textual/issues/3055
- Fixed
SelectionList.clear_optionshttps://github.com/Textualize/textual/pull/3075 MouseMoveevents bubble up from widgets.AppandScreenreceiveMouseMoveevents even if there's no Widget under the cursor. https://github.com/Textualize/textual/issues/2905- Fixed click on double-width char https://github.com/Textualize/textual/issues/2968
Changed
- Breaking change:
DOMNode.visiblenow takes into account full DOM to report whether a node is visible or not.
Removed
- Property
Widget.focusable_childrenhttps://github.com/Textualize/textual/pull/3070
Added
- Added an interface for replacing prompt of an individual option in an
OptionListhttps://github.com/Textualize/textual/issues/2603 - Added
DirectoryTree.reload_nodemethod https://github.com/Textualize/textual/issues/2757 - Added widgets.Digit https://github.com/Textualize/textual/pull/3073
- Added
BORDER_TITLEandBORDER_SUBTITLEclassvars to Widget https://github.com/Textualize/textual/pull/3097
Changed
- DescendantBlur and DescendantFocus can now be used with @on decorator
0.32.0 - 2023-08-03
Added
- Added widgets.Log
- Added Widget.is_vertical_scroll_end, Widget.is_horizontal_scroll_end, Widget.is_vertical_scrollbar_grabbed, Widget.is_horizontal_scrollbar_grabbed
Changed
- Breaking change: Renamed TextLog to RichLog
0.31.0 - 2023-08-01
Added
- Added App.begin_capture_print, App.end_capture_print, Widget.begin_capture_print, Widget.end_capture_print https://github.com/Textualize/textual/issues/2952
- Added the ability to run async methods as thread workers https://github.com/Textualize/textual/pull/2938
- Added
App.stop_animationhttps://github.com/Textualize/textual/issues/2786 - Added
Widget.stop_animationhttps://github.com/Textualize/textual/issues/2786
Changed
- Breaking change: Creating a thread worker now requires that a
thread=Truekeyword argument is passed https://github.com/Textualize/textual/pull/2938 - Breaking change:
Markdown.loadno longer captures all errors and returns abool, errors now propagate https://github.com/Textualize/textual/issues/2956 - Breaking change: the default style of a
DataTablenow hasmax-height: 100%https://github.com/Textualize/textual/issues/2959
Fixed
- Fixed a crash when a
SelectionListhad a prompt wider than itself https://github.com/Textualize/textual/issues/2900 - Fixed a bug where
Clickevents were bubbling up fromSwitchwidgets https://github.com/Textualize/textual/issues/2366 - Fixed a crash when using empty CSS variables https://github.com/Textualize/textual/issues/1849
- Fixed issue with tabs in TextLog https://github.com/Textualize/textual/issues/3007
- Fixed a bug with
DataTablehover highlighting https://github.com/Textualize/textual/issues/2909
0.30.0 - 2023-07-17
Added
- Added
DataTable.remove_columnmethod https://github.com/Textualize/textual/pull/2899 - Added notifications https://github.com/Textualize/textual/pull/2866
- Added
on_completecallback to scroll methods https://github.com/Textualize/textual/pull/2903
Fixed
- Fixed CancelledError issue with timer https://github.com/Textualize/textual/issues/2854
- Fixed Toggle Buttons issue with not being clickable/hoverable https://github.com/Textualize/textual/pull/2930
0.29.0 - 2023-07-03
Changed
- Factored dev tools (
textualcommand) in to external lib (textual-dev).
Added
- Updated
DataTable.get_celltype hints to accept string keys https://github.com/Textualize/textual/issues/2586 - Added
DataTable.get_cell_coordinatemethod - Added
DataTable.get_row_indexmethod https://github.com/Textualize/textual/issues/2587 - Added
DataTable.get_column_indexmethod - Added can-focus pseudo-class to target widgets that may receive focus
- Make
Markdown.updateoptionally awaitable https://github.com/Textualize/textual/pull/2838 - Added
defaultparameter toDataTable.add_columnfor populating existing rows https://github.com/Textualize/textual/pull/2836 - Added can-focus pseudo-class to target widgets that may receive focus
Fixed
- Fixed crash when columns were added to populated
DataTablehttps://github.com/Textualize/textual/pull/2836 - Fixed issues with opacity on Screens https://github.com/Textualize/textual/issues/2616
- Fixed style problem with selected selections in a non-focused selection list https://github.com/Textualize/textual/issues/2768
- Fixed sys.stdout and sys.stderr being None https://github.com/Textualize/textual/issues/2879
0.28.1 - 2023-06-20
Fixed
- Fixed indented code blocks not showing up in
Markdownhttps://github.com/Textualize/textual/issues/2781 - Fixed inline code blocks in lists showing out of order in
Markdownhttps://github.com/Textualize/textual/issues/2676 - Fixed list items in a
Markdownbeing added to the focus chain https://github.com/Textualize/textual/issues/2380 - Fixed
Tabsposting unnecessary messages when removing non-active tabs https://github.com/Textualize/textual/issues/2807 - call_after_refresh will preserve the sender within the callback https://github.com/Textualize/textual/pull/2806
Added
- Added a method of allowing third party code to handle unhandled tokens in
Markdownhttps://github.com/Textualize/textual/pull/2803 - Added
MarkdownBlockas an exported symbol intextual.widgets.markdownhttps://github.com/Textualize/textual/pull/2803
Changed
- Tooltips are now inherited, so will work with compound widgets
0.28.0 - 2023-06-19
Added
- The devtools console now confirms when CSS files have been successfully loaded after a previous error https://github.com/Textualize/textual/pull/2716
- Class variable
CSSto screens https://github.com/Textualize/textual/issues/2137 - Class variable
CSS_PATHto screens https://github.com/Textualize/textual/issues/2137 - Added
cursor_foreground_priorityandcursor_background_prioritytoDataTablehttps://github.com/Textualize/textual/pull/2736 - Added Region.center
- Added
centerparameter toWidget.scroll_to_region - Added
origin_visibleparameter toWidget.scroll_to_region - Added
origin_visibleparameter toWidget.scroll_to_center - Added
TabbedContent.tab_counthttps://github.com/Textualize/textual/pull/2751 - Added
TabbedContent.add_panehttps://github.com/Textualize/textual/pull/2751 - Added
TabbedContent.remove_panehttps://github.com/Textualize/textual/pull/2751 - Added
TabbedContent.clear_paneshttps://github.com/Textualize/textual/pull/2751 - Added
TabbedContent.Clearedhttps://github.com/Textualize/textual/pull/2751
Fixed
- Fixed setting
TreeNode.labelon an existingTreenode not immediately refreshing https://github.com/Textualize/textual/pull/2713 - Correctly implement
__eq__protocol in DataTable https://github.com/Textualize/textual/pull/2705 - Fixed exceptions in Pilot tests being silently ignored https://github.com/Textualize/textual/pull/2754
- Fixed issue where internal data of
OptionListcould be invalid for short window afterclear_optionshttps://github.com/Textualize/textual/pull/2754 - Fixed
Tooltipcausing aquery_oneon a loneStaticto fail https://github.com/Textualize/textual/issues/2723 - Nested widgets wouldn't lose focus when parent is disabled https://github.com/Textualize/textual/issues/2772
- Fixed the
TabsUnderlinehighlight getting "lost" in some extreme situations https://github.com/Textualize/textual/pull/2751
Changed
- Breaking change: The
@ondecorator will now match a message class and any child classes https://github.com/Textualize/textual/pull/2746 - Breaking change: Styles update to checkbox, radiobutton, OptionList, Select, SelectionList, Switch https://github.com/Textualize/textual/pull/2777
Tabs.add_tabis now optionally awaitable https://github.com/Textualize/textual/pull/2778Tabs.add_tabnow takesbeforeandafterarguments to position a new tab https://github.com/Textualize/textual/pull/2778Tabs.remove_tabis now optionally awaitable https://github.com/Textualize/textual/pull/2778- Breaking change:
Tabs.clearhas been changed from returningselfto being optionally awaitable https://github.com/Textualize/textual/pull/2778
0.27.0 - 2023-06-01
Fixed
- Fixed zero division error https://github.com/Textualize/textual/issues/2673
- Fix
scroll_to_centerwhen there were nested layers out of view (Compositor full_map not populated fully) https://github.com/Textualize/textual/pull/2684 - Fix crash when
Selectwidget value attribute was set incomposehttps://github.com/Textualize/textual/pull/2690 - Issue with computing progress in workers https://github.com/Textualize/textual/pull/2686
- Issues with
switch_screennot updating the results callback appropriately https://github.com/Textualize/textual/issues/2650 - Fixed incorrect mount order https://github.com/Textualize/textual/pull/2702
Added
workdecorator acceptsdescriptionparameter to add debug string https://github.com/Textualize/textual/issues/2597- Added
SelectionListwidget https://github.com/Textualize/textual/pull/2652 App.AUTO_FOCUSto set auto focus on all screens https://github.com/Textualize/textual/issues/2594- Option to
scroll_to_centerto ensure we don't scroll such that the top left corner of the widget is not visible https://github.com/Textualize/textual/pull/2682 - Added
Widget.tooltipproperty https://github.com/Textualize/textual/pull/2670 - Added
Region.inflecthttps://github.com/Textualize/textual/pull/2670 SuggesterAPI to compose with widgets for automatic suggestions https://github.com/Textualize/textual/issues/2330SuggestFromListclass to let widgets get completions from a fixed set of options https://github.com/Textualize/textual/pull/2604Inputhas a new component classinput--suggestionhttps://github.com/Textualize/textual/pull/2604- Added
Widget.remove_childrenhttps://github.com/Textualize/textual/pull/2657 - Added
Validatorframework and validation forInputhttps://github.com/Textualize/textual/pull/2600 - Ability to have private and public validate methods https://github.com/Textualize/textual/pull/2708
- Ability to have private compute methods https://github.com/Textualize/textual/pull/2708
- Added
message_hookto App.run_test https://github.com/Textualize/textual/pull/2702 - Added
Sparklinewidget https://github.com/Textualize/textual/pull/2631
Changed
Placeholdernow sets its color cycle per app https://github.com/Textualize/textual/issues/2590- Footer now clears key highlight regardless of whether it's in the active screen or not https://github.com/Textualize/textual/issues/2606
- The default Widget repr no longer displays classes and pseudo-classes (to reduce noise in logs). Add them to your
__rich_repr__method if needed. https://github.com/Textualize/textual/pull/2623 - Setting
Screen.AUTO_FOCUStoNonewill inheritAUTO_FOCUSfrom the app instead of disabling it https://github.com/Textualize/textual/issues/2594 - Setting
Screen.AUTO_FOCUSto""will disable it on the screen https://github.com/Textualize/textual/issues/2594 - Messages now have a
handler_nameclass var which contains the name of the default handler method. Message.controlis now a property instead of a class variable. https://github.com/Textualize/textual/issues/2528TreeandDirectoryTreeMessages no longer accept atreeparameter, usingself.node.treeinstead. https://github.com/Textualize/textual/issues/2529- Keybinding right in
Inputis also used to accept a suggestion if the cursor is at the end of the input https://github.com/Textualize/textual/pull/2604 Input.__init__now accepts asuggesterattribute for completion suggestions https://github.com/Textualize/textual/pull/2604- Using
switch_screento switch to the currently active screen is now a no-op https://github.com/Textualize/textual/pull/2692 - Breaking change: removed
reactive.py::Reactive.varin favor ofreactive.py::varhttps://github.com/Textualize/textual/pull/2709/
Removed
Placeholder.reset_color_cycle- Removed
Widget.reset_focus(now calledWidget.blur) https://github.com/Textualize/textual/issues/2642
0.26.0 - 2023-05-20
Added
- Added
Widget.can_view
Changed
- Textual will now scroll focused widgets to center if not in view
0.25.0 - 2023-05-17
Changed
- App
titleandsub_titleattributes can be set to any type https://github.com/Textualize/textual/issues/2521 DirectoryTreenow loads directory contents in a worker https://github.com/Textualize/textual/issues/2456- Only a single error will be written by default, unless in dev mode ("debug" in App.features) https://github.com/Textualize/textual/issues/2480
- Using
Widget.move_childwhere the target and the child being moved are the same is now a no-op https://github.com/Textualize/textual/issues/1743 - Calling
dismisson a screen that is not at the top of the stack now raises an exception https://github.com/Textualize/textual/issues/2575 MessagePump.call_after_refreshandMessagePump.call_laterwill now returnFalseif the callback could not be scheduled. https://github.com/Textualize/textual/pull/2584
Fixed
- Fixed
ZeroDivisionErrorinresolve_fraction_unithttps://github.com/Textualize/textual/issues/2502 - Fixed
TreeNode.expandandTreeNode.expand_allnot posting aTree.NodeExpandedmessage https://github.com/Textualize/textual/issues/2535 - Fixed
TreeNode.collapseandTreeNode.collapse_allnot posting aTree.NodeCollapsedmessage https://github.com/Textualize/textual/issues/2535 - Fixed
TreeNode.toggleandTreeNode.toggle_allnot posting aTree.NodeExpandedorTree.NodeCollapsedmessage https://github.com/Textualize/textual/issues/2535 footer--descriptioncomponent class was being ignored https://github.com/Textualize/textual/issues/2544- Pasting empty selection in
Inputwould raise an exception https://github.com/Textualize/textual/issues/2563 Screen.AUTO_FOCUSnow focuses the first focusable widget that matches the selector https://github.com/Textualize/textual/issues/2578Screen.AUTO_FOCUSnow works on the default screen on startup https://github.com/Textualize/textual/pull/2581- Fix for setting dark in App
__init__https://github.com/Textualize/textual/issues/2583 - Fix issue with scrolling and docks https://github.com/Textualize/textual/issues/2525
- Fix not being able to use CSS classes with
Tabhttps://github.com/Textualize/textual/pull/2589
Added
- Class variable
AUTO_FOCUSto screens https://github.com/Textualize/textual/issues/2457 - Added
NULL_SPACINGandNULL_REGIONto geometry.py
0.24.1 - 2023-05-08
Fixed
- Fix TypeError in code browser
0.24.0 - 2023-05-08
Fixed
- Fixed crash when creating a
DirectoryTreestarting anywhere other than. - Fixed line drawing in
TreewhenTree.show_rootisTruehttps://github.com/Textualize/textual/issues/2397 - Fixed line drawing in
Treenot marking branches as selected when first getting focus https://github.com/Textualize/textual/issues/2397
Changed
- The DataTable cursor is now scrolled into view when the cursor coordinate is changed programmatically https://github.com/Textualize/textual/issues/2459
- run_worker exclusive parameter is now
Falseby default https://github.com/Textualize/textual/pull/2470 - Added
always_updateas an optional argument forreactive.var - Made Binding description default to empty string, which is equivalent to show=False https://github.com/Textualize/textual/pull/2501
- Modified Message to allow it to be used as a dataclass https://github.com/Textualize/textual/pull/2501
- Decorator
@onaccepts arbitrary**kwargsto apply selectors to attributes of the message https://github.com/Textualize/textual/pull/2498
Added
- Property
controlas alias for attributetabsinTabsmessages https://github.com/Textualize/textual/pull/2483 - Experimental: Added "overlay" rule https://github.com/Textualize/textual/pull/2501
- Experimental: Added "constrain" rule https://github.com/Textualize/textual/pull/2501
- Added textual.widgets.Select https://github.com/Textualize/textual/pull/2501
- Added Region.translate_inside https://github.com/Textualize/textual/pull/2501
TabbedContentnow takes kwargsid,name,classes, anddisabled, upon initialization, like other widgets https://github.com/Textualize/textual/pull/2497- Method
DataTable.move_cursorhttps://github.com/Textualize/textual/issues/2472 - Added
OptionList.add_optionshttps://github.com/Textualize/textual/pull/2508 - Added
TreeNode.is_roothttps://github.com/Textualize/textual/pull/2510 - Added
TreeNode.remove_childrenhttps://github.com/Textualize/textual/pull/2510 - Added
TreeNode.removehttps://github.com/Textualize/textual/pull/2510 - Added classvar
Message.ALLOW_SELECTOR_MATCHhttps://github.com/Textualize/textual/pull/2498 - Added
ALLOW_SELECTOR_MATCHto all built-in messages associated with widgets https://github.com/Textualize/textual/pull/2498 - Markdown document sub-widgets now reference the container document
- Table of contents of a markdown document now references the document
- Added the
controlproperty to messagesDirectoryTree.FileSelectedListViewHighlightedSelected
MarkdownTableOfContentsUpdatedTableOfContentsSelectedLinkClicked
OptionListOptionHighlightedOptionSelected
RadioSet.ChangedTabContent.TabActivatedTreeNodeSelectedNodeHighlightedNodeExpandedNodeCollapsed
0.23.0 - 2023-05-03
Fixed
- Fixed
outlinetop and bottom not handling alpha - https://github.com/Textualize/textual/issues/2371 - Fixed
!importantnot applying toalignhttps://github.com/Textualize/textual/issues/2420 - Fixed
!importantnot applying toborderhttps://github.com/Textualize/textual/issues/2420 - Fixed
!importantnot applying tocontent-alignhttps://github.com/Textualize/textual/issues/2420 - Fixed
!importantnot applying tooutlinehttps://github.com/Textualize/textual/issues/2420 - Fixed
!importantnot applying tooverflowhttps://github.com/Textualize/textual/issues/2420 - Fixed
!importantnot applying toscrollbar-sizehttps://github.com/Textualize/textual/issues/2420 - Fixed
outline-rightnot being recognised https://github.com/Textualize/textual/issues/2446 - Fixed OSError when a file system is not available https://github.com/Textualize/textual/issues/2468
Changed
- Setting attributes with a
compute_method will now raise anAttributeErrorhttps://github.com/Textualize/textual/issues/2383 - Unknown psuedo-selectors will now raise a tokenizer error (previously they were silently ignored) https://github.com/Textualize/textual/pull/2445
- Breaking change:
DirectoryTree.FileSelected.pathis now always aPathhttps://github.com/Textualize/textual/issues/2448 - Breaking change:
Directorytree.load_directoryrenamed toDirectorytree._load_directoryhttps://github.com/Textualize/textual/issues/2448 - Unknown pseudo-selectors will now raise a tokenizer error (previously they were silently ignored) https://github.com/Textualize/textual/pull/2445
Added
- Watch methods can now optionally be private https://github.com/Textualize/textual/issues/2382
- Added
DirectoryTree.pathreactive attribute https://github.com/Textualize/textual/issues/2448 - Added
DirectoryTree.FileSelected.nodehttps://github.com/Textualize/textual/pull/2463 - Added
DirectoryTree.reloadhttps://github.com/Textualize/textual/issues/2448 - Added textual.on decorator https://github.com/Textualize/textual/issues/2398
0.22.3 - 2023-04-29
Fixed
- Fixed
textual runon Windows https://github.com/Textualize/textual/issues/2406 - Fixed top border of button hover state
0.22.2 - 2023-04-29
Added
- Added
TreeNode.treeas a read-only public attribute https://github.com/Textualize/textual/issues/2413
Fixed
- Fixed superfluous style updates for focus-within pseudo-selector
0.22.1 - 2023-04-28
Fixed
- Fixed timer issue https://github.com/Textualize/textual/issues/2416
- Fixed
textual runissue https://github.com/Textualize/textual/issues/2391
0.22.0 - 2023-04-27
Fixed
- Fixed broken fr units when there is a min or max dimension https://github.com/Textualize/textual/issues/2378
- Fixed plain text in Markdown code blocks with no syntax being difficult to read https://github.com/Textualize/textual/issues/2400
Added
- Added
ProgressBarwidget https://github.com/Textualize/textual/pull/2333
Changed
- All
textual.containersare now1frin relevant dimensions by default https://github.com/Textualize/textual/pull/2386
0.21.0 - 2023-04-26
Changed
textual runexecs apps in a new context.- Textual console no longer parses console markup.
- Breaking change:
Containerno longer shows required scrollbars by default https://github.com/Textualize/textual/issues/2361 - Breaking change:
VerticalScrollno longer shows a required horizontal scrollbar by default - Breaking change:
HorizontalScrollno longer shows a required vertical scrollbar by default - Breaking change: Renamed
App.action_add_class_toApp.action_add_class - Breaking change: Renamed
App.action_remove_class_toApp.action_remove_class - Breaking change:
RadioSetis now a single focusable widget https://github.com/Textualize/textual/pull/2372 - Breaking change: Removed
containers.Content(usecontainers.VerticalScrollnow)
Added
- Added
-cswitch totextual runwhich runs commands in a Textual dev environment. - Breaking change: standard keyboard scrollable navigation bindings have been moved off
Widgetand onto a new base class for scrollable containers (see also below addition) https://github.com/Textualize/textual/issues/2332 ScrollViewnow inherits fromScrollableContainerrather thanWidgethttps://github.com/Textualize/textual/issues/2332- Containers no longer inherit any bindings from
Widgethttps://github.com/Textualize/textual/issues/2331 - Added
ScrollableContainer; a container class that binds the common navigation keys to scroll actions (see also above breaking change) https://github.com/Textualize/textual/issues/2332
Fixed
- Fixed dark mode toggles in a "child" screen not updating a "parent" screen https://github.com/Textualize/textual/issues/1999
- Fixed "panel" border not exposed via CSS
- Fixed
TabbedContent.activechanges not changing the actual content https://github.com/Textualize/textual/issues/2352 - Fixed broken color on macOS Terminal https://github.com/Textualize/textual/issues/2359
0.20.1 - 2023-04-18
Fix
- New fix for stuck tabs underline https://github.com/Textualize/textual/issues/2229
0.20.0 - 2023-04-18
Changed
- Changed signature of Driver. Technically a breaking change, but unlikely to affect anyone.
- Breaking change: Timer.start is now private, and returns None. There was no reason to call this manually, so unlikely to affect anyone.
- A clicked tab will now be scrolled to the center of its tab container https://github.com/Textualize/textual/pull/2276
- Style updates are now done immediately rather than on_idle https://github.com/Textualize/textual/pull/2304
ButtonVariantis now exported fromtextual.widgets.buttonhttps://github.com/Textualize/textual/issues/2264HorizontalScrollandVerticalScrollare now focusable by default https://github.com/Textualize/textual/pull/2317
Added
- Added
DataTable.remove_rowmethod https://github.com/Textualize/textual/pull/2253 - option
--portto the commandtextual consoleto specify which port the console should connect to https://github.com/Textualize/textual/pull/2258 Widget.scroll_to_centermethod to scroll children to the center of container widget https://github.com/Textualize/textual/pull/2255 and https://github.com/Textualize/textual/pull/2276- Added
TabActivatedmessage toTabbedContenthttps://github.com/Textualize/textual/pull/2260 - Added "panel" border style https://github.com/Textualize/textual/pull/2292
- Added
border-title-color,border-title-background,border-title-stylerules https://github.com/Textualize/textual/issues/2289 - Added
border-subtitle-color,border-subtitle-background,border-subtitle-stylerules https://github.com/Textualize/textual/issues/2289
Fixed
- Fixed order styles are applied in DataTable - allows combining of renderable styles and component classes https://github.com/Textualize/textual/pull/2272
- Fixed key combos with up/down keys in some terminals https://github.com/Textualize/textual/pull/2280
- Fix empty ListView preventing bindings from firing https://github.com/Textualize/textual/pull/2281
- Fix
get_component_stylesreturning incorrect values on first call when combined with pseudoclasses https://github.com/Textualize/textual/pull/2304 - Fixed
active_message_pump.getsometimes resulting in aLookupErrorhttps://github.com/Textualize/textual/issues/2301
0.19.1 - 2023-04-10
Fixed
- Fix viewport units using wrong viewport size https://github.com/Textualize/textual/pull/2247
- Fixed layout not clearing arrangement cache https://github.com/Textualize/textual/pull/2249
0.19.0 - 2023-04-07
Added
- Added support for filtering a
DirectoryTreehttps://github.com/Textualize/textual/pull/2215
Changed
- Allowed border_title and border_subtitle to accept Text objects
- Added additional line around titles
- When a container is auto, relative dimensions in children stretch the container. https://github.com/Textualize/textual/pull/2221
- DataTable page up / down now move cursor
Fixed
- Fixed margin not being respected when width or height is "auto" https://github.com/Textualize/textual/issues/2220
- Fixed issue which prevent scroll_visible from working https://github.com/Textualize/textual/issues/2181
- Fixed missing tracebacks on Windows https://github.com/Textualize/textual/issues/2027
0.18.0 - 2023-04-04
Added
- Added Worker API https://github.com/Textualize/textual/pull/2182
Changed
- Breaking change: Markdown.update is no longer a coroutine https://github.com/Textualize/textual/pull/2182
Fixed
RadioSetis now far less likely to reportpressed_buttonasNonehttps://github.com/Textualize/textual/issues/2203
0.17.3 - 2023-04-02
[Fixed]
- Fixed scrollable area not taking in to account dock https://github.com/Textualize/textual/issues/2188
0.17.2 - 2023-04-02
[Fixed]
- Fixed bindings persistance https://github.com/Textualize/textual/issues/1613
- The
Markdownwidget now auto-increments ordered lists https://github.com/Textualize/textual/issues/2002 - Fixed modal bindings https://github.com/Textualize/textual/issues/2194
- Fix binding enter to active button https://github.com/Textualize/textual/issues/2194
[Changed]
- tab and shift+tab are now defined on Screen.
0.17.1 - 2023-03-30
Fixed
- Fix cursor not hiding on Windows https://github.com/Textualize/textual/issues/2170
- Fixed freeze when ctrl-clicking links https://github.com/Textualize/textual/issues/2167 https://github.com/Textualize/textual/issues/2073
0.17.0 - 2023-03-29
Fixed
- Issue with parsing action strings whose arguments contained quoted closing parenthesis https://github.com/Textualize/textual/pull/2112
- Issues with parsing action strings with tuple arguments https://github.com/Textualize/textual/pull/2112
- Issue with watching for CSS file changes https://github.com/Textualize/textual/pull/2128
- Fix for tabs not invalidating https://github.com/Textualize/textual/issues/2125
- Fixed scrollbar layers issue https://github.com/Textualize/textual/issues/1358
- Fix for interaction between pseudo-classes and widget-level render caches https://github.com/Textualize/textual/pull/2155
Changed
- DataTable now has height: auto by default. https://github.com/Textualize/textual/issues/2117
- Textual will now render strings within renderables (such as tables) as Console Markup by default. You can wrap your text with rich.Text() if you want the original behavior. https://github.com/Textualize/textual/issues/2120
- Some widget methods now return
selfinstead ofNonehttps://github.com/Textualize/textual/pull/2102:Widget:refresh,focus,reset_focusButton.pressDataTable:clear,refresh_coordinate,refresh_row,refresh_column,sortPlacehoder.cycle_variantSwitch.toggleTabs.clearTextLog:write,clearTreeNode:expand,expand_all,collapse,collapse_all,toggle,toggle_allTree:clear,reset
- Screens with alpha in their background color will now blend with the background. https://github.com/Textualize/textual/pull/2139
- Added "thick" border style. https://github.com/Textualize/textual/pull/2139
- message_pump.app will now set the active app if it is not already set.
- DataTable now has max height set to 100vh
Added
- Added auto_scroll attribute to TextLog https://github.com/Textualize/textual/pull/2127
- Added scroll_end switch to TextLog.write https://github.com/Textualize/textual/pull/2127
- Added
Widget.get_pseudo_class_statehttps://github.com/Textualize/textual/pull/2155 - Added Screen.ModalScreen which prevents App from handling bindings. https://github.com/Textualize/textual/pull/2139
- Added TEXTUAL_LOG env var which should be a path that Textual will write verbose logs to (textual devtools is generally preferred) https://github.com/Textualize/textual/pull/2148
- Added textual.logging.TextualHandler logging handler
- Added Query.set_classes, DOMNode.set_classes, and
classessetter for Widget https://github.com/Textualize/textual/issues/1081 - Added
OptionListhttps://github.com/Textualize/textual/pull/2154
0.16.0 - 2023-03-22
Added
- Added
parser_factoryargument toMarkdownandMarkdownViewerconstructors https://github.com/Textualize/textual/pull/2075 - Added
HorizontalScrollhttps://github.com/Textualize/textual/issues/1957 - Added
Centerhttps://github.com/Textualize/textual/issues/1957 - Added
Middlehttps://github.com/Textualize/textual/issues/1957 - Added
VerticalScroll(mimicking the old behaviour ofVertical) https://github.com/Textualize/textual/issues/1957 - Added
Widget.border_titleandWidget.border_subtitleto set border (sub)title for a widget https://github.com/Textualize/textual/issues/1864 - Added CSS styles
border_title_alignandborder_subtitle_align. - Added
TabbedContentwidget https://github.com/Textualize/textual/pull/2059 - Added
get_child_by_typemethod to widgets / app https://github.com/Textualize/textual/pull/2059 - Added
Widget.render_strmethod https://github.com/Textualize/textual/pull/2059 - Added TEXTUAL_DRIVER environment variable
Changed
- Dropped "loading-indicator--dot" component style from LoadingIndicator https://github.com/Textualize/textual/pull/2050
- Tabs widget now sends Tabs.Cleared when there is no active tab.
- Breaking change: changed default behaviour of
Vertical(seeVerticalScroll) https://github.com/Textualize/textual/issues/1957 - The default
overflowstyle forHorizontalwas changed tohidden hiddenhttps://github.com/Textualize/textual/issues/1957 DirectoryTreealso acceptspathlib.Pathobjects as the path to list https://github.com/Textualize/textual/issues/1438
Removed
- Removed
senderattribute from messages. It's now just private (_sender). https://github.com/Textualize/textual/pull/2071
Fixed
- Fixed borders not rendering correctly. https://github.com/Textualize/textual/pull/2074
- Fix for error when removing nodes. https://github.com/Textualize/textual/issues/2079
0.15.1 - 2023-03-14
Fixed
- Fixed how the namespace for messages is calculated to facilitate inheriting messages https://github.com/Textualize/textual/issues/1814
Tabis now correctly made available fromtextual.widgets. https://github.com/Textualize/textual/issues/2044
0.15.0 - 2023-03-13
Fixed
- Fixed container not resizing when a widget is removed https://github.com/Textualize/textual/issues/2007
- Fixes issue where the horizontal scrollbar would be incorrectly enabled https://github.com/Textualize/textual/pull/2024
0.15.0 - 2023-03-13
Changed
- Fixed container not resizing when a widget is removed https://github.com/Textualize/textual/issues/2007
- Fixed issue where the horizontal scrollbar would be incorrectly enabled https://github.com/Textualize/textual/pull/2024
- Fixed
Pilot.clicknot correctly creating the mouse events https://github.com/Textualize/textual/issues/2022 - Fixes issue where the horizontal scrollbar would be incorrectly enabled https://github.com/Textualize/textual/pull/2024
- Fixes for tracebacks not appearing on exit https://github.com/Textualize/textual/issues/2027
Added
- Added a LoadingIndicator widget https://github.com/Textualize/textual/pull/2018
- Added Tabs Widget https://github.com/Textualize/textual/pull/2020
Changed
- Breaking change: Renamed Widget.action and App.action to Widget.run_action and App.run_action
- Added
shift,metaandcontrolarguments toPilot.click.
0.14.0 - 2023-03-09
Changed
- Breaking change: There is now only
post_messageto post events, which is non-async,post_message_no_waitwas dropped. https://github.com/Textualize/textual/pull/1940 - Breaking change: The Timer class now has just one method to stop it,
Timer.stopwhich is non sync https://github.com/Textualize/textual/pull/1940 - Breaking change: Messages don't require a
senderin their constructor https://github.com/Textualize/textual/pull/1940 - Many messages have grown a
controlproperty which returns the control they relate to. https://github.com/Textualize/textual/pull/1940 - Updated styling to make it clear DataTable grows horizontally https://github.com/Textualize/textual/pull/1946
- Changed the
Checkboxcharacter due to issues with Windows Terminal and Windows 10 https://github.com/Textualize/textual/issues/1934 - Changed the
RadioButtoncharacter due to issues with Windows Terminal and Windows 10 and 11 https://github.com/Textualize/textual/issues/1934 - Changed the
Markdowninitial bullet character due to issues with Windows Terminal and Windows 10 and 11 https://github.com/Textualize/textual/issues/1982 - The underscore
_is no longer a special alias for the methodpilot.press
Added
- Added
data_tableattribute to DataTable events https://github.com/Textualize/textual/pull/1940 - Added
list_viewattribute toListViewevents https://github.com/Textualize/textual/pull/1940 - Added
radio_setattribute toRadioSetevents https://github.com/Textualize/textual/pull/1940 - Added
switchattribute toSwitchevents https://github.com/Textualize/textual/pull/1940 - Added
hoverandclickmethods toPilothttps://github.com/Textualize/textual/pull/1966 - Breaking change: Added
toggle_buttonattribute to RadioButton and Checkbox events, replacesinputhttps://github.com/Textualize/textual/pull/1940 - A percentage alpha can now be applied to a border https://github.com/Textualize/textual/issues/1863
- Added
Color.multiply_alpha. - Added
ContentSwitcherhttps://github.com/Textualize/textual/issues/1945
Fixed
- Fixed bug that prevented pilot from pressing some keys https://github.com/Textualize/textual/issues/1815
- DataTable race condition that caused crash https://github.com/Textualize/textual/pull/1962
- Fixed scrollbar getting "stuck" to cursor when cursor leaves window during drag https://github.com/Textualize/textual/pull/1968 https://github.com/Textualize/textual/pull/2003
- DataTable crash when enter pressed when table is empty https://github.com/Textualize/textual/pull/1973
0.13.0 - 2023-03-02
Added
- Added
Checkboxhttps://github.com/Textualize/textual/pull/1872 - Added
RadioButtonhttps://github.com/Textualize/textual/pull/1872 - Added
RadioSethttps://github.com/Textualize/textual/pull/1872
Changed
- Widget scrolling methods (such as
Widget.scroll_homeandWidget.scroll_end) now perform the scroll after the next refresh https://github.com/Textualize/textual/issues/1774 - Buttons no longer accept arbitrary renderables https://github.com/Textualize/textual/issues/1870
Fixed
- Scrolling with cursor keys now moves just one cell https://github.com/Textualize/textual/issues/1897
- Fix exceptions in watch methods being hidden on startup https://github.com/Textualize/textual/issues/1886
- Fixed scrollbar size miscalculation https://github.com/Textualize/textual/pull/1910
- Fixed slow exit on some terminals https://github.com/Textualize/textual/issues/1920
0.12.1 - 2023-02-25
Fixed
- Fix for batch update glitch https://github.com/Textualize/textual/pull/1880
0.12.0 - 2023-02-24
Added
- Added
App.batch_updatehttps://github.com/Textualize/textual/pull/1832 - Added horizontal rule to Markdown https://github.com/Textualize/textual/pull/1832
- Added
Widget.disabledhttps://github.com/Textualize/textual/pull/1785 - Added
DOMNode.notify_style_updateto replacemessages.StylesUpdatedmessage https://github.com/Textualize/textual/pull/1861 - Added
DataTable.show_row_labelsreactive to show and hide row labels https://github.com/Textualize/textual/pull/1868 - Added
DataTable.RowLabelSelectedevent, which is emitted when a row label is clicked https://github.com/Textualize/textual/pull/1868 - Added
MessagePump.preventcontext manager to temporarily suppress a given message type https://github.com/Textualize/textual/pull/1866
Changed
- Scrolling by page now adds to current position.
- Markdown lists have been polished: a selection of bullets, better alignment of numbers, style tweaks https://github.com/Textualize/textual/pull/1832
- Added alternative method of composing Widgets https://github.com/Textualize/textual/pull/1847
- Added
labelparameter toDataTable.add_rowhttps://github.com/Textualize/textual/pull/1868 - Breaking change: Some
DataTablecomponent classes were renamed - see PR for details https://github.com/Textualize/textual/pull/1868
Removed
- Removed
screen.visible_widgetsandscreen.widgets - Removed
StylesUpdatemessage. https://github.com/Textualize/textual/pull/1861
Fixed
- Numbers in a descendant-combined selector no longer cause an error https://github.com/Textualize/textual/issues/1836
- Fixed superfluous scrolling when focusing a docked widget https://github.com/Textualize/textual/issues/1816
- Fixes walk_children which was returning more than one screen https://github.com/Textualize/textual/issues/1846
- Fixed issue with watchers fired for detached nodes https://github.com/Textualize/textual/issues/1846
0.11.1 - 2023-02-17
Fixed
- DataTable fix issue where offset cache was not being used https://github.com/Textualize/textual/pull/1810
- DataTable scrollbars resize correctly when header is toggled https://github.com/Textualize/textual/pull/1803
- DataTable location mapping cleared when clear called https://github.com/Textualize/textual/pull/1809
0.11.0 - 2023-02-15
Added
- Added
TreeNode.expand_allhttps://github.com/Textualize/textual/issues/1430 - Added
TreeNode.collapse_allhttps://github.com/Textualize/textual/issues/1430 - Added
TreeNode.toggle_allhttps://github.com/Textualize/textual/issues/1430 - Added the coroutines
Animator.wait_until_completeandpilot.wait_for_scheduled_animationsthat allow waiting for all current and scheduled animations https://github.com/Textualize/textual/issues/1658 - Added the method
Animator.is_being_animatedthat checks if an attribute of an object is being animated or is scheduled for animation - Added more keyboard actions and related bindings to
Inputhttps://github.com/Textualize/textual/pull/1676 - Added App.scroll_sensitivity_x and App.scroll_sensitivity_y to adjust how many lines the scroll wheel moves the scroll position https://github.com/Textualize/textual/issues/928
- Added Shift+scroll wheel and ctrl+scroll wheel to scroll horizontally
- Added
Tree.action_toggle_nodeto toggle a node without selecting, and bound it to Space https://github.com/Textualize/textual/issues/1433 - Added
Tree.resetto fully reset aTreehttps://github.com/Textualize/textual/issues/1437 - Added
DataTable.sortto sort rows https://github.com/Textualize/textual/pull/1638 - Added
DataTable.get_cellto retrieve a cell by column/row keys https://github.com/Textualize/textual/pull/1638 - Added
DataTable.get_cell_atto retrieve a cell by coordinate https://github.com/Textualize/textual/pull/1638 - Added
DataTable.update_cellto update a cell by column/row keys https://github.com/Textualize/textual/pull/1638 - Added
DataTable.update_cell_atto update a cell at a coordinate https://github.com/Textualize/textual/pull/1638 - Added
DataTable.ordered_rowsproperty to retrieveRows as they're currently ordered https://github.com/Textualize/textual/pull/1638 - Added
DataTable.ordered_columnsproperty to retrieveColumns as they're currently ordered https://github.com/Textualize/textual/pull/1638 - Added
DataTable.coordinate_to_cell_keyto find the key for the cell at a coordinate https://github.com/Textualize/textual/pull/1638 - Added
DataTable.is_valid_coordinatehttps://github.com/Textualize/textual/pull/1638 - Added
DataTable.is_valid_row_indexhttps://github.com/Textualize/textual/pull/1638 - Added
DataTable.is_valid_column_indexhttps://github.com/Textualize/textual/pull/1638 - Added attributes to events emitted from
DataTableindicating row/column/cell keys https://github.com/Textualize/textual/pull/1638 - Added
DataTable.get_rowto retrieve the values from a row by key https://github.com/Textualize/textual/pull/1786 - Added
DataTable.get_row_atto retrieve the values from a row by index https://github.com/Textualize/textual/pull/1786 - Added
DataTable.get_columnto retrieve the values from a column by key https://github.com/Textualize/textual/pull/1786 - Added
DataTable.get_column_atto retrieve the values from a column by index https://github.com/Textualize/textual/pull/1786 - Added
DataTable.HeaderSelectedwhich is posted when header label clicked https://github.com/Textualize/textual/pull/1788 - Added
DOMNode.watchandDOMNode.is_attachedmethods https://github.com/Textualize/textual/pull/1750 - Added
DOMNode.css_treewhich is a renderable that shows the DOM and CSS https://github.com/Textualize/textual/pull/1778 - Added
DOMNode.children_viewwhich is a view on to a nodes children list, use for querying https://github.com/Textualize/textual/pull/1778 - Added
MarkdownandMarkdownViewerwidgets. - Added
--screenshotoption totextual run
Changed
- Breaking change:
TreeNodecan no longer be imported fromtextual.widgets; it is now available viafrom textual.widgets.tree import TreeNode. https://github.com/Textualize/textual/pull/1637 Treenow shows a (subdued) cursor for a highlighted node when focus has moved elsewhere https://github.com/Textualize/textual/issues/1471DataTable.add_rownow acceptskeyargument to uniquely identify the row https://github.com/Textualize/textual/pull/1638DataTable.add_columnnow acceptskeyargument to uniquely identify the column https://github.com/Textualize/textual/pull/1638DataTable.add_rowandDataTable.add_columnnow return lists of keys identifying the added rows/columns https://github.com/Textualize/textual/pull/1638- Breaking change:
DataTable.get_cell_valuerenamed toDataTable.get_value_athttps://github.com/Textualize/textual/pull/1638 DataTable.row_countis now a property https://github.com/Textualize/textual/pull/1638- Breaking change:
DataTable.cursor_cellrenamed toDataTable.cursor_coordinatehttps://github.com/Textualize/textual/pull/1638- The method
validate_cursor_cellwas renamed tovalidate_cursor_coordinate. - The method
watch_cursor_cellwas renamed towatch_cursor_coordinate.
- The method
- Breaking change:
DataTable.hover_cellrenamed toDataTable.hover_coordinatehttps://github.com/Textualize/textual/pull/1638- The method
validate_hover_cellwas renamed tovalidate_hover_coordinate.
- The method
- Breaking change:
DataTable.datastructure changed, and will be made private in upcoming release https://github.com/Textualize/textual/pull/1638 - Breaking change:
DataTable.refresh_cellwas renamed toDataTable.refresh_coordinatehttps://github.com/Textualize/textual/pull/1638 - Breaking change:
DataTable.get_row_heightnow takes aRowKeyargument instead of a row index https://github.com/Textualize/textual/pull/1638 - Breaking change:
DataTable.datarenamed toDataTable._data(it's now private) https://github.com/Textualize/textual/pull/1786 - The
_filtermodule was made public (now calledfilter) https://github.com/Textualize/textual/pull/1638 - Breaking change: renamed
CheckboxtoSwitchhttps://github.com/Textualize/textual/issues/1746 App.install_screenname is no longer optional https://github.com/Textualize/textual/pull/1778App.querynow only includes the current screen https://github.com/Textualize/textual/pull/1778DOMNode.treenow displays simple DOM structure only https://github.com/Textualize/textual/pull/1778App.install_screennow returns None rather than AwaitMount https://github.com/Textualize/textual/pull/1778DOMNode.childrenis now a simple sequence, the NodesList is exposed asDOMNode._nodeshttps://github.com/Textualize/textual/pull/1778DataTablecursor can now enter fixed columns https://github.com/Textualize/textual/pull/1799
Fixed
- Fixed stuck screen https://github.com/Textualize/textual/issues/1632
- Fixed programmatic style changes not refreshing children layouts when parent widget did not change size https://github.com/Textualize/textual/issues/1607
- Fixed relative units in
grid-rowsandgrid-columnsbeing computed with respect to the wrong dimension https://github.com/Textualize/textual/issues/1406 - Fixed bug with animations that were triggered back to back, where the second one wouldn't start https://github.com/Textualize/textual/issues/1372
- Fixed bug with animations that were scheduled where all but the first would be skipped https://github.com/Textualize/textual/issues/1372
- Programmatically setting
overflow_x/overflow_yrefreshes the layout correctly https://github.com/Textualize/textual/issues/1616 - Fixed double-paste into
Inputhttps://github.com/Textualize/textual/issues/1657 - Added a workaround for an apparent Windows Terminal paste issue https://github.com/Textualize/textual/issues/1661
- Fixed issue with renderable width calculation https://github.com/Textualize/textual/issues/1685
- Fixed issue with app not processing Paste event https://github.com/Textualize/textual/issues/1666
- Fixed glitch with view position with auto width inputs https://github.com/Textualize/textual/issues/1693
- Fixed
DataTable"selected" events containing wrong coordinates when mouse was used https://github.com/Textualize/textual/issues/1723
Removed
- Methods
MessagePump.emitandMessagePump.emit_no_waithttps://github.com/Textualize/textual/pull/1738 - Removed
reactive.watchin favor of DOMNode.watch.
0.10.1 - 2023-01-20
Added
- Added Strip.text property https://github.com/Textualize/textual/issues/1620
Fixed
- Fixed
textual diagnosecrash on older supported Python versions. https://github.com/Textualize/textual/issues/1622
Changed
- The default filename for screenshots uses a datetime format similar to ISO8601, but with reserved characters replaced by underscores https://github.com/Textualize/textual/pull/1518
0.10.0 - 2023-01-19
Added
- Added
TreeNode.parent-- a read-only property for accessing a node's parent https://github.com/Textualize/textual/issues/1397 - Added public
TreeNodelabel access viaTreeNode.labelhttps://github.com/Textualize/textual/issues/1396 - Added read-only public access to the children of a
TreeNodeviaTreeNode.childrenhttps://github.com/Textualize/textual/issues/1398 - Added
Tree.get_node_by_idto allow getting a node by its ID https://github.com/Textualize/textual/pull/1535 - Added a
Tree.NodeHighlightedmessage, giving aon_tree_node_highlightedevent handler https://github.com/Textualize/textual/issues/1400 - Added a
inherit_component_classessubclassing parameter to control whether component classes are inherited from base classes https://github.com/Textualize/textual/issues/1399 - Added
diagnoseas atextualcommand https://github.com/Textualize/textual/issues/1542 - Added
rowandcolumncursors toDataTablehttps://github.com/Textualize/textual/pull/1547 - Added an optional parameter
selectorto the methodsScreen.focus_nextandScreen.focus_previousthat enable using a CSS selector to narrow down which widgets can get focus https://github.com/Textualize/textual/issues/1196
Changed
MouseScrollUpandMouseScrollDownnow inherit fromMouseEventand have attached modifier keys. https://github.com/Textualize/textual/pull/1458- Fail-fast and print pretty tracebacks for Widget compose errors https://github.com/Textualize/textual/pull/1505
- Added Widget._refresh_scroll to avoid expensive layout when scrolling https://github.com/Textualize/textual/pull/1524
events.Pastenow bubbles https://github.com/Textualize/textual/issues/1434- Improved error message when style flag
noneis mixed with other flags (e.g., when settingtext-style) https://github.com/Textualize/textual/issues/1420 - Clock color in the
Headerwidget now matches the header color https://github.com/Textualize/textual/issues/1459 - Programmatic calls to scroll now optionally scroll even if overflow styling says otherwise (introduces a new
forceparameter to all thescroll_*methods) https://github.com/Textualize/textual/issues/1201 COMPONENT_CLASSESare now inherited from base classes https://github.com/Textualize/textual/issues/1399- Watch methods may now take no parameters
- Added
computeparameter to reactive - A
TypeErrorraised duringcomposenow carries the full traceback - Removed base class
NodeMessagefrom which all node-relatedTreeevents inherited
Fixed
- The styles
scrollbar-background-activeandscrollbar-color-hoverare no longer ignored https://github.com/Textualize/textual/pull/1480 - The widget
Placeholdercan now have its width set toautohttps://github.com/Textualize/textual/pull/1508 - Behavior of widget
Inputwhen rendering after programmatic value change and related scenarios https://github.com/Textualize/textual/issues/1477 https://github.com/Textualize/textual/issues/1443 DataTable.show_cursornow correctly allows cursor toggling https://github.com/Textualize/textual/pull/1547- Fixed cursor not being visible on
DataTablemount whenfixed_columnswere used https://github.com/Textualize/textual/pull/1547 - Fixed
DataTablecursors not resetting to origin onclear()https://github.com/Textualize/textual/pull/1601 - Fixed TextLog wrapping issue https://github.com/Textualize/textual/issues/1554
- Fixed issue with TextLog not writing anything before layout https://github.com/Textualize/textual/issues/1498
- Fixed an exception when populating a child class of
ListViewpurely fromcomposehttps://github.com/Textualize/textual/issues/1588 - Fixed freeze in tests https://github.com/Textualize/textual/issues/1608
- Fixed minus not displaying as symbol https://github.com/Textualize/textual/issues/1482
0.9.1 - 2022-12-30
Added
- Added textual._win_sleep for Python on Windows < 3.11 https://github.com/Textualize/textual/pull/1457
0.9.0 - 2022-12-30
Added
- Added textual.strip.Strip primitive
- Added textual._cache.FIFOCache
- Added an option to clear columns in DataTable.clear() https://github.com/Textualize/textual/pull/1427
Changed
- Widget.render_line now returns a Strip
- Fix for slow updates on Windows
- Bumped Rich dependency
0.8.2 - 2022-12-28
Fixed
- Fixed issue with TextLog.clear() https://github.com/Textualize/textual/issues/1447
0.8.1 - 2022-12-25
Fixed
- Fix for overflowing tree issue https://github.com/Textualize/textual/issues/1425
0.8.0 - 2022-12-22
Fixed
- Fixed issues with nested auto dimensions https://github.com/Textualize/textual/issues/1402
- Fixed watch method incorrectly running on first set when value hasn't changed and init=False https://github.com/Textualize/textual/pull/1367
App.darkcan now be set fromApp.on_loadwithout an error being raised https://github.com/Textualize/textual/issues/1369- Fixed setting
visibilitychanges needing arefreshhttps://github.com/Textualize/textual/issues/1355
Added
- Added
textual.actions.SkipActionexception which can be raised from an action to allow parents to process bindings. - Added
textual keyspreview. - Added ability to bind to a character in addition to key name. i.e. you can bind to "." or "full_stop".
- Added TextLog.shrink attribute to allow renderable to reduce in size to fit width.
Changed
- Deprecated
PRIORITY_BINDINGSclass variable. - Renamed
chartocharacteron Key event. - Renamed
key_nametonameon Key event. - Queries/
walk_childrenno longer includes self in results by default https://github.com/Textualize/textual/pull/1416
0.7.0 - 2022-12-17
Added
- Added
PRIORITY_BINDINGSclass variable, which can be used to control if a widget's bindings have priority by default. https://github.com/Textualize/textual/issues/1343
Changed
- Renamed the
Bindingargumentuniversaltopriority. https://github.com/Textualize/textual/issues/1343 - When looking for bindings that have priority, they are now looked from
Appdownwards. https://github.com/Textualize/textual/issues/1343 BINDINGSon anApp-derived class have priority by default. https://github.com/Textualize/textual/issues/1343BINDINGSon aScreen-derived class have priority by default. https://github.com/Textualize/textual/issues/1343- Added a message parameter to Widget.exit
Fixed
- Fixed validator not running on first reactive set https://github.com/Textualize/textual/pull/1359
- Ensure only printable characters are used as key_display https://github.com/Textualize/textual/pull/1361
0.6.0 - 2022-12-11
https://textual.textualize.io/blog/2022/12/11/version-060
Added
- Added "inherited bindings" -- BINDINGS classvar will be merged with base classes, unless inherit_bindings is set to False
- Added
Treewidget which replacesTreeControl. - Added widget
Placeholderhttps://github.com/Textualize/textual/issues/1200. - Added
ListViewandListItemwidgets https://github.com/Textualize/textual/pull/1143
Changed
- Rebuilt
DirectoryTreewith newTreecontrol. - Empty containers with a dimension set to
"auto"will now collapse instead of filling up the available space. - Container widgets now have default height of
1fr. - The default
widthof aLabelis nowauto.
Fixed
- Type selectors can now contain numbers https://github.com/Textualize/textual/issues/1253
- Fixed visibility not affecting children https://github.com/Textualize/textual/issues/1313
- Fixed issue with auto width/height and relative children https://github.com/Textualize/textual/issues/1319
- Fixed issue with offset applied to containers https://github.com/Textualize/textual/issues/1256
- Fixed default CSS retrieval for widgets with no
DEFAULT_CSSthat inherited from widgets withDEFAULT_CSShttps://github.com/Textualize/textual/issues/1335 - Fixed merging of
BINDINGSwhen binding inheritance is set toNonehttps://github.com/Textualize/textual/issues/1351
0.5.0 - 2022-11-20
Added
- Add get_child_by_id and get_widget_by_id, remove get_child https://github.com/Textualize/textual/pull/1146
- Add easing parameter to Widget.scroll_* methods https://github.com/Textualize/textual/pull/1144
- Added Widget.call_later which invokes a callback on idle.
DOMNode.ancestorsno longer includesself.- Added
DOMNode.ancestors_with_self, which retains the old behaviour ofDOMNode.ancestors. - Improved the speed of
DOMQuery.remove. - Added DataTable.clear
- Added low-level
textual.walkmethods. - It is now possible to
awaitaWidget.remove. https://github.com/Textualize/textual/issues/1094 - It is now possible to
awaitaDOMQuery.remove. Note that this changes the return value ofDOMQuery.remove, which used to returnself. https://github.com/Textualize/textual/issues/1094 - Added Pilot.wait_for_animation
- Added
Widget.move_childhttps://github.com/Textualize/textual/issues/1121 - Added a
Labelwidget https://github.com/Textualize/textual/issues/1190 - Support lazy-instantiated Screens (callables in App.SCREENS) https://github.com/Textualize/textual/pull/1185
- Display of keys in footer has more sensible defaults https://github.com/Textualize/textual/pull/1213
- Add App.get_key_display, allowing custom key_display App-wide https://github.com/Textualize/textual/pull/1213
Changed
- Watchers are now called immediately when setting the attribute if they are synchronous. https://github.com/Textualize/textual/pull/1145
- Widget.call_later has been renamed to Widget.call_after_refresh.
- Button variant values are now checked at runtime. https://github.com/Textualize/textual/issues/1189
- Added caching of some properties in Styles object
Fixed
- Fixed DataTable row not updating after add https://github.com/Textualize/textual/issues/1026
- Fixed issues with animation. Now objects of different types may be animated.
- Fixed containers with transparent background not showing borders https://github.com/Textualize/textual/issues/1175
- Fixed auto-width in horizontal containers https://github.com/Textualize/textual/pull/1155
- Fixed Input cursor invisible when placeholder empty https://github.com/Textualize/textual/pull/1202
- Fixed deadlock when removing widgets from the App https://github.com/Textualize/textual/pull/1219
0.4.0 - 2022-11-08
https://textual.textualize.io/blog/2022/11/08/version-040/#version-040
Changed
- Dropped support for mounting "named" and "anonymous" widgets via
App.mountandWidget.mount. Both methods now simply take one or more widgets as positional arguments. DOMNode.query_onenow raises aTooManyMatchesexception if there is more than one matching node. https://github.com/Textualize/textual/issues/1096App.mountandWidget.mounthave newbeforeandafterparameters https://github.com/Textualize/textual/issues/778
Added
- Added
initparam to reactive.watch CSS_PATHcan now be a list of CSS files https://github.com/Textualize/textual/pull/1079- Added
DOMQuery.only_onehttps://github.com/Textualize/textual/issues/1096 - Writes to stdout are now done in a thread, for smoother animation. https://github.com/Textualize/textual/pull/1104
0.3.0 - 2022-10-31
Fixed
- Fixed issue where scrollbars weren't being unmounted
- Fixed fr units for horizontal and vertical layouts https://github.com/Textualize/textual/pull/1067
- Fixed
textual runbreaking sys.argv https://github.com/Textualize/textual/issues/1064 - Fixed footer not updating styles when toggling dark mode
- Fixed how the app title in a
Headeris centred https://github.com/Textualize/textual/issues/1060 - Fixed the swapping of button variants https://github.com/Textualize/textual/issues/1048
- Fixed reserved characters in screenshots https://github.com/Textualize/textual/issues/993
- Fixed issue with TextLog max_lines https://github.com/Textualize/textual/issues/1058
Changed
- DOMQuery now raises InvalidQueryFormat in response to invalid query strings, rather than cryptic CSS error
- Dropped quit_after, screenshot, and screenshot_title from App.run, which can all be done via auto_pilot
- Widgets are now closed in reversed DOM order
- Input widget justify hardcoded to left to prevent text-align interference
- Changed
textual runso that it patchesargvin more situations - DOM classes and IDs are now always treated fully case-sensitive https://github.com/Textualize/textual/issues/1047
Added
- Added Unmount event
- Added App.run_async method
- Added App.run_test context manager
- Added auto_pilot to App.run and App.run_async
- Added Widget._get_virtual_dom to get scrollbars
- Added size parameter to run and run_async
- Added always_update to reactive
- Returned an awaitable from push_screen, switch_screen, and install_screen https://github.com/Textualize/textual/pull/1061
0.2.1 - 2022-10-23
Changed
- Updated meta data for PyPI
0.2.0 - 2022-10-23
Added
- CSS support
- Too numerous to mention
0.1.18 - 2022-04-30
Changed
- Bump typing extensions
0.1.17 - 2022-03-10
Changed
- Bumped Rich dependency
0.1.16 - 2022-03-10
Fixed
- Fixed escape key hanging on Windows
0.1.15 - 2022-01-31
Added
- Added Windows Driver
0.1.14 - 2022-01-09
Changed
- Updated Rich dependency to 11.X
0.1.13 - 2022-01-01
Fixed
- Fixed spurious characters when exiting app
- Fixed increasing delay when exiting
0.1.12 - 2021-09-20
Added
- Added geometry.Spacing
Fixed
- Fixed calculation of virtual size in scroll views
0.1.11 - 2021-09-12
Changed
- Changed message handlers to use prefix handle_
- Renamed messages to drop the Message suffix
- Events now bubble by default
- Refactor of layout
Added
- Added App.measure
- Added auto_width to Vertical Layout, WindowView, an ScrollView
- Added big_table.py example
- Added easing.py example
0.1.10 - 2021-08-25
Added
- Added keyboard control of tree control
- Added Widget.gutter to calculate space between renderable and outside edge
- Added margin, padding, and border attributes to Widget
Changed
- Callbacks may be async or non-async.
- Event handler event argument is optional.
- Fixed exception in clock example https://github.com/willmcgugan/textual/issues/52
- Added Message.wait() which waits for a message to be processed
- Key events are now sent to widgets first, before processing bindings
0.1.9 - 2021-08-06
Added
- Added hover over and mouse click to activate keys in footer
- Added verbosity argument to Widget.log
Changed
- Simplified events. Remove Startup event (use Mount)
- Changed geometry.Point to geometry.Offset and geometry.Dimensions to geometry.Size
0.1.8 - 2021-07-17
Fixed
- Fixed exiting mouse mode
- Fixed slow animation
Added
- New log system
0.1.7 - 2021-07-14
Changed
- Added functionality to calculator example.
- Scrollview now shows scrollbars automatically
- New handler system for messages that doesn't require inheritance
- Improved traceback handling