Changelog.md

Path: Changelog.md
Last Update: Fri Feb 17 10:36:31 -0500 2017

## Change Log

Below is a complete listing of changes for each revision of HighLine.

### 1.7.8 / 2015-10-09

  • Fix some issues when paginating. (Nick Carboni (@carbonin) and Abinoam P. Marques Jr. (@abinoam), 168, PRs 169 170)

### 1.7.7 / 2015-09-22

  • Make HighLine::Question coerce its question argument into a String. (@97-109-107 and Abinoam P. Marques Jr. (@abinoam), 159, PR 160)

### 1.7.6 / 2015-09-17

  • Fix a typo in a var name affecting solaris. (Danek Duvall (@dhduvall) and Abinoam P. Marques Jr. (@abinoam), 155, PR 156)

### 1.7.5 / 2015-09-14

  • Support jruby9k for system extensions (Michael (@mmmries), PR 153)

### 1.7.4 / 2015-06-16

  • Workaround on 55 for stty

### 1.7.3 / 2015-06-29

  • Add HighLine::Simulator tests (Bala Paranj (@bparanj) and Abinoam Marques Jr. (@abinoam), 142, PR 143)

### 1.7.2 / 2015-04-19

#### Bug fixes

  • Fix 138 (a regression of 131). PR 139.

### 1.7.1 / 2015-02-24

#### Enhancements

  • Add travis CI configuration (Eli Young (@elyscape), 130)
  • Add Rubinius to Build Matrix with Allowed Failure (Brandon Fish

(bjfish), 132)

  • Make some adjustments on tests (Abinoam Marques Jr., 133, 134)
  • Drop support for Ruby 1.8 (Abinoam Marques Jr., 134)

#### Bug fixes

  • Fix IO.console.winsize returning reversed column and line values (Fission Xuiptz (@fissionxuiptz)), 131)

### 1.7.0 / 2015-02-18

#### Bug fixes

  • Fix correct encoding of statements to output encoding (Dāvis (davispuh), 110)
  • Fix character echoing when echo is false and multibyte character is typed (Abinoam Marques Jr., 117 118)
  • Fix backspace support on Cyrillic (Abinoam Marques Jr., 115 118)
  • Fix returning wrong encoding when echo is false (Abinoam Marques Jr., 116 118)
  • Fix Question limit and realine incompatibilities (Abinoam Marques Jr. 113 120)
  • Fix/improve string coercion on say (Abinoam Marques Jr., 98 122)
  • Fix terminal_size returning nil in some terminals (Abinoam Marques Jr., 85 123)

#### Enhancements

  • Improve format_statement String coercion (Michael Bishop

(michaeljbishop), 104)

  • Update homepage url on gemspec (Rubyforge->GitHub) (Edward Anderson

(nilbus), 107)

  • Update COPYING file (Vít Ondruch (voxik), 109)
  • Improve multi-byte encoding support (Abinoam Marques Jr., 115 116 117 118)
  • Make :grey -> :gray and :light -> :bright aliases (Abinoam Marques Jr., 114 119)
  • Return the default object (as it is) when no answer given (Abinoam Marques Jr., 112 121)
  • Added test for Yaml serialization of HighLine::String (Abinoam Marques Jr., 69 124)
  • Make improvements on Changelog and Rakefile (Abinoam Marques Jr., 126 127 128)

### 1.6.21

  • Improved Windows integration (by Ronie Henrich).
  • Clarified menu choice error messages (by Keith Bennett).

### 1.6.20

  • Fixed a bug with FFI::NCurses integration (by agentdave).
  • Improved StringExtensions performance (by John Leach).
  • Various JRuby fixes (by presidentbeef).

### 1.6.19

  • Fixed `terminal_size()` with jline2 (by presidentbeef).

### 1.6.18

  • Fixed a long supported interface that was accidentally broken with a recent change (by Rubem Nakamura Carneiro).

### 1.6.17

  • Added encoding support to menus (by David Lyons).
  • Some minor fixes to SystemExtensions (by whiteleaf and presidentbeef).

### 1.6.16

  • Added the new indention feature (by davispuh).
  • Separated auto-completion from the answer type (by davispuh).
  • Improved JRuby support (by rsutphin).
  • General code clean up (by stomar).
  • Made HighLine#say() a little smarter with regard to color escapes (by Kenneth Murphy).

### 1.6.15

  • Added support for nil arguments in lists (by Eric Saxby).
  • Fixed HighLine‘s termios integration (by Jens Wille).

### 1.6.14

  • Added JRuby 1.7 support (by Mina Nagy).
  • Take into account color escape sequences when wrapping text (by Mark J. Titorenko).

### 1.6.13

  • Removed unneeded Shebang lines (by Scott Gonyea).
  • Protect the String passed to Question.new from modification (by michael).
  • Added a retype-to-verify setting (by michael).

### 1.6.12

  • Silenced warnings (by James McEwan).

### 1.6.11

  • Fixed a bad test. (Fix by Diego Elio Pettenò.)

### 1.6.10

  • Fixed a regression that prevented asking for String arguments (by Jeffery Sman.)
  • Fixed a testing incompatibility (by Hans de Graaff.)

### 1.6.9

  • The new list modes now properly ignore escapes when sizing.
  • Added a project gemspec file.
  • Fixed a bug that prevented the use of termios (by tomdz).
  • Switch to JLine to provide better echo support on JRuby (by tomdz).

### 1.6.8

  • Fix missing ERASE_CHAR reference (by Aaron Gifford).

### 1.6.7

  • Fixed bug introduced in 1.6.6 attempted fix (by Aaron Gifford).

### 1.6.6

  • Fixed old style references causing HighLine::String errors (by Aaron Gifford).

### 1.6.5

  • HighLine#list() now correctly handles empty lists (fix by Lachlan Dowding).
  • HighLine#list() now supports :uneven_columns_across and :uneven_columns_down modes.

### 1.6.4

  • Add introspection methods to color_scheme: definition, keys, to_hash.
  • Add tests for new methods.

### 1.6.3

  • Add color NONE.
  • Add RGB color capability.
  • Made ‘color’ available as a class or instance method of HighLine, for instance: HighLine.color("foo", :blue)) or highline_obj.color("foo", :blue) are now both possible and equivalent.
  • Add HighLine::String class with convenience methods: color (alias foreground), on (alias background), colors, and styles. See lib/string_extensions.rb.
  • Add (optional) ability to extend String with the same convenience methods from HighLine::String, using Highline.colorize_strings.

### 1.6.2

  • Correctly handle STDIN being closed before we receive any data (fix by mleinart).
  • Try if msvcrt, if we can‘t load crtdll on Windows (fix by pepijnve).
  • A fix for nil_on_handled not running the action (reported by Andrew Davey).

### 1.6.1

  • Fixed raw_no_echo_mode so that it uses stty -icanon rather than cbreak as cbreak does not appear to be the posixly correct argument. It fails on Solaris if cbreak is used.
  • Fixed an issue that kept Menu from showing the correct choices for disambiguation.
  • Removed a circular require that kept Ruby 1.9.2 from loading HighLine.
  • Fixed a bug that caused infinite looping when wrapping text without spaces.
  • Fixed it so that :auto paging accounts for the two lines it adds.
  • On JRuby, improved error message about ffi-ncurses. Before 1.5.3, HighLine was silently swallowing error messages when ffi-ncurses gem was installed without ncurses present on the system.
  • Reverted Aaron Simmons‘s patch to allow redirecting STDIN on Windows. This is the only way we could find to restore HighLine‘s character reading to working order.

### 1.5.2

  • Added support for using the ffi-ncurses gem which is supported in JRuby.
  • Added gem build instructions.

### 1.5.1

  • Fixed the long standing echo true bug. (reported by Lauri Tuominen)
  • Improved Windows API calls to support the redirection of STDIN. (patch by Aaron Simmons)
  • Updated gem specification to avoid a deprecated call.
  • Made a minor documentation clarification about character mode support.
  • Worked around some API changes in Ruby‘s standard library in Ruby 1.9. (patch by Jake Benilov)

### 1.5.0

  • Fixed a bug that would prevent Readline from showing all completions. (reported by Yaohan Chen)
  • Added the ability to pass a block to HighLine#agree(). (patch by Yaohan Chen)

### 1.4.0

  • Made the code grabbing terminal size a little more cross-platform by adding support for Solaris. (patch by Ronald Braswell and Coey Minear)

### 1.2.9

  • Additional work on the backspacing issue. (patch by Jeremy Hinegardner)
  • Fixed Readline prompt bug. (patch by Jeremy Hinegardner)

### 1.2.8

  • Fixed backspacing past the prompt and interrupting a prompt bugs. (patch by Jeremy Hinegardner)

### 1.2.7

  • Fixed the stty indent bug.
  • Fixed the echo backspace bug.
  • Added HighLine::track_eof=() setting to work are threaded eof?() calls.

### 1.2.6

Patch by Jeremy Hinegardner:

  • Added ColorScheme support.
  • Added HighLine::Question.overwrite mode.
  • Various documentation fixes.

### 1.2.5

  • Really fixed the bug I tried to fix in 1.2.4.

### 1.2.4

  • Fixed a crash causing bug when using menus, reported by Patrick Hof.

### 1.2.3

  • Treat Cygwin like a Posix OS, instead of a native Windows environment.

### 1.2.2

  • Minor documentation corrections.
  • Applied Thomas Werschleiln‘s patch to fix termio buffering on Solaris.
  • Applied Justin Bailey‘s patch to allow canceling paged output.
  • Fixed a documentation bug in the description of character case settings.
  • Added a notice about termios in HighLine::Question#echo.
  • Finally working around the infamous "fast typing" bug

### 1.2.1

  • Applied Justin Bailey‘s fix for the page_print() infinite loop bug.
  • Made a SystemExtensions module to expose OS level functionality other libraries may want to access.
  • Publicly exposed the get_character() method, per user requests.
  • Added terminal_size(), output_cols(), and output_rows() methods.
  • Added :auto setting for warp_at=() and page_at=().

### 1.2.0

  • Improved RubyForge and gem spec project descriptions.
  • Added basic examples to README.
  • Added a VERSION constant.
  • Added support for hidden menu commands.
  • Added Object.or_ask() when using highline/import.

### 1.0.4

  • Moved the HighLine project to Subversion.
  • HighLine‘s color escapes can now be disabled.
  • Fixed EOF bug introduced in the last release.
  • Updated HighLine web page.
  • Moved to a forked development/stable version numbering.

### 1.0.2

  • Removed old and broken help tests.
  • Fixed test case typo found by David A. Black.
  • Added ERb escapes processing to lists, for coloring list items. Color escapes do not add to list element size.
  • HighLine now throws EOFError when input is exhausted.

### 1.0.1

  • Minor bug fix: Moved help initialization to before response building, so help would show up in the default responses.

### 1.0.0

  • Fixed documentation typo pointed out by Gavin Kistner.
  • Added gather = … option to question for fetching entire Arrays or Hashes filled with answers. You can set gather to a count of answers to collect, a String or Regexp matching the end of input, or a Hash where each key can be used in a new question.
  • Added File support to HighLine.ask(). You can specify a directory and a glob pattern that combine into a list of file choices the user can select from. You can choose to receive the user‘s answer as an open filehandle or as a Pathname object.
  • Added Readline support for history and editing.
  • Added tab completion for menu and file selection selection (requires Readline).
  • Added an optional character limit for input.
  • Added a complete help system to HighLine‘s shell menu creation tools.

### 0.6.1

  • Removed termios dependancy in gem, to fix Windows’ install.

### 0.6.0

  • Implemented HighLine.choose() for menu handling.
    • Provided shortcut choose(item1, item2, …) for simple menus.
    • Allowed Ruby code to be attached to each menu item, to create a complete menu solution.
    • Provided for total customization of the menu layout.
    • Allowed for menu selection by index, name or both.
    • Added a shell mode to allow menu selection with additional details following the name.
  • Added a list() utility method that can be invoked just like color(). It can layout Arrays for you in any output in the modes :columns_across, :columns_down, :inline and :rows
  • Added support for echo = "*" style settings. User code can now choose the echo character this way.
  • Modified HighLine to user the "termios" library for character input, if available. Will return to old behavior (using "stty"), if "termios" cannot be loaded.
  • Improved "stty" state restoring code.
  • Fixed "stty" code to handle interrupt signals.
  • Improved the default auto-complete error message and exposed this message through the responses interface as :no_completion.

### 0.5.0

  • Implemented echo = false for HighLine::Question objects, primarily to make fetching passwords trivial.
  • Fixed an auto-complete bug that could cause a crash when the user gave an answer that didn‘t complete to any valid choice.
  • Implemented case for HighLine::Question objects to provide character case conversions on given answers. Can be set to :up, :down, or :capitalize.
  • Exposed @answer to the response system, to allow response that are aware of incorrect input.
  • Implemented confirm for HighLine::Question objects to allow for verification for sensitive user choices. If set to true, user will have to answer an "Are you sure? " question. Can also be set to the question to confirm with the user.

### 0.4.0

  • Added @wrap_at and @page_at settings and accessors to HighLine, to control text flow.
  • Implemented line wrapping with adjustable limit.
  • Implemented paged printing with adjustable limit.

### 0.3.0

  • Added support for installing with setup.rb.
  • All output is now treated as an ERb sequence, allowing Ruby code to be embedded in output strings.
  • Added support for ANSI color sequences in say(). (And everything else by extension.)
  • Added whitespace handling for answers. Can be set to :strip, :chomp, :collapse, :strip_and_collapse, :chomp_and_collapse, :remove, or :none.
  • Exposed question details to ERb completion through @question, to allow for intelligent responses.
  • Simplified HighLine internals using @question.
  • Added support for fetching single character input either with getc() or HighLine‘s own cross-platform terminal input routine.
  • Improved type conversion to handle user defined classes.

### 0.2.0

  • Added Unit Tests to cover an already fixed output bug in the future.
  • Added Rakefile and setup test action (default).
  • Renamed HighLine::Answer to HighLine::Question to better illustrate its role.
  • Renamed fetch_line() to get_response() to better define its goal.
  • Simplified explain_error in terms of the Question object.
  • Renamed accept?() to in_range?() to better define purpose.
  • Reworked valid?() into valid_answer?() to better fit Question object.
  • Reworked @member into @in, to make it easier to remember and switched implementation to include?().
  • Added range checks for @above and @below.
  • Fixed the bug causing ask() to swallow NoMethodErrors.
  • Rolled ask_on_error() into responses.
  • Redirected imports to Kernel from Object.
  • Added support for validate = lambda { … }.
  • Added default answer support.
  • Fixed bug that caused ask() to die with an empty question.
  • Added complete documentation.
  • Improve the implemetation of agree() to be the intended "yes" or "no" only question.
  • Added Rake tasks for documentation and packaging.
  • Moved project to RubyForge.

### 0.1.0

[Validate]