v0.27.0
https://github.com/ratatui/ratatui/releases/tag/v0.27.0
β οΈ See the breaking changes for this release.
LineGauge: Background Styles π
LineGauge::gauge_style
is now deprecated in favor of filled_style
and unfilled_style
methods
which makes it possible to set the foreground/background styles for different states.
We also added a Line Gauge example:
List: Navigation Methods π§
You can now navigate in the List
widget by using the following methods!
It also clamps the selected index to the bounds of the list when navigating.
Text: Conversion From Display π
Text
, Span
and Line
now supports conversion from any type that implements the Display
trait!
This has been made possible with the newly added ToText
, ToSpan
and ToLine
traits
respectfully.
Palette Colors π¨
β οΈ This is behind the βpaletteβ feature flag.
You can now use colors from the palette crate in Ratatui!
New Border Sets πΌοΈ
border::EMPTY
It uses an empty space symbol (β)
This is useful for when you need to allocate space for the border and apply the border style to a block without actually drawing a border. This makes it possible to style the entire title area or a block rather than just the title content.
border::FULL
It uses a full block symbol (β)
Re-export Backends π€
crossterm
, termion
, and termwiz
can now be accessed as
ratatui::{crossterm, termion, termwiz}
respectively.
This makes it possible to just add the Ratatui crate as a dependency and use the backend of choice without having to add the backend crates as dependencies.
To update existing code, replace all instances of crossterm::
with ratatui::crossterm::
,
termion::
with ratatui::termion::
, and termwiz::
with ratatui::termwiz::
.
Example for crossterm
:
And then you can remove crossterm
from Cargo.toml
!
Update Prelude π
Based on a suggestion on Reddit
we made changes to the prelude
module.
Note: This module allows you to easily use
ratatui
without a huge amount of imports! e.g.use ratatui::prelude::*;
The following items have been removed from the prelude:
style::Styled
- this trait is useful for widgets that want to support the Stylize trait, but it adds complexity as widgets have twostyle
methods and aset_style
method.symbols::Marker
- this item is used by code that needs to draw to theCanvas
widget, but itβs not a common item that would be used by most users of the library.terminal::{CompletedFrame, TerminalOptions, Viewport}
- these items are rarely used by code that needs to interact with the terminal, and theyβre generally only ever used once in any app.
The following items have been added to the prelude:
layout::{Position, Size}
- these items are used by code that needs to interact with the layout system. These are newer items that were added in the last few releases, which should be used more liberally.
Tracing Example π
Wondering how to debug TUI apps? Tried println
and it didnβt work? We got you covered!
We added an example that demonstrates how to log to a file:
- Code: https://github.com/ratatui/ratatui/blob/main/examples/tracing.rs
- Related discussion on Ratatui Forum: https://forum.ratatui.rs/t/how-do-you-println-debug-your-tui-programs/66
Hyperlink Example π
We added a proof-of-concept example for using hyperlinks in the terminal.
The code is available here.
Cell: New methods π§
You can now create empty Cell
s like this:
We also added a constant Cell:new
method for simplify the construction as follows:
Make Stylize::bg()
generic π
Previously, Stylize::bg()
accepted Color
but now accepts Into<Color>
. This allows more
flexible types from calling scopes, though it can break some type inference in the calling scope.
Writer Methods on Backends ποΈ
crossterm
and termion
backends now have writer()
and writer_mut()
methods for obtain access
to the underlying writer.
This is useful e.g. if you want to see what has been written so far.
Add Missing VHS Tapes πΌ
We were missing demos for some of our examples. They are now added!
List: Remove deprecated start_corner()
π«
List::start_corner
was deprecated back in v0.25.
Use List::direction
and ListDirection
instead:
layout::Corner
is also removed entirely.
Padding: Deprecate zero()
π«
It is now a constant!
Buffer: Improve Performance β‘οΈ
Buffer::filled
now moves the cell instead of taking a reference:
Rect: Improve Performance β‘οΈ
Margin
needs to be passed without reference now:
Other πΌ
Position
andSize
now implementsDisplay
(#1162)- Remove newlines when converting strings to
Line
s (#1191)Line::from("a\nb")
now returns aLine
with twoSpan
s instead of one
- Ensure that zero-width characters are rendered correctly (#1165)
- Respect area width while rendering &str and String (#1177)
- Improve benchmark consistency (#1126)
βI canβt believe it! A real gourmet kitchen, and I get to watch!β β Remy