Ratatui Versions Save

Rust library that's all about cooking up terminal user interfaces (TUIs) 👨‍🍳🐀

v0.26.3-alpha.2

1 week ago

v0.26.3-alpha.2 - 2024-05-04

Features

  • 97ee102 (buffer) Track_caller for index_of by @EdJoPaTo in #1046

    The caller put in the wrong x/y -> the caller is the cause.
    
  • bf09234 (table) Make TableState::new const by @EdJoPaTo in #1040

Bug Fixes

  • 4392759 (examples) Changed user_input example to work with multi-byte unicode chars by @OkieOth in #1069

    This is the proposed solution for issue #1068. It solves the bug in the
    user_input example with multi-byte UTF-8 characters as input.
    

    Fixes:#1068


  • 20fc0dd (examples) Fix key handling in constraints by @psobolik in #1066

    Add check for `KeyEventKind::Press` to constraints example's event
    handler to eliminate double keys
    on Windows.
    

    Fixes:#1062


  • f4637d4 (reflow) Allow wrapping at zero width whitespace by @kxxt in #1074

  • 0a16496 (uncategorized) Use to_string to serialize Color by @SleepySwords in #934

    Since deserialize now uses `FromStr` to deserialize color, serializing
    `Color` RGB values, as well as index values, would produce an output
    that would no longer be able to be deserialized without causing an
    error.
    

    Color::Rgb will now be serialized as the hex representation of their value. For example, with serde_json, Color::Rgb(255, 0, 255) would be serialized as "#FF00FF" rather than {"Rgb": [255, 0, 255]}.

    Color::Indexed will now be serialized as just the string of the index. For example, with serde_json, Color::Indexed(10) would be serialized as "10" rather than {"Indexed": 10}.

Other color variants remain the same.

Refactor

  • baedc39 (buffer) Simplify set_stringn logic by @EdJoPaTo in #1083

  • bef5bcf (example) Remove pointless new method by @EdJoPaTo in #1038

    Use `App::default()` directly.
    
  • f3172c5 (gauge) Fix internal typo by @EdJoPaTo in #1048

Documentation

  • da1ade7 (github) Update code owners about past maintainers by @orhun in #1073

    As per suggestion in
    https://github.com/ratatui-org/ratatui/pull/1067#issuecomment-2079766990
    
    It's good for historical purposes!
    
  • 3687f78 (github) Update code owners by @orhun in #1067

    Removes the team members that are not able to review PRs recently (with
    their approval ofc)
    
  • e95230b (uncategorized) Add note about scrollbar state content length by @Utagai in #1077

Performance

  • 366c2a0 (block) Use Block::bordered by @EdJoPaTo in #1041

    Block::bordered() is shorter than

    Block::new().borders(Borders::ALL), requires one less import (Borders) and in case Block::default() was used before can even be const.

  • 2e71c18 (buffer) Simplify Buffer::filled with macro by @EdJoPaTo in #1036

    The `vec![]` macro is highly optimized by the Rust team and shorter.
    Don't do it manually.
    
    This change is mainly cleaner code. The only production code that uses
    this is `Terminal::with_options` and `Terminal::insert_before` so it's
    not performance relevant on every render.
    
  • 81b9633 (calendar) Use const fn by @EdJoPaTo in #1039

    Also, do the comparison without `as u8`. Stays the same at runtime and
    is cleaner code.
    
  • c442dfd (canvas) Change map data to const instead of static by @EdJoPaTo in #1037

  • 1706b0a (crossterm) Speed up combined fg and bg color changes by up to 20% by @joshka in #1072

Miscellaneous Tasks

  • 5fbb77a (readme) Use terminal theme for badges by @TadoTheMiner in #1026

    The badges in the readme were all the default theme. Giving them
    prettier colors that match the terminal gif is better. I've used the
    colors from the VHS repo.
    
  • bef2bc1 (cargo) Add homepage to Cargo.toml by @joshka in #1080

  • 64eb391 (uncategorized) Fixup cargo lint for windows targets by @joshka in #1071

    Crossterm brings in multiple versions of the same dep
    
  • 326a461 (uncategorized) Add package categories field by @mcskware in #1035

    Add the package categories field in Cargo.toml, with value
    `["command-line-interface"]`. This fixes the (currently non-default)
    clippy cargo group lint
    [`clippy::cargo_common_metadata`](https://rust-lang.github.io/rust-clippy/master/index.html#/cargo_common_metadata).
    
    As per discussion in [Cargo package categories
    suggestions](https://github.com/ratatui-org/ratatui/discussions/1034),
    this lint is not suggested to be run by default in CI, but rather as an
    occasional one-off as part of the larger
    [`clippy::cargo`](https://doc.rust-lang.org/stable/clippy/lints.html#cargo)
    lint group.
    

Build

  • c75aa19 (uncategorized) Add clippy::cargo lint by @joshka in #1053

    Followup to https://github.com/ratatui-org/ratatui/pull/1035 and
    https://github.com/ratatui-org/ratatui/discussions/1034
    
    It's reasonable to enable this and deal with breakage by fixing any
    specific issues that arise.
    

New Contributors

  • @Utagai made their first contribution in #1077
  • @kxxt made their first contribution in #1074
  • @OkieOth made their first contribution in #1069
  • @psobolik made their first contribution in #1066
  • @SleepySwords made their first contribution in #934
  • @mcskware made their first contribution in #1035

Full Changelog: https://github.com/ratatui-org/ratatui/compare/v0.26.2...v0.26.3-alpha.2

v0.26.3-alpha.1

2 weeks ago

v0.26.3-alpha.1 - 2024-04-27

Features

  • 97ee102 (buffer) Track_caller for index_of by @EdJoPaTo in #1046

    The caller put in the wrong x/y -> the caller is the cause.
    
  • bf09234 (table) Make TableState::new const by @EdJoPaTo in #1040

Bug Fixes

  • 0a16496 (uncategorized) Use to_string to serialize Color by @SleepySwords in #934

    Since deserialize now uses `FromStr` to deserialize color, serializing
    `Color` RGB values, as well as index values, would produce an output
    that would no longer be able to be deserialized without causing an
    error.
    

    Color::Rgb will now be serialized as the hex representation of their value. For example, with serde_json, Color::Rgb(255, 0, 255) would be serialized as "#FF00FF" rather than {"Rgb": [255, 0, 255]}.

    Color::Indexed will now be serialized as just the string of the index. For example, with serde_json, Color::Indexed(10) would be serialized as "10" rather than {"Indexed": 10}.

Other color variants remain the same.

Refactor

  • bef5bcf (example) Remove pointless new method by @EdJoPaTo in #1038

    Use `App::default()` directly.
    
  • f3172c5 (gauge) Fix internal typo by @EdJoPaTo in #1048

Performance

  • 2e71c18 (buffer) Simplify Buffer::filled with macro by @EdJoPaTo in #1036

    The `vec![]` macro is highly optimized by the Rust team and shorter.
    Don't do it manually.
    
    This change is mainly cleaner code. The only production code that uses
    this is `Terminal::with_options` and `Terminal::insert_before` so it's
    not performance relevant on every render.
    
  • 81b9633 (calendar) Use const fn by @EdJoPaTo in #1039

    Also, do the comparison without `as u8`. Stays the same at runtime and
    is cleaner code.
    
  • c442dfd (canvas) Change map data to const instead of static by @EdJoPaTo in #1037

Miscellaneous Tasks

  • 5fbb77a (readme) Use terminal theme for badges by @TadoTheMiner in #1026

    The badges in the readme were all the default theme. Giving them
    prettier colors that match the terminal gif is better. I've used the
    colors from the VHS repo.
    
  • 326a461 (uncategorized) Add package categories field by @mcskware in #1035

    Add the package categories field in Cargo.toml, with value
    `["command-line-interface"]`. This fixes the (currently non-default)
    clippy cargo group lint
    [`clippy::cargo_common_metadata`](https://rust-lang.github.io/rust-clippy/master/index.html#/cargo_common_metadata).
    
    As per discussion in [Cargo package categories
    suggestions](https://github.com/ratatui-org/ratatui/discussions/1034),
    this lint is not suggested to be run by default in CI, but rather as an
    occasional one-off as part of the larger
    [`clippy::cargo`](https://doc.rust-lang.org/stable/clippy/lints.html#cargo)
    lint group.
    

Build

  • c75aa19 (uncategorized) Add clippy::cargo lint by @joshka in #1053

    Followup to https://github.com/ratatui-org/ratatui/pull/1035 and
    https://github.com/ratatui-org/ratatui/discussions/1034
    
    It's reasonable to enable this and deal with breakage by fixing any
    specific issues that arise.
    

New Contributors

  • @SleepySwords made their first contribution in #934
  • @mcskware made their first contribution in #1035

Full Changelog: https://github.com/ratatui-org/ratatui/compare/v0.26.2...v0.26.3-alpha.1

v0.26.3-alpha.0

3 weeks ago

v0.26.3-alpha.0 - 2024-04-20

Refactor

  • bef5bcf (example) Remove pointless new method by @EdJoPaTo in #1038

    Use `App::default()` directly.
    
  • f3172c5 (gauge) Fix internal typo by @EdJoPaTo in #1048

Miscellaneous Tasks

  • 326a461 (uncategorized) Add package categories field by @mcskware in #1035

    Add the package categories field in Cargo.toml, with value
    `["command-line-interface"]`. This fixes the (currently non-default)
    clippy cargo group lint
    [`clippy::cargo_common_metadata`](https://rust-lang.github.io/rust-clippy/master/index.html#/cargo_common_metadata).
    
    As per discussion in [Cargo package categories
    suggestions](https://github.com/ratatui-org/ratatui/discussions/1034),
    this lint is not suggested to be run by default in CI, but rather as an
    occasional one-off as part of the larger
    [`clippy::cargo`](https://doc.rust-lang.org/stable/clippy/lints.html#cargo)
    lint group.
    

New Contributors

  • @mcskware made their first contribution in #1035

Full Changelog: https://github.com/ratatui-org/ratatui/compare/v0.26.2...v0.26.3-alpha.0

v0.26.2

4 weeks ago

0.26.2 - 2024-04-15

This is a patch release that fixes bugs and adds enhancements, including new iterator constructors, List scroll padding, and various rendering improvements. ✨

Release highlights: https://ratatui.rs/highlights/v0262/

Features

  • 11b452d (layout) Mark various functions as const by @EdJoPaTo in #951

  • 1cff511 (line) Impl Styled for Line by @joshka in #968

    This adds `FromIterator` impls for `Line` and `Text` that allow creating
    `Line` and `Text` instances from iterators of `Span` and `Line`
    instances, respectively.
    
    ```rust
    let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
    let line: Line = iter::once("Hello".blue())
        .chain(iter::once(" world!".green()))
        .collect();
    let text = Text::from_iter(vec!["The first line", "The second line"]);
    let text: Text = iter::once("The first line")
        .chain(iter::once("The second line"))
        .collect();
    ```
    
  • 654949b (list) Add Scroll Padding to Lists by @CameronBarnes in #958

    Introduces scroll padding, which allows the api user to request that a certain number of ListItems be kept visible above and below the currently selected item while scrolling.
    
    ```rust
    let list = List::new(items).scroll_padding(1);
    ```
    

    Fixes:https://github.com/ratatui-org/ratatui/pull/955

  • 26af650 (text) Add push methods for text and line by @joshka in #998

    Adds the following methods to the `Text` and `Line` structs:
    - Text::push_line
    - Text::push_span
    - Line::push_span
    
    This allows for adding lines and spans to a text object without having
    to call methods on the fields directly, which is useful for incremental
    construction of text objects.
    
  • b5bdde0 (text) Add FromIterator impls for Line and Text by @joshka in #967

    This adds `FromIterator` impls for `Line` and `Text` that allow creating
    `Line` and `Text` instances from iterators of `Span` and `Line`
    instances, respectively.
    
    ```rust
    let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
    let line: Line = iter::once("Hello".blue())
        .chain(iter::once(" world!".green()))
        .collect();
    let text = Text::from_iter(vec!["The first line", "The second line"]);
    let text: Text = iter::once("The first line")
        .chain(iter::once("The second line"))
        .collect();
    ```
    
  • 12f67e8 (uncategorized) Impl Widget for &str and String by @kdheepak in #952

    Currently, `f.render_widget("hello world".bold(), area)` works but
    `f.render_widget("hello world", area)` doesn't. This PR changes that my
    implementing `Widget` for `&str` and `String`. This makes it easier to
    render strings with no styles as widgets.
    
    Example usage:
    
    ```rust
    terminal.draw(|f| f.render_widget("Hello World!", f.size()))?;
    ```
    
    ---------
    

Bug Fixes

  • 0207160 (line) Line truncation respects alignment by @TadoTheMiner in #987

    When rendering a `Line`, the line will be truncated:
    - on the right for left aligned lines
    - on the left for right aligned lines
    - on bot sides for centered lines
    
    E.g. "Hello World" will be rendered as "Hello", "World", "lo wo" for
    left, right, centered lines respectively.
    

    Fixes:https://github.com/ratatui-org/ratatui/issues/932

  • c56f49b (list) Saturating_sub to fix highlight_symbol overflow by @mrjackwills in #949

    An overflow (pedantically an underflow) can occur if the
    highlight_symbol is a multi-byte char, and area is reduced to a size
    less than that char length.
    
  • b7778e5 (paragraph) Unit test typo by @joshka in #1022

  • 943c043 (scrollbar) Dont render on 0 length track by @EdJoPaTo in #964

    Fixes a panic when `track_length - 1` is used. (clamp panics on `-1.0`
    being smaller than `0.0`)
    
  • 742a5ea (text) Fix panic when rendering out of bounds by @joshka in #997

    Previously it was possible to cause a panic when rendering to an area
    outside of the buffer bounds. Instead this now correctly renders nothing
    to the buffer.
    
  • f6c4e44 (uncategorized) Ensure that paragraph correctly renders styled text by @joshka in #992

    Paragraph was ignoring the new `Text::style` field added in 0.26.0
    

    Fixes:https://github.com/ratatui-org/ratatui/issues/990

  • 35e971f (uncategorized) Scrollbar thumb not visible on long lists by @ThomasMiz in #959

    When displaying somewhat-long lists, the `Scrollbar` widget sometimes did not display a thumb character, and only the track will be visible.
    

Refactor

  • 6fd5f63 (lint) Prefer idiomatic for loops by @EdJoPaTo

  • 37b957c (lints) Add lints to scrollbar by @EdJoPaTo

  • c12bcfe (non-src) Apply pedantic lints by @EdJoPaTo in #976

    Fixes many not yet enabled lints (mostly pedantic) on everything that is
    not the lib (examples, benches, tests). Therefore, this is not containing
    anything that can be a breaking change.
    
    Lints are not enabled as that should be the job of #974. I created this
    as a separate PR as its mostly independent and would only clutter up the
    diff of #974 even more.
    
    Also see
    https://github.com/ratatui-org/ratatui/pull/974#discussion_r1506458743
    
    ---------
    
  • 8719608 (span) Rename to_aligned_line into into_aligned_line by @EdJoPaTo in #993

    With the Rust method naming conventions these methods are into methods
    consuming the Span. Therefore, it's more consistent to use `into_`
    instead of `to_`.
    
    ```rust
    Span::to_centered_line
    Span::to_left_aligned_line
    Span::to_right_aligned_line
    ```
    
    Are marked deprecated and replaced with the following
    
    ```rust
    Span::into_centered_line
    Span::into_left_aligned_line
    Span::into_right_aligned_line
    ```
    
  • b831c56 (widget-ref) Clippy::needless_pass_by_value by @EdJoPaTo

  • 359204c (uncategorized) Simplify to io::Result by @EdJoPaTo in #1016

    Simplifies the code, logic stays exactly the same.
    
  • 8e68db9 (uncategorized) Remove pointless default on internal structs by @EdJoPaTo in #980

    See #978

Also remove other derives. They are unused and just slow down compilation.

  • 3be189e (uncategorized) Clippy::thread_local_initializer_can_be_made_const by @EdJoPaTo

    enabled by default on nightly
    
  • 5c4efac (uncategorized) Clippy::map_err_ignore by @EdJoPaTo

  • bbb6d65 (uncategorized) Clippy::else_if_without_else by @EdJoPaTo

  • fdb14dc (uncategorized) Clippy::redundant_type_annotations by @EdJoPaTo

  • 9b3b23a (uncategorized) Remove literal suffix by @EdJoPaTo

    its not needed and can just be assumed
    

    related:clippy::(un)separated_literal_suffix

  • 58b6e0b (uncategorized) Clippy::should_panic_without_expect by @EdJoPaTo

  • c870a41 (uncategorized) Clippy::many_single_char_names by @EdJoPaTo

  • a6036ad (uncategorized) Clippy::similar_names by @EdJoPaTo

  • 060d26b (uncategorized) Clippy::match_same_arms by @EdJoPaTo

  • fcbea9e (uncategorized) Clippy::uninlined_format_args by @EdJoPaTo

  • 14b24e7 (uncategorized) Clippy::if_not_else by @EdJoPaTo

  • 5ed1f43 (uncategorized) Clippy::redundant_closure_for_method_calls by @EdJoPaTo

  • c8c7924 (uncategorized) Clippy::too_many_lines by @EdJoPaTo

  • e3afe7c (uncategorized) Clippy::unreadable_literal by @EdJoPaTo

  • a1f54de (uncategorized) Clippy::bool_to_int_with_if by @EdJoPaTo

  • b8ea190 (uncategorized) Clippy::cast_lossless by @EdJoPaTo

  • 0de5238 (uncategorized) Dead_code by @EdJoPaTo

    enabled by default, only detected by nightly yet
    
  • df5dddf (uncategorized) Unused_imports by @EdJoPaTo

    enabled by default, only detected on nightly yet
    
  • f1398ae (uncategorized) Clippy::useless_vec by @EdJoPaTo

    Lint enabled by default but only nightly finds this yet
    
  • 525848f (uncategorized) Manually apply clippy::use_self for impl with lifetimes by @EdJoPaTo

  • 660c718 (uncategorized) Clippy::empty_line_after_doc_comments by @EdJoPaTo

  • ab951fa (uncategorized) Clippy::return_self_not_must_use by @EdJoPaTo

  • 3cd4369 (uncategorized) Clippy::doc_markdown by @EdJoPaTo

  • 9bc014d (uncategorized) Clippy::items_after_statements by @EdJoPaTo

  • 36a0cd5 (uncategorized) Clippy::deref_by_slicing by @EdJoPaTo

  • f7f6692 (uncategorized) Clippy::equatable_if_let by @EdJoPaTo

  • 01418eb (uncategorized) Clippy::default_trait_access by @EdJoPaTo

  • 8536760 (uncategorized) Clippy::inefficient_to_string by @EdJoPaTo

  • a558b19 (uncategorized) Clippy::implicit_clone by @EdJoPaTo

  • 5b00e3a (uncategorized) Clippy::use_self by @EdJoPaTo

  • 27680c0 (uncategorized) Clippy::semicolon_if_nothing_returned by @EdJoPaTo

Documentation

  • 14461c3 (breaking-changes) Typos and markdownlint by @EdJoPaTo in #1009

  • d0067c8 (license) Update copyright years by @orhun in #962

  • 88bfb5a (text) Update Text and Line docs by @joshka in #969

  • 3b002fd (uncategorized) Update incompatible code warning in examples readme by @joshka in #1013

Performance

  • e02f476 (borders) Allow border!() in const by @EdJoPaTo in #977

    This allows more compiler optimizations when the macro is used.
    
  • 541f0f9 (cell) Use const CompactString::new_inline by @EdJoPaTo in #979

    Some minor find when messing around trying to `const` all the things.
    
    While `reset()` and `default()` can not be `const` it's still a benefit
    when their contents are.
    
  • 65e7923 (scrollbar) Const creation by @EdJoPaTo in #963

    A bunch of `const fn` allow for more performance and `Default` now uses the `const` new implementations.
    
  • 8195f52 (uncategorized) Clippy::needless_pass_by_value by @EdJoPaTo

  • 183c07e (uncategorized) Clippy::trivially_copy_pass_by_ref by @EdJoPaTo

  • a13867f (uncategorized) Clippy::cloned_instead_of_copied by @EdJoPaTo

  • 3834374 (uncategorized) Clippy::missing_const_for_fn by @EdJoPaTo

Miscellaneous Tasks

  • 125ee92 (docs) Fix: fix typos in crate documentation by @orhun in #1002

  • 38c17e0 (editorconfig) Set and apply some defaults by @EdJoPaTo

  • 07da90a (funding) Add eth address for receiving funds from drips.network by @BenJam in #994

  • 078e97e (github) Add EdJoPaTo as a maintainer by @orhun in #986

  • b0314c5 (uncategorized) Remove conventional commit check for PR by @Valentin271 in #950

    This removes conventional commit check for PRs.
    
    Since we use the PR title and description this is useless. It fails a
    lot of time and we ignore it.
    
    IMPORTANT NOTE: This does **not** mean Ratatui abandons conventional
    commits. This only relates to commits in PRs.
    

Build

  • 6e6ba27 (lint) Warn on pedantic and allow the rest by @EdJoPaTo

  • c4ce7e8 (uncategorized) Enable more satisfied lints by @EdJoPaTo

    These lints dont generate warnings and therefore dont need refactoring.
    I think they are useful in the future.
    
  • a4e84a6 (uncategorized) Increase msrv to 1.74.0 by @EdJoPaTo [breaking]

    configure lints in Cargo.toml requires 1.74.0
    

    BREAKING CHANGE:rust 1.74 is required now

New Contributors

  • @TadoTheMiner made their first contribution in #987
  • @BenJam made their first contribution in #994
  • @CameronBarnes made their first contribution in #958
  • @ThomasMiz made their first contribution in #959

Full Changelog: https://github.com/ratatui-org/ratatui/compare/v0.26.1...v0.26.2

v0.27.0-alpha.5

1 month ago

v0.27.0-alpha.5 - 2024-04-13

Features

  • 11b452d (layout) Mark various functions as const (#951)

  • 1cff511 (line) Impl Styled for Line (#968)

    This adds `FromIterator` impls for `Line` and `Text` that allow creating
    `Line` and `Text` instances from iterators of `Span` and `Line`
    instances, respectively.
    
    ```rust
    let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
    let line: Line = iter::once("Hello".blue())
        .chain(iter::once(" world!".green()))
        .collect();
    let text = Text::from_iter(vec!["The first line", "The second line"]);
    let text: Text = iter::once("The first line")
        .chain(iter::once("The second line"))
        .collect();
    ```
    
  • 654949b (list) Add Scroll Padding to Lists (#958)

    Introduces scroll padding, which allows the api user to request that a certain number of ListItems be kept visible above and below the currently selected item while scrolling.
    
    ```rust
    let list = List::new(items).scroll_padding(1);
    ```
    

    Fixes:https://github.com/ratatui-org/ratatui/pull/955

  • 26af650 (text) Add push methods for text and line (#998)

    Adds the following methods to the `Text` and `Line` structs:
    - Text::push_line
    - Text::push_span
    - Line::push_span
    
    This allows for adding lines and spans to a text object without having
    to call methods on the fields directly, which is usefult for incremental
    construction of text objects.
    
  • b5bdde0 (text) Add FromIterator impls for Line and Text (#967)

    This adds `FromIterator` impls for `Line` and `Text` that allow creating
    `Line` and `Text` instances from iterators of `Span` and `Line`
    instances, respectively.
    
    ```rust
    let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
    let line: Line = iter::once("Hello".blue())
        .chain(iter::once(" world!".green()))
        .collect();
    let text = Text::from_iter(vec!["The first line", "The second line"]);
    let text: Text = iter::once("The first line")
        .chain(iter::once("The second line"))
        .collect();
    ```
    
  • 12f67e8 (uncategorized) Impl Widget for &str and String (#952)

    Currently, `f.render_widget("hello world".bold(), area)` works but
    `f.render_widget("hello world", area)` doesn't. This PR changes that my
    implementing `Widget` for `&str` and `String`. This makes it easier to
    render strings with no styles as widgets.
    
    Example usage:
    
    ```rust
    terminal.draw(|f| f.render_widget("Hello World!", f.size()))?;
    ```
    
    ---------
    

Bug Fixes

  • 0207160 (line) Line truncation respects alignment (#987)

    When rendering a `Line`, the line will be truncated:
    - on the right for left aligned lines
    - on the left for right aligned lines
    - on bot sides for centered lines
    
    E.g. "Hello World" will be rendered as "Hello", "World", "lo wo" for
    left, right, centered lines respectively.
    

    Fixes:https://github.com/ratatui-org/ratatui/issues/932

  • c56f49b (list) Saturating_sub to fix highlight_symbol overflow (#949)

    An overflow (pedantically an underflow) can occur if the
    highlight_symbol is a multi-byte char, and area is reduced to a size
    less than that char length.
    
  • b7778e5 (paragraph) Unit test typo (#1022)

  • 943c043 (scrollbar) Dont render on 0 length track (#964)

    Fixes a panic when `track_length - 1` is used. (clamp panics on `-1.0`
    being smaller than `0.0`)
    
  • 742a5ea (text) Fix panic when rendering out of bounds (#997)

    Previously it was possible to cause a panic when rendering to an area
    outside of the buffer bounds. Instead this now correctly renders nothing
    to the buffer.
    
  • f6c4e44 (uncategorized) Ensure that paragraph correctly renders styled text (#992)

    Paragraph was ignoring the new `Text::style` field added in 0.26.0
    

    Fixes:https://github.com/ratatui-org/ratatui/issues/990

  • 35e971f (uncategorized) Scrollbar thumb not visible on long lists (#959)

    When displaying somewhat-long lists, the `Scrollbar` widget sometimes did not display a thumb character, and only the track will be visible.
    

Refactor

  • 6fd5f63 (lint) Prefer idiomatic for loops (#974)

  • 37b957c (lints) Add lints to scrollbar (#974)

  • c12bcfe (non-src) Apply pedantic lints (#976)

    Fixes many not yet enabled lints (mostly pedantic) on everything that is
    not the lib (examples, benchs, tests). Therefore, this is not containing
    anything that can be a breaking change.
    
    Lints are not enabled as that should be the job of #974. I created this
    as a separate PR as its mostly independent and would only clutter up the
    diff of #974 even more.
    
    Also see
    https://github.com/ratatui-org/ratatui/pull/974#discussion_r1506458743
    
    ---------
    
  • 8719608 (span) Rename to_aligned_line into into_aligned_line (#993)

    With the Rust method naming conventions these methods are into methods
    consuming the Span. Therefore, it's more consistent to use `into_`
    instead of `to_`.
    
    ```rust
    Span::to_centered_line
    Span::to_left_aligned_line
    Span::to_right_aligned_line
    ```
    
    Are marked deprecated and replaced with the following
    
    ```rust
    Span::into_centered_line
    Span::into_left_aligned_line
    Span::into_right_aligned_line
    ```
    
  • b831c56 (widget-ref) Clippy::needless_pass_by_value (#974)

  • 359204c (uncategorized) Simplify to io::Result (#1016)

    Simplifies the code, logic stays exactly the same.
    
  • 8e68db9 (uncategorized) Remove pointless default on internal structs (#980)

    See #978

Also remove other derives. They are unused and just slow down compilation.

  • 3be189e (uncategorized) Clippy::thread_local_initializer_can_be_made_const (#974)

    enabled by default on nightly
    
  • 5c4efac (uncategorized) Clippy::map_err_ignore (#974)

  • bbb6d65 (uncategorized) Clippy::else_if_without_else (#974)

  • fdb14dc (uncategorized) Clippy::redundant_type_annotations (#974)

  • 9b3b23a (uncategorized) Remove literal suffix (#974)

    its not needed and can just be assumed
    

    related:clippy::(un)separated_literal_suffix

  • 58b6e0b (uncategorized) Clippy::should_panic_without_expect (#974)

  • c870a41 (uncategorized) Clippy::many_single_char_names (#974)

  • a6036ad (uncategorized) Clippy::similar_names (#974)

  • 060d26b (uncategorized) Clippy::match_same_arms (#974)

  • fcbea9e (uncategorized) Clippy::uninlined_format_args (#974)

  • 14b24e7 (uncategorized) Clippy::if_not_else (#974)

  • 5ed1f43 (uncategorized) Clippy::redundant_closure_for_method_calls (#974)

  • c8c7924 (uncategorized) Clippy::too_many_lines (#974)

  • e3afe7c (uncategorized) Clippy::unreadable_literal (#974)

  • a1f54de (uncategorized) Clippy::bool_to_int_with_if (#974)

  • b8ea190 (uncategorized) Clippy::cast_lossless (#974)

  • 0de5238 (uncategorized) Dead_code (#974)

    enabled by default, only detected by nightly yet
    
  • df5dddf (uncategorized) Unused_imports (#974)

    enabled by default, only detected on nightly yet
    
  • f1398ae (uncategorized) Clippy::useless_vec (#974)

    Lint enabled by default but only nightly finds this yet
    
  • 525848f (uncategorized) Manually apply clippy::use_self for impl with lifetimes (#974)

  • 660c718 (uncategorized) Clippy::empty_line_after_doc_comments (#974)

  • ab951fa (uncategorized) Clippy::return_self_not_must_use (#974)

  • 3cd4369 (uncategorized) Clippy::doc_markdown (#974)

  • 9bc014d (uncategorized) Clippy::items_after_statements (#974)

  • 36a0cd5 (uncategorized) Clippy::deref_by_slicing (#974)

  • f7f6692 (uncategorized) Clippy::equatable_if_let (#974)

  • 01418eb (uncategorized) Clippy::default_trait_access (#974)

  • 8536760 (uncategorized) Clippy::inefficient_to_string (#974)

  • a558b19 (uncategorized) Clippy::implicit_clone (#974)

  • 5b00e3a (uncategorized) Clippy::use_self (#974)

  • 27680c0 (uncategorized) Clippy::semicolon_if_nothing_returned (#974)

Documentation

  • 14461c3 (breaking-changes) Typos and markdownlint (#1009)

  • d0067c8 (license) Update copyright years (#962)

  • 88bfb5a (text) Update Text and Line docs (#969)

  • 3b002fd (uncategorized) Update incompatible code warning in examples readme (#1013)

Performance

  • e02f476 (borders) Allow border!() in const (#977)

    This allows more compiler optimizations when the macro is used.
    
  • 541f0f9 (cell) Use const CompactString::new_inline (#979)

    Some minor find when messing around trying to `const` all the things.
    
    While `reset()` and `default()` can not be `const` it's still a benefit
    when their contents are.
    
  • 65e7923 (scrollbar) Const creation (#963)

    A bunch of `const fn` allow for more performance and `Default` now uses the `const` new implementations.
    
  • 8195f52 (uncategorized) Clippy::needless_pass_by_value (#974)

  • 183c07e (uncategorized) Clippy::trivially_copy_pass_by_ref (#974)

  • a13867f (uncategorized) Clippy::cloned_instead_of_copied (#974)

  • 3834374 (uncategorized) Clippy::missing_const_for_fn (#974)

Miscellaneous Tasks

  • 125ee92 (docs) Fix: fix typos in crate documentation (#1002)

  • 38c17e0 (editorconfig) Set and apply some defaults (#974)

  • 07da90a (funding) Add eth address for receiving funds from drips.network (#994)

  • 078e97e (github) Add EdJoPaTo as a maintainer (#986)

  • b0314c5 (uncategorized) Remove conventional commit check for PR (#950)

    This removes conventional commit check for PRs.
    
    Since we use the PR title and description this is useless. It fails a
    lot of time and we ignore it.
    
    IMPORTANT NOTE: This does **not** mean Ratatui abandons conventional
    commits. This only relates to commits in PRs.
    

Build

  • 6e6ba27 (lint) Warn on pedantic and allow the rest (#974)

  • c4ce7e8 (uncategorized) Enable more satisfied lints (#974)

    These lints dont generate warnings and therefore dont need refactoring.
    I think they are useful in the future.
    
  • a4e84a6 (uncategorized) Increase msrv to 1.74.0 (#974) [breaking]

    configure lints in Cargo.toml requires 1.74.0
    

    BREAKING CHANGE:rust 1.74 is required now

v0.27.0-alpha.4

1 month ago

v0.27.0-alpha.4 - 2024-04-06

Features

  • 11b452d (layout) Mark various functions as const (#951)

  • 1cff511 (line) Impl Styled for Line (#968)

    This adds `FromIterator` impls for `Line` and `Text` that allow creating
    `Line` and `Text` instances from iterators of `Span` and `Line`
    instances, respectively.
    
    ```rust
    let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
    let line: Line = iter::once("Hello".blue())
        .chain(iter::once(" world!".green()))
        .collect();
    let text = Text::from_iter(vec!["The first line", "The second line"]);
    let text: Text = iter::once("The first line")
        .chain(iter::once("The second line"))
        .collect();
    ```
    
  • 654949b (list) Add Scroll Padding to Lists (#958)

    Introduces scroll padding, which allows the api user to request that a certain number of ListItems be kept visible above and below the currently selected item while scrolling.
    
    ```rust
    let list = List::new(items).scroll_padding(1);
    ```
    

    Fixes:https://github.com/ratatui-org/ratatui/pull/955

  • 26af650 (text) Add push methods for text and line (#998)

    Adds the following methods to the `Text` and `Line` structs:
    - Text::push_line
    - Text::push_span
    - Line::push_span
    
    This allows for adding lines and spans to a text object without having
    to call methods on the fields directly, which is usefult for incremental
    construction of text objects.
    
  • b5bdde0 (text) Add FromIterator impls for Line and Text (#967)

    This adds `FromIterator` impls for `Line` and `Text` that allow creating
    `Line` and `Text` instances from iterators of `Span` and `Line`
    instances, respectively.
    
    ```rust
    let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
    let line: Line = iter::once("Hello".blue())
        .chain(iter::once(" world!".green()))
        .collect();
    let text = Text::from_iter(vec!["The first line", "The second line"]);
    let text: Text = iter::once("The first line")
        .chain(iter::once("The second line"))
        .collect();
    ```
    
  • 12f67e8 (uncategorized) Impl Widget for &str and String (#952)

    Currently, `f.render_widget("hello world".bold(), area)` works but
    `f.render_widget("hello world", area)` doesn't. This PR changes that my
    implementing `Widget` for `&str` and `String`. This makes it easier to
    render strings with no styles as widgets.
    
    Example usage:
    
    ```rust
    terminal.draw(|f| f.render_widget("Hello World!", f.size()))?;
    ```
    
    ---------
    

Bug Fixes

  • 0207160 (line) Line truncation respects alignment (#987)

    When rendering a `Line`, the line will be truncated:
    - on the right for left aligned lines
    - on the left for right aligned lines
    - on bot sides for centered lines
    
    E.g. "Hello World" will be rendered as "Hello", "World", "lo wo" for
    left, right, centered lines respectively.
    

    Fixes:https://github.com/ratatui-org/ratatui/issues/932

  • c56f49b (list) Saturating_sub to fix highlight_symbol overflow (#949)

    An overflow (pedantically an underflow) can occur if the
    highlight_symbol is a multi-byte char, and area is reduced to a size
    less than that char length.
    
  • 943c043 (scrollbar) Dont render on 0 length track (#964)

    Fixes a panic when `track_length - 1` is used. (clamp panics on `-1.0`
    being smaller than `0.0`)
    
  • 742a5ea (text) Fix panic when rendering out of bounds (#997)

    Previously it was possible to cause a panic when rendering to an area
    outside of the buffer bounds. Instead this now correctly renders nothing
    to the buffer.
    
  • f6c4e44 (uncategorized) Ensure that paragraph correctly renders styled text (#992)

    Paragraph was ignoring the new `Text::style` field added in 0.26.0
    

    Fixes:https://github.com/ratatui-org/ratatui/issues/990

  • 35e971f (uncategorized) Scrollbar thumb not visible on long lists (#959)

    When displaying somewhat-long lists, the `Scrollbar` widget sometimes did not display a thumb character, and only the track will be visible.
    

Refactor

  • 6fd5f63 (lint) Prefer idiomatic for loops (#974)

  • 37b957c (lints) Add lints to scrollbar (#974)

  • c12bcfe (non-src) Apply pedantic lints (#976)

    Fixes many not yet enabled lints (mostly pedantic) on everything that is
    not the lib (examples, benchs, tests). Therefore, this is not containing
    anything that can be a breaking change.
    
    Lints are not enabled as that should be the job of #974. I created this
    as a separate PR as its mostly independent and would only clutter up the
    diff of #974 even more.
    
    Also see
    https://github.com/ratatui-org/ratatui/pull/974#discussion_r1506458743
    
    ---------
    
  • 8719608 (span) Rename to_aligned_line into into_aligned_line (#993)

    With the Rust method naming conventions these methods are into methods
    consuming the Span. Therefore, it's more consistent to use `into_`
    instead of `to_`.
    
    ```rust
    Span::to_centered_line
    Span::to_left_aligned_line
    Span::to_right_aligned_line
    ```
    
    Are marked deprecated and replaced with the following
    
    ```rust
    Span::into_centered_line
    Span::into_left_aligned_line
    Span::into_right_aligned_line
    ```
    
  • b831c56 (widget-ref) Clippy::needless_pass_by_value (#974)

  • 359204c (uncategorized) Simplify to io::Result (#1016)

    Simplifies the code, logic stays exactly the same.
    
  • 8e68db9 (uncategorized) Remove pointless default on internal structs (#980)

    See #978

Also remove other derives. They are unused and just slow down compilation.

  • 3be189e (uncategorized) Clippy::thread_local_initializer_can_be_made_const (#974)

    enabled by default on nightly
    
  • 5c4efac (uncategorized) Clippy::map_err_ignore (#974)

  • bbb6d65 (uncategorized) Clippy::else_if_without_else (#974)

  • fdb14dc (uncategorized) Clippy::redundant_type_annotations (#974)

  • 9b3b23a (uncategorized) Remove literal suffix (#974)

    its not needed and can just be assumed
    

    related:clippy::(un)separated_literal_suffix

  • 58b6e0b (uncategorized) Clippy::should_panic_without_expect (#974)

  • c870a41 (uncategorized) Clippy::many_single_char_names (#974)

  • a6036ad (uncategorized) Clippy::similar_names (#974)

  • 060d26b (uncategorized) Clippy::match_same_arms (#974)

  • fcbea9e (uncategorized) Clippy::uninlined_format_args (#974)

  • 14b24e7 (uncategorized) Clippy::if_not_else (#974)

  • 5ed1f43 (uncategorized) Clippy::redundant_closure_for_method_calls (#974)

  • c8c7924 (uncategorized) Clippy::too_many_lines (#974)

  • e3afe7c (uncategorized) Clippy::unreadable_literal (#974)

  • a1f54de (uncategorized) Clippy::bool_to_int_with_if (#974)

  • b8ea190 (uncategorized) Clippy::cast_lossless (#974)

  • 0de5238 (uncategorized) Dead_code (#974)

    enabled by default, only detected by nightly yet
    
  • df5dddf (uncategorized) Unused_imports (#974)

    enabled by default, only detected on nightly yet
    
  • f1398ae (uncategorized) Clippy::useless_vec (#974)

    Lint enabled by default but only nightly finds this yet
    
  • 525848f (uncategorized) Manually apply clippy::use_self for impl with lifetimes (#974)

  • 660c718 (uncategorized) Clippy::empty_line_after_doc_comments (#974)

  • ab951fa (uncategorized) Clippy::return_self_not_must_use (#974)

  • 3cd4369 (uncategorized) Clippy::doc_markdown (#974)

  • 9bc014d (uncategorized) Clippy::items_after_statements (#974)

  • 36a0cd5 (uncategorized) Clippy::deref_by_slicing (#974)

  • f7f6692 (uncategorized) Clippy::equatable_if_let (#974)

  • 01418eb (uncategorized) Clippy::default_trait_access (#974)

  • 8536760 (uncategorized) Clippy::inefficient_to_string (#974)

  • a558b19 (uncategorized) Clippy::implicit_clone (#974)

  • 5b00e3a (uncategorized) Clippy::use_self (#974)

  • 27680c0 (uncategorized) Clippy::semicolon_if_nothing_returned (#974)

Documentation

  • 14461c3 (breaking-changes) Typos and markdownlint (#1009)

  • d0067c8 (license) Update copyright years (#962)

  • 88bfb5a (text) Update Text and Line docs (#969)

  • 3b002fd (uncategorized) Update incompatible code warning in examples readme (#1013)

Performance

  • e02f476 (borders) Allow border!() in const (#977)

    This allows more compiler optimizations when the macro is used.
    
  • 541f0f9 (cell) Use const CompactString::new_inline (#979)

    Some minor find when messing around trying to `const` all the things.
    
    While `reset()` and `default()` can not be `const` it's still a benefit
    when their contents are.
    
  • 65e7923 (scrollbar) Const creation (#963)

    A bunch of `const fn` allow for more performance and `Default` now uses the `const` new implementations.
    
  • 8195f52 (uncategorized) Clippy::needless_pass_by_value (#974)

  • 183c07e (uncategorized) Clippy::trivially_copy_pass_by_ref (#974)

  • a13867f (uncategorized) Clippy::cloned_instead_of_copied (#974)

  • 3834374 (uncategorized) Clippy::missing_const_for_fn (#974)

Miscellaneous Tasks

  • 125ee92 (docs) Fix: fix typos in crate documentation (#1002)

  • 38c17e0 (editorconfig) Set and apply some defaults (#974)

  • 07da90a (funding) Add eth address for receiving funds from drips.network (#994)

  • 078e97e (github) Add EdJoPaTo as a maintainer (#986)

  • b0314c5 (uncategorized) Remove conventional commit check for PR (#950)

    This removes conventional commit check for PRs.
    
    Since we use the PR title and description this is useless. It fails a
    lot of time and we ignore it.
    
    IMPORTANT NOTE: This does **not** mean Ratatui abandons conventional
    commits. This only relates to commits in PRs.
    

Build

  • 6e6ba27 (lint) Warn on pedantic and allow the rest (#974)

  • c4ce7e8 (uncategorized) Enable more satisfied lints (#974)

    These lints dont generate warnings and therefore dont need refactoring.
    I think they are useful in the future.
    
  • a4e84a6 (uncategorized) Increase msrv to 1.74.0 (#974) [breaking]

    configure lints in Cargo.toml requires 1.74.0
    

    BREAKING CHANGE:rust 1.74 is required now

v0.27.0-alpha.3

1 month ago

v0.27.0-alpha.3 - 2024-03-30

Features

  • 11b452d (layout) Mark various functions as const (#951)

  • 1cff511 (line) Impl Styled for Line (#968)

    This adds `FromIterator` impls for `Line` and `Text` that allow creating
    `Line` and `Text` instances from iterators of `Span` and `Line`
    instances, respectively.
    
    ```rust
    let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
    let line: Line = iter::once("Hello".blue())
        .chain(iter::once(" world!".green()))
        .collect();
    let text = Text::from_iter(vec!["The first line", "The second line"]);
    let text: Text = iter::once("The first line")
        .chain(iter::once("The second line"))
        .collect();
    ```
    
  • 654949b (list) Add Scroll Padding to Lists (#958)

    Introduces scroll padding, which allows the api user to request that a certain number of ListItems be kept visible above and below the currently selected item while scrolling.
    
    ```rust
    let list = List::new(items).scroll_padding(1);
    ```
    

    Fixes:https://github.com/ratatui-org/ratatui/pull/955

  • 26af650 (text) Add push methods for text and line (#998)

    Adds the following methods to the `Text` and `Line` structs:
    - Text::push_line
    - Text::push_span
    - Line::push_span
    
    This allows for adding lines and spans to a text object without having
    to call methods on the fields directly, which is usefult for incremental
    construction of text objects.
    
  • b5bdde0 (text) Add FromIterator impls for Line and Text (#967)

    This adds `FromIterator` impls for `Line` and `Text` that allow creating
    `Line` and `Text` instances from iterators of `Span` and `Line`
    instances, respectively.
    
    ```rust
    let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
    let line: Line = iter::once("Hello".blue())
        .chain(iter::once(" world!".green()))
        .collect();
    let text = Text::from_iter(vec!["The first line", "The second line"]);
    let text: Text = iter::once("The first line")
        .chain(iter::once("The second line"))
        .collect();
    ```
    
  • 12f67e8 (uncategorized) Impl Widget for &str and String (#952)

    Currently, `f.render_widget("hello world".bold(), area)` works but
    `f.render_widget("hello world", area)` doesn't. This PR changes that my
    implementing `Widget` for `&str` and `String`. This makes it easier to
    render strings with no styles as widgets.
    
    Example usage:
    
    ```rust
    terminal.draw(|f| f.render_widget("Hello World!", f.size()))?;
    ```
    
    ---------
    

Bug Fixes

  • c56f49b (list) Saturating_sub to fix highlight_symbol overflow (#949)

    An overflow (pedantically an underflow) can occur if the
    highlight_symbol is a multi-byte char, and area is reduced to a size
    less than that char length.
    
  • 943c043 (scrollbar) Dont render on 0 length track (#964)

    Fixes a panic when `track_length - 1` is used. (clamp panics on `-1.0`
    being smaller than `0.0`)
    
  • 742a5ea (text) Fix panic when rendering out of bounds (#997)

    Previously it was possible to cause a panic when rendering to an area
    outside of the buffer bounds. Instead this now correctly renders nothing
    to the buffer.
    
  • f6c4e44 (uncategorized) Ensure that paragraph correctly renders styled text (#992)

    Paragraph was ignoring the new `Text::style` field added in 0.26.0
    

    Fixes:https://github.com/ratatui-org/ratatui/issues/990

  • 35e971f (uncategorized) Scrollbar thumb not visible on long lists (#959)

    When displaying somewhat-long lists, the `Scrollbar` widget sometimes did not display a thumb character, and only the track will be visible.
    

Refactor

  • 6fd5f63 (lint) Prefer idiomatic for loops (#974)

  • 37b957c (lints) Add lints to scrollbar (#974)

  • c12bcfe (non-src) Apply pedantic lints (#976)

    Fixes many not yet enabled lints (mostly pedantic) on everything that is
    not the lib (examples, benchs, tests). Therefore, this is not containing
    anything that can be a breaking change.
    
    Lints are not enabled as that should be the job of #974. I created this
    as a separate PR as its mostly independent and would only clutter up the
    diff of #974 even more.
    
    Also see
    https://github.com/ratatui-org/ratatui/pull/974#discussion_r1506458743
    
    ---------
    
  • 8719608 (span) Rename to_aligned_line into into_aligned_line (#993)

    With the Rust method naming conventions these methods are into methods
    consuming the Span. Therefore, it's more consistent to use `into_`
    instead of `to_`.
    
    ```rust
    Span::to_centered_line
    Span::to_left_aligned_line
    Span::to_right_aligned_line
    ```
    
    Are marked deprecated and replaced with the following
    
    ```rust
    Span::into_centered_line
    Span::into_left_aligned_line
    Span::into_right_aligned_line
    ```
    
  • b831c56 (widget-ref) Clippy::needless_pass_by_value (#974)

  • 8e68db9 (uncategorized) Remove pointless default on internal structs (#980)

    See #978

Also remove other derives. They are unused and just slow down compilation.

  • 3be189e (uncategorized) Clippy::thread_local_initializer_can_be_made_const (#974)

    enabled by default on nightly
    
  • 5c4efac (uncategorized) Clippy::map_err_ignore (#974)

  • bbb6d65 (uncategorized) Clippy::else_if_without_else (#974)

  • fdb14dc (uncategorized) Clippy::redundant_type_annotations (#974)

  • 9b3b23a (uncategorized) Remove literal suffix (#974)

    its not needed and can just be assumed
    

    related:clippy::(un)separated_literal_suffix

  • 58b6e0b (uncategorized) Clippy::should_panic_without_expect (#974)

  • c870a41 (uncategorized) Clippy::many_single_char_names (#974)

  • a6036ad (uncategorized) Clippy::similar_names (#974)

  • 060d26b (uncategorized) Clippy::match_same_arms (#974)

  • fcbea9e (uncategorized) Clippy::uninlined_format_args (#974)

  • 14b24e7 (uncategorized) Clippy::if_not_else (#974)

  • 5ed1f43 (uncategorized) Clippy::redundant_closure_for_method_calls (#974)

  • c8c7924 (uncategorized) Clippy::too_many_lines (#974)

  • e3afe7c (uncategorized) Clippy::unreadable_literal (#974)

  • a1f54de (uncategorized) Clippy::bool_to_int_with_if (#974)

  • b8ea190 (uncategorized) Clippy::cast_lossless (#974)

  • 0de5238 (uncategorized) Dead_code (#974)

    enabled by default, only detected by nightly yet
    
  • df5dddf (uncategorized) Unused_imports (#974)

    enabled by default, only detected on nightly yet
    
  • f1398ae (uncategorized) Clippy::useless_vec (#974)

    Lint enabled by default but only nightly finds this yet
    
  • 525848f (uncategorized) Manually apply clippy::use_self for impl with lifetimes (#974)

  • 660c718 (uncategorized) Clippy::empty_line_after_doc_comments (#974)

  • ab951fa (uncategorized) Clippy::return_self_not_must_use (#974)

  • 3cd4369 (uncategorized) Clippy::doc_markdown (#974)

  • 9bc014d (uncategorized) Clippy::items_after_statements (#974)

  • 36a0cd5 (uncategorized) Clippy::deref_by_slicing (#974)

  • f7f6692 (uncategorized) Clippy::equatable_if_let (#974)

  • 01418eb (uncategorized) Clippy::default_trait_access (#974)

  • 8536760 (uncategorized) Clippy::inefficient_to_string (#974)

  • a558b19 (uncategorized) Clippy::implicit_clone (#974)

  • 5b00e3a (uncategorized) Clippy::use_self (#974)

  • 27680c0 (uncategorized) Clippy::semicolon_if_nothing_returned (#974)

Documentation

Performance

  • e02f476 (borders) Allow border!() in const (#977)

    This allows more compiler optimizations when the macro is used.
    
  • 541f0f9 (cell) Use const CompactString::new_inline (#979)

    Some minor find when messing around trying to `const` all the things.
    
    While `reset()` and `default()` can not be `const` it's still a benefit
    when their contents are.
    
  • 65e7923 (scrollbar) Const creation (#963)

    A bunch of `const fn` allow for more performance and `Default` now uses the `const` new implementations.
    
  • 8195f52 (uncategorized) Clippy::needless_pass_by_value (#974)

  • 183c07e (uncategorized) Clippy::trivially_copy_pass_by_ref (#974)

  • a13867f (uncategorized) Clippy::cloned_instead_of_copied (#974)

  • 3834374 (uncategorized) Clippy::missing_const_for_fn (#974)

Miscellaneous Tasks

  • 125ee92 (docs) Fix: fix typos in crate documentation (#1002)

  • 38c17e0 (editorconfig) Set and apply some defaults (#974)

  • 07da90a (funding) Add eth address for receiving funds from drips.network (#994)

  • 078e97e (github) Add EdJoPaTo as a maintainer (#986)

  • b0314c5 (uncategorized) Remove conventional commit check for PR (#950)

    This removes conventional commit check for PRs.
    
    Since we use the PR title and description this is useless. It fails a
    lot of time and we ignore it.
    
    IMPORTANT NOTE: This does **not** mean Ratatui abandons conventional
    commits. This only relates to commits in PRs.
    

Build

  • 6e6ba27 (lint) Warn on pedantic and allow the rest (#974)

  • c4ce7e8 (uncategorized) Enable more satisfied lints (#974)

    These lints dont generate warnings and therefore dont need refactoring.
    I think they are useful in the future.
    
  • a4e84a6 (uncategorized) Increase msrv to 1.74.0 (#974) [breaking]

    configure lints in Cargo.toml requires 1.74.0
    

    BREAKING CHANGE:rust 1.74 is required now

v0.27.0-alpha.2

1 month ago

v0.27.0-alpha.2 - 2024-03-23

Features

  • 11b452d (layout) Mark various functions as const (#951)

  • 1cff511 (line) Impl Styled for Line (#968)

    This adds `FromIterator` impls for `Line` and `Text` that allow creating
    `Line` and `Text` instances from iterators of `Span` and `Line`
    instances, respectively.
    
    ```rust
    let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
    let line: Line = iter::once("Hello".blue())
        .chain(iter::once(" world!".green()))
        .collect();
    let text = Text::from_iter(vec!["The first line", "The second line"]);
    let text: Text = iter::once("The first line")
        .chain(iter::once("The second line"))
        .collect();
    ```
    
  • 654949b (list) Add Scroll Padding to Lists (#958)

    Introduces scroll padding, which allows the api user to request that a certain number of ListItems be kept visible above and below the currently selected item while scrolling.
    
    ```rust
    let list = List::new(items).scroll_padding(1);
    ```
    

    Fixes:https://github.com/ratatui-org/ratatui/pull/955

  • b5bdde0 (text) Add FromIterator impls for Line and Text (#967)

    This adds `FromIterator` impls for `Line` and `Text` that allow creating
    `Line` and `Text` instances from iterators of `Span` and `Line`
    instances, respectively.
    
    ```rust
    let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
    let line: Line = iter::once("Hello".blue())
        .chain(iter::once(" world!".green()))
        .collect();
    let text = Text::from_iter(vec!["The first line", "The second line"]);
    let text: Text = iter::once("The first line")
        .chain(iter::once("The second line"))
        .collect();
    ```
    
  • 12f67e8 (uncategorized) Impl Widget for &str and String (#952)

    Currently, `f.render_widget("hello world".bold(), area)` works but
    `f.render_widget("hello world", area)` doesn't. This PR changes that my
    implementing `Widget` for `&str` and `String`. This makes it easier to
    render strings with no styles as widgets.
    
    Example usage:
    
    ```rust
    terminal.draw(|f| f.render_widget("Hello World!", f.size()))?;
    ```
    
    ---------
    

Bug Fixes

  • c56f49b (list) Saturating_sub to fix highlight_symbol overflow (#949)

    An overflow (pedantically an underflow) can occur if the
    highlight_symbol is a multi-byte char, and area is reduced to a size
    less than that char length.
    
  • 943c043 (scrollbar) Dont render on 0 length track (#964)

    Fixes a panic when `track_length - 1` is used. (clamp panics on `-1.0`
    being smaller than `0.0`)
    
  • f6c4e44 (uncategorized) Ensure that paragraph correctly renders styled text (#992)

    Paragraph was ignoring the new `Text::style` field added in 0.26.0
    

    Fixes:https://github.com/ratatui-org/ratatui/issues/990

  • 35e971f (uncategorized) Scrollbar thumb not visible on long lists (#959)

    When displaying somewhat-long lists, the `Scrollbar` widget sometimes did not display a thumb character, and only the track will be visible.
    

Refactor

  • 6fd5f63 (lint) Prefer idiomatic for loops (#974)

  • 37b957c (lints) Add lints to scrollbar (#974)

  • c12bcfe (non-src) Apply pedantic lints (#976)

    Fixes many not yet enabled lints (mostly pedantic) on everything that is
    not the lib (examples, benchs, tests). Therefore, this is not containing
    anything that can be a breaking change.
    
    Lints are not enabled as that should be the job of #974. I created this
    as a separate PR as its mostly independent and would only clutter up the
    diff of #974 even more.
    
    Also see
    https://github.com/ratatui-org/ratatui/pull/974#discussion_r1506458743
    
    ---------
    
  • 8719608 (span) Rename to_aligned_line into into_aligned_line (#993)

    With the Rust method naming conventions these methods are into methods
    consuming the Span. Therefore, it's more consistent to use `into_`
    instead of `to_`.
    
    ```rust
    Span::to_centered_line
    Span::to_left_aligned_line
    Span::to_right_aligned_line
    ```
    
    Are marked deprecated and replaced with the following
    
    ```rust
    Span::into_centered_line
    Span::into_left_aligned_line
    Span::into_right_aligned_line
    ```
    
  • b831c56 (widget-ref) Clippy::needless_pass_by_value (#974)

  • 8e68db9 (uncategorized) Remove pointless default on internal structs (#980)

    See #978

Also remove other derives. They are unused and just slow down compilation.

  • 3be189e (uncategorized) Clippy::thread_local_initializer_can_be_made_const (#974)

    enabled by default on nightly
    
  • 5c4efac (uncategorized) Clippy::map_err_ignore (#974)

  • bbb6d65 (uncategorized) Clippy::else_if_without_else (#974)

  • fdb14dc (uncategorized) Clippy::redundant_type_annotations (#974)

  • 9b3b23a (uncategorized) Remove literal suffix (#974)

    its not needed and can just be assumed
    

    related:clippy::(un)separated_literal_suffix

  • 58b6e0b (uncategorized) Clippy::should_panic_without_expect (#974)

  • c870a41 (uncategorized) Clippy::many_single_char_names (#974)

  • a6036ad (uncategorized) Clippy::similar_names (#974)

  • 060d26b (uncategorized) Clippy::match_same_arms (#974)

  • fcbea9e (uncategorized) Clippy::uninlined_format_args (#974)

  • 14b24e7 (uncategorized) Clippy::if_not_else (#974)

  • 5ed1f43 (uncategorized) Clippy::redundant_closure_for_method_calls (#974)

  • c8c7924 (uncategorized) Clippy::too_many_lines (#974)

  • e3afe7c (uncategorized) Clippy::unreadable_literal (#974)

  • a1f54de (uncategorized) Clippy::bool_to_int_with_if (#974)

  • b8ea190 (uncategorized) Clippy::cast_lossless (#974)

  • 0de5238 (uncategorized) Dead_code (#974)

    enabled by default, only detected by nightly yet
    
  • df5dddf (uncategorized) Unused_imports (#974)

    enabled by default, only detected on nightly yet
    
  • f1398ae (uncategorized) Clippy::useless_vec (#974)

    Lint enabled by default but only nightly finds this yet
    
  • 525848f (uncategorized) Manually apply clippy::use_self for impl with lifetimes (#974)

  • 660c718 (uncategorized) Clippy::empty_line_after_doc_comments (#974)

  • ab951fa (uncategorized) Clippy::return_self_not_must_use (#974)

  • 3cd4369 (uncategorized) Clippy::doc_markdown (#974)

  • 9bc014d (uncategorized) Clippy::items_after_statements (#974)

  • 36a0cd5 (uncategorized) Clippy::deref_by_slicing (#974)

  • f7f6692 (uncategorized) Clippy::equatable_if_let (#974)

  • 01418eb (uncategorized) Clippy::default_trait_access (#974)

  • 8536760 (uncategorized) Clippy::inefficient_to_string (#974)

  • a558b19 (uncategorized) Clippy::implicit_clone (#974)

  • 5b00e3a (uncategorized) Clippy::use_self (#974)

  • 27680c0 (uncategorized) Clippy::semicolon_if_nothing_returned (#974)

Documentation

Performance

  • e02f476 (borders) Allow border!() in const (#977)

    This allows more compiler optimizations when the macro is used.
    
  • 541f0f9 (cell) Use const CompactString::new_inline (#979)

    Some minor find when messing around trying to `const` all the things.
    
    While `reset()` and `default()` can not be `const` it's still a benefit
    when their contents are.
    
  • 65e7923 (scrollbar) Const creation (#963)

    A bunch of `const fn` allow for more performance and `Default` now uses the `const` new implementations.
    
  • 8195f52 (uncategorized) Clippy::needless_pass_by_value (#974)

  • 183c07e (uncategorized) Clippy::trivially_copy_pass_by_ref (#974)

  • a13867f (uncategorized) Clippy::cloned_instead_of_copied (#974)

  • 3834374 (uncategorized) Clippy::missing_const_for_fn (#974)

Miscellaneous Tasks

  • 38c17e0 (editorconfig) Set and apply some defaults (#974)

  • 078e97e (github) Add EdJoPaTo as a maintainer (#986)

  • b0314c5 (uncategorized) Remove conventional commit check for PR (#950)

    This removes conventional commit check for PRs.
    
    Since we use the PR title and description this is useless. It fails a
    lot of time and we ignore it.
    
    IMPORTANT NOTE: This does **not** mean Ratatui abandons conventional
    commits. This only relates to commits in PRs.
    

Build

  • 6e6ba27 (lint) Warn on pedantic and allow the rest (#974)

  • c4ce7e8 (uncategorized) Enable more satisfied lints (#974)

    These lints dont generate warnings and therefore dont need refactoring.
    I think they are useful in the future.
    
  • a4e84a6 (uncategorized) Increase msrv to 1.74.0 (#974) [breaking]

    configure lints in Cargo.toml requires 1.74.0
    

    BREAKING CHANGE:rust 1.74 is required now

v0.27.0-alpha.1

1 month ago

v0.27.0-alpha.1 - 2024-03-16

Features

  • 11b452d (layout) Mark various functions as const (#951)

  • 1cff511 (line) Impl Styled for Line (#968)

    This adds `FromIterator` impls for `Line` and `Text` that allow creating
    `Line` and `Text` instances from iterators of `Span` and `Line`
    instances, respectively.
    
    ```rust
    let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
    let line: Line = iter::once("Hello".blue())
        .chain(iter::once(" world!".green()))
        .collect();
    let text = Text::from_iter(vec!["The first line", "The second line"]);
    let text: Text = iter::once("The first line")
        .chain(iter::once("The second line"))
        .collect();
    ```
    
  • 654949b (list) Add Scroll Padding to Lists (#958)

    Introduces scroll padding, which allows the api user to request that a certain number of ListItems be kept visible above and below the currently selected item while scrolling.
    
    ```rust
    let list = List::new(items).scroll_padding(1);
    ```
    

    Fixes:https://github.com/ratatui-org/ratatui/pull/955

  • b5bdde0 (text) Add FromIterator impls for Line and Text (#967)

    This adds `FromIterator` impls for `Line` and `Text` that allow creating
    `Line` and `Text` instances from iterators of `Span` and `Line`
    instances, respectively.
    
    ```rust
    let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
    let line: Line = iter::once("Hello".blue())
        .chain(iter::once(" world!".green()))
        .collect();
    let text = Text::from_iter(vec!["The first line", "The second line"]);
    let text: Text = iter::once("The first line")
        .chain(iter::once("The second line"))
        .collect();
    ```
    
  • 12f67e8 (uncategorized) Impl Widget for &str and String (#952)

    Currently, `f.render_widget("hello world".bold(), area)` works but
    `f.render_widget("hello world", area)` doesn't. This PR changes that my
    implementing `Widget` for `&str` and `String`. This makes it easier to
    render strings with no styles as widgets.
    
    Example usage:
    
    ```rust
    terminal.draw(|f| f.render_widget("Hello World!", f.size()))?;
    ```
    
    ---------
    

Bug Fixes

  • 943c043 (scrollbar) Dont render on 0 length track (#964)

    Fixes a panic when `track_length - 1` is used. (clamp panics on `-1.0`
    being smaller than `0.0`)
    
  • 35e971f (uncategorized) Scrollbar thumb not visible on long lists (#959)

    When displaying somewhat-long lists, the `Scrollbar` widget sometimes did not display a thumb character, and only the track will be visible.
    

Refactor

  • 6fd5f63 (lint) Prefer idiomatic for loops (#974)

  • 37b957c (lints) Add lints to scrollbar (#974)

  • c12bcfe (non-src) Apply pedantic lints (#976)

    Fixes many not yet enabled lints (mostly pedantic) on everything that is
    not the lib (examples, benchs, tests). Therefore, this is not containing
    anything that can be a breaking change.
    
    Lints are not enabled as that should be the job of #974. I created this
    as a separate PR as its mostly independent and would only clutter up the
    diff of #974 even more.
    
    Also see
    https://github.com/ratatui-org/ratatui/pull/974#discussion_r1506458743
    
    ---------
    
  • b831c56 (widget-ref) Clippy::needless_pass_by_value (#974)

  • 8e68db9 (uncategorized) Remove pointless default on internal structs (#980)

    See #978

Also remove other derives. They are unused and just slow down compilation.

  • 3be189e (uncategorized) Clippy::thread_local_initializer_can_be_made_const (#974)

    enabled by default on nightly
    
  • 5c4efac (uncategorized) Clippy::map_err_ignore (#974)

  • bbb6d65 (uncategorized) Clippy::else_if_without_else (#974)

  • fdb14dc (uncategorized) Clippy::redundant_type_annotations (#974)

  • 9b3b23a (uncategorized) Remove literal suffix (#974)

    its not needed and can just be assumed
    

    related:clippy::(un)separated_literal_suffix

  • 58b6e0b (uncategorized) Clippy::should_panic_without_expect (#974)

  • c870a41 (uncategorized) Clippy::many_single_char_names (#974)

  • a6036ad (uncategorized) Clippy::similar_names (#974)

  • 060d26b (uncategorized) Clippy::match_same_arms (#974)

  • fcbea9e (uncategorized) Clippy::uninlined_format_args (#974)

  • 14b24e7 (uncategorized) Clippy::if_not_else (#974)

  • 5ed1f43 (uncategorized) Clippy::redundant_closure_for_method_calls (#974)

  • c8c7924 (uncategorized) Clippy::too_many_lines (#974)

  • e3afe7c (uncategorized) Clippy::unreadable_literal (#974)

  • a1f54de (uncategorized) Clippy::bool_to_int_with_if (#974)

  • b8ea190 (uncategorized) Clippy::cast_lossless (#974)

  • 0de5238 (uncategorized) Dead_code (#974)

    enabled by default, only detected by nightly yet
    
  • df5dddf (uncategorized) Unused_imports (#974)

    enabled by default, only detected on nightly yet
    
  • f1398ae (uncategorized) Clippy::useless_vec (#974)

    Lint enabled by default but only nightly finds this yet
    
  • 525848f (uncategorized) Manually apply clippy::use_self for impl with lifetimes (#974)

  • 660c718 (uncategorized) Clippy::empty_line_after_doc_comments (#974)

  • ab951fa (uncategorized) Clippy::return_self_not_must_use (#974)

  • 3cd4369 (uncategorized) Clippy::doc_markdown (#974)

  • 9bc014d (uncategorized) Clippy::items_after_statements (#974)

  • 36a0cd5 (uncategorized) Clippy::deref_by_slicing (#974)

  • f7f6692 (uncategorized) Clippy::equatable_if_let (#974)

  • 01418eb (uncategorized) Clippy::default_trait_access (#974)

  • 8536760 (uncategorized) Clippy::inefficient_to_string (#974)

  • a558b19 (uncategorized) Clippy::implicit_clone (#974)

  • 5b00e3a (uncategorized) Clippy::use_self (#974)

  • 27680c0 (uncategorized) Clippy::semicolon_if_nothing_returned (#974)

Documentation

Performance

  • e02f476 (borders) Allow border!() in const (#977)

    This allows more compiler optimizations when the macro is used.
    
  • 541f0f9 (cell) Use const CompactString::new_inline (#979)

    Some minor find when messing around trying to `const` all the things.
    
    While `reset()` and `default()` can not be `const` it's still a benefit
    when their contents are.
    
  • 65e7923 (scrollbar) Const creation (#963)

    A bunch of `const fn` allow for more performance and `Default` now uses the `const` new implementations.
    
  • 8195f52 (uncategorized) Clippy::needless_pass_by_value (#974)

  • 183c07e (uncategorized) Clippy::trivially_copy_pass_by_ref (#974)

  • a13867f (uncategorized) Clippy::cloned_instead_of_copied (#974)

  • 3834374 (uncategorized) Clippy::missing_const_for_fn (#974)

Miscellaneous Tasks

  • 38c17e0 (editorconfig) Set and apply some defaults (#974)

  • b0314c5 (uncategorized) Remove conventional commit check for PR (#950)

    This removes conventional commit check for PRs.
    
    Since we use the PR title and description this is useless. It fails a
    lot of time and we ignore it.
    
    IMPORTANT NOTE: This does **not** mean Ratatui abandons conventional
    commits. This only relates to commits in PRs.
    

Build

  • 6e6ba27 (lint) Warn on pedantic and allow the rest (#974)

  • c4ce7e8 (uncategorized) Enable more satisfied lints (#974)

    These lints dont generate warnings and therefore dont need refactoring.
    I think they are useful in the future.
    
  • a4e84a6 (uncategorized) Increase msrv to 1.74.0 (#974) [breaking]

    configure lints in Cargo.toml requires 1.74.0
    

    BREAKING CHANGE:rust 1.74 is required now

v0.27.0-alpha.0

2 months ago

v0.27.0-alpha.0 - 2024-03-09

Features

  • 11b452d (layout) Mark various functions as const (#951)

  • 1cff511 (line) Impl Styled for Line (#968)

    This adds `FromIterator` impls for `Line` and `Text` that allow creating
    `Line` and `Text` instances from iterators of `Span` and `Line`
    instances, respectively.
    
    ```rust
    let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
    let line: Line = iter::once("Hello".blue())
        .chain(iter::once(" world!".green()))
        .collect();
    let text = Text::from_iter(vec!["The first line", "The second line"]);
    let text: Text = iter::once("The first line")
        .chain(iter::once("The second line"))
        .collect();
    ```
    
  • 654949b (list) Add Scroll Padding to Lists (#958)

    Introduces scroll padding, which allows the api user to request that a certain number of ListItems be kept visible above and below the currently selected item while scrolling.
    
    ```rust
    let list = List::new(items).scroll_padding(1);
    ```
    

    Fixes:https://github.com/ratatui-org/ratatui/pull/955

  • b5bdde0 (text) Add FromIterator impls for Line and Text (#967)

    This adds `FromIterator` impls for `Line` and `Text` that allow creating
    `Line` and `Text` instances from iterators of `Span` and `Line`
    instances, respectively.
    
    ```rust
    let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
    let line: Line = iter::once("Hello".blue())
        .chain(iter::once(" world!".green()))
        .collect();
    let text = Text::from_iter(vec!["The first line", "The second line"]);
    let text: Text = iter::once("The first line")
        .chain(iter::once("The second line"))
        .collect();
    ```
    
  • 12f67e8 (uncategorized) Impl Widget for &str and String (#952)

    Currently, `f.render_widget("hello world".bold(), area)` works but
    `f.render_widget("hello world", area)` doesn't. This PR changes that my
    implementing `Widget` for `&str` and `String`. This makes it easier to
    render strings with no styles as widgets.
    
    Example usage:
    
    ```rust
    terminal.draw(|f| f.render_widget("Hello World!", f.size()))?;
    ```
    
    ---------
    

Bug Fixes

  • 943c043 (scrollbar) Dont render on 0 length track (#964)

    Fixes a panic when `track_length - 1` is used. (clamp panics on `-1.0`
    being smaller than `0.0`)
    
  • 35e971f (uncategorized) Scrollbar thumb not visible on long lists (#959)

    When displaying somewhat-long lists, the `Scrollbar` widget sometimes did not display a thumb character, and only the track will be visible.
    

Refactor

  • 6fd5f63 (lint) Prefer idiomatic for loops (#974)

  • 37b957c (lints) Add lints to scrollbar (#974)

  • c12bcfe (non-src) Apply pedantic lints (#976)

    Fixes many not yet enabled lints (mostly pedantic) on everything that is
    not the lib (examples, benchs, tests). Therefore, this is not containing
    anything that can be a breaking change.
    
    Lints are not enabled as that should be the job of #974. I created this
    as a separate PR as its mostly independent and would only clutter up the
    diff of #974 even more.
    
    Also see
    https://github.com/ratatui-org/ratatui/pull/974#discussion_r1506458743
    
    ---------
    
  • b831c56 (widget-ref) Clippy::needless_pass_by_value (#974)

  • 3be189e (uncategorized) Clippy::thread_local_initializer_can_be_made_const (#974)

    enabled by default on nightly
    
  • 5c4efac (uncategorized) Clippy::map_err_ignore (#974)

  • bbb6d65 (uncategorized) Clippy::else_if_without_else (#974)

  • fdb14dc (uncategorized) Clippy::redundant_type_annotations (#974)

  • 9b3b23a (uncategorized) Remove literal suffix (#974)

    its not needed and can just be assumed
    

    related:clippy::(un)separated_literal_suffix

  • 58b6e0b (uncategorized) Clippy::should_panic_without_expect (#974)

  • c870a41 (uncategorized) Clippy::many_single_char_names (#974)

  • a6036ad (uncategorized) Clippy::similar_names (#974)

  • 060d26b (uncategorized) Clippy::match_same_arms (#974)

  • fcbea9e (uncategorized) Clippy::uninlined_format_args (#974)

  • 14b24e7 (uncategorized) Clippy::if_not_else (#974)

  • 5ed1f43 (uncategorized) Clippy::redundant_closure_for_method_calls (#974)

  • c8c7924 (uncategorized) Clippy::too_many_lines (#974)

  • e3afe7c (uncategorized) Clippy::unreadable_literal (#974)

  • a1f54de (uncategorized) Clippy::bool_to_int_with_if (#974)

  • b8ea190 (uncategorized) Clippy::cast_lossless (#974)

  • 0de5238 (uncategorized) Dead_code (#974)

    enabled by default, only detected by nightly yet
    
  • df5dddf (uncategorized) Unused_imports (#974)

    enabled by default, only detected on nightly yet
    
  • f1398ae (uncategorized) Clippy::useless_vec (#974)

    Lint enabled by default but only nightly finds this yet
    
  • 525848f (uncategorized) Manually apply clippy::use_self for impl with lifetimes (#974)

  • 660c718 (uncategorized) Clippy::empty_line_after_doc_comments (#974)

  • ab951fa (uncategorized) Clippy::return_self_not_must_use (#974)

  • 3cd4369 (uncategorized) Clippy::doc_markdown (#974)

  • 9bc014d (uncategorized) Clippy::items_after_statements (#974)

  • 36a0cd5 (uncategorized) Clippy::deref_by_slicing (#974)

  • f7f6692 (uncategorized) Clippy::equatable_if_let (#974)

  • 01418eb (uncategorized) Clippy::default_trait_access (#974)

  • 8536760 (uncategorized) Clippy::inefficient_to_string (#974)

  • a558b19 (uncategorized) Clippy::implicit_clone (#974)

  • 5b00e3a (uncategorized) Clippy::use_self (#974)

  • 27680c0 (uncategorized) Clippy::semicolon_if_nothing_returned (#974)

Documentation

Performance

  • e02f476 (borders) Allow border!() in const (#977)

    This allows more compiler optimizations when the macro is used.
    
  • 541f0f9 (cell) Use const CompactString::new_inline (#979)

    Some minor find when messing around trying to `const` all the things.
    
    While `reset()` and `default()` can not be `const` it's still a benefit
    when their contents are.
    
  • 65e7923 (scrollbar) Const creation (#963)

    A bunch of `const fn` allow for more performance and `Default` now uses the `const` new implementations.
    
  • 8195f52 (uncategorized) Clippy::needless_pass_by_value (#974)

  • 183c07e (uncategorized) Clippy::trivially_copy_pass_by_ref (#974)

  • a13867f (uncategorized) Clippy::cloned_instead_of_copied (#974)

  • 3834374 (uncategorized) Clippy::missing_const_for_fn (#974)

Miscellaneous Tasks

  • 38c17e0 (editorconfig) Set and apply some defaults (#974)

  • b0314c5 (uncategorized) Remove conventional commit check for PR (#950)

    This removes conventional commit check for PRs.
    
    Since we use the PR title and description this is useless. It fails a
    lot of time and we ignore it.
    
    IMPORTANT NOTE: This does **not** mean Ratatui abandons conventional
    commits. This only relates to commits in PRs.
    

Build

  • 6e6ba27 (lint) Warn on pedantic and allow the rest (#974)

  • c4ce7e8 (uncategorized) Enable more satisfied lints (#974)

    These lints dont generate warnings and therefore dont need refactoring.
    I think they are useful in the future.
    
  • a4e84a6 (uncategorized) Increase msrv to 1.74.0 (#974) [breaking]

    configure lints in Cargo.toml requires 1.74.0
    

    BREAKING CHANGE:rust 1.74 is required now