diff --git a/CHANGELOG.md b/CHANGELOG.md index 319f5d54..c595c11c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,11 +4,14 @@ - [r3bl-cmdr](#r3bl-cmdr) + - [Next Release](#next-release) - [v0.0.11 2024-01-14](#v0011-2024-01-14) - [v0.0.10 2024-01-02](#v0010-2024-01-02) - [v0.0.9 2023-12-31](#v009-2023-12-31) - [v0.0.8 2023-12-22](#v008-2023-12-22) - [r3bl_tuify](#r3bl_tuify) + - [v0.1.26 2024-04-15](#v0126-2024-04-15) + - [v0.1.25 2024-01-14](#v0125-2024-01-14) - [v0.1.24 2023-12-31](#v0124-2023-12-31) - [v0.1.23 2023-12-22](#v0123-2023-12-22) - [v0.1.22 2023-12-20](#v0122-2023-12-20) @@ -18,6 +21,8 @@ - [v0.1.18 2023-10-17](#v0118-2023-10-17) - [v0.1.17 2023-10-14](#v0117-2023-10-14) - [r3bl_tui](#r3bl_tui) + - [v0.5.3 2024-04-15](#v053-2024-04-15) + - [v0.5.2 2024-01-14](#v052-2024-01-14) - [v0.5.1 2024-01-09](#v051-2024-01-09) - [v0.5.0 2023-12-31](#v050-2023-12-31) - [v0.4.0 2023-12-22](#v040-2023-12-22) @@ -30,6 +35,7 @@ - [v0.3.2 2023-03-06](#v032-2023-03-06) - [v0.3.1 2023-03-06](#v031-2023-03-06) - [r3bl_rs_utils_core](#r3bl_rs_utils_core) + - [v0.9.13 2024-04-15](#v0913-2024-04-15) - [v0.9.12 2024-01-07](#v0912-2024-01-07) - [v0.9.11 2024-01-02](#v0911-2024-01-02) - [v0.9.10 2023-12-22](#v0910-2023-12-22) @@ -46,6 +52,8 @@ - [v0.9.7 2023-10-21](#v097-2023-10-21) - [v0.9.6 2023-10-17](#v096-2023-10-17) - [v0.9.5 2023-10-14](#v095-2023-10-14) +- [r3bl_terminal_async](#r3bl_terminal_async) + - [v0.3.0 2024-04-15](#v030-2024-04-15) - [r3bl_ansi_color](#r3bl_ansi_color) - [v0.6.9 2023-10-21](#v069-2023-10-21) - [v0.6.8 2023-10-16](#v068-2023-10-16) @@ -74,6 +82,17 @@ ## `r3bl-cmdr` +### Next Release + + +- Changed: + - Use the latest deps: + - `r3bl_tui` version `0.5.3`. + - `r3bl_rs_utils_core` version `0.9.13`. +- Fixed: + - TBD: markdown parser issues + - TBD: editor issues + ### v0.0.11 (2024-01-14) @@ -134,7 +153,18 @@ ## `r3bl_tuify` +### v0.1.26 (2024-04-15) + + +- Updated: + - Make `clip_string_to_width_with_ellipsis` pub so that other crates can use it (eg: + `r3bl_terminal_async`). + - Change the names of enums to be more readable. + - `IsTTYResult::IsTTY` -> `TTYResult::IsInteractive`. + - `IsTTYResult::IsNotTTY` -> `TTYResult::IsNotInteractive`. + ### v0.1.25 (2024-01-14) + - Updated: - Dependency updated `reedline` version `0.28.0`, `r3bl_rs_utils_core` version `0.9.12`. @@ -228,7 +258,15 @@ ## `r3bl_tui` +### v0.5.3 (2024-04-15) + + +- Updated: + - Dependency changes inherited from `r3bl_rs_utils_core` version `0.9.13`. + - Lots of clippy fixes. + ### v0.5.2 (2024-01-14) + - Updated: - Dependency updated `reedline` version `0.28.0`, `r3bl_rs_utils_core` version `0.9.12`. @@ -449,10 +487,18 @@ ## `r3bl_rs_utils_core` +### v0.9.13 (2024-04-15) + + +- Changed: + - Removed `syntect` dep. + - Rename `Style` to `TuiStyle`. + - Lots of cargo clippy fixes. + ### v0.9.12 (2024-01-07) -Added: +- Added: - Add `generate_friendly_random_id()` to generate human readable and friendly IDs. ### v0.9.11 (2024-01-02) @@ -565,6 +611,21 @@ Added: - Dependency on `simplelog` is replaced w/ `r3bl_simple_logger` (which is in the `r3bl_rs_utils` repo workspace as `simple_logger`). +## `r3bl_terminal_async` + + +### v0.3.0 (2024-04-15) + + +This is the first release of this crate. + +- Added: + - A new crate in this repo that allows for async terminal input and output. This is + useful for building TUIs that are async and can handle input and output in parallel. + To build apps that are not full TUI, this is a great option to create interactive CLIs + and REPLs that are fully async and multithreaded (with input and output) with a really + powerful (multi) line editor and prompt. + ## `r3bl_ansi_color` diff --git a/Cargo.lock b/Cargo.lock index 05cd33a4..2d47e474 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -678,9 +678,9 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "h2" -version = "0.3.24" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", @@ -949,12 +949,9 @@ dependencies = [ [[package]] name = "line-wrap" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" -dependencies = [ - "safemem", -] +checksum = "dd1bc4d24ad230d21fb898d1116b1801d7adfc449d42026475862ab48b11e70e" [[package]] name = "linked-hash-map" @@ -1040,9 +1037,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", @@ -1348,9 +1345,9 @@ checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" [[package]] name = "plist" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5699cc8a63d1aa2b1ee8e12b9ad70ac790d65788cd36101fa37f87ea46c4cef" +checksum = "d9d34169e64b3c7a80c8621a48adaf44e0cf62c78a9b25dd9dd35f1881a17cf9" dependencies = [ "base64", "indexmap", @@ -1773,12 +1770,6 @@ version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" -[[package]] -name = "safemem" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" - [[package]] name = "same-file" version = "1.0.6" diff --git a/tui/src/lib.rs b/tui/src/lib.rs index e5db7a26..07a4df34 100644 --- a/tui/src/lib.rs +++ b/tui/src/lib.rs @@ -429,7 +429,7 @@ //! 2. [App] - This is where you write your code. You pass in a [App] to the [TerminalWindow] to //! bootstrap your TUI app. You can just use [App] to build your app, if it is a simple one & you //! don't really need any sophisticated layout or styling. But if you want layout and styling, -//! now we have to deal with [FlexBox], [Component], and [r3bl_rs_utils_core::Style]. +//! now we have to deal with [FlexBox], [Component], and [r3bl_rs_utils_core::TuiStyle]. //! //! # Layout and styling //! diff --git a/tui/src/tui/color_wheel/tui_styled_text.rs b/tui/src/tui/color_wheel/tui_styled_text.rs index 606f3372..4b6ecc83 100644 --- a/tui/src/tui/color_wheel/tui_styled_text.rs +++ b/tui/src/tui/color_wheel/tui_styled_text.rs @@ -23,7 +23,7 @@ use crate::*; #[derive(Debug, Clone, Default)] pub struct TuiStyledText(pub TuiStyle, pub UnicodeString); -/// Use [styled_texts!] macro for easier construction. +/// Use [tui_styled_texts!] macro for easier construction. pub type TuiStyledTexts = List; mod tui_styled_text_impl { diff --git a/tui/src/tui/lolcat/lolcat_impl.rs b/tui/src/tui/lolcat/lolcat_impl.rs index 82cb1162..3db1f6ce 100644 --- a/tui/src/tui/lolcat/lolcat_impl.rs +++ b/tui/src/tui/lolcat/lolcat_impl.rs @@ -57,7 +57,7 @@ impl Debug for Lolcat { impl Lolcat { /// This function does not respect [r3bl_ansi_color::global_color_support::detect()] /// (it will always colorize to truecolor regardless of terminal limitations). Use - /// [ColorWheel] if you want to respect + /// [crate::ColorWheel] if you want to respect /// [r3bl_ansi_color::global_color_support::detect]. pub fn colorize_to_styled_texts(&mut self, input: &UnicodeString) -> TuiStyledTexts { let mut acc = TuiStyledTexts::default(); diff --git a/tui/src/tui/syntax_highlighting/intermediate_types.rs b/tui/src/tui/syntax_highlighting/intermediate_types.rs index 6cb9dfa1..cab12b5e 100644 --- a/tui/src/tui/syntax_highlighting/intermediate_types.rs +++ b/tui/src/tui/syntax_highlighting/intermediate_types.rs @@ -28,7 +28,7 @@ //! strings). //! 2. This intermediate type is [clipped](StyleUSSpanLine::clip) to the visible area of the editor //! component (based on scroll state in viewport). And finally that is converted to a -//! [crate::StyledTexts]. +//! [crate::TuiStyledTexts]. use r3bl_rs_utils_core::*; @@ -134,7 +134,7 @@ impl StyleUSSpanLine { } /// Clip the text (in one line) in this range: [ `start_col` .. `end_col` ]. Each line is - /// represented as a [List] of ([Style], [US])`s. + /// represented as a [List] of ([TuiStyle], [US])`s. pub fn clip( &self, scroll_offset_col_index: ChUnit, diff --git a/tui/src/tui/syntax_highlighting/md_parser_syn_hi/mod.rs b/tui/src/tui/syntax_highlighting/md_parser_syn_hi/mod.rs index cf2c284f..b6d714fb 100644 --- a/tui/src/tui/syntax_highlighting/md_parser_syn_hi/mod.rs +++ b/tui/src/tui/syntax_highlighting/md_parser_syn_hi/mod.rs @@ -19,7 +19,7 @@ //! 1. [crate::md_parser] - Responsible for parsing markdown into a [crate::MdDocument] data //! structure. //! 2. [crate::syntax_highlighting] - Responsible for converting a [crate::MdDocument] into a list -//! of tuples of [r3bl_rs_utils_core::Style] and [String]. +//! of tuples of [r3bl_rs_utils_core::TuiStyle] and [String]. //! 3. [crate::editor] - Responsible for displaying the [crate::MdDocument] to the user. // Attach. diff --git a/tui/src/tui/syntax_highlighting/syntect_to_styled_text_conversion.rs b/tui/src/tui/syntax_highlighting/syntect_to_styled_text_conversion.rs index f2f991af..27653b61 100644 --- a/tui/src/tui/syntax_highlighting/syntect_to_styled_text_conversion.rs +++ b/tui/src/tui/syntax_highlighting/syntect_to_styled_text_conversion.rs @@ -26,7 +26,7 @@ //! //! This requires the conversion code to perform the following steps: //! 1. Convert the syntect [SyntectStyleStrSpanLine] into a [StyleUSSpanLine]. -//! 2. Then convert [StyleUSSpanLine] into a [StyledTexts]. +//! 2. Then convert [StyleUSSpanLine] into a [TuiStyledTexts]. use syntect::parsing::SyntaxSet; diff --git a/tui/src/tui/terminal_lib_backends/crossterm_backend/offscreen_buffer_paint_impl.rs b/tui/src/tui/terminal_lib_backends/crossterm_backend/offscreen_buffer_paint_impl.rs index e9f0ba3f..5145ce30 100644 --- a/tui/src/tui/terminal_lib_backends/crossterm_backend/offscreen_buffer_paint_impl.rs +++ b/tui/src/tui/terminal_lib_backends/crossterm_backend/offscreen_buffer_paint_impl.rs @@ -69,9 +69,9 @@ impl OffscreenBufferPaint for OffscreenBufferPaintImplCrossterm { /// Process each [PixelChar] in [OffscreenBuffer] and generate a [RenderOp] for it. Return a /// [RenderOps] containing all the [RenderOp]s. /// - /// > Note that each [PixelChar] gets the full [Style] embedded in it (not just a part of it + /// > Note that each [PixelChar] gets the full [TuiStyle] embedded in it (not just a part of it /// > that is different than the previous char). This means that it is possible to quickly - /// > "diff" between 2 of them, since the [Style] is part of the [PixelChar]. This is important + /// > "diff" between 2 of them, since the [TuiStyle] is part of the [PixelChar]. This is important /// > for selective re-rendering of the [OffscreenBuffer]. /// /// Here's the algorithm used in this function using pseudo-code: diff --git a/tui/src/tui/terminal_lib_backends/render_op.rs b/tui/src/tui/terminal_lib_backends/render_op.rs index c9fc67ae..98183211 100644 --- a/tui/src/tui/terminal_lib_backends/render_op.rs +++ b/tui/src/tui/terminal_lib_backends/render_op.rs @@ -251,20 +251,20 @@ pub enum RenderOp { ClearScreen, - /// Directly set the fg color for crossterm w/out using [Style]. + /// Directly set the fg color for crossterm w/out using [TuiStyle]. SetFgColor(TuiColor), - /// Directly set the bg color for crossterm w/out using [Style]. + /// Directly set the bg color for crossterm w/out using [TuiStyle]. SetBgColor(TuiColor), ResetColor, - /// Translate [Style] into fg and bg colors for crossterm. Note that this does not + /// Translate [TuiStyle] into fg and bg colors for crossterm. Note that this does not /// apply attributes (bold, italic, underline, strikethrough, etc). If you need to /// apply attributes, use [RenderOp::PaintTextWithAttributes] instead. ApplyColors(Option), - /// Translate [Style] into *only* attributes for crossterm (bold, italic, underline, + /// Translate [TuiStyle] into *only* attributes for crossterm (bold, italic, underline, /// strikethrough, etc) and not colors. If you need to apply color, use /// [RenderOp::ApplyColors] instead. ///