- r3bl-cmdr
- r3bl_tuify
- r3bl_tui
- r3bl_rs_utils_core
- r3bl_analytics_schema
- r3bl_rs_utils_macro
- r3bl_terminal_async
- r3bl_ansi_color
- r3bl_simple_logger
- r3bl_rs_utils_redux
- r3bl_rs_utils
- More info on changelogs
- Changed:
- Use the latest deps:
r3bl_tui
version0.5.3
.r3bl_rs_utils_core
version0.9.13
.
- Use the latest deps:
- Fixed:
- TBD: markdown parser issues
- TBD: editor issues
- Added:
edi
,giti
: Add checks to see if binary needs to be upgraded.- Search for
UPDATE_IF_NOT_THIS_VERSION
inr3bl-open-core
repo (incmdr
folder), and inr3bl-base
repo.UPDATE_IF_NOT_THIS_VERSION
is set to0.0.11
for this release. - If upgrade is needed, then display a message to the user asking them to run
cargo install r3bl-cmdr
again.
- Search for
giti
add feature:giti branch checkout
giti
add feature:giti branch new
- Add
reedline
version0.28.0
dependency inCargo.toml
.
-
Fixed:
- Refactor & clean up the analytics client code.
-
Updated:
- Use the latest
r3bl_rs_utils_core
version0.9.11
.
- Use the latest
-
Added:
- Anonymized analytics reporting to prioritize feature development for
edi
andgiti
.
- Anonymized analytics reporting to prioritize feature development for
-
Changed:
- Replace the
run
command withexamples
in therun
nu shell script. To run an example you usenu run examples
. and provide instructions on therun
script at the top level folder of this monorepo. Updatelib.rs
andREADME.md
to reflect this change. The behavior of therun
nu shell script is more uniform across all crates in this repo.
- Replace the
-
Changed:
- Rename
run.nu
torun
and updateREADME.md
andlib.rs
to reflect this change. This is a more ergonomic command to use, when using it directly eg:./run build
(macOS, Linux), ornu run build
(Windows).
- Rename
-
Added:
- Add binary target
giti
. This is an interactive git client that is tuified. It is a productivity tool for git workflows, and is meant as a replacement for directly usinggit
. This also serves as a real world example of using ther3bl_tuify
crate.- View all the
giti branch
subcommands (e.g.delete
,checkout
,new
, etc.) and select one subcommand using theselect_from_list()
whengiti branch
runs. - Delete one or more branches using
select_from_list()
whengiti branch delete
command runs.
- View all the
- Add binary target
edi
. This is a powerful TUI Markdown editor. You can use it to create new MD files, or edit any type of text file. It supports syntax highlighting for most file formats (though.toml
and.todo
are missing). - Add binary target
rc
akar3bl-cmdr
.
- Add binary target
- 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
.
- Using latest deps for
r3bl_rs_utils_core
version0.9.13
, andr3bl_rs_utils_macro
version0.9.9
.
- Make
- Updated:
- Dependency updated
reedline
version0.28.0
,r3bl_rs_utils_core
version0.9.12
.
- Dependency updated
- Added:
- Add
tuify/src/constants.rs
with color constants.
- Add
-
Changed:
- Rename
run.nu
torun
. This simplifies commands to run it, eg:nu run build
, or./run build
. - Replace the
run
command withexamples
in therun
nu shell script. To run an example you usenu run examples
. and provide instructions on therun
script at the top level folder of this monorepo. Updatelib.rs
andREADME.md
to reflect this change. The behavior of therun
nu shell script is more uniform across all crates in this repo.
- Rename
-
Added:
- Add a new top level function
select_from_list_with_multi_line_header()
inpublic_api.rs
to allow for multi-line headers in the list selection menu. This allows ANSI formatted strings to be used in each header line.
- Add a new top level function
-
Fixed:
- In
select_from_list()
, themax_width_col_count
is now respected to limit the max width of the terminal window that is used.
- In
- Updated:
- Update dependency on
r3bl_rs_utils_core
to0.9.10
.
- Update dependency on
-
Updated:
- Update dependency on
reedline
crate to0.27.1
. - Update dependency on
r3bl_rs_utils_core
to0.9.9
.
- Update dependency on
-
Removed:
- Remove dependency on
r3bl_tui
crate.
- Remove dependency on
-
Changed:
- Change the default theme so that it is better looking and more readable on Mac, Linux, and Windows. Add many different themes to choose from.
-
Added:
Ctrl + c
now behaves just like theEscape
key. In the past, pressingCtrl + c
would do nothing the user could not exit the app by pressing this shortcut.- More code quality and ability to test the main event loop, by creating a new
TestVecKeyPressReader
struct, and abstracting theread()
(fromstdin
) into aKeyPressReader
trait. This is similar to what is done forTestStringWriter
(tostdout
).
- Updated:
- Upgrade all deps to their latest versions.
- Updated:
- Bug fix: #170
- Updated:
- Use the latest
r3bl_rs_utils_core
crate due to https://rustsec.org/advisories/RUSTSEC-2021-0139.html, andansi_term
not being maintained anymore.
- Use the latest
- Updated:
- Use the latest
r3bl_rs_utils_core
crate due to https://rustsec.org/advisories/RUSTSEC-2021-0139.html, andansi_term
not being maintained anymore.
- Use the latest
- Updated:
- Dependency on
simplelog
is replaced w/r3bl_simple_logger
(which is in ther3bl_rs_utils
repo workspace assimple_logger
).
- Dependency on
- Updated:
- Dependency changes inherited from
r3bl_rs_utils_core
version0.9.13
, andr3bl_rs_utils_macro
version0.9.9
. - Lots of clippy fixes.
- Dependency changes inherited from
- Updated:
- Dependency updated
reedline
version0.28.0
,r3bl_rs_utils_core
version0.9.12
.
- Dependency updated
- Added:
- Simple function
ColorWheel::lolcat_into_string()
that receives a string and colorizes it using some defaults. It is similar to theColorWheel::colorize_into_string()
which it uses under the hood, but it is simpler to use.
- Simple function
-
Changed:
- Rename
run.nu
torun
in thetui
folder. This simplifies commands to run it, eg:nu run build
, or./run build
. - Rename
run.nu
torun
in the top level folder as well. - Replace the
run
command withexamples
in therun
nu shell script. To run an example you usenu run examples
. and provide instructions on therun
script at the top level folder of this monorepo. Updatelib.rs
andREADME.md
to reflect this change. The behavior of therun
nu shell script is more uniform across all crates in this repo. - In
app.rs
, changeApp
trait functionapp_handle_signal()
to receive 2 new arguments:component_registry_map
, andhas_focus
. This makes it similar toapp_handle_input_event()
.
- Rename
-
Fixed:
- Editor component now cleans up state correctly after new content loads. This includes the undo/redo stack, and the render ops cache (for the content).
- Fix
tui/examples/demo/ex_pitch
example to correctly move back and forward between slides.
-
Added:
- Escape key now clears the selection.
- Ctrl+A now selects all text.
- Tests for
EditorComponent
for undo / redo history, text selection, and clipboard service. - Add tests to editor component for clipboard service.
-
Changed:
- Drop the use of Redux for state management entirely. Replace this with mutable state. And a new architecture for App and Component, that is more like Elm, rather than React and Redux.
- Async middleware functions no longer use Redux for propagating state transitions to
the app; instead, they now achieve this through async
tokio::mpsc
channels. Here's a design doc for this change. Here's the issue and PR for this change. Here are some videos that go over this massive change: - In the editor component, disable the syntect highlighter for the editor by default and just use the custom MD parser. For files that are not Markdown, we will probably need to enable syntect in the future since it is not covered by the custom MD parser & highlighter combo.
-
Fixed:
- Fix the custom MD parser so that it correctly parses plain text.
-
Added:
- Add undo, redo support for the editor component.
- Add binary target for
edi
which is going to be a Markdown editor similar tonano
ormicro
. It is meant to showcase what ther3bl_tui
crate can do. It is also meant to be a useful productivity tool. - Add function
colorize_into_string()
to make it easy to apply color wheel to a string and then convert it into an ANSI styled string that can be used to print to the terminal emulator. Also added conversion functionconvert_tui_color_into_r3bl_ansi_color()
to convert fromTuiColor
tor3bl_ansi_term::Color
. - In editor component, add support for caching rendered output of content. When the content changes, or the viewport size or window size change, the cache is invalidated. This is useful for performance reasons. It also leverages the undo/redo system for cache invalidation (which makes it fast to invalidate the render ops cache w/out having to do a content comparison to detect changes).
- Add lots of editor component tests for selection, content cache.
-
Updated:
- Update dependency on
reedline
crate to0.27.1
. - Update dependency on
r3bl_rs_utils_core
to0.9.10
. - Update dependency on
r3bl_rs_utils_macro
to0.9.8
.
- Update dependency on
- Changed:
- Replaced
arboard
crate withcopypasta-ext
.arboard
was not working well on macOS and Windows.- The
copypasta-ext
crate should fix the problem w/ dropping the clipboard contents when an app using the editor component exits.
- Added deps are upgraded to their latest versions.
- Changed
cargo.deny
so that it now acceptsISC
license.
- Replaced
- Added:
- Support for select, copy, cut, paste, and delete have been added to the editor component.
- Changed:
- Dropped support for
clipboard
crate. Usedarboard
instead which is actively maintained and supported by 1Password. New Github Actions have been added to ensure thatcargo-deny
is used in order to check for crates going unmaintained (along w/ license audit checks). There are known issues w/ this crate on Wayland & Arch. https://github.com/r3bl-org/r3bl-open-core/commit/3ba4ff821373361bedcd0b7185a4b6ba15b745c8
- Dropped support for
-
Changed:
- Dropped support for
palette
crate. Usecolorgrad
instead. More info here: #162
- Dropped support for
-
Updated:
- Upgraded all deps to their latest versions.
-
Changed:
- Switched to using
r3bl_ansi_color
to detect terminal color capabilities and color output and conversions. - Apply
#[serial]
on tests that mutate global variables to make those tests un-flaky. This was already being done inr3bl_ansi_color
, just bringing this over to ther3bl_tui
crate with this release.
- Switched to using
-
Removed:
- Dependency on
ansi_term
which is no longer maintained https://rustsec.org/advisories/RUSTSEC-2021-0139.html. - Needless dependencies on crates that are not used.
- Dependency on
- Added:
- Support for selecting text using keyboard.
- Support for copying text to clipboard using keyboard.
- Fixed:
- Main event loop was actually doing the wrong thing and blocking on the thread. Even though it
accepted an input event asynchronously using
AsyncEventStream
(EventStream
is provided bycrossterm
and built using tokio async streams), it was blocking this task (running in parallel on a thread) as it was waiting for the input event to be processed by the app. The fix allows the main thread to simply spawn a new task (in parallel, on a thread) to process the input event. Anmpsc
channel is used in order for the async work done to signal to the main thread that it should break out of its infinite loop.
- Main event loop was actually doing the wrong thing and blocking on the thread. Even though it
accepted an input event asynchronously using
- Added:
- Add
ColorSupport
as a way to detect terminal emulator capabilities at runtime. This uses theconcolor_query
crate to detect terminal emulator capabilities at runtime. - At the
RenderOps
level, updateto_crossterm_color()
so that it usesColorSupport
to determine the best color to use based on terminal emulator capabilities at runtime. It can automatically convert from truecolor to ANSI 256 to grayscale. Note that if a color is specified as truecolor, then it will automatically be downgraded. If it is specified as ANSI or grayscale then it will not be downgraded. - Add
ColorWheel
as a way to consolidate all gradient related coloring. Gradients can be specified in truecolor, ANSI 256, or grayscale. TheColorWheel
will automatically use the correct colors based on the terminal emulator capabilities at runtime usingColorSupport
. - Add new Markdown parser written using
nom
crate calledparse_markdown()
.- This parser not only parses regular Markdown but it also supports R3BL extensions for notes (metadata: tags, title, authors, date).
- And it also supports smart lists (ordered and unordered). Smart lists also have support for todos (in the form of checked and unchecked items).
- Add a new syntax highlighting engine for the new Markdown parser, in the
EditorComponent
calledtry_parse_and_highlight()
.- It formats headings using different gradients for each heading levels 1-6. It also has elegant fallbacks for ANSI256 and grayscale.
- It formats metadata (tags, title, authors, date) using different fg and bg colors.
- Smart lists are formatted using different fg and bg colors. Ordered and unordered lists are formatted differently. Checked and unchecked items are formatted differently.
- For code blocks, the
syntect
crate is used to do syntax highlighting based on the correct language of the code block. Since the R3BL themer3bl.tmTheme
specifies colors in truecolor, they will automatically be downgraded to ANSI256 or grayscale based on terminal emulator capabilities at runtime thanks toto_crossterm_color()
.
- To make console log debugging nicer, some new traits have been added
ConsoleLogInColor
,PrettyPrintDebug
. These traits work together. If a struct implementsPrettyPrintDebug
then it gets the implementation ofConsoleLogInColor
for free (which gives it the ability to print using fg and bg colors to the console).
- Add
- Fixed:
- Bug when trying to render an app that's taller than the offscreen buffer / terminal height
- Added:
- First changelog entry.
- Remove dependency on ansi-parser crate: issue.
- Make lolcat code better: issue.
- Add
ColorSupport
as a way to detect terminal emulator capabilities at runtime. - Add
ColorWheel
as a way to consolidate all gradient related coloring. UseColorSupport
as a way to fallback from truecolor, to ANSI 256, to grayscale gracefully based on terminal emulator capabilities at runtime.
- Add
- Provide for ANSI 256 color fallback for MacOS terminal app: issue
- Removed:
- Removed lolcat example from demo.
- Changed:
- The first demo example (
ex_app_no_layout
) now has support for animation. It automatically increments the state every second and the gradient color wheel is updated accordingly.
- The first demo example (
- Changed:
- Removed
syntect
dep. - Rename
Style
toTuiStyle
. - Lots of cargo clippy fixes.
- Removed
- Added:
- Add
generate_friendly_random_id()
to generate human readable and friendly IDs.
- Add
- Added:
- Add more variants to the
CommonErrorType
enum:ConfigFolderCountNotBeCreated
,ConfigFolderPathCouldNotBeGenerated
.
- Add more variants to the
- Updated:
- Upgrade all the deps to their latest versions:
serde
version1.0.190
. Propagate this to all the other crates in ther3bl-open-core
repo, and bump their version numbers: e.g.tuify
,macro
,tui
,cmdr
.
- Upgrade all the deps to their latest versions:
- Updated:
- Upgrade all deps to their latest versions.
- Updated:
- Upgrade all deps to their latest versions.
- Updated:
- Dependency on
simple_logger
updated due to this security advisory https://rustsec.org/advisories/RUSTSEC-2021-0139.html.simple_logger
itself had to dropansi_term
.
- Dependency on
-
Removed:
- Dependency on
ansi_term
is dropped due to this security advisory https://rustsec.org/advisories/RUSTSEC-2021-0139.html. Flagged when running CI/CD job on Ockam repo.
- Dependency on
-
Updated:
- Documentation for
r3bl_simple_logger
crate. And how to think about it vs. using log facilities from ther3bl_rs_utils_core
crate. Update docs there too.
- Documentation for
- Updated:
- Dependency on
simplelog
is replaced w/r3bl_simple_logger
(which is in ther3bl_rs_utils
repo workspace assimple_logger
). TuiColor
has a few new variants. They can beRgbValue
,AnsiValue
, orANSIBasicColor
. It is safe to use justRgbValue
since the library will degrade gracefully to ANSI 256 or grayscale based on terminal emulator capabilities at runtime (provided byto_crossterm_color()
andColorSupport
). If a color is specified asAnsiValue
orANSIBasicColor
then it will not be downgraded.
- Dependency on
- Added:
- First changelog entry.
- Move lolcat into
tui_core
crate.
- Removed:
- ANSI escape sequences are no longer used internally in any intermediate format used by the TUI engine. It is reserved exclusively for output to stdout using (for now) crossterm. This opens the door for future support for GUI app (not just terminal emulators).
- Added:
- Initial support structs for use by
r3bl-base
andr3bl-cmdr
.
- Initial support structs for use by
- Updated:
- Use the latest
r3bl_rs_utils_core
version0.9.13
.
- Use the latest
- Updated:
- Use latest
r3bl_rs_utils_core
version0.9.10
. Remove unused dependencies, and update to the latest ones.
- Use latest
- Updated:
- Upgrade all deps to their latest versions.
- Updated:
- Update
r3bl_rs_utils_core
crate due to https://rustsec.org/advisories/RUSTSEC-2021-0139.html, andansi_term
not being maintained anymore.
- Update
- Updated:
- Dependency on
simplelog
is replaced w/r3bl_simple_logger
(which is in ther3bl_rs_utils
repo workspace assimple_logger
).
- Dependency on
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.
- Updated:
- Upgrade all deps to their latest versions.
-
Added:
- Support for
Grayscale
color output. This is in preparation of making the color support work across all platforms (MacOS, Linux, Windows). And use this in ther3bl_tui
crate. Update tests to reflect this.
- Support for
-
Removed:
- Dependency on
once-cell
removed by replacingArc<Mutex<_>>
withunsafe
andAtomicI8
.
- Dependency on
-
Added:
- Tests.
-
Replaced:
justfile
is now replaced withnu
scriptrun.nu
.
- Updated:
- Upgrade all deps to their latest versions.
- Updated:
- Upgrade all deps to their latest versions.
-
Replaced:
- Dependency on
ansi_term
is dropped due to this security advisory https://rustsec.org/advisories/RUSTSEC-2021-0139.html. Replaced withr3bl_ansi_color
.
- Dependency on
-
Added:
- Documentation for
r3bl_simple_logger
crate. And how to think about it vs. using log facilities from ther3bl_rs_utils_core
crate. Update docs there too.
- Documentation for
- Added:
- Updated:
- Upgrade all deps to their latest versions.
- Updated:
- Dependency on
r3bl_rs_utils_core
&r3bl_rs_utils_macro
crates due to https://rustsec.org/advisories/RUSTSEC-2021-0139.html, andansi_term
not being maintained anymore.
- Dependency on
-
Updated:
- Dependency on
simplelog
is replaced w/r3bl_simple_logger
(which is in ther3bl_rs_utils
repo workspace assimple_logger
).
- Dependency on
-
Removed:
- Dependency on
ansi_term
which is no longer maintained https://rustsec.org/advisories/RUSTSEC-2021-0139.html. - Needless dependencies on crates that are not used.
- Dependency on
-
Updated:
- Add single dependency on
r3bl_rs_utils_core
version0.9.10
.
- Add single dependency on
-
Removed:
- Remove all the unnecessary dependencies from
Cargo.toml
. - Remove all unnecessary
dev-dependencies
fromCargo.toml
.
- Remove all the unnecessary dependencies from
-
Moved:
- All the source code from the top level folder of the
r3bl-open-core
repo into theutils
sub folder. The crater3bl_rs_utils
used to reside at the top level folder of this repo. It has been moved into theutils
sub folder. At the top level, only a workspace remains to link all the contained crates together for efficient builds.
- All the source code from the top level folder of the
- Updated:
- Upgrade all deps to their latest versions (including
r3bl_tui
w/ latest copy, paste, cut, delete support).
- Upgrade all deps to their latest versions (including
- Updated:
- Upgraded
r3bl_tui
to latest version.
- Upgraded
- Forgot to update the r3bl_tui dependency in Cargo.toml.
- Updated:
- Upgrade all deps to their latest versions.
- Updated:
- Upgrade all deps to their latest versions.
- Changes:
- Use latest dependencies on the
r3bl_rs_utils
repo. Lots of needless dependencies have been dropped. - Drop
ansi_term
dependency due to security advisory https://rustsec.org/advisories/RUSTSEC-2021-0139.html.
- Use latest dependencies on the