Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Dec 1, 2025

Note: This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
textual ==0.42.0 -> ==6.7.1 age confidence

Release Notes

Textualize/textual (textual)

v6.7.1

Compare Source

Fixed

v6.7.0

Compare Source

Added
  • Added GridLayout.max_column_width #​6228
  • Added Content.fold #​6238
  • Added strip_control_codes to Content constructors #​6238
Changed
  • Added Screen.get_loading_widget which deferes to App.get_loading_widget #​6228
Fixed
  • Fixed anchor with ScrollView widgets #​6228

v6.6.0

Compare Source

Fixed
  • Fixed TextArea cursor display on wrapped lines #​6196
  • Fixed remove_children not refreshing layout #​6206
  • Fixed flicker with :hover pseudo class #​6214
  • Fixed scrollbar not updating after textarea paste #​6219
Added
  • Added grid_size property to GridLayout #​6210
  • Exposed NoSelection and BLANK via textual.widgets.select #​6214
  • Added Widget.FOCUS_ON_CLICK classvar amd Widget.focus_on_click method #​6216
  • Added support for the kitty keyboard protocol on Windows #​6207
  • Added Widget.mount_compose #​6216
Changed
  • Change highlight style of Select to only highlight the border, not the label #​6214

v6.5.0

Compare Source

Added
Fixed
  • Fixed issue with focus + scroll #​6203

v6.4.0

Compare Source

Fixed
  • Fixed type hint aliasing for App under TYPE_CHECKING #​6152
  • Fixed circular dependency effecting bazel users #​6163
  • Fixed for text selection with double width characters #​6186
Changed
  • Simplified system commands (command palette) to a single word #​6183

v6.3.0

Compare Source

Added
  • Added scrollbar-visibility rule #​6156
Fixed
  • Fixed highlight not auto-detecting lexer #​6167
Changed

v6.2.1

Compare Source

  • Fix inability to copy text outside of an input/textarea when it was focused #​6148
  • Fix issue when copying text after a double click #​6148

v6.2.0

Compare Source

Changed
  • Eager tasks are now enabled On Python3.12 and above #​6102
  • Widget._arrange is now public (as Widget.arrange) #​6108
  • Reduced number of layout operations required to update the screen #​6108
  • The :hover pseudo-class no applies to the first widget under the mouse with a hover style set #​6132
  • The footer key hover background is more visible #​6132
  • Made App.delay_update public #​6137
  • Pilot.click will return True if the initial mouse down is on the specified target #​6139
Added
  • Added DOMNode.displayed_and_visible_children #​6102
  • Added Widget.process_layout #​6105
  • Added App.viewport_size #​6105
  • Added Screen.size #​6105
  • Added compact to Binding.Group #​6132
  • Added Screen.get_hover_widgets_at #​6132
  • Added Content.wrap #​6138
  • Added support to allow support for manual keys in add_columns as well. #​5923
Fixed
  • Fixed issue where Segments with a style of None aren't rendered #​6109
  • Fixed visual glitches and crash when changing DataTable.header_height #​6128
  • Fixed TextArea.placeholder not handling multi-lines #​6138
  • Fixed issue with RichLog when App.theme is set early #​6141
  • Fixed children of collapsible not being focusable after collapsible is expanded #​6143

v6.1.0

Compare Source

Added
  • Added Button.flat boolean to enable flat button style #​6094
  • Added namespaces parameter to run_action #​6094
  • Added "block" border style #​6094

v6.0.0

Compare Source

Fixed
  • Fix type hint for SelectType: only hashable types are allowed. #​6034
  • Fixed Content.expand_tabs #​6038
  • Fixed return value for Pilot.double_click and Pilot.triple_click #​6035
  • Fixed sizing issue with Pretty widget #​6040 #​6041
  • Fixed garbled inline app output when inline_no_clear=True #​6080
Added
  • Added BAR_RENDERABLE to ProgressBar widget #​5963
  • Added OptionList.set_options #​6048
  • Added TextArea.suggestion #​6048
  • Added TextArea.placeholder #​6048
  • Added Header.format_title and App.format_title for easier customization of title in the Header #​6051
  • Added Widget.get_line_filters and App.get_line_filters #​6057
  • Added Binding.Group #​6070
  • Added DOMNode.displayed_children #​6070
  • Added TextArea.hide_suggestion_on_blur boolean #​6070
  • Added OptionList.highlighted_option property #​6090
  • Added TextArea.update_suggestion method #​6090
  • Added textual.getters.app #​6089
Changed
  • Breaking change: The renderable property on the Static widget has been changed to content. #​6041
  • Breaking change: HeaderTitle widget is now a static, with no text and sub_text reactives #​6051
  • Breaking change: Renamed Label constructor argument renderable to content for consistency #​6045
  • Breaking change: Optimization to line API to avoid applying background styles to widget content. In practice this means that you can no longer rely on blank Segments automatically getting the background color.

v5.3.0

Compare Source

Added
Fixed

v5.2.0

Compare Source

Added
  • Added a 'stream' layout, which is a lot like vertical but with fewer supported rules (which is why it is faster), will remain undocumented for now. #​6013

v5.1.1

Compare Source

Fixed
  • Fixed overly large distribution, no code changes #​6010

v5.1.0

Compare Source

Added
  • Added empty pseudo class, which applies when a widget has no displayed children #​5999
  • Added Screen.action_focus #​5999
  • Added support for left and right mouse scroll for terminals and input devices which support it #​5995
Changed
  • last-child, last-of-type, first-child, and first-of-type apply to displayed children only #​5999
  • textual.compose is now public #​5999

v5.0.1

Compare Source

Fixed
  • Fixed appending to Markdown widgets that were constructed with an existing document #​5990

v5.0.0

Added
  • Added get_minimal_width to Visual protocol #​5962
  • Added expand and shrink attributes to GridLayout #​5962
  • Added Markdown.get_stream #​5966
  • Added textual.highlight module for syntax highlighting #​5966
  • Added MessagePump.wait_for_refresh method #​5966
  • Added Widget.container_scroll_offset e84600c
  • Added Markdown.source attribute to MarkdownBlocks e84600c
  • Added extension mechanism to Markdown e84600c
  • Added index to ListView.Selected event #​5973
  • Added layout switch to Static.update #​5973
Fixed
  • Fixed TextArea issue with the css theme, where the background color was stuck from the previous theme #​5964
  • Fixed TextArea runtime crash caused by tree-sitter breaking change #​5976
Changed
  • Improved rendering of Markdown tables (replace Rich table with grid) which allows text selection #​5962
  • Change look of command palette, to drop accented borders #​5966
  • Some style tweaks to Markdown e84600c
  • Content markup can now accept component classes when preceded by a dot, e.g. "Hello [.my_custo_style]World[/]!" #​5981
  • Breaking change: Visual.render_strips has a new signature. If you aren't explicitly building Visuals then this won't effect you. #​5981
  • Breaking change: The component classes on Markdown have been moved to MarkdownBlock. This won't affect you unless you have customize the Markdown CSS #​5981
  • The textual-speedups library will now be imported automatically if it is installed. Set TEXTUAL_SPEEDUPS=0 to disable.
  • Breaking change: Updated tree-sitter dependency for syntax extras now requires Python 3.10+ #​5977
  • Some TextArea syntax highlighting changes due to tree-sitter updates #​5977
Removed
  • Breaking change: Removed Markdown.code_dark_theme, Markdown.code_light_theme, Markdown.code_indent_guides which are no longer needed with the new code fence. #​5967
  • Removed focus style from Markdown, as it can be a little expensive e84600c

v4.1.0

Changed
  • Added functionality to calculator example.
  • Scrollview now shows scrollbars automatically
  • New handler system for messages that doesn't require inheritance
  • Improved traceback handling

v4.0.0

Compare Source

Fixed
  • Fixed query_one and query_exactly_one not raising documented WrongType exception. #​5945
  • Fixed logging to a file on Windows #​5941
  • Fixed eight bit colors crashing when applying dim style #​5957
Changed
  • Breaking change: Widget.anchor now has different semantics. It should be applied to a container and anchors to the bottom of the scroll position. #​5950
Added

v3.7.1

Compare Source

Fixed
  • Fixed broken text selection with soft_wrap=False #​5940

v3.7.0

Compare Source

Added
  • Added textual.getters #​5930
  • Added a show_cursor boolean to TextArea #​5934
Changed
  • Potential breaking change: Changed default query_one and query_exactly_one search to breadth first #​5930
  • Cursor is now visible by default when in read only mode (restoring pre 3.6.0 behavior) #​5934
Fixed
  • Fixed issue with Keylines not scrolling #​5936

v3.6.0

Compare Source

Added
  • Added textual.getters #​5930
  • Added a show_cursor boolean to TextArea #​5934
Changed
  • Potential breaking change: Changed default query_one and query_exactly_one search to breadth first #​5930
  • Cursor is now visible by default when in read only mode (restoring pre 3.6.0 behavior) #​5934
Fixed
  • Fixed issue with Keylines not scrolling #​5936

v3.5.0

Compare Source

Changed
  • Optimized startup #​5869
  • New blank visual which makes background faster to render (note this will break snapshots tests this version) #​5869
  • Exposed code_indent_guides boolean on Markdown widget #​5874
  • Changed code fence background to use CSS background rather than its code theme #​5874

v3.4.0

Compare Source

Fixed
Added
Changed
  • Content markup is now more lenient; if a 'tag' doesn't contain a valid style it will be included verbatim. #​5851

v3.3.0

Compare Source

Fixed
  • Fixed VERTICAL_BREAKPOINTS doesn't work #​5785
  • Fixed Button allowing text selection #​5770
  • Fixed running App.run after asyncio.run #​5799
  • Fixed triggering a deprecation warning in py >= 3.10 #​5799
  • Fixed Input invalid cursor position after updating the value #​5811
  • Fixed DEFAULT_CLASSES when applied to App #​5827
  • Fixed order of implicit content tag closing #​5823
Added
  • Exposed CollapsibleTitle #​5810
  • Added Color.hsv property and Color.from_hsv class method #​5803
  • Added cursor_at_start and cursor_at_end properties to the Input widget #​5830
Changed
  • Added a few features to python -m textual.markup playground #​5823

v3.2.0

Compare Source

Fixed
  • Fixed OptionList causing excessive redrawing #​5766
  • Log messages could be written to stdout when there was no app, which could happen when using run_async or threads. Now they will be suppressed, unless the env var TEXTUAL_DEBUG is set #​5782
Added
  • Added :first-child and :last-child pseudo classes #​5776
  • Added toggle_class parameter to reactives #​5778
  • Added compact parameter and reactive to Button, Input, ToggleButton, RadioSet, OptionList, TextArea #​5778
  • Added HORIZONTAL_BREAKPOINTS and VERTICAL_BREAKPOINTS to App and Screen #​5779
Changed
  • RadioSet now has a default width of 1fr #​5778

v3.1.1

Compare Source

Fixed
  • Fixed issue with tint filter #​5757
  • Fixed a crash when setting keymap before app mount #​5742

v3.1.0

Compare Source

Fixed
  • Fixed markup escaping edge cases #​5697
  • Fixed incorrect auto height in Collapsible #​5703
  • Fixed issue with keymaps and single-letter keys #​5726
  • Fixed OptionList size after removing or clearing options #​5728
  • Fixed footer / key panel not updating when keymaps are applied #​5724
  • Fixed alignment not being applied when there are min and max limits on dimensions #​5732
  • Fixed issues with OptionList scrollbar not updating #​5736
  • Fixed allow_focus method not overriding can_focus() #​5737
  • Fixed overlap of Input / TextArea selection with arbitrary text selection #​5739
Changed
  • Collapsible title now accepts str, Text, or Content #​5697
  • Rich Text objects will be converted to Content in OptionList and other widgets #​5712
  • Textual will always convert dim attributes to RGB by default #​5715
  • Notifications will now use content markup (previously they used Console markup) #​5719
Added
  • Added TEXTUAL_DIM_FACTOR env var to set the opacity of the 'dim' ANSI attribute #​5715
  • notify() now accepts a markup parameter to disable rendering the message as markup #​5719
  • Added Screen.text_selection_started_signal #​5739
  • Added App.clear_selection() helper method to clear arbitrary text selection of active screen #​5739

v3.0.1

Compare Source

Fixed
  • Fixed issue with modal dialog not refreshing

v3.0.0

Compare Source

Changed
  • Breaking change: App.query and friends will now always query the default (first) screen, not necessarily the active screen.
  • Content now has a default argument of an empty string, so Content() is equivalent to Content("")
  • Assigned names to Textual-specific threads: textual-input, textual-output. These should become visible in monitoring tools (ps, top, htop) as of Python 3.14. #​5654
  • Tabs now accept Content or Textual markup #​5657
  • Buttons will now use Textual markup rather than console markup
  • tree-sitter languages are now loaded lazily, improving cold-start time #​563
Fixed
  • Static and Label now accept Content objects, satisfying type checkers #​5618
  • Fixed click selection not being disabled when allow_select was set to false #​5627
  • Fixed crash on clicking line API border #​5641
  • Fixed Select.selection now correctly returns None if Select.BLANK is selected instead of an AssertionError
  • Fixed additional spaces after text-wrapping #​5657
  • Added missing scroll_end parameter to the Log.write_line method #​5672
  • Restored support for blink #​5675
  • Fixed scrolling breaking on DataTable with overflow: hidden #​5681
Added
  • Added Widget.preflight_checks to perform some debug checks after a widget is instantiated, to catch common errors. #​5588
  • Added text-padding style #​5657
  • Added Content.first_line property #​5657
  • Added Content.from_text constructor #​5657
  • Added Content.empty constructor #​5657
  • Added Content.pad method #​5657
  • Added Style.has_transparent_foreground property #​5657

v2.1.2

Compare Source

Fixed
  • Fixed command palette fuzzy search bailing too early #​5579

v2.1.1

Compare Source

Fixed
  • Fixed Link binding to open the link #​5564
  • Fixed IndexError in OptionList #​5574
  • Fixed issue with clear_panes breaking tabbed content #​5573
Changed
  • The user can now interrupt a scroll to end by grabbing the scrollbar or scrolling in any other way. Press ++end++ or scroll to the end to restore default behavior. This is more intuitive that it may sound.

v2.1.0

Compare Source

Fixed
  • Fixed smooth scrolling broken on iTerm over SSH #​5551
  • Fixed height of auto container which contains auto height children #​5552
  • Fixed Content.from_markup not stripping control codes #​5557
  • Fixed delta_x and delta_y in mouse events when smooth scrolling is enabled #​5556
  • Fixed flipped title colors in panel border #​5548
  • Fixed detection of smooth scrolling #​5558
Added
  • Added pointer_x, pointer_y, pointer_screen_x, and pointer_screen_y attributes to mouse events #​5556
Changed
  • Animating the scrollbar while dragging is disabled if smooth scrolling is available #​5558
  • Renamed TerminalSupportsInBandWindowResize to InBandWindowResize #​5558

v2.0.4

Compare Source

Fixed
  • Fixed smooth scrolling breaking mouse support in VSCode (and probably others) #​5549

v2.0.3

Compare Source

Fixed
  • Fixed traceback from OptionList in Command Palette #​5544

v2.0.2

Compare Source

Fixed
  • Fixed OptionList.add_options exhausting iterator #​5540
  • Fixed screen not refreshing after pop #​5543

v2.0.1

Compare Source

Fixed
  • Fixed escape tags in Textual markup #​5536

v2.0.0

Compare Source

Added
  • Added Select.type_to_search which allows you to type to move the cursor to a matching option #​5403
  • Added from_app_focus to Focus event to indicate if a widget is being focused because the app itself has regained focus or not #​5379
  • Added Blurred message to Input widget (matching Submitted and Changed) to make it easier to synchronize with validate_on parameter when set to 'blur'.
  • Added Offset.transpose #​5409
  • Added screen--selection component class to define style for selection #​5409
  • Added Widget.select_container property #​5409
  • Added Widget.select_all #​5409
  • Added Region.bottom_right_inclusive #​5409
  • Added double click to select, triple click to select all in container #​5409
  • Added arbitrary text selection #​5409
  • Added Widget.ALLOW_SELECT classvar for a per-widget switch to disable text selection #​5409
  • Added Widget.allow_select method for programmatic control of text selection #​5409
  • Added App.ALLOW_SELECT for a global switch to disable text selection #​5409
  • Added DOMNode.query_ancestor #​5409
  • Added selection to Log widget #​5467
  • Added text-wrap and text-overflow CSS values #​5485
  • Added Textual markup to replace Rich markup #​5485
  • Added Content.from_markup #​5485
Fixed
  • Fixed Pilot.click not working with times parameter #​5398
  • Fixed select refocusing itself too late #​5420
  • Fixed layout of the keys in the help panel when a key has a tooltip but no description #​5436
  • The content of an Input will now only be automatically selected when the widget is focused by the user, not when the app itself has regained focus (similar to web browsers). #​5379
  • Updated TextArea and Input behavior when there is a selection and the user presses left or right #​5400
  • Footer can now be scrolled horizontally without holding shift #​5404
  • Modified _on_blur method in Input to post a Blurred message
  • Fixed Log widget not refreshing on resize #​5460
  • Fixed special case with calculating the height of a container where all children have dyna

Configuration

📅 Schedule: Branch creation - "after 7am and before 4pm on monday" in timezone Europe/London, Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot added the dependencies label Dec 1, 2025
@codecov
Copy link

codecov bot commented Dec 1, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 38.51%. Comparing base (c02c9da) to head (68e3bbc).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #705   +/-   ##
=======================================
  Coverage   38.51%   38.51%           
=======================================
  Files          99       99           
  Lines       11663    11663           
  Branches     1542     1542           
=======================================
  Hits         4492     4492           
  Misses       6973     6973           
  Partials      198      198           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@renovate renovate bot force-pushed the renovate/textual-6.x branch from 3d9f8b6 to 394bde8 Compare December 1, 2025 19:05
@renovate renovate bot force-pushed the renovate/textual-6.x branch from 394bde8 to 68e3bbc Compare December 3, 2025 22:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant