v0.77.0

Textualize/textualv0.77.0Aug 22, 2024by willmcgugan

AI Summary

A large release focused on the command palette, adding a help panel and screenshot functionality. It also removes the deprecated `ClassicFooter` widget and changes the default command palette binding.

Key Highlights

  • Command palette now includes a help panel and a 'Save Screenshot' command.
  • Removed `ClassicFooter` widget; users should switch to the new `Footer` widget.
  • Changed default command palette binding to `Ctrl+P`.
  • Added tooltips to bindings and customizable tooltip delay.

Breaking Changes

  • Removed `ClassicFooter` widget (please use new `Footer` widget).

New Features

  • `tooltip` to Binding
  • Link to command palette in Footer (`show_command_palette=False` to disable)
  • `TOOLTIP_DELAY` to App
  • "Show keys" option in system commands
  • "split" CSS style
  • `Region.get_spacing_between`
  • `App.COMMAND_PALETTE_KEY`
  • `App.get_key_display`
  • `DOMNode.BINDING_GROUP`
  • `DOMNode.HELP` classvar
  • `App.get_system_commands`
  • "Save Screenshot" system command

Full Release Notes

This is quite a large release!

We've done a lot of work on the [command palette](https://textual.textualize.io/guide/command_palette/#system-commands) to make it easier to work with and use.

We've also added a "help panel" which you can summon from the command palette. This will give you context sensitive help, and a summary of all the key bindings. Here it is in action:

https://github.com/user-attachments/assets/e954325a-7a2a-4a9b-b3a4-43ff80405967

Also in the command palette is a "save screenshot" command, which will save a screenshot of the current screen. Very handy for adding to documentation.

There are a number of other smaller changes, fixes, and a few breaking changes. See the detailed release notes below:

## [0.77.0] - 2024-08-22

### Added

- Added `tooltip` to Binding https://github.com/Textualize/textual/pull/4859
- Added a link to the command palette to the Footer (set `show_command_palette=False` to disable) https://github.com/Textualize/textual/pull/4867
- Added `TOOLTIP_DELAY` to App to customize time until a tooltip is displayed
- Added "Show keys" option to system commands to show a summary of key bindings. https://github.com/Textualize/textual/pull/4876
- Added "split" CSS style, currently undocumented, and may change. https://github.com/Textualize/textual/pull/4876
- Added `Region.get_spacing_between` https://github.com/Textualize/textual/pull/4876
- Added `App.COMMAND_PALETTE_KEY` to change default command palette key binding https://github.com/Textualize/textual/pull/4867
- Added `App.get_key_display` https://github.com/Textualize/textual/pull/4890
- Added `DOMNode.BINDING_GROUP` https://github.com/Textualize/textual/pull/4906
- Added `DOMNode.HELP` classvar which contains Markdown help to be shown in the help panel https://github.com/Textualize/textual/pull/4915
- Added `App.get_system_commands` https://github.com/Textualize/textual/pull/4920
- Added "Save Screenshot" system command https://github.com/Textualize/textual/pull/4922

### Changed

- Removed caps_lock and num_lock modifiers https://github.com/Textualize/textual/pull/4861 
- Keys such as escape and space are now displayed in lower case in footer https://github.com/Textualize/textual/pull/4876
- Changed default command palette binding to `ctrl+p` https://github.com/Textualize/textual/pull/4867
- Removed `ctrl_to_caret` and `upper_case_keys` from Footer. These can be implemented in `App.get_key_display`.
- Renamed `SystemCommands` to `SystemCommandsProvider` https://github.com/Textualize/textual/pull/4920
- Breaking change: Removed `ClassicFooter` widget (please use new `Footer` widget) https://github.com/Textualize/textual/pull/4921
- Disallowed `Screen` instances in `App.SCREENS` and `App.MODES`

### Fixed

- Fix crash when `validate_on` value isn't a set https://github.com/Textualize/textual/pull/4868
- Fix `Input.cursor_blink` having no effect on the blink cycle after mounting https://github.com/Textualize/textual/pull/4869
- Fixed scrolling by page not taking scrollbar in to account https://github.com/Textualize/textual/pull/4916
- Fixed `App.MODES` being the same for all instances -- per-instance modes now exist internally