Skip to content

Releases: Textualize/textual

The fuzzy release

26 Feb 20:07
3955ece
Compare
Choose a tag to compare

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

22 Feb 18:43
adf6d1c
Compare
Choose a tag to compare

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

19 Feb 15:53
33d974c
Compare
Choose a tag to compare

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 and delta_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, and pointer_screen_y attributes to mouse events #5556

Changed

  • Animating the scrollbar while dragging is disabled if smooth scrolling is available #5558
  • Renamed TerminalSupportsInBandWindowResize to InBandWindowResize #5558

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