Releases: Textualize/textual
The criminally smooth hotfix release
[2.0.4] - 2025-02-17
Fixed
- Fixed smooth scrolling breaking mouse support in VSCode (and probably others) #5549
The last hot release of the day
The refreshing hot-fix release
The Escaped release
The Smooooth release
This is a big release!
- Arbitrary text selection. You can now select text, and hit ctrl+c to copy it to the clipboard. This works just about everywhere, although there a re a few widgets were it isn't yet implemented.
Screen.Recording.2025-02-16.at.11.59.14.mov
- Smoother scrolling, for Kitty, Ghostty, and some other terminals.
- New content system
- Many fixes, see the full changelog below...
Breaking change: Strings returned from render()
and other places will now be interpreted with Content.from_markup
, rather than Rich.from_markup
. This may result in slightly different colors, and emoji codes (like ":smiley:"
) will no longer be processed automatically. If you want to restore the old behavior you can return Rich.from_markup("Your output here")
rather than string literal.
Why 2.0.0 ?
It took us more than 3 years to get to 1.0. But a couple of months to get to 2.0? Why?
We follow Semver which says that after 1.0, all breaking changes bump the major version number. We have some breaking changes here, which will be trivial to fix -- if they effect you at all. But a breaking change is a breaking change!
2.0.0 - 2024-02-16
Added
- Added
Select.type_to_search
which allows you to type to move the cursor to a matching option #5403 - Added
from_app_focus
toFocus
event to indicate if a widget is being focused because the app itself has regained focus or not #5379 - Added
Blurred
message toInput
widget (matchingSubmitted
andChanged
) to make it easier to synchronize withvalidate_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
andtext-overflow
CSS values #5485 - Added Textual markup to replace Rich markup #5485
- Added
Content.from_markup
#5485
Fixed
- Fixed
Pilot.click
not working withtimes
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
andInput
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 aBlurred
message - Fixed Log widget not refreshing on resize #5460
- Fixed special case with calculating the height of a container where all children have dynamic heights #5463
- Fixed scrollbars ignoring background opacity #5458
- Fixed
Header
icon showing command palette tooltip when disabled #5427
Changed
- Breaking change: OptionList no longer supports
Separator
, a separator may be specified withNone
- Implemented smooth (pixel perfect) scrolling on supported terminals. Set
TEXTUAL_SMOOTH_SCROLL=0
to disable.
Removed
- Breaking change: Removed
wrap
argument from OptionList (use CSStext-wrap: nowrap; text-overflow: ellipses
) - Breaking change: Removed
tooltip
argument from OptionList. Usetooltip
attribute orwith_tooltip(...)
method.
There can be only One point Zero Release
If you have been following along, this is a relatively modest release. Fixes and some small features.
However, as a 1.0.0 release this is a big milestone for us at Textualize!
A big thank you to @darrenburns @davep @rodrigogiraoserrao and the many community contributors for this release!
Note that 1.0.0 doesn't mean that we are done. Far from it! Watch this space.
See the accompanying blog post for this release...
[1.0.0] - 2024-12-12
Added
- Added
App.clipboard
#5352 - Added standard cut/copy/paste (ctrl+x, ctrl+c, ctrl+v) bindings to Input / TextArea #5352 & #5374
- Added
system
boolean to Binding, which hides the binding from the help panel #5352 - Added support for double/triple/etc clicks via
chain
attribute onClick
events #5369 - Added
times
parameter toPilot.click
method, for simulating rapid clicks #5369 - Text can now be select using mouse or keyboard in the
Input
widget #5340
Changed
- Breaking change: Change default quit key to
ctrl+q
#5352 - The command palette will now select the top item automatically #5361
ctrl+shift+k
now deletes the current line inTextArea
, andctrl+x
will cut
the selection if there is one, otherwise it will cut the current line #5374- Implemented a better matching algorithm for the command palette #5365
Fixed
- Fixed issue with alignment in auto containers #5360
The wacky hotfix Release
Fixes an issue related to docked widgets.
[0.89.1] - 2024-11-05
Fixed
- Fixed alignment of docked widgets #5347
The so-long zero-ver Release
This release updates the tree-sitter dependency to add support for syntax highlighting in Python 3.13
See below for the full update
Note
This release will probably be the last before 1.0! Consider it a Release Candidate.
[0.89.0] - 2024-11-05
Added
- Added "tab" border style #5335
- Added support for XML syntax highlighting #5320
- Added
TextArea.update_highlight_query
#5320
Fixed
- Fixed Select not scrolling highlight in to view when clicked #5255
- Upgraded tree-sitter to 0.23+ (
syntax
extras) #5320 - Some syntax highlighting changes due to tree-sitter updates #5320
- Breaking change:
Document.query_syntax_tree
signature changed #5320 - Breaking change:
TextArea.register_language
signature changed #5320 - Breaking change:
SyntaxAwareDocument.language_name
property removed #5320 - Breaking change: Kotlin syntax highlighting removed from
TextArea
#5320 - Fixed selection list wrapping #5331
- Fixed CSS encoding issue on Windows #5324
The make fists with your toes Release
The Yippee Ki‐Yay Release
Mostly a bugfix release, as we prepare for 1.0. Some minor API change, that is unlikely to impact anyone.
[0.88.0] - 2024-11-29
Fixed
- Fixed infinite loop in
Widget.anchor
#5290 - Restores the ability to supply console markup to command list #5294
- Fixed delayed App Resize event #5296
- Fixed
ListView
not updating its index or highlighting after removing items #5114 - Fixed ListView focus styling rule being too broad #5304
- Fixed issue with auto-generated tab IDs #5298