Skip to content

Releases: mikaelmello/inquire

v0.5.2

01 Nov 01:32
v0.5.2
331daf5
Compare
Choose a tag to compare
  • Fixed typo in the default error message when a password confirmation does not match. Thanks to @woodruffw for the PR! #79
    • Releases containing the typo: v0.5.0 and v0.5.1.

0.5.1

  • Removed use of bool::then_some feature to keep minimum supported Rust version on 1.56.0.

0.5.0 - 2022-10-31

Breaking Changes

Password prompts now enable a secondary confirmation prompt by default:

  • Added support for password confirmation, which can be oupted-out of by adding the without_confirmation() method into the Password builder chain. Thanks to @hampuslidin for the PR! #73

v0.5.1

31 Oct 04:39
v0.5.1
5393c84
Compare
Choose a tag to compare
  • Removed use of bool::then_some feature to keep minimum supported Rust version on 1.56.0.

v0.5.0

Breaking Changes

Password prompts now enable a secondary confirmation prompt by default:

  • Added support for password confirmation, which can be oupted-out of by adding the without_confirmation() method into the Password builder chain. Thanks @hampuslidin

v0.5.0

31 Oct 04:22
v0.5.0
501c100
Compare
Choose a tag to compare

Breaking Changes

Password prompts now enable a secondary confirmation prompt by default:

  • Added support for password confirmation, which can be oupted-out of by adding the without_confirmation() method into the Password builder chain. Thanks @hampuslidin

v0.4.0

27 Sep 03:00
v0.4.0
7124ee7
Compare
Choose a tag to compare

Breaking Changes

Multiple changes to the CustomType prompt:

  • Added support for validators, separating concerns between parsing and validating parsed values.
  • Decoupled default value formatting from the default value property. Now you can set default values without a specific formatter to accompany them.
  • Input is not cleared anymore when the parsing or validation fails.

New autocompletion mechanism for Text prompts

  • Existing methods still work, you just have to update with_suggester calls to with_autocomplete.
  • To know more about the new possibilities, check the updated documentation on the repository's README.

Other changes

  • Added shorthand method rgb(r: u8, g: u8, b: u8) to create a Color struct from RGB components. Thanks to @tpoliaw for the PR! #73

v0.3.0

20 Aug 20:20
v0.3.0
48baef2
Compare
Choose a tag to compare

Breaking Changes

Features #1 to #4 are all breaking changes and could break the compilation of your program.

Fix #2 representes a change in usability and might be an unexpected behavior.

Features

1. Completer

Completer for Text prompts, allowing users to auto-update their text input by pressing tab and not having to navigate through a suggestion list.

It takes the current input and return an optional suggestion. If any, the prompter will replace the current input with the received suggestion. Completer is an alias for &'a dyn Fn(&str) -> Result<Option<String>, CustomUserError>.

The auto-completion API will be revamped for v0.4.0, watch #69.


2. Support for custom prompt prefix in finished prompts.

Added answered_prompt_prefix configuration on RenderConfig, allowing users to set custom prefixes (e.g. a check mark) to prompts that have already been answered.

Additionally, prompts that have been answered are now differed by a > prefix instead of the usual ?.

Cheers to @href for the suggestion! #44


3. User-provided operations can be fallible.

Input validation, suggestions and completions are now fallible operations.

The return type of validators has been changed to Result<Validation, CustomUserError>. This means that validating the input can now be a fallible operation. The docs contain more thorough explanations and full-featured examples.

  • Successful executions of the validator should return a variant of the Validation enum, which can be either Valid or Invalid(ErrorMessage).
  • Unsuccessful executions return a CustomUserError type, which is an alias for Box<dyn std::error::Error + Send + Sync + 'static>.

The return type of suggesters has also been changed to allow fallible executions. The return type in successful executions continues to be Vec<String>, while CustomUserError is used with errors.


4. Validators are traits instead of closures.

All builtin validators have been turned into traits, with structs instead of macros as implementations.

This change makes it easier to share the validators throughout the code, especially if these carry their own owned data. For example, consider a validator that uses a compiled regular expression to verify the input. That validator can now be built as a new-type struct that encapsulates the regex.

Closures can still be used as before, but may not require to pass the argument type explicitly. The previous macros are now simply shorthands for the constructors of builtin validators.

Fixes

  • Fix a broken link in the struct.Text documentation.
  • Suggestions are now always loaded at the start of a Text prompt.
    • Previously, suggestions were only loaded and displayed if the Text prompt was created with a pre-existing input value or after the user entered any input.
    • Now, even if the prompt is started without any input and the user hasn't done anything, suggestions are displayed.

Changes

  • Update crossterm and console to their latest versions.

v0.2.1

02 Oct 02:54
v0.2.1
0d5cde1
Compare
Choose a tag to compare

Features

  • Add initial_value property to Text prompts, which sets an initial value for the prompt's text input. Huge thanks to @irevoire for the suggestion and implementation. #34.

Internals

  • Multiple changes to fix general warnings appearing throughout the code.

v0.2.0

14 Sep 20:38
v0.2.0
8c7370b
Compare
Choose a tag to compare

Features

  • Add inquire::set_global_render_config method to set a global RenderConfig object to be used as the default one for all prompts created after the call.
  • Add KEY_BINDINGS.md to register all key bindings registered by inquire prompts.

Breaking changes

  • RenderConfig was made Copy-able and prompts now contain a RenderConfig field where it previously held a &'a RenderConfig. Consequently, with_render_config() methods now accept a RenderConfig argument instead of &'a RenderConfig.

v0.1.0

14 Sep 13:14
v0.1.0
4e6a554
Compare
Choose a tag to compare

No changes in this version.

This is a bump to v0.1.0 as per @jam1garner's advice on the Virtual RustConf Discord server.

The library is already featureful enough to warrant a higher version number, bumping us to a minor release while we are still on our path to stabilization.

v0.0.11

06 Sep 19:50
v0.0.11
d466d78
Compare
Choose a tag to compare

Features

  • Add Editor prompt.
  • Add support to use console or termion as the library to handle terminals while keeping crossterm as the default choice.
  • Canceling the prompt by pressing ESC is now a different behavior than interrupting the prompt by pressing Ctrl+C.
    • If the prompt is canceled, the final prompt render indicates to the user that it was canceled via a <canceled> text, which is customizable via RenderConfig, and the prompt method returns Err(InquireError::OperationCanceled).
    • If the prompt is interrupted, the only clean-up action done is restoring the cursor position, and the prompt method returns Err(InquireError::OperationInterrupted).
  • Add a prompt_skippable method for all prompts.
    • This method is intended for flows where the user skipping/cancelling the prompt - by pressing ESC - is considered normal behavior. In this case, it does not return Err(InquireError::OperationCanceled), but Ok(None). Meanwhile, if the user does submit an answer, the method wraps the return type with Some.

Improvements

  • Removed need to add use inquire::validator::InquireLength when using one of the length-related built-in validators.
  • Cursor should not ficker anymore in wrong positions on Windows slower terminals.
  • Documentation on the Color enum used for render configuration has been improved.

Fixes

  • Fix dependencies the crate had on macros provided by the builtin_validators feature, making it now compile when the feature is not turned on.

v0.0.10

29 Aug 20:34
v0.0.10
0e8b50d
Compare
Choose a tag to compare

Features

  • Use native terminal cursors in text inputs by default.
  • Use native terminal cursor on date prompts when an optional style sheet for the selected cursor token was defined as None. The default behavior is still a custom style sheet which highlights the two columns pertaining to a date, instead of using a native cursor which can only highlight one column.
  • Respect NO_COLOR environment variable when prompt uses the default render configuration.

Fixes

  • By using a new method to identify the length of the rendered prompt, we avoid possible rendering errors (edge cases) when a string can not render into a single line in the terminal due to a smaller width. Inner calculations could previously predict that the rendered string would fit, by considering that 1 grapheme = 1 column width, but this is not true for e.g. emojis. Now we use unicode_width to fix this behavior.
  • Fixed case where Select/MultiSelect prompts were panicking when a user pressed the down arrow on an empty list, which happens when a filter input does not match any options. #30
  • Fixed incorrect indexes on the output of MultiSelect prompts, where the indexes inside a ListOption struct were relative to the output instead of the original input vector. #31
  • Fixed case where IO errors due to not finding a tty devices were not being catched and transformed to InquireError::NotTTY. #28