Releases: Textualize/textual
The fuzzy release
A fix for the command palette's fuzzy search. Will not affect most people.
[2.1.2] - 2025-02-26
Fixed
- Fixed command palette fuzzy search bailing too early #5579
The interrupted release
Mostly fixes here. There is a small change to behavior around scroll_end. Changes below...
[2.1.1] - 2025-02-22
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.
The pointed release
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).
[2.1.0] - 2025-02-19
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
anddelta_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
, andpointer_screen_y
attributes to mouse events #5556
Changed
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