Releases: Textualize/textual
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_searchwhich allows you to type to move the cursor to a matching option #5403 - Added
from_app_focustoFocusevent to indicate if a widget is being focused because the app itself has regained focus or not #5379 - Added
Blurredmessage toInputwidget (matchingSubmittedandChanged) to make it easier to synchronize withvalidate_onparameter when set to 'blur'. - Added
Offset.transpose#5409 - Added
screen--selectioncomponent class to define style for selection #5409 - Added
Widget.select_containerproperty #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-wrapandtext-overflowCSS values #5485 - Added Textual markup to replace Rich markup #5485
- Added
Content.from_markup#5485
Fixed
- Fixed
Pilot.clicknot working withtimesparameter #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
Inputwill 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
TextAreaandInputbehavior 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
Inputto post aBlurredmessage - 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
Headericon 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=0to disable.
Removed
- Breaking change: Removed
wrapargument from OptionList (use CSStext-wrap: nowrap; text-overflow: ellipses) - Breaking change: Removed
tooltipargument from OptionList. Usetooltipattribute 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
systemboolean to Binding, which hides the binding from the help panel #5352 - Added support for double/triple/etc clicks via
chainattribute onClickevents #5369 - Added
timesparameter toPilot.clickmethod, for simulating rapid clicks #5369 - Text can now be select using mouse or keyboard in the
Inputwidget #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+know deletes the current line inTextArea, andctrl+xwill 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+ (
syntaxextras) #5320 - Some syntax highlighting changes due to tree-sitter updates #5320
- Breaking change:
Document.query_syntax_treesignature changed #5320 - Breaking change:
TextArea.register_languagesignature changed #5320 - Breaking change:
SyntaxAwareDocument.language_nameproperty 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
ListViewnot 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
Changed
The Absolute hotfix
The Absolute Unit of a Release
This version adds support for position:absolute in the CSS.
Also in this release is a game added to the demo.
Play the game by running the following command:
python -m textual.demo.game
[0.87.0] - 2024-11-24
Added
- Added Styles.has_any_rules #5264
- Added
positionCSS rule. #5278 - Added
Widget.set_scroll#5278 - Added
Select.selection#5278