Releases: mikaelmello/inquire
v0.9.1
v0.9
v0.9.0
Features
Adds Selectable derive macro for enums! You can now easily create enum-based prompts (e.g. menus) by using the Selectable derive 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!
v0.9.0
Features
Adds Selectable derive macro for enums! You can now easily create enum-based prompts (e.g. menus) by using the Selectable derive 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.8.1
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
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.
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
v0.7.5
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
v0.7.4
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
v0.7.3
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
v0.7.2
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
v0.7.1
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