inquire
inquire is a library for building interactive prompts on terminals
0.9.4
19M downloads/mo
#2139 most downloaded on crates.io
mikaelmello/inquire
What this package is like to depend on
Last release 6 months ago
24 Feb 2026
Ships unpredictably
gaps range from 1 weeks to 1.4 years
Nearly every release is documented
notes for 29 of 31 stable releases
5 versions withdrawn
withdrawn after publishing
5 years old
40 releases · first in 2021
7 releases in the last 12 months
see the full history below
Release timeline
40 releases · Jun 2021 to Feb 2026Releases
latest 40-
0.9.424 Feb 2026Release notes
Open source →Features
Experimental: Added multi-line input support for
PasswordandTextprompts viaAlt+Enter. Enable theexperimental-multiline-inputfeature to use it. It is only supported when usingcrossterm(default) as the terminal back-end. Thanks @domenkozar!Release notes
Open source →Features
Experimental: Added multi-line input support for
PasswordandTextprompts viaAlt+Enter. Enable theexperimental-multiline-inputfeature to use it. It is only supported when usingcrossterm(default) as the terminal back-end. -
0.9.306 Feb 2026Release notes
Open source →v0.9.3
Features
- Added
new_line_prefixoption toRenderConfig, allowing a styled prefix to be displayed at the beginning of every new line. - Added
answer_from_new_lineoption toRenderConfig, allowing the submitted answer to be rendered on a new line below the prompt. - Added
unhighlighted_option_prefixoption toRenderConfig, allowing customization of the prefix for non-highlighted options in Select and MultiSelect prompts.
Thanks @frol for the contribution!
Release notes
Open source →Features
- Added
new_line_prefixoption toRenderConfig, allowing a styled prefix to be displayed at the beginning of every new line. - Added
answer_from_new_lineoption toRenderConfig, allowing the submitted answer to be rendered on a new line below the prompt. - Added
unhighlighted_option_prefixoption toRenderConfig, allowing customization of the prefix for non-highlighted options in Select and MultiSelect prompts.
- Added
-
0.9.217 Jan 2026Release notes
Open source →v0.9.2
- Bumped MSRV from 1.80 -> 1.82 due to new requirements of dependencies.
- Expose the sorting function used by
Select(thanks @devjgm!)
v0.9.1
- Fix panicking when terminal backend reports size with 0 width. Thanks @sebhoss for reporting!
v0.9.0
Features
Adds
Selectablederive macro for enums! You can now easily create enum-based prompts (e.g. menus) by using theSelectablederive macro on your enums.See the example for more details. Thank you @TheBearodactyl for the contribution!
Dependencies
- Updated
unicode-widthto 0.2. - Updated
crosstermto 0.29. - Updated
termionto 4.0. - Updated
consoleto 0.16.
Release notes
Open source →- Bumped MSRV from 1.80 -> 1.82 due to new requirements of dependencies.
- Expose the sorting function used by
Select(thanks @devjgm!)
-
0.9.116 Sep 2025Release notes
Open source →v0.9
v0.9.0
Features
Adds
Selectablederive macro for enums! You can now easily create enum-based prompts (e.g. menus) by using theSelectablederive macro on your enums.See the example for more details. Thank you @TheBearodactyl for the contribution!
Dependencies
- Updated
unicode-widthto 0.2. - Updated
crosstermto 0.29. - Updated
termionto 4.0. - Updated
consoleto 0.16.
v0.9.1
- Fix panicking when terminal backend reports size with 0 width. Thanks @sebhoss for reporting!
- Updated
-
0.9.016 Sep 2025 withdrawnRelease notes
Open source →Features
Adds
Selectablederive macro for enums! You can now easily create enum-based prompts (e.g. menus) by using theSelectablederive macro on your enums.See the example for more details. Thank you @TheBearodactyl for the contribution!
Dependencies
- Updated
unicode-widthto 0.2. - Updated
crosstermto 0.29. - Updated
termionto 4.0. - Updated
consoleto 0.16.
Release notes
Open source →Features
Adds
Selectablederive macro for enums! You can now easily create enum-based prompts (e.g. menus) by using theSelectablederive macro on your enums.See the example for more details. Thank you @TheBearodactyl for the contribution!
Dependencies
- Updated
unicode-widthto 0.2. - Updated
crosstermto 0.29. - Updated
termionto 4.0. - Updated
consoleto 0.16.
- Updated
-
0.8.116 Sep 2025Release notes
Open source →v0.8
v0.8.0
Features
- Improve end user experience when prompting for input without a message.
- Implement
raw_prompt_skippableforSelect.
Fixes
- Fix bug where inputs spanning 3+ lines would break text rendering.
- Fix bug where Select and MultiSelect prompts would render the first option incorrectly when filtering is disabled.
- Fix autocomplete suggestions not being updated after a suggestion is accepted.
- Fix incorrect cursor placement when inputting CJK characters.
API Changes
- Don't require static lifetime for autocompleter and validator.
Dependencies
- Upgraded
crosstermto 0.28.1. - Raised minimum supported Rust version to 1.80.0.
- Migrate from
once_celltostdlib. - Migrate from
fxhashtostdlib. - Removed unused dependency (newline-converter).
- Fix GitHub Action outdated dependencies.
v0.8.1
Fixes
- Fix panicking when terminal backend reports size with 0 width.
Acknowledgments
Thanks to all the users and contributors who helped improve this library with their feedback and contributions!
@basbossink-ds, @CraftSpider, @ereOn, @istudyatuni, @jarjk, @jonassmedegaard, @Maffey, @moritz-hoelting, @phostann, @sebhoss, @stormshield-guillaumed, @theRookieCoder, @tusharmath
-
0.8.014 Sep 2025 withdrawnRelease notes
Open source →Features
- Improve end user experience when prompting for input without a message.
- Implement
raw_prompt_skippableforSelect.
Fixes
- Fix bug where inputs spanning 3+ lines would break text rendering.
- Fix bug where Select and MultiSelect prompts would render the first option incorrectly when filtering is disabled.
- Fix autocomplete suggestions not being updated after a suggestion is accepted.
- Fix incorrect cursor placement when inputting CJK characters.
API Changes
- Don't require static lifetime for autocompleter and validator.
Dependencies
- Upgraded
crosstermto 0.28.1. - Raised minimum supported Rust version to 1.80.0.
- Migrate from
once_celltostdlib. - Migrate from
fxhashtostdlib. - Removed unused dependency (newline-converter).
- Fix GitHub Action outdated dependencies.
Acknowledgments
Thanks to all the users and contributors who helped improve this library with their feedback and contributions!
@basbossink-ds, @CraftSpider, @ereOn, @istudyatuni, @jarjk, @jonassmedegaard, @Maffey, @moritz-hoelting, @phostann, @stormshield-guillaumed, @theRookieCoder, @tusharmath
Release notes
Open source →Features
- Improve end user experience when prompting for input without a message.
- Implement
raw_prompt_skippableforSelect.
Fixes
- Fix bug where inputs spanning 3+ lines would break text rendering.
- Fix bug where Select and MultiSelect prompts would render the first option incorrectly when filtering is disabled.
- Fix autocomplete suggestions not being updated after a suggestion is accepted.
- Fix incorrect cursor placement when inputting CJK characters.
API Changes
- Don't require static lifetime for autocompleter and validator.
Dependencies
- Upgraded
crosstermto 0.28.1. - Raised minimum supported Rust version to 1.80.0.
- Migrate from
once_celltostdlib. - Migrate from
fxhashtostdlib. - Removed unused dependency (newline-converter).
- Fix GitHub Action outdated dependencies.
Acknowledgments
Thanks to all the who helped improve this library with their feedback and contributions!
@basbossink-ds, @CraftSpider, @ereOn, @istudyatuni, @jarjk, @jonassmedegaard, @Maffey, @moritz-hoelting, @phostann, @stormshield-guillaumed, @theRookieCoder, @tusharmath
-
0.7.523 Apr 2024Release notes
Open source →v0.7.5
- Fix user-provided ANSI escape codes from being removed when rendering.
- Introduced on 0.7.0, this regression was making it impossible to have colorised text inside the prompt.
- Now ANSI escape codes are properly emitted when rendering the prompt in the terminal.
- Thanks @leoetlino!
v0.7.4
- Fix unexpected behaviors of
keep_filteroption in MultiSelect prompts:- Filter input is now correcly getting reset only when
keep_filter == false. - When the filter input is reset, the list of options is now correctly reset as well. Thanks @Swivelgames for reporting #238.
- Filter input is now correcly getting reset only when
v0.7.3
- Fix cursor occasionally blinking in unexpected places.
v0.7.2
- Pressing Ctrl+D now cancels the prompt. Thanks @mikecvet for the PR!
- Add support for
handlbindings when vim_mode is enabled on MultiSelect prompts, clearing or selecting all options respectively. Thanks @afh for the PR! - Fix render issue #233 where cursor positioning at the end of a prompt was incorrect. Thanks @msrd0 and @Sydonian for reporting!
v0.7.1
- Fix render issue #228 when using console crate as the terminal backend. Thanks @maospr for reporting.
v0.7.0
Breaking Changes
- The Select and Multiselect Filter now scores input and is now expected to return an
Option<i64>, making it possible to order/rank the list of options. #176
None: Will not be displayed in the list of options.
Some(score): score determines the order of options, higher score, higher on the list of options. - Improved user experience on Password prompts. When there is a validation error, the input is cleared if the password is rendered using the
Hiddendisplay mode, matching the user expectation of having to write the password from scratch again. Thanks to @CM-IV for the questions on #149! - Allow lifetime customization of RenderConfig. #101. Thanks to @arturfast for the suggestion #95.
- Implement fuzzy search as default on Select and MultiSelect prompts. Thanks @Baarsgaard! #176
- Revamped keybindings for DateSelect.
Features
- Add one-liner helpers for quick scripts. #144.
- Add new option on MultiSelect prompts to set all options to be selected by default. Thanks to @conikeec for the suggestion (#151)!
- Add new option on Select/MultiSelect prompts allowing to reset selection to the first item on filter-input changes. #176
- Emacs-like keybindings added where applicable (@jasonish, @EnigmaCurry):
- Ctrl-p/Ctrl-n for up/down
- Ctrl-b/Ctrl-f for left/right
- Ctrl-j/Ctrl-g for enter/cancel
- Vim keybindings are always supported in DateSelect prompts.
- Added 'with_starting_filter_input' to both Select and MultiSelect, which allows for setting an initial value to the filter section of the prompt.
- Added starting_input for CustomType. (@FroVolod #194)
- Added 'without_filtering' to both Select and MultiSelect, useful when you want to simplify the UX if the filter does not add any value, such as when the list is already short.
- Added 'with_answered_prompt_prefix' to RenderConfig to allow customization of answered prompt prefix.
- Improved rendering, with optimizations on incremental rendering and terminal resizing.
Fixes
- Fixed typos in the code's comments (@kianmeng, @bheylin).
- Fixed issue where inquire, using termion, would crash when receiving piped inputs.
Dependency changes (some breaking)
- Upgraded underlying
termioncrate from v1.5 to v2.0. - Upgraded underlying
bitflagsfrom v1 to v2, which affects theAttributesandKeyModifierscrates. If you use any of bitflag's methods directly, you might be affected, refer to the bitflags changelog for more information. - Removed
thiserrordependency in favor of implementingInquireErrorby hand. (@bheylin #146) - Raised MSRV to 1.66 due to requirements in downstream dependencies.
- MSRV is now explicitly set in the package definition.
- Replaced
lazy_staticwithonce_cellasonce_cell::sync::Lazyis being standardized andlazy_staticis not actively maintained anymore. (@bheylin #158) - Added
fuzzy-matcheras a dependency for fuzzy filtering in Select and MultiSelect prompts #176
Release notes
Open source →- Fix user-provided ANSI escape codes from being removed when rendering.
- Introduced on 0.7.0, this regression was making it impossible to have colorised text inside the prompt.
- Now ANSI escape codes are properly emitted when rendering the prompt in the terminal.
- Fix user-provided ANSI escape codes from being removed when rendering.
-
0.7.425 Mar 2024Release notes
Open source →v0.7.4
- Fix unexpected behaviors of
keep_filteroption in MultiSelect prompts:- Filter input is now correcly getting reset only when
keep_filter == false. - When the filter input is reset, the list of options is now correctly reset as well. Thanks @Swivelgames for reporting #238.
- Filter input is now correcly getting reset only when
v0.7.3
- Fix cursor occasionally blinking in unexpected places.
v0.7.2
- Pressing Ctrl+D now cancels the prompt. Thanks @mikecvet for the PR!
- Add support for
handlbindings when vim_mode is enabled on MultiSelect prompts, clearing or selecting all options respectively. Thanks @afh for the PR! - Fix render issue #233 where cursor positioning at the end of a prompt was incorrect. Thanks @msrd0 and @Sydonian for reporting!
v0.7.1
- Fix render issue #228 when using console crate as the terminal backend. Thanks @maospr for reporting.
v0.7.0
Breaking Changes
- The Select and Multiselect Filter now scores input and is now expected to return an
Option<i64>, making it possible to order/rank the list of options. #176
None: Will not be displayed in the list of options.
Some(score): score determines the order of options, higher score, higher on the list of options. - Improved user experience on Password prompts. When there is a validation error, the input is cleared if the password is rendered using the
Hiddendisplay mode, matching the user expectation of having to write the password from scratch again. Thanks to @CM-IV for the questions on #149! - Allow lifetime customization of RenderConfig. #101. Thanks to @arturfast for the suggestion #95.
- Implement fuzzy search as default on Select and MultiSelect prompts. Thanks @Baarsgaard! #176
- Revamped keybindings for DateSelect.
Features
- Add one-liner helpers for quick scripts. #144.
- Add new option on MultiSelect prompts to set all options to be selected by default. Thanks to @conikeec for the suggestion (#151)!
- Add new option on Select/MultiSelect prompts allowing to reset selection to the first item on filter-input changes. #176
- Emacs-like keybindings added where applicable (@jasonish, @EnigmaCurry):
- Ctrl-p/Ctrl-n for up/down
- Ctrl-b/Ctrl-f for left/right
- Ctrl-j/Ctrl-g for enter/cancel
- Vim keybindings are always supported in DateSelect prompts.
- Added 'with_starting_filter_input' to both Select and MultiSelect, which allows for setting an initial value to the filter section of the prompt.
- Added starting_input for CustomType. (@FroVolod #194)
- Added 'without_filtering' to both Select and MultiSelect, useful when you want to simplify the UX if the filter does not add any value, such as when the list is already short.
- Added 'with_answered_prompt_prefix' to RenderConfig to allow customization of answered prompt prefix.
- Improved rendering, with optimizations on incremental rendering and terminal resizing.
Fixes
- Fixed typos in the code's comments (@kianmeng, @bheylin).
- Fixed issue where inquire, using termion, would crash when receiving piped inputs.
Dependency changes (some breaking)
- Upgraded underlying
termioncrate from v1.5 to v2.0. - Upgraded underlying
bitflagsfrom v1 to v2, which affects theAttributesandKeyModifierscrates. If you use any of bitflag's methods directly, you might be affected, refer to the bitflags changelog for more information. - Removed
thiserrordependency in favor of implementingInquireErrorby hand. (@bheylin #146) - Raised MSRV to 1.66 due to requirements in downstream dependencies.
- MSRV is now explicitly set in the package definition.
- Replaced
lazy_staticwithonce_cellasonce_cell::sync::Lazyis being standardized andlazy_staticis not actively maintained anymore. (@bheylin #158) - Added
fuzzy-matcheras a dependency for fuzzy filtering in Select and MultiSelect prompts #176
Release notes
Open source →- Fix unexpected behaviors of
keep_filteroption in MultiSelect prompts:- Filter input is now correcly getting reset only when
keep_filter == false. - When the filter input is reset, the list of options is now correctly reset as well. Thanks @Swivelgames for reporting #238.
- Filter input is now correcly getting reset only when
- Fix unexpected behaviors of
-
0.7.321 Mar 2024Release notes
Open source →v0.7.3
- Fix cursor occasionally blinking in unexpected places.
v0.7.2
- Pressing Ctrl+D now cancels the prompt. Thanks @mikecvet for the PR!
- Add support for
handlbindings when vim_mode is enabled on MultiSelect prompts, clearing or selecting all options respectively. Thanks @afh for the PR! - Fix render issue #233 where cursor positioning at the end of a prompt was incorrect. Thanks @msrd0 and @Sydonian for reporting!
v0.7.1
- Fix render issue #228 when using console crate as the terminal backend. Thanks @maospr for reporting.
v0.7.0
Breaking Changes
- The Select and Multiselect Filter now scores input and is now expected to return an
Option<i64>, making it possible to order/rank the list of options. #176
None: Will not be displayed in the list of options.
Some(score): score determines the order of options, higher score, higher on the list of options. - Improved user experience on Password prompts. When there is a validation error, the input is cleared if the password is rendered using the
Hiddendisplay mode, matching the user expectation of having to write the password from scratch again. Thanks to @CM-IV for the questions on #149! - Allow lifetime customization of RenderConfig. #101. Thanks to @arturfast for the suggestion #95.
- Implement fuzzy search as default on Select and MultiSelect prompts. Thanks @Baarsgaard! #176
- Revamped keybindings for DateSelect.
Features
- Add one-liner helpers for quick scripts. #144.
- Add new option on MultiSelect prompts to set all options to be selected by default. Thanks to @conikeec for the suggestion (#151)!
- Add new option on Select/MultiSelect prompts allowing to reset selection to the first item on filter-input changes. #176
- Emacs-like keybindings added where applicable (@jasonish, @EnigmaCurry):
- Ctrl-p/Ctrl-n for up/down
- Ctrl-b/Ctrl-f for left/right
- Ctrl-j/Ctrl-g for enter/cancel
- Vim keybindings are always supported in DateSelect prompts.
- Added 'with_starting_filter_input' to both Select and MultiSelect, which allows for setting an initial value to the filter section of the prompt.
- Added starting_input for CustomType. (@FroVolod #194)
- Added 'without_filtering' to both Select and MultiSelect, useful when you want to simplify the UX if the filter does not add any value, such as when the list is already short.
- Added 'with_answered_prompt_prefix' to RenderConfig to allow customization of answered prompt prefix.
- Improved rendering, with optimizations on incremental rendering and terminal resizing.
Fixes
- Fixed typos in the code's comments (@kianmeng, @bheylin).
- Fixed issue where inquire, using termion, would crash when receiving piped inputs.
Dependency changes (some breaking)
- Upgraded underlying
termioncrate from v1.5 to v2.0. - Upgraded underlying
bitflagsfrom v1 to v2, which affects theAttributesandKeyModifierscrates. If you use any of bitflag's methods directly, you might be affected, refer to the bitflags changelog for more information. - Removed
thiserrordependency in favor of implementingInquireErrorby hand. (@bheylin #146) - Raised MSRV to 1.66 due to requirements in downstream dependencies.
- MSRV is now explicitly set in the package definition.
- Replaced
lazy_staticwithonce_cellasonce_cell::sync::Lazyis being standardized andlazy_staticis not actively maintained anymore. (@bheylin #158) - Added
fuzzy-matcheras a dependency for fuzzy filtering in Select and MultiSelect prompts #176
-
0.7.217 Mar 2024Release notes
Open source →- Pressing Ctrl+D now cancels the prompt. Thanks @mikecvet for the PR!
- Add support for
handlbindings when vim_mode is enabled on MultiSelect prompts, clearing or selecting all options respectively. Thanks @afh for the PR! - Fix render issue #233 where cursor positioning at the end of a prompt was incorrect. Thanks @msrd0 and @Sydonian for reporting!
-
0.7.110 Mar 2024Release notes
Open source →- Fix render issue #228 when using
consolecrate as the terminal backend. Thanks @maospr for reporting.
- Fix render issue #228 when using
-
0.7.024 Feb 2024Release notes
Open source →Breaking Changes
- The Select and Multiselect Filter now scores input and is now expected to return an
Option<i64>, making it possible to order/rank the list of options. #176None: Will not be displayed in the list of options.Some(score): score determines the order of options, higher score, higher on the list of options. - Improved user experience on Password prompts. When there is a validation error, the input is cleared if the password is rendered using the
Hiddendisplay mode, matching the user expectation of having to write the password from scratch again. Thanks to @CM-IV for the questions on #149! - Allow lifetime customization of RenderConfig. #101. Thanks to @arturfast for the suggestion #95.
- Implement fuzzy search as default on Select and MultiSelect prompts. #176
- Revamped keybindings for DateSelect.
Features
- Add one-liner helpers for quick scripts. #144.
- Add new option on MultiSelect prompts to set all options to be selected by default. Thanks to @conikeec for the suggestion (#151)!
- Add new option on Select/MultiSelect prompts allowing to reset selection to the first item on filter-input changes. #176
- Emacs-like keybindings added where applicable:
- Ctrl-p/Ctrl-n for up/down
- Ctrl-b/Ctrl-f for left/right
- Ctrl-j/Ctrl-g for enter/cancel
- Vim keybindings are always supported in DateSelect prompts.
- Added 'with_starting_filter_input' to both Select and MultiSelect, which allows for setting an initial value to the filter section of the prompt.
- Added starting_input for CustomType. #194
- Added 'without_filtering' to both Select and MultiSelect, useful when you want to simplify the UX if the filter does not add any value, such as when the list is already short.
- Added 'with_answered_prompt_prefix' to RenderConfig to allow customization of answered prompt prefix.
- Improved rendering, with optimizations on incremental rendering and terminal resizing.
Fixes
- Fixed typos in the code's comments.
- Fixed issue where inquire, using termion, would crash when receiving piped inputs.
Dependency changes (some breaking)
- Upgraded underlying
termioncrate from v1.5 to v2.0. - Upgraded underlying
bitflagsfrom v1 to v2, which affects theAttributesandKeyModifierscrates. If you use any of bitflag's methods directly, you might be affected, refer to the bitflags changelog for more information. - Removed
thiserrordependency in favor of implementingInquireErrorby hand. #146 - Raised MSRV to 1.66 due to requirements in downstream dependencies.
- MSRV is now explicitly set in the package definition.
- Replaced
lazy_staticwithonce_cellasonce_cell::sync::Lazyis being standardized andlazy_staticis not actively maintained anymore. - Added
fuzzy-matcheras an optional dependency for fuzzy filtering in Select and MultiSelect prompts #176
- The Select and Multiselect Filter now scores input and is now expected to return an
-
0.6.207 May 2023Release notes
Open source →- Allow usage of ANSI escape codes in prompts. #136. Thanks to @JimLynchCodes for reporting on #135.
-
0.6.108 Apr 2023Release notes
Open source → -
0.6.003 Mar 2023 withdrawnRelease notes
Open source →Breaking Changes
- Selected option can now be styled independently of other options through
RenderConfig::with_selected_option(). - Now selected options are highlighted cyan by default.
- Output dialogs on
stderrinstead ofstdout#89. - New Minimum Supported Rust Version: 1.58.1.
- Selected option can now be styled independently of other options through
-
0.5.309 Jan 2023Release notes
Open source →- Addition of
with_starting_date(NaiveDate)toDateSelectprompts.- Equivalent to
with_default(NaiveDate), but with a more descriptive name.
- Equivalent to
- Addition of
-
0.5.201 Nov 2022Release notes
Open source →- 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.
- Fixed typo in the default error message when a password confirmation does not match. Thanks to @woodruffw for the PR! #79
-
0.5.131 Oct 2022Release notes
Open source →- Removed use of
bool::then_somefeature to keep minimum supported Rust version on 1.56.0.
- Removed use of
-
0.5.031 Oct 2022Release notes
Open source →Breaking Changes
Passwordprompts 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 thePasswordbuilder chain. Thanks to @hampuslidin for the PR! #73
- Added support for password confirmation, which can be oupted-out of by adding the
-
0.4.027 Sep 2022Release notes
Open source →Breaking Changes
Multiple changes to the
CustomTypeprompt:- 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
Textprompts- Existing methods still work, you just have to update
with_suggestercalls towith_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 aColorstruct from RGB components. Thanks to @tpoliaw for the PR! #73
-
0.3.019 Aug 2022Release notes
Open source →Breaking Changes
Features #1 to #4 are all breaking changes and could break the compilation of your program.
Fix #2 represents a change in usability and might be an unexpected behavior.
Features
1. Completer
CompleterforTextprompts, allowing users to auto-update their text input by pressingtaband 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.
Completeris 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_prefixconfiguration onRenderConfig, 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
Validationenum, which can be eitherValidorInvalid(ErrorMessage). - Unsuccessful executions return a
CustomUserErrortype, which is an alias forBox<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>, whileCustomUserErroris 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.Textdocumentation. - Suggestions are now always loaded at the start of a
Textprompt.- Previously, suggestions were only loaded and displayed if the
Textprompt 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.
- Previously, suggestions were only loaded and displayed if the
Changes
- Update
crosstermandconsoleto their latest versions.
- Successful executions of the validator should return a variant of the
-
0.3.0-alpha.226 Feb 2022 pre-releaseNothing published for this version
-
0.3.0-alpha.119 Jan 2022 pre-releaseNothing published for this version
-
0.2.102 Oct 2021Release notes
Open source →Features
- Add
initial_valueproperty toTextprompts, 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.
- Add
-
0.2.014 Sep 2021Release notes
Open source →Features
- Add
inquire::set_global_render_configmethod 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
inquireprompts.
Breaking changes
RenderConfigwas madeCopy-able and prompts now contain aRenderConfigfield where it previously held a&'a RenderConfig. Consequently,with_render_config()methods now accept aRenderConfigargument instead of&'a RenderConfig.
- Add
-
0.1.014 Sep 2021Release notes
Open source →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.
-
0.0.1106 Sep 2021Release notes
Open source →Features
- Add
Editorprompt. - Add support to use
consoleortermionas the library to handle terminals while keepingcrosstermas the default choice. - Canceling the prompt by pressing
ESCis now a different behavior than interrupting the prompt by pressingCtrl+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 returnsErr(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).
- If the prompt is canceled, the final prompt render indicates to the user that it was canceled via a
- Add a
prompt_skippablemethod 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), butOk(None). Meanwhile, if the user does submit an answer, the method wraps the return type withSome.
- 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
Improvements
- Removed need to add
use inquire::validator::InquireLengthwhen using one of the length-related built-in validators. - Cursor should not ficker anymore in wrong positions on
Windowsslower terminals. - Documentation on the
Colorenum used for render configuration has been improved.
Fixes
- Fix dependencies the crate had on macros provided by the
builtin_validatorsfeature, making it now compile when the feature is not turned on.
- Add
-
0.0.1029 Aug 2021Release notes
Open source →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
ListOptionstruct 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 caught and transformed to
InquireError::NotTTY. #28
-
0.0.929 Aug 2021 withdrawnRelease notes
Open source →General
- Improve docs on the differences between
raw_promptandprompton Select and MultiSelect prompts. - Bump version of
crosstermdependency
Fixes
- Regression introduced on v0.0.8 where select prompts were panicking when user pressed enter while no options were displayed (due to filter input). Tracked by #29 and tests were added for this to not happen again.
- Improve docs on the differences between
-
0.0.825 Aug 2021 withdrawnRelease notes
Open source →Features
- Password display toggle: By enabling this option in
Passwordprompts viawith_display_toggle_enabled(), the application user can choose to display the current text input for the password by pressingCtrl+R, and hide it back by pressing the hotkey again. #18 - Render mask of password input:
Passwordprompts now support another render mode of the text input. Before, the only behavior was to not render anything about the current password input. Now, if the developer so chooses, they can activate theMaskedmode where the current text input will be masked with special characters such as'*'. #19 - PageUp, PageDown, Home and End hotkeys: PageUp and PageDown are now supported in
Select,MultiSelectandText(suggestions list) prompts, where they go a page up or down in the current list. Also, forSelectandMultiSelectprompts, the Home and End keys were mapped to go to the start or end of the list, respectively. #17 - Indication that list is scrollable: Now option lists, present in
Select,MultiSelectandTextprompts, indicate whether there are more options other than the ones currently displayed. Little arrows are displayed at the top or bottom of the list indicating to which positions the user can scroll. #8 - Generic option types for Select and MultiSelect prompts: Now,
SelectandMultiSelectprompts accept any type of options as input, allowing developers to pass a vector of owned objects and get back the full object picked by the user. #9
Fixes
- Handling of new-line characters in user-provided strings: When putting
\non strings such as prompt messages, the library previously did not render it very well and did not account for it when cleaning the current prompt. This is fixed and you are free to create multi-line prompts! #15 - Lines larger than terminal width broke rendering: When lines that were larger than the terminal width were rendered, it caused the internal line counter (used to clean the prompt) to be off, leading to buggy behavior. This was fixed by retrieving the terminal size at the start of the prompt. #21
- Password display toggle: By enabling this option in
-
0.0.720 Aug 2021Release notes
Open source →Features
- Add possibility to set custom rendering config, allowing users to set:
- Custom colors
- Custom prefixes for several prompts
- Custom checkboxes
- Add "placeholder" feature for prompts with text input
- Add possibility to set custom rendering config, allowing users to set:
-
0.0.7-alpha.108 Aug 2021 pre-releaseNothing published for this version
-
0.0.7-alpha.008 Aug 2021 pre-releaseNothing published for this version
-
0.0.626 Jul 2021Release notes
Open source →- Add [previously non-existing] documentation.
- Add CustomType prompt
- Add revamped auto-completion support for Text prompts
-
0.0.520 Jul 2021Release notes
Open source →- All function arguments now accept closures by having their type changed to
&dyn Fn. - Improved input UX
- Cursor added for better editing experience
- Features/shortcuts added: Ctrl+Left, Ctrl+Right, Home, End, Delete, Ctrl+Delete
- All function arguments now accept closures by having their type changed to
-
0.0.414 Jul 2021Release notes
Open source →- Add a custom error enum
InquireError, improving error handling for library users. - Improve support for validator functions, allowing the use of closures.
- Change the terminal back-end from termion to crossterm, adding Windows support for this library.
- Add a custom error enum
-
0.0.307 Jul 2021Release notes
Open source →- Reduce package footprint
- Add custom parser option to Confirm prompt
- Add DateSelect prompt
-
0.0.226 Jun 2021Nothing published for this version
-
0.0.124 Jun 2021Nothing published for this version