Releases: Textualize/textual
v0.8.0 with textual keys
Version 0.8.0 adds a new textual keys
command which you can use to preview key events.
There are a few minor breaking changes in this release. See below for details.
[0.8.0] - 2022-12-22
Fixed
- Fixed issues with nested auto dimensions #1402
- Fixed watch method incorrectly running on first set when value hasn't changed and init=False #1367
App.dark
can now be set fromApp.on_load
without an error being raised #1369- Fixed setting
visibility
changes needing arefresh
#1355
Added
- Added
textual.actions.SkipAction
exception which can be raised from an action to allow parents to process bindings. - Added
textual keys
preview. - Added ability to bind to a character in addition to key name. i.e. you can bind to "." or "full_stop".
- Added TextLog.shrink attribute to allow renderable to reduce in size to fit width.
Changed
- Deprecated
PRIORITY_BINDINGS
class variable. - Renamed
char
tocharacter
on Key event. - Renamed
key_name
toname
on Key event. - Queries/
walk_children
no longer includes self in results by default #1416
You are bound to like this release
Mostly fixes in this release.
[0.7.0] - 2022-12-17
Added
- Added
PRIORITY_BINDINGS
class variable, which can be used to control if a widget's bindings have priority by default. #1343
Changed
- Renamed the
Binding
argumentuniversal
topriority
. #1343 - When looking for bindings that have priority, they are now looked from
App
downwards. #1343 BINDINGS
on anApp
-derived class have priority by default. #1343BINDINGS
on aScreen
-derived class have priority by default. #1343- Added a message parameter to Widget.exit
Fixed
Treemendous Redux
See the blog post for the low down on this release.
[0.6.0] - 2022-12-11
Added
- Added "inherited bindings" -- BINDINGS classvar will be merged with base classes, unless inherit_bindings is set to False
- Added
Tree
widget which replacesTreeControl
. - Added widget
Placeholder
#1200.
Changed
- Rebuilt
DirectoryTree
with newTree
control. - Empty containers with a dimension set to
"auto"
will now collapse instead of filling up the available space. - Container widgets now have default height of
1fr
. - The default
width
of aLabel
is nowauto
.
Fixed
Lazy screens
[0.5.0] - 2022-11-20
Added
- Add get_child_by_id and get_widget_by_id, remove get_child #1146
- Add easing parameter to Widget.scroll_* methods #1144
- Added Widget.call_later which invokes a callback on idle.
DOMNode.ancestors
no longer includesself
.- Added
DOMNode.ancestors_with_self
, which retains the old behaviour of
DOMNode.ancestors
. - Improved the speed of
DOMQuery.remove
. - Added DataTable.clear
- Added low-level
textual.walk
methods. - It is now possible to
await
aWidget.remove
.
#1094 - It is now possible to
await
aDOMQuery.remove
. Note that this changes
the return value ofDOMQuery.remove
, which used to returnself
.
#1094 - Added Pilot.wait_for_animation
- Added
Widget.move_child
#1121 - Added a
Label
widget #1190 - Support lazy-instantiated Screens (callables in App.SCREENS) #1185
- Display of keys in footer has more sensible defaults #1213
- Add App.get_key_display, allowing custom key_display App-wide #1213
Changed
- Watchers are now called immediately when setting the attribute if they are synchronous. #1145
- Widget.call_later has been renamed to Widget.call_after_refresh.
- Button variant values are now checked at runtime. #1189
- Added caching of some properties in Styles object
Fixed
- Fixed DataTable row not updating after add #1026
- Fixed issues with animation. Now objects of different types may be animated.
- Fixed containers with transparent background not showing borders #1175
- Fixed auto-width in horizontal containers #1155
- Fixed Input cursor invisible when placeholder empty #1202
- Fixed deadlock when removing widgets from the App #1219
Mounting excitement
Read the blog post: https://textual.textualize.io/blog/2022/11/08/version-040/#version-040
[0.4.0] - 2022-11-08
Changed
- Dropped support for mounting "named" and "anonymous" widgets via
App.mount
andWidget.mount
. Both methods now simply take one or more
widgets as positional arguments. DOMNode.query_one
now raises aTooManyMatches
exception if there is
more than one matching node.
#1096App.mount
andWidget.mount
have newbefore
andafter
parameters #778
Added
Scarily good release with FR units
A number of fixes, and internal enhancements.
We have a new API for running textual apps asynchronously, and a much better way of running integration tests. Testing is important and we will be documenting this in a future release.
Also in this release, we've made fr
units more useful. These CSS units can be used to easily create flexible layouts. See the video below:
Screen.Recording.2022-10-31.at.15.29.57.mov
Here's the full changelog
[0.3.0] - 2022-10-31
Fixed
- Fixed issue where scrollbars weren't being unmounted
- Fixed fr units for horizontal and vertical layouts #1067
- Fixed
textual run
breaking sys.argv #1064 - Fixed footer not updating styles when toggling dark mode
- Fixed how the app title in a
Header
is centred #1060 - Fixed the swapping of button variants #1048
- Fixed reserved characters in screenshots #993
- Fixed issue with TextLog max_lines #1058
Changed
- DOMQuery now raises InvalidQueryFormat in response to invalid query strings, rather than cryptic CSS error
- Dropped quit_after, screenshot, and screenshot_title from App.run, which can all be done via auto_pilot
- Widgets are now closed in reversed DOM order
- Input widget justify hardcoded to left to prevent text-align interference
- Changed
textual run
so that it patchesargv
in more situations - DOM classes and IDs are now always treated fully case-sensitive #1047
Added
- Added Unmount event
- Added App.run_async method
- Added App.run_test context manager
- Added auto_pilot to App.run and App.run_async
- Added Widget._get_virtual_dom to get scrollbars
- Added size parameter to run and run_async
- Added always_update to reactive
- Returned an awaitable from push_screen, switch_screen, and install_screen #1061
Just a metadata update
Updated metadata, and some assets for readme.
[0.2.1] - 2022-10-23
Changed
- Updated meta data for PyPI
The CSS Release
This is a merge of the CSS branch with a whole load of amazing features. Hope you enjoy.
We are now returning to regular releases and working in the open. Thanks for being patient.
What's Changed
- Outline by @willmcgugan in #195
- Hover pseudo class by @willmcgugan in #201
- Rename visible property to display, add setter by @darrenburns in #213
- Visibility by @darrenburns in #212
- Splitting out parsing of durations into new token types, avoiding Scalar by @darrenburns in #214
- Invisible widgets now dont render by @darrenburns in #219
- Use the
layout
as specified in CSS by @darrenburns in #225 - Margin spacing is now invisible by @darrenburns in #221
- Docstrings for styling properties by @darrenburns in #222
- Underline bar renderable by @darrenburns in #246
- Allow user to supply loop to App.run, ensure it closes by @darrenburns in #236
- Tokenise CSS variables by @darrenburns in #250
- Vertical layout by @darrenburns in #234
- Horizontal layout by @darrenburns in #235
- Variable support in CSS by @darrenburns in #258
- Sparklines by @darrenburns in #269
- Inline styles view by @willmcgugan in #254
- Render opacity by @darrenburns in #272
- Update pyproject.toml homepage link, add docs readme by @darrenburns in #268
- Opacity rules by @darrenburns in #279
- Tabs by @darrenburns in #293
- Bump docs dev dependencies, add Tabs page, add note to docs README by @darrenburns in #301
- Layout Resolver enhancement by @willmcgugan in #295
- Implement CSS defaults by @willmcgugan in #294
- Test animation by @willmcgugan in #303
- Query dom - get child by @darrenburns in #306
- Regions by @darrenburns in #319
- Compositor refactor by @willmcgugan in #333
- Add conversion to/from the CIE-L*ab color space. by @rodrigogiraoserrao in #360
- Stringify the cast type, for <3.10 support by @tusharsadhwani in #351
- WIP New color class by @willmcgugan in #349
- Timer fix by @willmcgugan in #372
- Custom scrollbars by @willmcgugan in #376
- require semi-colons by @willmcgugan in #377
- Logging server by @darrenburns in #366
- Ensure filename is passed to devtools from init by @darrenburns in #383
- tweak to log by @willmcgugan in #384
- Redirect standard output to devtools server and logfile by @darrenburns in #385
- Textual CLI by @darrenburns in #397
- CSS align and box model by @willmcgugan in #398
- optimize crop by @willmcgugan in #414
- fix for showing scrollbars by @willmcgugan in #416
- [css branch] Update _style_properties.py by @lllama in #415
- fix for escape key processing by @willmcgugan in #420
- [widget] Add a test for types of values we handle in style's size by @olivierphi in #428
- [css][bugfix] CSS colors can now have digits at the end of their names by @olivierphi in #441
- [layout][bugfix] Horizontal & Vertical layouts shouldn't display children that have
display: none
by @olivierphi in #436 - button widget by @willmcgugan in #432
- [colors] Add management of named Web colors to our CSS processing, prefix ANSI ones with
ansi_
by @olivierphi in #443 - Style error improvements by @darrenburns in #408
- fix broken align and error logic by @willmcgugan in #446
- Add TEXTUAL features env var by @willmcgugan in #448
- [css] Add a "did you mean" suggestion when an unknown CSS property is spotted by @olivierphi in #445
- Omit style property setter frames from tracebacks by @darrenburns in #457
- Support 3 and 4 character hex strings for colours by @darrenburns in #459
- [CI] Check that the "basic.py" sandbox script can be run for a few seconds without crashing by @olivierphi in #449
- Skip CI-based MacOS devtools tests by @darrenburns in #461
- Remove redundant import by @rjmill in #460
- Add Python 3.10 to GitHub actions, upgrade mypy by @darrenburns in #462
- Add links to CHANGELOG and fix date for v0.1.18 by @bbugyi200 in #454
- Fix README.md typo disapointment->disappointment by @toonarmycaptain in #453
- Fix broken
overflow
CSS rule by @darrenburns in #467 - Update connection instructions in devtools header by @darrenburns in #469
- Remove codecov from Textual by @darrenburns in #470
- Windows CI by @darrenburns in #464
- Tab focus by @willmcgugan in #458
- [API] Start accepting PathLike objects here and there by @olivierphi in #463
- line between logs by @willmcgugan in #478
- added auto height by @willmcgugan in #476
- CSS focus-within pseudo selector by @darrenburns in #477
- diplay event method by @willmcgugan in #480
- [tests] Add an integration test for the vertical layout, fix the bug that messes up the layout when the children have
align: center top;
by @olivierphi in #482 - Added scroll_to_widget by @willmcgugan in #483
- Scroll to top when widget is larger than container by @willmcgugan in #492
- Add style param to Widget render method by @darrenburns in #479
- [css] Add a "Did you mean" suggestion when the value of a color is wrong but we can find a close one by @olivierphi in #486
- [tests][e2e] Add a test for
Widget#scroll_to_widget()
by @olivierphi in #494 - Optimize Compositor by combining updates by @willmcgugan in #493
- Msgpack devtools by @willmcgugan in #508
- [App] Remove the focus timer: we now focus from a widget to the next/prev one instantly by @olivierphi in #505
- added save_screenshot method and action by @willmcgugan in #511
- Compositor deltas by @willmcgugan in #512
- [css][scrollbar gutter] Manage the
scrollbar-gutter: stable
CSS property by @olivierphi in #501 - Basic text input by @darrenburns in #495
- [css] add "blank" border type by @olivierphi in #522
- Auto dimensions by @willmcgugan in #527
- Box fix by @willmcgugan in #532
- Fix escape key by @willmcgugan in #534
- compensated in box mode for scrollbars by @willmcgugan in #535
- Mock time during integration tests by @olivierphi in #507
- docs plugin by @willmcgugan in #536
- Fix Option+Backspace hanging by @willmcgugan in #539
- Text input improvements by @darrenburns in #528
- [css] add
scrollbar-size
properties by @olivierphi in https://github.com/Textualize/t...
v0.1.18: Merge pull request #451 from Textualize/0.1.18
[0.1.18] - 2022-03-30
Changed
- Bump typing extensions and Rich
Bump Rich
Bumps Rich to latest release
[0.1.17] - 2022-03-10
Changed
- Bumped Rich dependency