cli 3.1.0 2021-10-27

Breaking changes

  • The C progress bar API now uses double instead of int as the data type of the progress units (#335).

New features

  • Several improvements and changes in the ansi_*() functions:

    • most ansi_*() functions are now implemented in C and they are much faster (#316).
    • they handle NA values better.
    • many functions now use UTF-8 graphemes by default instead of code points. E.g. ansi_nchar() counts graphemes, etc.
    • they convert their input to UTF-8 and always return UTF-8 encoded strings.
    • new function ansi_simplify() to remove superfluous ANSI tags.
    • new function ansi_html() to convert ANSI-highlighted strings to HTML.
    • ansi_has_any() and ansi_strip() now have sgr and csi arguments to look for SGR tags, CSI tags, or both.
  • New functions that handle UTF-8 encoded strings correctly: utf8_graphemes(), utf8_nchar(), utf8_substr().

  • Support for palettes, including a colorblind friendly palette. See ?ansi_palettes for details.

  • True color support: num_ansi_colors() now detects terminals with 24 bit color support, and make_ansi_style() uses the exact RGB colors on these terminals (#208).

  • The new col_br_*() and bg_br_() functions create bright versions of eight base ANSI colors (#327).

  • New function code_highlight() to syntax highlight R code. It supports several themes out of the box, see code_theme_list() (#348).

  • New functions for hashing: hash_animal(), hash_emoji() and hash_md5().

  • New diff_chr() and diff_str() functions to calculate the difference of character vectors and letters of strings.

Smaller improvements

  • Progress bars with clear = FALSE now print the last, completed, state properly.

  • The progress bar for Shiny apps now handles output from cli_progress_output().

  • Progress variables in C format_done strings work correctly now (#337).

  • cli_dl() now works with an empty description, and gives a better error for invalid input (#347).

  • rule() is now works better if the labels have ANSI markup.

  • cli_spark objects now have format() and print() methods.

  • cli_process_done() now does not error without a process (#351).

  • ANSI markup is now supported in RStudio jobs (#353).

  • The lack of ANSI support is now again correctly detected if there is an active sink() (#366).

cli 3.0.1 2021-07-17

cli 3.0.0 2021-06-30

cli 2.5.0 2021-04-26

  • New style_no_*() functions to locally undo styling. New col_none() and bg_none() functions to locally undo text color and background color.

  • It is now possible to undo text and background color in a theme, by setting them to NULL or "none".

  • cli_memo() was renamed to cli_bullets(), as it is by default formatted as a bullet list (#250).

  • New ansi_toupper(), ansi_tolower and ansi_chartr() functions, the ANSI styling aware variants of toupper(), tolower() and chartr() (#248).

  • New test_that_cli() helper function to write testthat tests for cli output.

  • tree() now does not produce warnings for tibbles (#238).

  • New inline style: .cls to format class names, e.g. "{.var fit} must be an {.cls lm} object".

cli 2.4.0 2021-04-05

  • New cli_memo() function to create a list of items or tasks.

  • New cli::cli() function to create a single cli message from multiple cli calls (#170).

  • cli now highlights weird names, e.g. path names with leading or trailing space (#227).

  • Styling is fixed at several places. In particular, nested lists should be now formatted better (#221).

  • New spark_bar() and spark_line() functions to draw small bar or line charts.

cli 2.3.1 2021-02-23

  • ANSI color support detection works correctly now in older RStudio, and also on older R versions.

  • cli_h1(), cli_h2() and cli_h3() now work with multiple glue substitutions (#218).

cli 2.3.0 2021-01-31

cli 2.2.0 2020-11-20

cli 2.1.0 2020-10-12

  • New cli_vec() function to allow easier formatting of collapsed vectors. It is now also possible to use styling to set the collapsing parameters (#129).

  • New pluralize() function to perform pluralization without generating cli output (#155).

  • console_width() works better now in RStudio, and also in terminals.

  • Styling of verbatim text work properly now (#147, @tzakharko).

  • Messages (i.e. message conditions) coming from cli now have the cliMessage class, so you can easily suppress them without suppressing other messages (#156).

  • cli prints the output to stderr() now, if there is an output or message sink. This is to make interactive and non-interactive sessions consistent (#153).

  • Pluralization works correctly now if the last alternative is the empty string (#158).

  • cli now caches the result of the dark background detection in iTerm on macOS. Reload cli to delete the cache (#131).

  • The is_dynamic_tty(), is_ansi_tty() and ansi_hide_cursor() and related functions now default to the "auto" stream, which is automatically selected to be either stdout() or stderr(). See the manual for details (#144).

  • The default theme now quotes file names, paths, email addresses if they don’t start or end with an alphanumeric character or a slash. This is to make it easier to spot names that start or end with a space (#167).

  • make_spinner() clears the line properly now (@tzakharko, #164).

  • Semantic cli functions now automatically replace Unicode non-breaking space characters (\u00a0) with regular space characters, right before output. They are still used to calculate the line breaks, but not outputted (#161).

  • Progress bars now respect is_dynamic_tty() and do not output \r when this is false (@jimhester, #177)

cli 2.0.2 2020-02-28

  • The status bar now does not simplify multiple spaces by a single space.

  • cli now does not crash if it fails to detect whether the RStudio theme is a dark theme (#138).

  • cli now works better with wide Unicode characters, for example emojis. In particular, a status bar containing emojis is cleared properly (#133).

  • The status bar now does not flicker when updated, in terminals (#135).

cli 2.0.1 2020-01-08

  • Symbols (symbol$*) are now correctly printed in RStudio on Windows (#124).

  • The default theme for cli_code() output looks better now, especially in RStudio (#123).

  • Remove spurious newline after a cli_process_start() was cleared manually, and also at the end of the function.

  • Use Oxford comma when listing 3 or more items (@jonocarroll, #128).

cli 2.0.0 2019-12-09

Semantic command line interface tools

cli 2.0.0 has a new set of functions that help creating a CLI using a set of higher level elements: headings, paragraphs, lists, alerts, code blocks, etc. The formatting of all elements can be customized via themes. See the “Building a semantic CLI” article on the package web site:

Bug fixes:

  • Fix a bug in is_dynamic_tty(), setting R_CLI_DYNAMIC="FALSE" now properly turns dynamic tty off (#70).

cli 1.1.0 2019-03-19

cli 1.0.0 2017-11-05

First public release.