Skip to content

Releases: Textualize/textual

The criminally smooth hotfix release

17 Feb 12:00
c57bf45
Compare
Choose a tag to compare

[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

16 Feb 19:59
edca00b
Compare
Choose a tag to compare

[2.0.3] - 2025-02-16

Fixed

  • Fixed traceback from OptionList in Command Palette #5544

The refreshing hot-fix release

16 Feb 19:33
d69f0d6
Compare
Choose a tag to compare

[2.0.2] - 2025-02-16

Fixed

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

The Escaped release

16 Feb 14:20
732c6b9
Compare
Choose a tag to compare

A small hotfix:

Fixed

  • Fixed escape tags in Content markup #5536

The Smooooth release

16 Feb 11:57
5e1aa4d
Compare
Choose a tag to compare

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

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 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 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 with None
  • Implemented smooth (pixel perfect) scrolling on supported terminals. Set TEXTUAL_SMOOTH_SCROLL=0 to disable.

Removed

  • Breaking change: Removed wrap argument from OptionList (use CSS text-wrap: nowrap; text-overflow: ellipses)
  • Breaking change: Removed tooltip argument from OptionList. Use tooltip attribute or with_tooltip(...) method.

There can be only One point Zero Release

12 Dec 10:49
Compare
Choose a tag to compare

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 on Click events #5369
  • Added times parameter to Pilot.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 in TextArea, and ctrl+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

05 Dec 15:18
1bef675
Compare
Choose a tag to compare

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

05 Dec 10:28
4dbd479
Compare
Choose a tag to compare

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

30 Nov 17:30
901fee4
Compare
Choose a tag to compare

Some minor fixes here.

[0.88.1] - 2024-11-30

Fixed

  • Fixed excessive rendering of the OptionList #5311
  • Fixed rendering glitches in Select #5311

The Yippee Ki‐Yay Release

29 Nov 10:21
Compare
Choose a tag to compare

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

Changed

  • ListView.pop now returns AwaitComplete rather than AwaitRemove #5135
  • ListView.remove_items now returns AwaitComplete rather than AwaitRemove #5135