Textualize/textual (textual)
### [`v0.85.2`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0852---2024-11-02)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.85.1...v0.85.2)
- Fixed broken focus-within [https://github.com/Textualize/textual/pull/5190](https://redirect.github.com/Textualize/textual/pull/5190)
### [`v0.85.1`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0851---2024-10-26)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.85.0...v0.85.1)
##### Fixed
- Fixed encoding issue when saving files such as screenshots on Windows [https://github.com/Textualize/textual/pull/5182](https://redirect.github.com/Textualize/textual/pull/5182)
### [`v0.85.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0850---2024-10-25)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.84.0...v0.85.0)
##### Changed
- Grid will now size children to the maximum height of a row [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113)
- Markdown links will be opened with `App.open_url` automatically [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113)
- The universal selector (`*`) will now not match widgets with the class `-textual-system` (scrollbars, notifications etc) [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113)
- Renamed `Screen.can_view` and `Widget.can_view` to `Screen.can_view_entire` and `Widget.can_view_entire` [https://github.com/Textualize/textual/pull/5174](https://redirect.github.com/Textualize/textual/pull/5174)
##### Added
- Added Link widget [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113)
- Added `open_links` to `Markdown` and `MarkdownViewer` widgets [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113)
- Added `App.DEFAULT_MODE` [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113)
- Added `Containers.HorizontalGroup` and `Containers.VerticalGroup` [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113)
- Added `$`, `£`, `€`, `(`, `)` symbols to Digits [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113)
- Added `Button.action` parameter to invoke action when clicked [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113)
- Added `immediate` parameter to scroll methods [https://github.com/Textualize/textual/pull/5164](https://redirect.github.com/Textualize/textual/pull/5164)
- Added `textual._loop.loop_from_index` [https://github.com/Textualize/textual/pull/5164](https://redirect.github.com/Textualize/textual/pull/5164)
- Added `min_color` and `max_color` to Sparklines constructor, which take precedence over CSS [https://github.com/Textualize/textual/pull/5174](https://redirect.github.com/Textualize/textual/pull/5174)
- Added new demo `python -m textual`, not *quite* finished but better than the old one [https://github.com/Textualize/textual/pull/5174](https://redirect.github.com/Textualize/textual/pull/5174)
- Added `Screen.can_view_partial` and `Widget.can_view_partial` [https://github.com/Textualize/textual/pull/5174](https://redirect.github.com/Textualize/textual/pull/5174)
- Added `App.is_web` property to indicate if the app is running via a web browser [https://github.com/Textualize/textual/pull/5128](https://redirect.github.com/Textualize/textual/pull/5128)
- `Enter` and `Leave` events can now be used with the `on` decorator [https://github.com/Textualize/textual/pull/5159](https://redirect.github.com/Textualize/textual/pull/5159)
##### Fixed
- Fixed glitchy ListView [https://github.com/Textualize/textual/issues/5163](https://redirect.github.com/Textualize/textual/issues/5163)
### [`v0.84.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0840---2024-10-22)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.83.0...v0.84.0)
##### Fixed
- Fixed `RadioSet` not being scrollable [https://github.com/Textualize/textual/issues/5100](https://redirect.github.com/Textualize/textual/issues/5100)
- Fixed infinite loop in TextArea [https://github.com/Textualize/textual/pull/5154](https://redirect.github.com/Textualize/textual/pull/5154)
##### Added
- Added `background-tint` CSS rule [https://github.com/Textualize/textual/pull/5117](https://redirect.github.com/Textualize/textual/pull/5117)
- Added `:first-of-type`, `:last-of-type`, `:odd`, and `:even` pseudo classes [https://github.com/Textualize/textual/pull/5139](https://redirect.github.com/Textualize/textual/pull/5139)
### [`v0.83.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0830---2024-10-10)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.82.0...v0.83.0)
##### Added
- Added support for A-F to Digits widget [https://github.com/Textualize/textual/pull/5094](https://redirect.github.com/Textualize/textual/pull/5094)
- Added `Region.constrain` [https://github.com/Textualize/textual/pull/5097](https://redirect.github.com/Textualize/textual/pull/5097)
##### Changed
- `Screen.ALLOW_IN_MAXIMIZED_VIEW` will now default to `App.ALLOW_IN_MAXIMIZED_VIEW` [https://github.com/Textualize/textual/pull/5088](https://redirect.github.com/Textualize/textual/pull/5088)
- Widgets matching `.-textual-system` will now be included in the maximize view by default [https://github.com/Textualize/textual/pull/5088](https://redirect.github.com/Textualize/textual/pull/5088)
- Digits are now thin by default, style with text-style: bold to get bold digits [https://github.com/Textualize/textual/pull/5094](https://redirect.github.com/Textualize/textual/pull/5094)
- Made `Widget.absolute_offset` public [https://github.com/Textualize/textual/pull/5097](https://redirect.github.com/Textualize/textual/pull/5097)
- Tooltips are now displayed directly below the mouse cursor [https://github.com/Textualize/textual/pull/5097](https://redirect.github.com/Textualize/textual/pull/5097)
- `Region.inflect` will now assume that margins overlap [https://github.com/Textualize/textual/pull/5097](https://redirect.github.com/Textualize/textual/pull/5097)
- `Pilot.click` and friends will now accept a widget, in addition to a selector [https://github.com/Textualize/textual/pull/5095](https://redirect.github.com/Textualize/textual/pull/5095)
### [`v0.82.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0820---2024-10-03)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.81.0...v0.82.0)
##### Fixed
- Fixed issue with screen not updating when auto_refresh was enabled [https://github.com/Textualize/textual/pull/5063](https://redirect.github.com/Textualize/textual/pull/5063)
- Fixed issues regarding loading indicator [https://github.com/Textualize/textual/pull/5079](https://redirect.github.com/Textualize/textual/pull/5079)
- Fixed issues with inspecting the lazy loaded widgets module [https://github.com/Textualize/textual/pull/5080](https://redirect.github.com/Textualize/textual/pull/5080)
##### Added
- Added `DOMNode.is_on_screen` property [https://github.com/Textualize/textual/pull/5063](https://redirect.github.com/Textualize/textual/pull/5063)
- Added support for keymaps (user configurable key bindings) [https://github.com/Textualize/textual/pull/5038](https://redirect.github.com/Textualize/textual/pull/5038)
- Added descriptions to bindings for all internal widgets, and updated casing to be consistent [https://github.com/Textualize/textual/pull/5062](https://redirect.github.com/Textualize/textual/pull/5062)
##### Changed
- Breaking change: `Widget.set_loading` no longer return an awaitable [https://github.com/Textualize/textual/pull/5079](https://redirect.github.com/Textualize/textual/pull/5079)
### [`v0.81.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0810---2024-09-25)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.80.1...v0.81.0)
##### Added
- Added `x_axis` and `y_axis` parameters to `Widget.scroll_to_region` [https://github.com/Textualize/textual/pull/5047](https://redirect.github.com/Textualize/textual/pull/5047)
- Added `Tree.move_cursor_to_line` [https://github.com/Textualize/textual/pull/5052](https://redirect.github.com/Textualize/textual/pull/5052)
- Added `Screen.pop_until_active` [https://github.com/Textualize/textual/pull/5069](https://redirect.github.com/Textualize/textual/pull/5069)
##### Changed
- Tree will no longer scroll the X axis when moving the cursor [https://github.com/Textualize/textual/pull/5047](https://redirect.github.com/Textualize/textual/pull/5047)
- DirectoryTree will no longer select the first node [https://github.com/Textualize/textual/pull/5052](https://redirect.github.com/Textualize/textual/pull/5052)
##### Fixed
- Fixed widgets occasionally not getting Resize events [https://github.com/Textualize/textual/pull/5048](https://redirect.github.com/Textualize/textual/pull/5048)
- Fixed tree regression [https://github.com/Textualize/textual/pull/5052](https://redirect.github.com/Textualize/textual/pull/5052)
- Fixed glitch with single line inline widget [https://github.com/Textualize/textual/pull/5054](https://redirect.github.com/Textualize/textual/pull/5054)
### [`v0.80.1`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0801---2024-09-24)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.80.0...v0.80.1)
##### Fixed
- Fixed crash when exiting the app prematurely [https://github.com/Textualize/textual/pull/5039](https://redirect.github.com/Textualize/textual/pull/5039)
- Fixed exception constructing TextArea outside of App [https://github.com/Textualize/textual/pull/5045](https://redirect.github.com/Textualize/textual/pull/5045)
### [`v0.80.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0800---2024-09-23)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.79.1...v0.80.0)
##### Added
- Added `MaskedInput` widget [https://github.com/Textualize/textual/pull/4783](https://redirect.github.com/Textualize/textual/pull/4783)
- Input validation for floats and integers accept embedded underscores, e.g., "1\_234\_567" is valid[https://github.com/Textualize/textual/pull/4784](https://redirect.github.com/Textualize/textual/pull/4784)84
- Support for `"none"` value added to `dock`, `hatch` and `split` styles [https://github.com/Textualize/textual/pull/4982](https://redirect.github.com/Textualize/textual/pull/4982)
- Support for `"none"` added to box and border style properties (e.g `widget.style.border = "none"`) [https://github.com/Textualize/textual/pull/4982](https://redirect.github.com/Textualize/textual/pull/4982)
- Docstrings added to most style properties [https://github.com/Textualize/textual/pull/4982](https://redirect.github.com/Textualize/textual/pull/4982)
- Added `ansi_color` switch to App to permit ANSI (themed) colors [https://github.com/Textualize/textual/pull/5000](https://redirect.github.com/Textualize/textual/pull/5000)
- Added `:ansi` pseudo class [https://github.com/Textualize/textual/pull/5000](https://redirect.github.com/Textualize/textual/pull/5000)
- Added `-ansi-scrollbar` style to widgets [https://github.com/Textualize/textual/pull/5000](https://redirect.github.com/Textualize/textual/pull/5000)
- Added `App.INLINE_PADDING` to define the number of spaces above inline apps [https://github.com/Textualize/textual/pull/5000](https://redirect.github.com/Textualize/textual/pull/5000)
- Added `nocolor` psuedoclass when NO_COLOR env var is set- `BINDING_GROUP_TITLE` now defaults to `None` [https://github.com/Textualize/textual/pull/5023](https://redirect.github.com/Textualize/textual/pull/5023)
- Added `TreeNode.siblings`, `TreeNode.next_sibling`, `TreeNode.previous_sibling`, `TreeNode.is_collapsed` [https://github.com/Textualize/textual/pull/5023](https://redirect.github.com/Textualize/textual/pull/5023)
- Added additional bindings to Tree widget [https://github.com/Textualize/textual/pull/5023](https://redirect.github.com/Textualize/textual/pull/5023)
- Added `Tree.center_scroll` [https://github.com/Textualize/textual/pull/5023](https://redirect.github.com/Textualize/textual/pull/5023)
- Added `Tree.unselect` [https://github.com/Textualize/textual/pull/5023](https://redirect.github.com/Textualize/textual/pull/5023)
##### Changed
- Input validation for integers no longer accepts scientific notation like '1.5e2'; must be castable to int. [https://github.com/Textualize/textual/pull/4784](https://redirect.github.com/Textualize/textual/pull/4784)
- Default `scrollbar-size-vertical` changed to `2` in inline styles to match Widget default CSS (unlikely to affect users) [https://github.com/Textualize/textual/pull/4982](https://redirect.github.com/Textualize/textual/pull/4982)
- Removed border-right from `Toast` [https://github.com/Textualize/textual/pull/4984](https://redirect.github.com/Textualize/textual/pull/4984)
- Some fixes in `RichLog` result in slightly different semantics, see docstrings for details [https://github.com/Textualize/textual/pull/4978](https://redirect.github.com/Textualize/textual/pull/4978)
- Changed how scrollbars are rendered (will have no visual effect, but will break snapshot tests) [https://github.com/Textualize/textual/pull/5000](https://redirect.github.com/Textualize/textual/pull/5000)
- Added `enabled` switch to filters (mostly used internally) [https://github.com/Textualize/textual/pull/5000](https://redirect.github.com/Textualize/textual/pull/5000)
- `BINDING_GROUP_TITLE` now defaults to `None` [https://github.com/Textualize/textual/pull/5023](https://redirect.github.com/Textualize/textual/pull/5023)
- Breaking change: Changed how scrollbars are rendered so they work in ansi mode (will break snapshots) [https://github.com/Textualize/textual/pull/5023](https://redirect.github.com/Textualize/textual/pull/5023)
##### Fixed
- Input validation of floats no longer accepts NaN (not a number). [https://github.com/Textualize/textual/pull/4784](https://redirect.github.com/Textualize/textual/pull/4784)
- Fixed issues with screenshots by simplifying segments only for snapshot tests [https://github.com/Textualize/textual/issues/4929](https://redirect.github.com/Textualize/textual/issues/4929)
- Fixed `RichLog.write` not respecting `width` parameter [https://github.com/Textualize/textual/pull/4978](https://redirect.github.com/Textualize/textual/pull/4978)
- Fixed `RichLog` writing at wrong width when `write` occurs before width is known (e.g. in `compose` or `on_mount`) [https://github.com/Textualize/textual/pull/4978](https://redirect.github.com/Textualize/textual/pull/4978)
- Fixed `RichLog.write` incorrectly shrinking width to `RichLog.min_width` when `shrink=True` (now shrinks to fit content area instead) [https://github.com/Textualize/textual/pull/4978](https://redirect.github.com/Textualize/textual/pull/4978)
- Fixed flicker when setting `dark` reactive on startup [https://github.com/Textualize/textual/pull/4989](https://redirect.github.com/Textualize/textual/pull/4989)
- Fixed command palette not sorting search results by their match score [https://github.com/Textualize/textual/pull/4994](https://redirect.github.com/Textualize/textual/pull/4994)
- Fixed `DataTable` cached height issue on re-populating the table when using auto-height rows [https://github.com/Textualize/textual/pull/4992](https://redirect.github.com/Textualize/textual/pull/4992)
- Fixed inline app output being cleared when `inline_no_clear=True` [https://github.com/Textualize/textual/issues/5019](https://redirect.github.com/Textualize/textual/issues/5019)
### [`v0.79.1`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0791---2024-08-31)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.79.0...v0.79.1)
##### Fixed
- Fixed broken updates when non active screen changes [https://github.com/Textualize/textual/pull/4957](https://redirect.github.com/Textualize/textual/pull/4957)
### [`v0.79.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0790---2024-08-30)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.78.0...v0.79.0)
##### Added
- Added `DOMNode.check_consume_key` [https://github.com/Textualize/textual/pull/4940](https://redirect.github.com/Textualize/textual/pull/4940)
- Added `App.ESCAPE_TO_MINIMIZE`, `App.screen_to_minimize`, and `Screen.ESCAPE_TO_MINIMIZE` [https://github.com/Textualize/textual/pull/4951](https://redirect.github.com/Textualize/textual/pull/4951)
- Added `DOMNode.query_exactly_one` [https://github.com/Textualize/textual/pull/4950](https://redirect.github.com/Textualize/textual/pull/4950)
- Added `SelectorSet.is_simple` [https://github.com/Textualize/textual/pull/4950](https://redirect.github.com/Textualize/textual/pull/4950)
##### Changed
- KeyPanel will show multiple keys if bound to the same action [https://github.com/Textualize/textual/pull/4940](https://redirect.github.com/Textualize/textual/pull/4940)
- Breaking change: `DOMNode.query_one` will not `raise TooManyMatches` [https://github.com/Textualize/textual/pull/4950](https://redirect.github.com/Textualize/textual/pull/4950)
### [`v0.78.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0780---2024-08-27)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.77.0...v0.78.0)
##### Added
- Added Maximize and Minimize system commands. [https://github.com/Textualize/textual/pull/4931](https://redirect.github.com/Textualize/textual/pull/4931)
- Added `Screen.maximize`, `Screen.minimize`, `Screen.action_maximize`, `Screen.action_minimize`, `Widget.is_maximized`, `Widget.allow_maximize`. [https://github.com/Textualize/textual/pull/4931](https://redirect.github.com/Textualize/textual/pull/4931)
- Added `Widget.ALLOW_MAXIMIZE`, `Screen.ALLOW_IN_MAXIMIZED_VIEW` classvars [https://github.com/Textualize/textual/pull/4931](https://redirect.github.com/Textualize/textual/pull/4931)
### [`v0.77.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0770---2024-08-22)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.76.0...v0.77.0)
##### Added
- Added `tooltip` to Binding [https://github.com/Textualize/textual/pull/4859](https://redirect.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](https://redirect.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](https://redirect.github.com/Textualize/textual/pull/4876)
- Added "split" CSS style, currently undocumented, and may change. [https://github.com/Textualize/textual/pull/4876](https://redirect.github.com/Textualize/textual/pull/4876)
- Added `Region.get_spacing_between` [https://github.com/Textualize/textual/pull/4876](https://redirect.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](https://redirect.github.com/Textualize/textual/pull/4867)
- Added `App.get_key_display` [https://github.com/Textualize/textual/pull/4890](https://redirect.github.com/Textualize/textual/pull/4890)
- Added `DOMNode.BINDING_GROUP` [https://github.com/Textualize/textual/pull/4906](https://redirect.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](https://redirect.github.com/Textualize/textual/pull/4915)
- Added `App.get_system_commands` [https://github.com/Textualize/textual/pull/4920](https://redirect.github.com/Textualize/textual/pull/4920)
- Added "Save Screenshot" system command [https://github.com/Textualize/textual/pull/4922](https://redirect.github.com/Textualize/textual/pull/4922)
##### Changed
- Removed caps_lock and num_lock modifiers [https://github.com/Textualize/textual/pull/4861](https://redirect.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](https://redirect.github.com/Textualize/textual/pull/4876)
- Changed default command palette binding to `ctrl+p` [https://github.com/Textualize/textual/pull/4867](https://redirect.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](https://redirect.github.com/Textualize/textual/pull/4920)
- Breaking change: Removed `ClassicFooter` widget (please use new `Footer` widget) [https://github.com/Textualize/textual/pull/4921](https://redirect.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](https://redirect.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](https://redirect.github.com/Textualize/textual/pull/4869)
- Fixed scrolling by page not taking scrollbar in to account [https://github.com/Textualize/textual/pull/4916](https://redirect.github.com/Textualize/textual/pull/4916)
- Fixed `App.MODES` being the same for all instances -- per-instance modes now exist internally
### [`v0.76.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0760)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.75.1...v0.76.0)
##### Changed
- Input cursor will no longer jump to the end on focus [https://github.com/Textualize/textual/pull/4773](https://redirect.github.com/Textualize/textual/pull/4773)
- Removed `Size.cip_size`, which was a clone of `crop_size`
- Widgets with auto dimensions will now grow if there is a scrollbar [https://github.com/Textualize/textual/pull/4844](https://redirect.github.com/Textualize/textual/pull/4844)
- Don't do automatic refresh when widget is not visible [https://github.com/Textualize/textual/pull/4847](https://redirect.github.com/Textualize/textual/pull/4847)
- Renamed `DOMNode._automatic_refresh` to `DOMNode.automatic_refresh` to allow for customization [https://github.com/Textualize/textual/pull/4847](https://redirect.github.com/Textualize/textual/pull/4847)
##### Fixed
- Input cursor blink effect will now restart correctly when any action is performed on the input [https://github.com/Textualize/textual/pull/4773](https://redirect.github.com/Textualize/textual/pull/4773)
- Fixed bindings on same key not updating description [https://github.com/Textualize/textual/pull/4850](https://redirect.github.com/Textualize/textual/pull/4850)
##### Added
- Textual will use the `ESCDELAY` env var when detecting escape keys [https://github.com/Textualize/textual/pull/4848](https://redirect.github.com/Textualize/textual/pull/4848)
### [`v0.75.1`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0751---2024-08-02)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.75.0...v0.75.1)
##### Fixed
- Fixed issue with Enter events causing unresponsive UI [https://github.com/Textualize/textual/pull/4833](https://redirect.github.com/Textualize/textual/pull/4833)
### [`v0.75.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0750---2024-08-01)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.74.0...v0.75.0)
##### Added
- Added `App.open_url` to open URLs in the web browser. When running via the WebDriver, the URL will be opened in the browser that is controlling the app [https://github.com/Textualize/textual/pull/4819](https://redirect.github.com/Textualize/textual/pull/4819)
- Added `Widget.is_mouse_over` [https://github.com/Textualize/textual/pull/4818](https://redirect.github.com/Textualize/textual/pull/4818)
- Added `node` attribute to `events.Enter` and `events.Leave` [https://github.com/Textualize/textual/pull/4818](https://redirect.github.com/Textualize/textual/pull/4818)
##### Changed
- `events.Enter` and `events.Leave` events now bubble. [https://github.com/Textualize/textual/pull/4818](https://redirect.github.com/Textualize/textual/pull/4818)
- Renamed `Widget.mouse_over` to `Widget.mouse_hover` [https://github.com/Textualize/textual/pull/4818](https://redirect.github.com/Textualize/textual/pull/4818)
##### Fixed
- Fixed issue with `mutate_reactive` and data binding [https://github.com/Textualize/textual/pull/4828](https://redirect.github.com/Textualize/textual/pull/4828)
### [`v0.74.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0740---2024-07-25)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.73.0...v0.74.0)
##### Fixed
- Fixed issues in Kitty terminal after exiting app [https://github.com/Textualize/textual/issues/4779](https://redirect.github.com/Textualize/textual/issues/4779)
- Fixed exception when removing Selects [https://github.com/Textualize/textual/pull/4786](https://redirect.github.com/Textualize/textual/pull/4786)
- Fixed issue with non-clickable Footer keys [https://github.com/Textualize/textual/pull/4798](https://redirect.github.com/Textualize/textual/pull/4798)
- Fixed issue with recompose not working from Mount handler [https://github.com/Textualize/textual/pull/4802](https://redirect.github.com/Textualize/textual/pull/4802)
##### Changed
- Calling `Screen.dismiss` with no arguments will invoke the screen callback with `None` (previously the callback wasn't invoke at all). [https://github.com/Textualize/textual/pull/4795](https://redirect.github.com/Textualize/textual/pull/4795)
### [`v0.73.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0730---2024-07-18)
[Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.72.0...v0.73.0)
##### Added
- Added `TextArea.line_number_start` reactive attribute [https://github.com/Textualize/textual/pull/4471](https://redirect.github.com/Textualize/textual/pull/4471)
- Added `TextArea.matching_bracket_location` property [https://github.com/Textualize/textual/pull/4764](https://redirect.github.com/Textualize/textual/pull/4764)
- Added `DOMNode.mutate_reactive` [https://github.com/Textualize/textual/pull/4731](https://redirect.github.com/Textualize/textual/pull/4731)
- Added "quality" parameter to `textual.color.Gradient` [https://github.com/Textualize/textual/pull/4739](https://redirect.github.com/Textualize/textual/pull/4739)
- Added `textual.color.Gradient.get_rich_color` [https://github.com/Textualize/textual/pull/4739](https://redirect.github.com/Textualize/textual/pull/4739)
- `Widget.remove_children` now accepts an iterable if widgets in addition to a selector [https://github.com/Textualize/textual/issues/4735](https://redirect.github.com/Textualize/textual/issues/4735)
- Raise `ValueError` with improved error message when number of cells inserted using `DataTable.add_row` doesn't match the number of columns in the table [https://github.com/Textualize/textual/pull/4742](https://redirect.github.com/Textualize/textual/pull/4742)
- Add `Tree.move_cursor` to programmatically move the cursor without selecting the node [https://github.com/Textualize/textual/pull/4753](https://redirect.github.com/Textualize/textual/pull/4753)
- Added `Footer` component style handling of padding for the key/description [https://github.com/Textualize/textual/pull/4651](https://redirect.github.com/Textualize/textual/pull/4651)
- `StringKey` is now exported from `data_table` [https://github.com/Textualize/textual/pull/4760](https://redirect.github.com/Textualize/textual/pull/4760)
- `TreeNode.add` and `TreeNode.add_leaf` now accepts `before` and `after` arguments to position a new node [https://github.com/Textualize/textual/pull/4772](https://redirect.github.com/Textualize/textual/pull/4772)
- Added a `gradient` parameter to the `ProgressBar` widget [https://github.com/Textualize/textual/pull/4774](https://redirect.github.com/Textualize/textual/pull/4774)
##### Fixed
- Fixed issue with `Tabs` where disabled tabs could still be activated by clicking the underline [https://github.com/Textualize/textual/issues/4701](https://redirect.github.com/Textualize/textual/issues/4701)
- Fixed scroll_visible with margin [https://github.com/Textualize/textual/pull/4719](https://redirect.github.com/Textualize/textual/pull/4719)
- Fixed programmatically disabling button stuck in hover state [https://github.com/Textualize/textual/pull/4724](https://redirect.github.com/Textualize/textual/pull/4724)
- Fixed `DataTable` poor performance on startup and focus change when rows contain multi-line content [https://github.com/Textualize/textual/pull/4748](https://redirect.github.com/Textualize/textual/pull/4748)
- Fixed `Tree` and `DirectoryTree` horizontal scrolling off-by-2 [https://github.com/Textualize/textual/pull/4744](https://redirect.github.com/Textualize/textual/pull/4744)
- Fixed text-opacity in component styles [https://github.com/Textualize/textual/pull/4747](https://redirect.github.com/Textualize/textual/pull/4747)
- Ensure `Tree.select_node` sends `NodeSelected` message [https://github.com/Textualize/textual/pull/4753](https://redirect.github.com/Textualize/textual/pull/4753)
- Fixed message handlers not working when message types are assigned as the value of class vars [https://github.com/Textualize/textual/pull/3940](https://redirect.github.com/Textualize/textual/pull/3940)
- Fixed `CommandPalette` not focusing the input when opened when `App.AUTO_FOCUS` doesn't match the input [https://github.com/Textualize/textual/pull/4763](https://redirect.github.com/Textualize/textual/pull/4763)
- `SelectionList.SelectionToggled` will now be sent for each option when a bulk toggle is performed (e.g. `toggle_all`). Previously no messages were sent at all. [https://github.com/Textualize/textual/pull/4759](https://redirect.github.com/Textualize/textual/pull/4759)
- Fixed focus styles not being updated on blur [https://github.com/Textualize/textual/pull/4771](https://redirect.github.com/Textualize/textual/pull/4771)
##### Changed
- "Discover" hits in the command palette are no longer sorted alphabetically [https://github.com/Textualize/textual/pull/4720](https://redirect.github.com/Textualize/textual/pull/4720)
- `TreeNodeSelected` messages are now posted before `TreeNodeExpanded` messages
when an expandable node is selec[https://github.com/Textualize/textual/pull/4753](https://redirect.github.com/Textualize/textual/pull/4753)4753
- `Markdown.LinkClicked.href` is now automatically unquoted [https://github.com/Textualize/textual/pull/4749](https://redirect.github.com/Textualize/textual/pull/4749)
- The mouse cursor hover effect of `Tree` and `DirectoryTree` will no longer linger after the mouse leaves the widget [https://github.com/Textualize/textual/pull/4766](https://redirect.github.com/Textualize/textual/pull/4766)
### [`v0.72.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0720---2024-07-09)
##### Changed
- More predictable DOM removals. [https://github.com/Textualize/textual/pull/4708](https://redirect.github.com/Textualize/textual/pull/4708)
##### Fixed
- Fixed clicking separator in OptionList moving cursor [https://github.com/Textualize/textual/issues/4710](https://redirect.github.com/Textualize/textual/issues/4710)
- Fixed scrolling issue in OptionList [https://github.com/Textualize/textual/pull/4709](https://redirect.github.com/Textualize/textual/pull/4709)
Configuration
📅 Schedule: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
==0.71.0
->==0.85.2
Release Notes
Textualize/textual (textual)
### [`v0.85.2`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0852---2024-11-02) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.85.1...v0.85.2) - Fixed broken focus-within [https://github.com/Textualize/textual/pull/5190](https://redirect.github.com/Textualize/textual/pull/5190) ### [`v0.85.1`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0851---2024-10-26) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.85.0...v0.85.1) ##### Fixed - Fixed encoding issue when saving files such as screenshots on Windows [https://github.com/Textualize/textual/pull/5182](https://redirect.github.com/Textualize/textual/pull/5182) ### [`v0.85.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0850---2024-10-25) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.84.0...v0.85.0) ##### Changed - Grid will now size children to the maximum height of a row [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113) - Markdown links will be opened with `App.open_url` automatically [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113) - The universal selector (`*`) will now not match widgets with the class `-textual-system` (scrollbars, notifications etc) [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113) - Renamed `Screen.can_view` and `Widget.can_view` to `Screen.can_view_entire` and `Widget.can_view_entire` [https://github.com/Textualize/textual/pull/5174](https://redirect.github.com/Textualize/textual/pull/5174) ##### Added - Added Link widget [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113) - Added `open_links` to `Markdown` and `MarkdownViewer` widgets [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113) - Added `App.DEFAULT_MODE` [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113) - Added `Containers.HorizontalGroup` and `Containers.VerticalGroup` [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113) - Added `$`, `£`, `€`, `(`, `)` symbols to Digits [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113) - Added `Button.action` parameter to invoke action when clicked [https://github.com/Textualize/textual/pull/5113](https://redirect.github.com/Textualize/textual/pull/5113) - Added `immediate` parameter to scroll methods [https://github.com/Textualize/textual/pull/5164](https://redirect.github.com/Textualize/textual/pull/5164) - Added `textual._loop.loop_from_index` [https://github.com/Textualize/textual/pull/5164](https://redirect.github.com/Textualize/textual/pull/5164) - Added `min_color` and `max_color` to Sparklines constructor, which take precedence over CSS [https://github.com/Textualize/textual/pull/5174](https://redirect.github.com/Textualize/textual/pull/5174) - Added new demo `python -m textual`, not *quite* finished but better than the old one [https://github.com/Textualize/textual/pull/5174](https://redirect.github.com/Textualize/textual/pull/5174) - Added `Screen.can_view_partial` and `Widget.can_view_partial` [https://github.com/Textualize/textual/pull/5174](https://redirect.github.com/Textualize/textual/pull/5174) - Added `App.is_web` property to indicate if the app is running via a web browser [https://github.com/Textualize/textual/pull/5128](https://redirect.github.com/Textualize/textual/pull/5128) - `Enter` and `Leave` events can now be used with the `on` decorator [https://github.com/Textualize/textual/pull/5159](https://redirect.github.com/Textualize/textual/pull/5159) ##### Fixed - Fixed glitchy ListView [https://github.com/Textualize/textual/issues/5163](https://redirect.github.com/Textualize/textual/issues/5163) ### [`v0.84.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0840---2024-10-22) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.83.0...v0.84.0) ##### Fixed - Fixed `RadioSet` not being scrollable [https://github.com/Textualize/textual/issues/5100](https://redirect.github.com/Textualize/textual/issues/5100) - Fixed infinite loop in TextArea [https://github.com/Textualize/textual/pull/5154](https://redirect.github.com/Textualize/textual/pull/5154) ##### Added - Added `background-tint` CSS rule [https://github.com/Textualize/textual/pull/5117](https://redirect.github.com/Textualize/textual/pull/5117) - Added `:first-of-type`, `:last-of-type`, `:odd`, and `:even` pseudo classes [https://github.com/Textualize/textual/pull/5139](https://redirect.github.com/Textualize/textual/pull/5139) ### [`v0.83.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0830---2024-10-10) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.82.0...v0.83.0) ##### Added - Added support for A-F to Digits widget [https://github.com/Textualize/textual/pull/5094](https://redirect.github.com/Textualize/textual/pull/5094) - Added `Region.constrain` [https://github.com/Textualize/textual/pull/5097](https://redirect.github.com/Textualize/textual/pull/5097) ##### Changed - `Screen.ALLOW_IN_MAXIMIZED_VIEW` will now default to `App.ALLOW_IN_MAXIMIZED_VIEW` [https://github.com/Textualize/textual/pull/5088](https://redirect.github.com/Textualize/textual/pull/5088) - Widgets matching `.-textual-system` will now be included in the maximize view by default [https://github.com/Textualize/textual/pull/5088](https://redirect.github.com/Textualize/textual/pull/5088) - Digits are now thin by default, style with text-style: bold to get bold digits [https://github.com/Textualize/textual/pull/5094](https://redirect.github.com/Textualize/textual/pull/5094) - Made `Widget.absolute_offset` public [https://github.com/Textualize/textual/pull/5097](https://redirect.github.com/Textualize/textual/pull/5097) - Tooltips are now displayed directly below the mouse cursor [https://github.com/Textualize/textual/pull/5097](https://redirect.github.com/Textualize/textual/pull/5097) - `Region.inflect` will now assume that margins overlap [https://github.com/Textualize/textual/pull/5097](https://redirect.github.com/Textualize/textual/pull/5097) - `Pilot.click` and friends will now accept a widget, in addition to a selector [https://github.com/Textualize/textual/pull/5095](https://redirect.github.com/Textualize/textual/pull/5095) ### [`v0.82.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0820---2024-10-03) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.81.0...v0.82.0) ##### Fixed - Fixed issue with screen not updating when auto_refresh was enabled [https://github.com/Textualize/textual/pull/5063](https://redirect.github.com/Textualize/textual/pull/5063) - Fixed issues regarding loading indicator [https://github.com/Textualize/textual/pull/5079](https://redirect.github.com/Textualize/textual/pull/5079) - Fixed issues with inspecting the lazy loaded widgets module [https://github.com/Textualize/textual/pull/5080](https://redirect.github.com/Textualize/textual/pull/5080) ##### Added - Added `DOMNode.is_on_screen` property [https://github.com/Textualize/textual/pull/5063](https://redirect.github.com/Textualize/textual/pull/5063) - Added support for keymaps (user configurable key bindings) [https://github.com/Textualize/textual/pull/5038](https://redirect.github.com/Textualize/textual/pull/5038) - Added descriptions to bindings for all internal widgets, and updated casing to be consistent [https://github.com/Textualize/textual/pull/5062](https://redirect.github.com/Textualize/textual/pull/5062) ##### Changed - Breaking change: `Widget.set_loading` no longer return an awaitable [https://github.com/Textualize/textual/pull/5079](https://redirect.github.com/Textualize/textual/pull/5079) ### [`v0.81.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0810---2024-09-25) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.80.1...v0.81.0) ##### Added - Added `x_axis` and `y_axis` parameters to `Widget.scroll_to_region` [https://github.com/Textualize/textual/pull/5047](https://redirect.github.com/Textualize/textual/pull/5047) - Added `Tree.move_cursor_to_line` [https://github.com/Textualize/textual/pull/5052](https://redirect.github.com/Textualize/textual/pull/5052) - Added `Screen.pop_until_active` [https://github.com/Textualize/textual/pull/5069](https://redirect.github.com/Textualize/textual/pull/5069) ##### Changed - Tree will no longer scroll the X axis when moving the cursor [https://github.com/Textualize/textual/pull/5047](https://redirect.github.com/Textualize/textual/pull/5047) - DirectoryTree will no longer select the first node [https://github.com/Textualize/textual/pull/5052](https://redirect.github.com/Textualize/textual/pull/5052) ##### Fixed - Fixed widgets occasionally not getting Resize events [https://github.com/Textualize/textual/pull/5048](https://redirect.github.com/Textualize/textual/pull/5048) - Fixed tree regression [https://github.com/Textualize/textual/pull/5052](https://redirect.github.com/Textualize/textual/pull/5052) - Fixed glitch with single line inline widget [https://github.com/Textualize/textual/pull/5054](https://redirect.github.com/Textualize/textual/pull/5054) ### [`v0.80.1`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0801---2024-09-24) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.80.0...v0.80.1) ##### Fixed - Fixed crash when exiting the app prematurely [https://github.com/Textualize/textual/pull/5039](https://redirect.github.com/Textualize/textual/pull/5039) - Fixed exception constructing TextArea outside of App [https://github.com/Textualize/textual/pull/5045](https://redirect.github.com/Textualize/textual/pull/5045) ### [`v0.80.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0800---2024-09-23) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.79.1...v0.80.0) ##### Added - Added `MaskedInput` widget [https://github.com/Textualize/textual/pull/4783](https://redirect.github.com/Textualize/textual/pull/4783) - Input validation for floats and integers accept embedded underscores, e.g., "1\_234\_567" is valid[https://github.com/Textualize/textual/pull/4784](https://redirect.github.com/Textualize/textual/pull/4784)84 - Support for `"none"` value added to `dock`, `hatch` and `split` styles [https://github.com/Textualize/textual/pull/4982](https://redirect.github.com/Textualize/textual/pull/4982) - Support for `"none"` added to box and border style properties (e.g `widget.style.border = "none"`) [https://github.com/Textualize/textual/pull/4982](https://redirect.github.com/Textualize/textual/pull/4982) - Docstrings added to most style properties [https://github.com/Textualize/textual/pull/4982](https://redirect.github.com/Textualize/textual/pull/4982) - Added `ansi_color` switch to App to permit ANSI (themed) colors [https://github.com/Textualize/textual/pull/5000](https://redirect.github.com/Textualize/textual/pull/5000) - Added `:ansi` pseudo class [https://github.com/Textualize/textual/pull/5000](https://redirect.github.com/Textualize/textual/pull/5000) - Added `-ansi-scrollbar` style to widgets [https://github.com/Textualize/textual/pull/5000](https://redirect.github.com/Textualize/textual/pull/5000) - Added `App.INLINE_PADDING` to define the number of spaces above inline apps [https://github.com/Textualize/textual/pull/5000](https://redirect.github.com/Textualize/textual/pull/5000) - Added `nocolor` psuedoclass when NO_COLOR env var is set- `BINDING_GROUP_TITLE` now defaults to `None` [https://github.com/Textualize/textual/pull/5023](https://redirect.github.com/Textualize/textual/pull/5023) - Added `TreeNode.siblings`, `TreeNode.next_sibling`, `TreeNode.previous_sibling`, `TreeNode.is_collapsed` [https://github.com/Textualize/textual/pull/5023](https://redirect.github.com/Textualize/textual/pull/5023) - Added additional bindings to Tree widget [https://github.com/Textualize/textual/pull/5023](https://redirect.github.com/Textualize/textual/pull/5023) - Added `Tree.center_scroll` [https://github.com/Textualize/textual/pull/5023](https://redirect.github.com/Textualize/textual/pull/5023) - Added `Tree.unselect` [https://github.com/Textualize/textual/pull/5023](https://redirect.github.com/Textualize/textual/pull/5023) ##### Changed - Input validation for integers no longer accepts scientific notation like '1.5e2'; must be castable to int. [https://github.com/Textualize/textual/pull/4784](https://redirect.github.com/Textualize/textual/pull/4784) - Default `scrollbar-size-vertical` changed to `2` in inline styles to match Widget default CSS (unlikely to affect users) [https://github.com/Textualize/textual/pull/4982](https://redirect.github.com/Textualize/textual/pull/4982) - Removed border-right from `Toast` [https://github.com/Textualize/textual/pull/4984](https://redirect.github.com/Textualize/textual/pull/4984) - Some fixes in `RichLog` result in slightly different semantics, see docstrings for details [https://github.com/Textualize/textual/pull/4978](https://redirect.github.com/Textualize/textual/pull/4978) - Changed how scrollbars are rendered (will have no visual effect, but will break snapshot tests) [https://github.com/Textualize/textual/pull/5000](https://redirect.github.com/Textualize/textual/pull/5000) - Added `enabled` switch to filters (mostly used internally) [https://github.com/Textualize/textual/pull/5000](https://redirect.github.com/Textualize/textual/pull/5000) - `BINDING_GROUP_TITLE` now defaults to `None` [https://github.com/Textualize/textual/pull/5023](https://redirect.github.com/Textualize/textual/pull/5023) - Breaking change: Changed how scrollbars are rendered so they work in ansi mode (will break snapshots) [https://github.com/Textualize/textual/pull/5023](https://redirect.github.com/Textualize/textual/pull/5023) ##### Fixed - Input validation of floats no longer accepts NaN (not a number). [https://github.com/Textualize/textual/pull/4784](https://redirect.github.com/Textualize/textual/pull/4784) - Fixed issues with screenshots by simplifying segments only for snapshot tests [https://github.com/Textualize/textual/issues/4929](https://redirect.github.com/Textualize/textual/issues/4929) - Fixed `RichLog.write` not respecting `width` parameter [https://github.com/Textualize/textual/pull/4978](https://redirect.github.com/Textualize/textual/pull/4978) - Fixed `RichLog` writing at wrong width when `write` occurs before width is known (e.g. in `compose` or `on_mount`) [https://github.com/Textualize/textual/pull/4978](https://redirect.github.com/Textualize/textual/pull/4978) - Fixed `RichLog.write` incorrectly shrinking width to `RichLog.min_width` when `shrink=True` (now shrinks to fit content area instead) [https://github.com/Textualize/textual/pull/4978](https://redirect.github.com/Textualize/textual/pull/4978) - Fixed flicker when setting `dark` reactive on startup [https://github.com/Textualize/textual/pull/4989](https://redirect.github.com/Textualize/textual/pull/4989) - Fixed command palette not sorting search results by their match score [https://github.com/Textualize/textual/pull/4994](https://redirect.github.com/Textualize/textual/pull/4994) - Fixed `DataTable` cached height issue on re-populating the table when using auto-height rows [https://github.com/Textualize/textual/pull/4992](https://redirect.github.com/Textualize/textual/pull/4992) - Fixed inline app output being cleared when `inline_no_clear=True` [https://github.com/Textualize/textual/issues/5019](https://redirect.github.com/Textualize/textual/issues/5019) ### [`v0.79.1`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0791---2024-08-31) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.79.0...v0.79.1) ##### Fixed - Fixed broken updates when non active screen changes [https://github.com/Textualize/textual/pull/4957](https://redirect.github.com/Textualize/textual/pull/4957) ### [`v0.79.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0790---2024-08-30) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.78.0...v0.79.0) ##### Added - Added `DOMNode.check_consume_key` [https://github.com/Textualize/textual/pull/4940](https://redirect.github.com/Textualize/textual/pull/4940) - Added `App.ESCAPE_TO_MINIMIZE`, `App.screen_to_minimize`, and `Screen.ESCAPE_TO_MINIMIZE` [https://github.com/Textualize/textual/pull/4951](https://redirect.github.com/Textualize/textual/pull/4951) - Added `DOMNode.query_exactly_one` [https://github.com/Textualize/textual/pull/4950](https://redirect.github.com/Textualize/textual/pull/4950) - Added `SelectorSet.is_simple` [https://github.com/Textualize/textual/pull/4950](https://redirect.github.com/Textualize/textual/pull/4950) ##### Changed - KeyPanel will show multiple keys if bound to the same action [https://github.com/Textualize/textual/pull/4940](https://redirect.github.com/Textualize/textual/pull/4940) - Breaking change: `DOMNode.query_one` will not `raise TooManyMatches` [https://github.com/Textualize/textual/pull/4950](https://redirect.github.com/Textualize/textual/pull/4950) ### [`v0.78.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0780---2024-08-27) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.77.0...v0.78.0) ##### Added - Added Maximize and Minimize system commands. [https://github.com/Textualize/textual/pull/4931](https://redirect.github.com/Textualize/textual/pull/4931) - Added `Screen.maximize`, `Screen.minimize`, `Screen.action_maximize`, `Screen.action_minimize`, `Widget.is_maximized`, `Widget.allow_maximize`. [https://github.com/Textualize/textual/pull/4931](https://redirect.github.com/Textualize/textual/pull/4931) - Added `Widget.ALLOW_MAXIMIZE`, `Screen.ALLOW_IN_MAXIMIZED_VIEW` classvars [https://github.com/Textualize/textual/pull/4931](https://redirect.github.com/Textualize/textual/pull/4931) ### [`v0.77.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0770---2024-08-22) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.76.0...v0.77.0) ##### Added - Added `tooltip` to Binding [https://github.com/Textualize/textual/pull/4859](https://redirect.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](https://redirect.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](https://redirect.github.com/Textualize/textual/pull/4876) - Added "split" CSS style, currently undocumented, and may change. [https://github.com/Textualize/textual/pull/4876](https://redirect.github.com/Textualize/textual/pull/4876) - Added `Region.get_spacing_between` [https://github.com/Textualize/textual/pull/4876](https://redirect.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](https://redirect.github.com/Textualize/textual/pull/4867) - Added `App.get_key_display` [https://github.com/Textualize/textual/pull/4890](https://redirect.github.com/Textualize/textual/pull/4890) - Added `DOMNode.BINDING_GROUP` [https://github.com/Textualize/textual/pull/4906](https://redirect.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](https://redirect.github.com/Textualize/textual/pull/4915) - Added `App.get_system_commands` [https://github.com/Textualize/textual/pull/4920](https://redirect.github.com/Textualize/textual/pull/4920) - Added "Save Screenshot" system command [https://github.com/Textualize/textual/pull/4922](https://redirect.github.com/Textualize/textual/pull/4922) ##### Changed - Removed caps_lock and num_lock modifiers [https://github.com/Textualize/textual/pull/4861](https://redirect.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](https://redirect.github.com/Textualize/textual/pull/4876) - Changed default command palette binding to `ctrl+p` [https://github.com/Textualize/textual/pull/4867](https://redirect.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](https://redirect.github.com/Textualize/textual/pull/4920) - Breaking change: Removed `ClassicFooter` widget (please use new `Footer` widget) [https://github.com/Textualize/textual/pull/4921](https://redirect.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](https://redirect.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](https://redirect.github.com/Textualize/textual/pull/4869) - Fixed scrolling by page not taking scrollbar in to account [https://github.com/Textualize/textual/pull/4916](https://redirect.github.com/Textualize/textual/pull/4916) - Fixed `App.MODES` being the same for all instances -- per-instance modes now exist internally ### [`v0.76.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0760) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.75.1...v0.76.0) ##### Changed - Input cursor will no longer jump to the end on focus [https://github.com/Textualize/textual/pull/4773](https://redirect.github.com/Textualize/textual/pull/4773) - Removed `Size.cip_size`, which was a clone of `crop_size` - Widgets with auto dimensions will now grow if there is a scrollbar [https://github.com/Textualize/textual/pull/4844](https://redirect.github.com/Textualize/textual/pull/4844) - Don't do automatic refresh when widget is not visible [https://github.com/Textualize/textual/pull/4847](https://redirect.github.com/Textualize/textual/pull/4847) - Renamed `DOMNode._automatic_refresh` to `DOMNode.automatic_refresh` to allow for customization [https://github.com/Textualize/textual/pull/4847](https://redirect.github.com/Textualize/textual/pull/4847) ##### Fixed - Input cursor blink effect will now restart correctly when any action is performed on the input [https://github.com/Textualize/textual/pull/4773](https://redirect.github.com/Textualize/textual/pull/4773) - Fixed bindings on same key not updating description [https://github.com/Textualize/textual/pull/4850](https://redirect.github.com/Textualize/textual/pull/4850) ##### Added - Textual will use the `ESCDELAY` env var when detecting escape keys [https://github.com/Textualize/textual/pull/4848](https://redirect.github.com/Textualize/textual/pull/4848) ### [`v0.75.1`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0751---2024-08-02) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.75.0...v0.75.1) ##### Fixed - Fixed issue with Enter events causing unresponsive UI [https://github.com/Textualize/textual/pull/4833](https://redirect.github.com/Textualize/textual/pull/4833) ### [`v0.75.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0750---2024-08-01) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.74.0...v0.75.0) ##### Added - Added `App.open_url` to open URLs in the web browser. When running via the WebDriver, the URL will be opened in the browser that is controlling the app [https://github.com/Textualize/textual/pull/4819](https://redirect.github.com/Textualize/textual/pull/4819) - Added `Widget.is_mouse_over` [https://github.com/Textualize/textual/pull/4818](https://redirect.github.com/Textualize/textual/pull/4818) - Added `node` attribute to `events.Enter` and `events.Leave` [https://github.com/Textualize/textual/pull/4818](https://redirect.github.com/Textualize/textual/pull/4818) ##### Changed - `events.Enter` and `events.Leave` events now bubble. [https://github.com/Textualize/textual/pull/4818](https://redirect.github.com/Textualize/textual/pull/4818) - Renamed `Widget.mouse_over` to `Widget.mouse_hover` [https://github.com/Textualize/textual/pull/4818](https://redirect.github.com/Textualize/textual/pull/4818) ##### Fixed - Fixed issue with `mutate_reactive` and data binding [https://github.com/Textualize/textual/pull/4828](https://redirect.github.com/Textualize/textual/pull/4828) ### [`v0.74.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0740---2024-07-25) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.73.0...v0.74.0) ##### Fixed - Fixed issues in Kitty terminal after exiting app [https://github.com/Textualize/textual/issues/4779](https://redirect.github.com/Textualize/textual/issues/4779) - Fixed exception when removing Selects [https://github.com/Textualize/textual/pull/4786](https://redirect.github.com/Textualize/textual/pull/4786) - Fixed issue with non-clickable Footer keys [https://github.com/Textualize/textual/pull/4798](https://redirect.github.com/Textualize/textual/pull/4798) - Fixed issue with recompose not working from Mount handler [https://github.com/Textualize/textual/pull/4802](https://redirect.github.com/Textualize/textual/pull/4802) ##### Changed - Calling `Screen.dismiss` with no arguments will invoke the screen callback with `None` (previously the callback wasn't invoke at all). [https://github.com/Textualize/textual/pull/4795](https://redirect.github.com/Textualize/textual/pull/4795) ### [`v0.73.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0730---2024-07-18) [Compare Source](https://redirect.github.com/Textualize/textual/compare/v0.72.0...v0.73.0) ##### Added - Added `TextArea.line_number_start` reactive attribute [https://github.com/Textualize/textual/pull/4471](https://redirect.github.com/Textualize/textual/pull/4471) - Added `TextArea.matching_bracket_location` property [https://github.com/Textualize/textual/pull/4764](https://redirect.github.com/Textualize/textual/pull/4764) - Added `DOMNode.mutate_reactive` [https://github.com/Textualize/textual/pull/4731](https://redirect.github.com/Textualize/textual/pull/4731) - Added "quality" parameter to `textual.color.Gradient` [https://github.com/Textualize/textual/pull/4739](https://redirect.github.com/Textualize/textual/pull/4739) - Added `textual.color.Gradient.get_rich_color` [https://github.com/Textualize/textual/pull/4739](https://redirect.github.com/Textualize/textual/pull/4739) - `Widget.remove_children` now accepts an iterable if widgets in addition to a selector [https://github.com/Textualize/textual/issues/4735](https://redirect.github.com/Textualize/textual/issues/4735) - Raise `ValueError` with improved error message when number of cells inserted using `DataTable.add_row` doesn't match the number of columns in the table [https://github.com/Textualize/textual/pull/4742](https://redirect.github.com/Textualize/textual/pull/4742) - Add `Tree.move_cursor` to programmatically move the cursor without selecting the node [https://github.com/Textualize/textual/pull/4753](https://redirect.github.com/Textualize/textual/pull/4753) - Added `Footer` component style handling of padding for the key/description [https://github.com/Textualize/textual/pull/4651](https://redirect.github.com/Textualize/textual/pull/4651) - `StringKey` is now exported from `data_table` [https://github.com/Textualize/textual/pull/4760](https://redirect.github.com/Textualize/textual/pull/4760) - `TreeNode.add` and `TreeNode.add_leaf` now accepts `before` and `after` arguments to position a new node [https://github.com/Textualize/textual/pull/4772](https://redirect.github.com/Textualize/textual/pull/4772) - Added a `gradient` parameter to the `ProgressBar` widget [https://github.com/Textualize/textual/pull/4774](https://redirect.github.com/Textualize/textual/pull/4774) ##### Fixed - Fixed issue with `Tabs` where disabled tabs could still be activated by clicking the underline [https://github.com/Textualize/textual/issues/4701](https://redirect.github.com/Textualize/textual/issues/4701) - Fixed scroll_visible with margin [https://github.com/Textualize/textual/pull/4719](https://redirect.github.com/Textualize/textual/pull/4719) - Fixed programmatically disabling button stuck in hover state [https://github.com/Textualize/textual/pull/4724](https://redirect.github.com/Textualize/textual/pull/4724) - Fixed `DataTable` poor performance on startup and focus change when rows contain multi-line content [https://github.com/Textualize/textual/pull/4748](https://redirect.github.com/Textualize/textual/pull/4748) - Fixed `Tree` and `DirectoryTree` horizontal scrolling off-by-2 [https://github.com/Textualize/textual/pull/4744](https://redirect.github.com/Textualize/textual/pull/4744) - Fixed text-opacity in component styles [https://github.com/Textualize/textual/pull/4747](https://redirect.github.com/Textualize/textual/pull/4747) - Ensure `Tree.select_node` sends `NodeSelected` message [https://github.com/Textualize/textual/pull/4753](https://redirect.github.com/Textualize/textual/pull/4753) - Fixed message handlers not working when message types are assigned as the value of class vars [https://github.com/Textualize/textual/pull/3940](https://redirect.github.com/Textualize/textual/pull/3940) - Fixed `CommandPalette` not focusing the input when opened when `App.AUTO_FOCUS` doesn't match the input [https://github.com/Textualize/textual/pull/4763](https://redirect.github.com/Textualize/textual/pull/4763) - `SelectionList.SelectionToggled` will now be sent for each option when a bulk toggle is performed (e.g. `toggle_all`). Previously no messages were sent at all. [https://github.com/Textualize/textual/pull/4759](https://redirect.github.com/Textualize/textual/pull/4759) - Fixed focus styles not being updated on blur [https://github.com/Textualize/textual/pull/4771](https://redirect.github.com/Textualize/textual/pull/4771) ##### Changed - "Discover" hits in the command palette are no longer sorted alphabetically [https://github.com/Textualize/textual/pull/4720](https://redirect.github.com/Textualize/textual/pull/4720) - `TreeNodeSelected` messages are now posted before `TreeNodeExpanded` messages when an expandable node is selec[https://github.com/Textualize/textual/pull/4753](https://redirect.github.com/Textualize/textual/pull/4753)4753 - `Markdown.LinkClicked.href` is now automatically unquoted [https://github.com/Textualize/textual/pull/4749](https://redirect.github.com/Textualize/textual/pull/4749) - The mouse cursor hover effect of `Tree` and `DirectoryTree` will no longer linger after the mouse leaves the widget [https://github.com/Textualize/textual/pull/4766](https://redirect.github.com/Textualize/textual/pull/4766) ### [`v0.72.0`](https://redirect.github.com/Textualize/textual/blob/HEAD/CHANGELOG.md#0720---2024-07-09) ##### Changed - More predictable DOM removals. [https://github.com/Textualize/textual/pull/4708](https://redirect.github.com/Textualize/textual/pull/4708) ##### Fixed - Fixed clicking separator in OptionList moving cursor [https://github.com/Textualize/textual/issues/4710](https://redirect.github.com/Textualize/textual/issues/4710) - Fixed scrolling issue in OptionList [https://github.com/Textualize/textual/pull/4709](https://redirect.github.com/Textualize/textual/pull/4709)Configuration
📅 Schedule: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.