Skip to content

The "As of some one gently wrapping, wrapping at my chamber door" release.

Compare
Choose a tag to compare
@willmcgugan willmcgugan released this 01 Feb 10:24
· 2010 commits to main since this release
7f1d0f8

The highlight of this release is the addition of soft wrapping to the TextArea, which you can see below:

soft-wrapping-demo.mp4

This makes TextArea one of our most powerful widgets. Looking forward to seeing what you build with it!

Note there is a breaking change here. The TextArea now defaults to a multi-line soft-wrapped editor rather than a more code oriented editor. If you want the original behaviour, use the code_editor classmethod. i.e. replace TextArea with TextArea.code_editor.

Also in this release is a new suspend decorator which will temporarily suspend the currently running app and allow you to launch another terminal app (which doesn't even need to be a Textual app).

There are plenty of other fixes and enhancements. See below for the full details...

[0.48.0] - 2023-02-01

Changed

  • Breaking change: Significant changes to TextArea.__init__ default values/behaviour #3933
    • soft_wrap=True - soft wrapping is now enabled by default.
    • show_line_numbers=False - line numbers are now disabled by default.
    • tab_behaviour="focus" - pressing the tab key now switches focus instead of indenting by default.
  • Breaking change: TextArea default theme changed to CSS, and default styling changed #4074
  • Breaking change: DOMNode.has_pseudo_class now accepts a single name only #3970
  • Made textual.cache (formerly textual._cache) public #3976
  • Tab.label can now be used to change the label of a tab #3979
  • Changed the default notification timeout from 3 to 5 seconds #4059
  • Prior scroll animations are now cancelled on new scrolls #4081

Added

  • Added DOMNode.has_pseudo_classes #3970
  • Added Widget.allow_focus and Widget.allow_focus_children #3989
  • Added TextArea.soft_wrap reactive attribute added #3933
  • Added TextArea.tab_behaviour reactive attribute added #3933
  • Added TextArea.code_editor classmethod/alternative constructor #3933
  • Added TextArea.wrapped_document attribute which can convert between wrapped visual coordinates and locations #3933
  • Added show_line_numbers to TextArea.__init__ #3933
  • Added component classes allowing TextArea to be styled using CSS #4074
  • Added Query.blur and Query.focus #4012
  • Added MessagePump.message_queue_size #4012
  • Added TabbedContent.active_pane #4012
  • Added App.suspend #4064
  • Added App.action_suspend_process #4064

Fixed

  • Parameter animate from DataTable.move_cursor was being ignored #3840
  • Fixed a crash if DirectoryTree.show_root was set before the DOM was fully available #2363
  • Live reloading of TCSS wouldn't apply CSS changes to screens under the top screen of the stack #3931
  • SelectionList option IDs are usable as soon as the widget is instantiated #3903
  • Fix issue with Strip.crop when crop window start aligned with strip end #3998
  • Fixed Strip.crop_extend #4011
  • Fix for percentage dimensions #4037
  • Fixed a crash if the TextArea language was set but tree-sitter language binaries were not installed #4045
  • Ensuring TextArea.SelectionChanged message only sends when the updated selection is different #3933
  • Fixed declaration after nested rule set causing a parse error #4012
  • ID and class validation was too lenient #3954
  • Fixed CSS watcher crash if file becomes unreadable (even temporarily) #4079
  • Fixed display of keys when used in conjunction with other keys #3050
  • Fixed double detection of Escape on Windows #4038