NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #392 most downloaded on PyPI
Modern Text User Interface framework
Last release 3 months ago
30 Jun 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
5 years old
254 releases · first in 2021
One column per quarter.
Fixes for extended key processing, and a crash bug for clicking the screen padding area.
Fixes for extended key processing, and a crash bug for clicking the screen padding area.
This release adds additional support for the Kitty key protocol. Which enables some additional keys on some terminals. Additionally, Textual will repo
This release adds additional support for the Kitty key protocol. Which enables some additional keys on some terminals. Additionally, Textual will report modifier keys as separate key events.
Additionally there are a few more shortcuts to the Text Area.
This release sponsored by Mistral AI. See release notes for detail.
TEXTUAL_DISABLE_KITTY_KEY env var to disable Kitty key protocol support (debug aid). https://github.com/Textualize/textual/pull/6544Improved text select logic. You can select text without first clicking on a content area.
Improved text select logic. You can select text without first clicking on a content area.
May break snapshots without affecting appearance.
This release adds support for dedicated ansi themes, which are also exposed from the command palette.
This release adds support for dedicated ansi themes, which are also exposed from the command palette.
There were a few tweaks to the theming system which may result in broken snapshots, but there should be no visual changes.
<img width="1512" height="982" alt="Screenshot 2026-04-26 at 21 39 16" src="https://github.com/user-attachments/assets/c6664c38-9898-4886-929d-8d091323fa82" />
ansi value to themes https://github.com/Textualize/textual/pull/6513App.ansi_color may now be None to use the ansi value from the theme. https://github.com/Textualize/textual/pull/6513Small potatoes update, to fix a glitch with anchor.
Small potatoes update, to fix a glitch with anchor.
DOM.update_classes https://github.com/Textualize/textual/pull/6478Reduce lag when resizing window, by moving resize from idle to a timer https://github.com/Textualize/textual/pull/6471
Fixed an issue where styles were being unneccesarily updated when resizing. Textual apps will now adapt to changes in the terminal size much more quic
Fixed an issue where styles were being unneccesarily updated when resizing. Textual apps will now adapt to changes in the terminal size much more quickly.
Fixes a crash when a selected widget is removed while selecting
Fixes a crash when a selected widget is removed while selecting
This release enhances text selection, with auto-scrolling, and the ability to select across container widgets.
This release enhances text selection, with auto-scrolling, and the ability to select across container widgets.
This work was sponsored by Mistral AI.
App.ENABLE_SELECT_AUTO_SCROLL, App.SELECT_AUTO_SCROLL_LINES, App.SELECT_AUTO_SCROLL_SPEED to tweak auto scrolling behavior https://github.com/Textualize/textual/pull/6440Hotfix for animation on complete https://github.com/Textualize/textual/pull/6412
This release should smooth scrolling large documents, particularly for Python < 3.14
This release should smooth scrolling large documents, particularly for Python < 3.14
on_complete is now called https://github.com/Textualize/textual/pull/6410App.PAUSE_GC_ON_SCROLL_ boolean (disabled by default) https://github.com/Textualize/textual/pull/6410Themes are now in alphabetical order in command palette https://github.com/Textualize/textual/pull/6405
DirectoryTree runs more operations in a thread to avoid micro-freezes
Small update
DirectoryTree runs more operations in a thread to avoid micro-freezesBreaking change: Changed Select.BLANK to Select.NULL to avoid clash with newer Widget.BLANK Classvar https://github.com/Textualize/textual/pull/6374
The major version change is due to changing Select.BLANK to Select.NULL, to avoid an unfortunate name clash.
See below for the full changes...
mode argument to push_screen and push_screen_wait to enable pushing a screen to a non-active mode https://github.com/Textualize/textual/pull/6362App.mode_change_signal and App.screen_change_signal https://github.com/Textualize/textual/pull/6362Tabs.get_tab https://github.com/Textualize/textual/pull/6362Select.BLANK to Select.NULL to avoid clash with newer Widget.BLANK Classvar https://github.com/Textualize/textual/pull/6374The DataTable row cursor will now extend the full width of the datatable, which looks better.
The DataTable row cursor will now extend the full width of the datatable, which looks better.
The DataTable will now only emit a *Selected message if clicking a second time.
Adds a pointer rule to TCSS, so you can change how the mouse pointer looks over a given widget.
Adds a pointer rule to TCSS, so you can change how the mouse pointer looks over a given widget.
https://github.com/user-attachments/assets/9981cfe1-27c8-4586-9eb1-4f513d3d0764
See https://textual.textualize.io/styles/pointer/ for details
pointer rule https://github.com/Textualize/textual/pull/6339pointer rule https://github.com/Textualize/textual/pull/6339A few fixes and small features. Enjoy.
A few fixes and small features. Enjoy.
DOM.query_one_optionaldefault parameter to get_component_rich_style get_component_rich_styleSparkline to be of any height, not just 1 https://github.com/Textualize/textual/pull/6171Small update to the help system. The help panel will look for a HELP attribute on the focused widget, but now it will also look at ancestors until it
Small update to the help system. The help panel will look for a HELP attribute on the focused widget, but now it will also look at ancestors until it finds a usable HELP attribute. There are also a few changes to add more titles to the keys area.
HELP attribute if there isn't one on the focused widget https://github.com/Textualize/textual/pull/6320Fixed issue with missing refresh https://github.com/Textualize/textual/pull/6318
Fixed performance issue with large scrollable containers https://github.com/Textualize/textual/pull/6317
Removed superfluous style updates when setting display attribute. https://github.com/Textualize/textual/pull/6316
display attribute. https://github.com/Textualize/textual/pull/6316display attribute. https://github.com/Textualize/textual/pull/6316A small optimization to speed up transition when popping a screen.
A small optimization to speed up transition when popping a screen.
refresh_styles boolean to the ScreenResult message which reduces style updates when popping screensThis is a much smaller change than the version number may suggest. A breaking change to a method added just a few days ago. But Semver mandates the ma…
This is a much smaller change than the version number may suggest. A breaking change to a method added just a few days ago. But Semver mandates the major version bump.
This release has two new themes, thanks to @NSPC911
Node.update_node_styles has grown a animate parameterNode.update_node_styles has grown a animate parameterA small update to address a performance issue. Previously if you dismiss a screen and the base screen has a lot of widgets, you would could get a noti
A small update to address a performance issue. Previously if you dismiss a screen and the base screen has a lot of widgets, you would could get a noticeable pause (anything up to half a second). With a reasonable number of widgets you would probably not notice. But this update fixes that.
_update_styes to update_node_styles https://github.com/Textualize/textual/pull/6304A very small updated require for the Toad project.
A very small updated require for the Toad project.
TextSelected event. https://github.com/Textualize/textual/pull/6290TextSelected event. https://github.com/Textualize/textual/pull/6290Mainly a fix for some new themes, but also an update to toggle buttons. If you have toggle buttons in your app, this may impact snapshot tests.
Mainly a fix for some new themes, but also an update to toggle buttons. If you have toggle buttons in your app, this may impact snapshot tests.
Very small release. Mostly for the awesome themes that were recently contributed.
Very small release. Mostly for the awesome themes that were recently contributed.
A few fixes, and a very minor feature...
A few fixes, and a very minor feature...
Content.blank https://github.com/Textualize/textual/pull/6264Input cursor color display in ANSI mode (ansi_color=True) https://github.com/Textualize/textual/issues/6234ctrl+A, then change to ctrl+shift+a https://github.com/Textualize/textual/pull/6267loading attribute before mount https://github.com/Textualize/textual/pull/6268Hotfix for Content.fold from last release.
Hotfix for Content.fold from last release.
Content.fold https://github.com/Textualize/textual/pull/6256Content.fold https://github.com/Textualize/textual/pull/6256Added GridLayout.max_column_width https://github.com/Textualize/textual/pull/6228
GridLayout.max_column_width https://github.com/Textualize/textual/pull/6228Content.fold https://github.com/Textualize/textual/pull/6238strip_control_codes to Content constructors https://github.com/Textualize/textual/pull/6238Screen.get_loading_widget which deferes to App.get_loading_widget https://github.com/Textualize/textual/pull/6228anchor with ScrollView widgets https://github.com/Textualize/textual/pull/6228Also a style change for the checkbox widget. Expect snapshot test files if you have used checkboxes.
A few minor updates and fixes.
Also a style change for the checkbox widget. Expect snapshot test files if you have used checkboxes.
Thanks to the contributors!
TextArea cursor display on wrapped lines https://github.com/Textualize/textual/pull/6196remove_children not refreshing layout https://github.com/Textualize/textual/pull/6206grid_size property to GridLayout https://github.com/Textualize/textual/pull/6210NoSelection and BLANK via textual.widgets.select https://github.com/Textualize/textual/pull/6214Widget.FOCUS_ON_CLICK classvar amd Widget.focus_on_click method https://github.com/Textualize/textual/pull/6216Widget.mount_compose https://github.com/Textualize/textual/pull/6216A small release; one fix, one bug. Mainly so I could release on Halloween. 🦇
A small release; one fix, one bug. Mainly so I could release on Halloween. 🦇
DOMNode.trap_focus https://github.com/Textualize/textual/pull/6202Some fixes and a change to the command palette to use shorter commands, which look better in a list and are more memorable.
Some fixes and a change to the command palette to use shorter commands, which look better in a list and are more memorable.
There is also a optimization which you may notice if you have complex widgets.
bazel users https://github.com/Textualize/textual/pull/6163Version 6.3.0 adds support for Python 3.14, but drops support for Python3.8.
Version 6.3.0 adds support for Python 3.14, but drops support for Python3.8.
If you are updating, you may also want to update textual-dev.
There is also a new CSS rule, and a fix for code highlighting.
Enjoy!
Hot fix for 2 copy related issues
Hot fix for 2 copy related issues
A mixed back of features and fixes.
A mixed back of features and fixes.
See the changelog for details!
Widget._arrange is now public (as Widget.arrange) https://github.com/Textualize/textual/pull/6108App.delay_update public https://github.com/Textualize/textual/pull/6137DOMNode.displayed_and_visible_children https://github.com/Textualize/textual/pull/6102Widget.process_layout https://github.com/Textualize/textual/pull/6105App.viewport_size https://github.com/Textualize/textual/pull/6105Screen.size https://github.com/Textualize/textual/pull/6105compact to Binding.Group https://github.com/Textualize/textual/pull/6132Screen.get_hover_widgets_at https://github.com/Textualize/textual/pull/6132Content.wrap https://github.com/Textualize/textual/pull/6138None aren't rendered https://github.com/Textualize/textual/pull/6109DataTable.header_height https://github.com/Textualize/textual/pull/6128In this release we have a new "block" border style, and new flat style buttons.
In this release we have a new "block" border style, and new flat style buttons.
https://github.com/user-attachments/assets/c35ab5eb-8d91-43a6-8135-9e7f8f21344f
Button.flat boolean to enable flat button style https://github.com/Textualize/textual/pull/6094namespaces parameter to run_action https://github.com/Textualize/textual/pull/6094There are a few breaking changes, which are unlikely to impact many apps. Unless you have build custom line-API widgets. See below for the details.
This is a fairly large update, with some new features and optimizations.
There are a few breaking changes, which are unlikely to impact many apps. Unless you have build custom line-API widgets. See below for the details.
You may have to regenerate your snapshot tests, mostly as a result of the optimizations. I wouldn't expect the changes result in any material changes.
Thanks to all contributors!
Content.expand_tabs https://github.com/Textualize/textual/pull/6038Pilot.double_click and Pilot.triple_click https://github.com/Textualize/textual/pull/6035Pretty widget https://github.com/Textualize/textual/pull/6040 https://github.com/Textualize/textual/pull/6041inline_no_clear=True https://github.com/Textualize/textual/pull/6080bar_renderable to ProgressBar widget https://github.com/Textualize/textual/pull/5963OptionList.set_options https://github.com/Textualize/textual/pull/6048TextArea.suggestion https://github.com/Textualize/textual/pull/6048TextArea.placeholder https://github.com/Textualize/textual/pull/6048Header.format_title and App.format_title for easier customization of title in the Header https://github.com/Textualize/textual/pull/6051Widget.get_line_filters and App.get_line_filters https://github.com/Textualize/textual/pull/6057Binding.Group https://github.com/Textualize/textual/pull/6070DOMNode.displayed_children https://github.com/Textualize/textual/pull/6070TextArea.hide_suggestion_on_blur boolean https://github.com/Textualize/textual/pull/6070OptionList.highlighted_option property https://github.com/Textualize/textual/pull/6090TextArea.update_suggestion method https://github.com/Textualize/textual/pull/6090textual.getters.app https://github.com/Textualize/textual/pull/6089renderable property on the Static widget has been changed to content. https://github.com/Textualize/textual/pull/6041HeaderTitle widget is now a static, with no text and sub_text reactives https://github.com/Textualize/textual/pull/6051Label constructor argument renderable to content for consistency https://github.com/Textualize/textual/pull/6045A fix for Markdown IDs, a method to optimize Content, and an addition to reactives to initialize from a method.
A fix for Markdown IDs, a method to optimize Content, and an addition to reactives to initialize from a method.
Release notes below:
Content.simplify https://github.com/Textualize/textual/pull/6023textual.reactive.Initialize https://github.com/Textualize/textual/pull/6023This release adds a new "stream" layout. It's a little experimental at the moment, and undocumented. For the brave only!
This release adds a new "stream" layout. It's a little experimental at the moment, and undocumented. For the brave only!
For some reason I still don't understand, poetry included pycache files in the last PyPi release. After updating Poetry, the build is a more sensible
For some reason I still don't understand, poetry included pycache files in the last PyPi release. After updating Poetry, the build is a more sensible size. There are no code changes in this release.
This release adds an :empty pseudo-class which matches widgets with no children. You could use this to hide a container that doesn't have any children
This release adds an :empty pseudo-class which matches widgets with no children. You could use this to hide a container that doesn't have any children, for example:
.container:empty {
display: none;
}
Also in this release, support for scrolling left and right via the trackpad or a mouse that supports it. This was a contribution from @fancidev
Full changes below:
empty pseudo class, which applies when a widget has no displayed children https://github.com/Textualize/textual/pull/5999Screen.action_focus https://github.com/Textualize/textual/pull/5999last-child, last-of-type, first-child, and first-of-type apply to displayed children only https://github.com/Textualize/textual/pull/5999textual.compose is now public https://github.com/Textualize/textual/pull/5999A hotfix. See below for details.
A hotfix. See below for details.
There are two breaking changes (see below). These are unlikely to affect anyone, but Semver requires bumping the major version number.
This is quite a large release! Fueled in part by my work on Toad
Markdown rendering has been improved, with full text selection, prettier code blocks and tables. Plus streaming support.
<img width="1626" height="1310" alt="Screenshot 2025-07-25 at 08 37 30" src="https://github.com/user-attachments/assets/896886c1-d960-499a-a455-6e992231ee1c" />
Plenty of other fixes and additions. Thats to everyone who contributed code and issues!
There are two breaking changes (see below). These are unlikely to affect anyone, but Semver requires bumping the major version number.
expand and shrink attributes to GridLayout https://github.com/Textualize/textual/pull/5962Markdown.get_stream https://github.com/Textualize/textual/pull/5966textual.highlight module for syntax highlighting https://github.com/Textualize/textual/pull/5966MessagePump.wait_for_refresh method https://github.com/Textualize/textual/pull/5966Widget.container_scroll_offset https://github.com/Textualize/textual/commit/e84600cfb31630f8b5493bf1043a4a1e7c212f7cMarkdown.source attribute to MarkdownBlocks https://github.com/Textualize/textual/commit/e84600cfb31630f8b5493bf1043a4a1e7c212f7cindex to ListView.Selected event https://github.com/Textualize/textual/pull/5973layout switch to Static.update https://github.com/Textualize/textual/pull/5973TextArea issue with the css theme, where the background color was stuck from the previous theme https://github.com/Textualize/textual/issues/5964Visual.render_strips has a new signature. If you aren't explicitly building Visuals then this won't effect you. https://github.com/Textualize/textual/pull/5981TEXTUAL_SPEEDUPS=0 to disable.expand and shrink attributes to GridLayout https://github.com/Textualize/textual/pull/5962Markdown.get_stream https://github.com/Textualize/textual/pull/5966textual.highlight module for syntax highlighting https://github.com/Textualize/textual/pull/5966MessagePump.wait_for_refresh method https://github.com/Textualize/textual/pull/5966Widget.container_scroll_offset https://github.com/Textualize/textual/commit/e84600cfb31630f8b5493bf1043a4a1e7c212f7cMarkdown.source attribute to MarkdownBlocks https://github.com/Textualize/textual/commit/e84600cfb31630f8b5493bf1043a4a1e7c212f7cindex to ListView.Selected event https://github.com/Textualize/textual/pull/5973layout switch to Static.update https://github.com/Textualize/textual/pull/5973TextArea issue with the css theme, where the background color was stuck from the previous theme https://github.com/Textualize/textual/issues/5964TextArea runtime crash caused by tree-sitter breaking change https://github.com/Textualize/textual/issues/5976Visual.render_strips has a new signature. If you aren't explicitly building Visuals then this won't effect you. https://github.com/Textualize/textual/pull/5981TEXTUAL_SPEEDUPS=0 to disable.syntax extras now requires Python 3.10+ https://github.com/Textualize/textual/pull/5977TextArea syntax highlighting changes due to tree-sitter updates https://github.com/Textualize/textual/pull/5977Markdown.code_dark_theme, Markdown.code_light_theme, Markdown.code_indent_guides which are no longer needed with the new code fence. https://github.com/Textualize/textual/pull/5967Nothing published for this version
Breaking change: Widget.anchor now has different semantics. It should be applied to a container and anchors to the bottom of the scroll position. http…
The highlight of this release is the new Markdown.append method which can be used to efficiently stream markdown content (like you might get from an LLM).
https://github.com/user-attachments/assets/57fbb0de-bbda-4903-ae09-1b2bd18afe96
The Widget.anchor method has changed semantics (and also works much better), which is the reason for the major version bump. This will only impact you if you are actually using that method.
And there are a few fixes and additions. Thanks to the community for these contributions.
query_one and query_exactly_one not raising documented WrongType exception. https://github.com/Textualize/textual/pull/5945Widget.anchor now has different semantics. It should be applied to a container and anchors to the bottom of the scroll position. https://github.com/Textualize/textual/pull/5950Markdown.append https://github.com/Textualize/textual/pull/5950Widget.release_anchor https://github.com/Textualize/textual/pull/5950compact parameter to MaskedInput https://github.com/Textualize/textual/pull/5952A hotfix for text selection with soft wrapping in the TextArea widget
A hotfix for text selection with soft wrapping in the TextArea widget
Also a potentially breaking change, see below for the details...
A few enhancements, including a handy getters module for creating properties to get widgets.
Also a potentially breaking change, see below for the details...
show_cursor boolean to TextArea https://github.com/Textualize/textual/pull/5934query_one and query_exactly_one search to breadth first https://github.com/Textualize/textual/pull/5930Some substantial optimizations and tweaks for the TextArea widget, and the usual fixes.
Some substantial optimizations and tweaks for the TextArea widget, and the usual fixes.
TextArea.highlight_cursor_line toggle https://github.com/Textualize/textual/pull/5924This release contains some optimizations to startup time, which may be significant if you create a lot of widgets. There are also some visual updates
This release contains some optimizations to startup time, which may be significant if you create a lot of widgets. There are also some visual updates to Markdown.
This release will break your snapshots, although I don't expect any visual changes. If you are using the snapshot plugin, you will need to regenerate those snapshots. Even if you give them a quick scan, this should only take a few minutes.
code_indent_guides boolean on Markdown widget https://github.com/Textualize/textual/pull/5874Mostly fixes, although there is a notable change to markup.
Mostly fixes, although there is a notable change to markup.
Previously anything in square brackets was considered a tag, which resulted in markup errors with Python list literals. i.e. [1,2,3] would be interpreted as a tag. The Content markup parser has been made more lenient in these cases, and treats them as literal text.
TextArea rendering https://github.com/Textualize/textual/issues/5841vcommFixed triggering a deprecation warning in py >= 3.10 https://github.com/Textualize/textual/pull/5799
The first community supported release.
Mostly fixes and a few helpful additions. See below for details...
VERTICAL_BREAKPOINTS doesn't work https://github.com/Textualize/textual/pull/5785Button allowing text selection https://github.com/Textualize/textual/pull/5770App.run after asyncio.run https://github.com/Textualize/textual/pull/5799Input invalid cursor position after updating the value https://github.com/Textualize/textual/issues/5811DEFAULT_CLASSES when applied to App https://github.com/Textualize/textual/pull/5827CollapsibleTitle https://github.com/Textualize/textual/pull/5810Color.hsv property and Color.from_hsv class method https://github.com/Textualize/textual/pull/5803cursor_at_start and cursor_at_end properties to the Input widget https://github.com/Textualize/textual/pull/5830python -m textual.markup playground https://github.com/Textualize/textual/pull/5823There is one potential breaking change. RadioSet now has a default width of 1fr, meaning they will take up the full available space. This makes RadioS…
There are a few interesting features in this release.
Many widgets have grown a compact reactive. If you set this to True then the widget will have a compact (borderless) style.
Reactives have a new toggle_class attribute, that toggles a TCSS classname according to the truthyness of its value. If that sounds complicated, it really isn't in practice. Let's see it in action:
class MyWidget(Widget):
compact = reactive(False, toggle_class="-textual-compact")
This adds a boolean attribute to the widget. If you set compact=True then it will add the class "-textual-compact". If you set compact=False it will remove the class. Simples.
We also have breakpoint support, so you can build UIs that adjust to the dimensions of the screen. This was always possible, but it was a pattern before. Now it is a first class feature. See the breakpoints.py example.
We also have two new pseudo classes: :first-child and :last-child, which have the same meaning as browser CSS. Contributed by @sponsfreixes
There is one potential breaking change. RadioSet now has a default width of 1fr, meaning they will take up the full available space. This makes RadioSet size like other widgets. If you want the original behavior, then set the width to "auto"
OptionList causing excessive redrawing https://github.com/Textualize/textual/pull/5766TEXTUAL_DEBUG is set https://github.com/Textualize/textual/pull/5782:first-child and :last-child pseudo classes https://github.com/Textualize/textual/pull/5776toggle_class parameter to reactives https://github.com/Textualize/textual/pull/5778compact parameter and reactive to Button, Input, ToggleButton, RadioSet, OptionList, TextArea https://github.com/Textualize/textual/pull/5778HORIZONTAL_BREAKPOINTS and VERTICAL_BREAKPOINTS to App and Screen https://github.com/Textualize/textual/pull/5779RadioSet now has a default width of 1fr https://github.com/Textualize/textual/pull/5778Fixed issue with tint filter https://github.com/Textualize/textual/pull/5757
Mostly fixes, some API enhancements. See below.
Mostly fixes, some API enhancements. See below.
OptionList size after removing or clearing options https://github.com/Textualize/textual/issues/5728can_focus() https://github.com/Textualize/textual/pull/5737TEXTUAL_DIM_FACTOR env var to set the opacity of the 'dim' ANSI attribute https://github.com/Textualize/textual/pull/5715notify() now accepts a markup parameter to disable rendering the message as markup https://github.com/Textualize/textual/pull/5719Screen.text_selection_started_signal https://github.com/Textualize/textual/pull/5739App.clear_selection() helper method to clear arbitrary text selection of active screen https://github.com/Textualize/textual/pull/5739Fixes an issue with modal dialogs not refreshing.
Fixes an issue with modal dialogs not refreshing.
Breaking change: App.query and friends will now always query the default (first) screen, not necessarily the active screen.
Mostly small enhancements, and fixes. This is a major version bump, due to a change in how app.query works. Previously this would query the active screen, but this would yield surprising results if you push a screen. Now app.query, gets results from the default screen.
This is unlikely to impact many apps. If it does, use app.screen.query where you previously used app.query.
App.query and friends will now always query the default (first) screen, not necessarily the active screen.Content() is equivalent to Content("")textual-input, textual-output. These should become visible in monitoring tools (ps, top, htop) as of Python 3.14. https://github.com/Textualize/textual/pull/5654scroll_end parameter to the Log.write_line method https://github.com/Textualize/textual/pull/5672overflow: hidden https://github.com/Textualize/textual/pull/5681Content.first_line property https://github.com/Textualize/textual/pull/5657Content.from_text constructor https://github.com/Textualize/textual/pull/5657Content.empty constructor https://github.com/Textualize/textual/pull/5657Content.pad method https://github.com/Textualize/textual/pull/5657Style.has_transparent_foreground property https://github.com/Textualize/textual/pull/5657A fix for the command palette's fuzzy search. Will not affect most people.
A fix for the command palette's fuzzy search. Will not affect most people.
Mostly fixes here. There is a small change to behavior around scroll_end. Changes below...
Mostly fixes here. There is a small change to behavior around scroll_end. Changes below...
Link binding to open the link https://github.com/Textualize/textual/issues/5564Mostly fixes in this release, and a small feature.
Mostly fixes in this release, and a small feature.
The mouse event adds pointer_* attributes which contain the pointer coordinates in pixel resolution (if supported by your terminal).
Content.from_markup not stripping control codes https://github.com/Textualize/textual/pull/5557delta_x and delta_y in mouse events when smooth scrolling is enabled https://github.com/Textualize/textual/pull/5556pointer_x, pointer_y, pointer_screen_x, and pointer_screen_y attributes to mouse events https://github.com/Textualize/textual/pull/5556TerminalSupportsInBandWindowResize to InBandWindowResize https://github.com/Textualize/textual/pull/5558Your coding agent can read these notes before it upgrades. Set up the MCP server →