File: CHANGELOG

# CHANGELOG

Path: | CHANGELOG
Last Update: | Mon Aug 09 19:34:42 -0600 2010

# Change Log

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

## 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

- Initial release as the solution to Ruby Quiz #29.

[Validate]