5.4.0
  - Changed eventChannel of Graphics.Vty.Input from Chan to TChan. This enables clients to query if
    there are no pending events. The Graphics.Vty interface nextEvent is unchanged. Clients that use
    eventChannel directly will require updating.
    https://github.com/coreyoconnor/vty/issues/60
5.3.1
  - Reverted cabal file to depend on Cabal >= 1.18 instead of 1.20 due
    to possibly breaking this on reasonable GHC versions

5.3
  - Upgraded QuickCheck dependency to 2.7
  - The standard IO Config (standardIOConfig) was overriding any provided application config.
    In addition, the inputFd and outputFd could not be changed if mkVty was used.
    Fixed.
  - Correct handling of display attributes at end of line. The output attributes are set to default
    at the end of content for the line and at the start of a new line.  Previously the current
    attribute would extend to the next start of content. This was odd to reason about and was the
    cause of https://github.com/coreyoconnor/vty/issues/76
    IIRC Yi requires the old behavior to display the selection region correctly.
  - shutdown of the input thread is now performed using killThread and synchronization on an MVar.
    For correct handling of the terminal read vmin and vtime the read must be a blocking read on an
    OS thread. This places a threadWaitRead, which will be interrupted by the killThread, prior to
    the uninterruptable read. An alternative would be to re-import the read foreign call as
    interruptable.

5.2.11
  - deepseq bounds increased for tests.
  - Clean up warnings when compiling on 7.10
    - Thanks Eric Mertens
  - Avoid discarding input bytes after multi-byte encoded codepoint
    - Thanks Eric Mertens

5.2.10
  - "str" now returns EmptyImage for empty strings to match behavior of other string-like Image constructors (fixes #74)
    - Thanks Jonathan Daugherty

5.2.9
  - dependency version bumps
    - https://github.com/coreyoconnor/vty/pull/71
    - https://github.com/coreyoconnor/vty/pull/70
  - Correct/Simplify the example code
    - Thanks glguy
    - https://github.com/coreyoconnor/vty/pull/69

5.2.8
  - blaze-builder, lens, utf8-string version constraint bump
      - Thanks glguy
      - https://github.com/coreyoconnor/vty/pull/67
  - Do not differentiate based on TERM_PROGRAM
      - https://github.com/coreyoconnor/vty/issues/68

5.2.7
  - lens and deepseq constraint bump + misc
      - Thanks ethercrow
      - https://github.com/coreyoconnor/vty/pull/66

5.2.6
  - lens constraint bump
      - Thanks alexander-b!
      - https://github.com/coreyoconnor/vty/pull/64

5.2.5
  - lens and random version constraint bump.
      - Thanks RyanGlScott!
      - https://github.com/coreyoconnor/vty/pull/62

5.2.4
  - removed -fpic from cc-options. No longer required.
      - https://github.com/coreyoconnor/vty/issues/61
      - https://ghc.haskell.org/trac/ghc/ticket/9657
      - Thanks Fuuzetsu!

5.2.3
  - evaluate/compile the input parsing table once instead of each keystroke.
      - https://github.com/coreyoconnor/vty/pull/59
      - Thanks ethercrow!

5.2.2
  - When looking at input for an event, don't look too deep.
      - https://github.com/coreyoconnor/vty/pull/57
      - Thanks ethercrow!

5.2.1
  - Bump upper version bound for lens to 4.5. Thanks markus1189!

5.2.0
  - Config structure now specifies file descriptor to use. The default is stdInput and stdOutput
    file descriptors. Previously Vty used stdInput for input and the follow code for output:
      - hDuplicate stdout >>= handleToFd >>= (`hSetBuffering` NoBuffering)
      - the difference was required by Vty.Inline. Now, Vty.Inline uses the Config structure options
        to acheive the same effect.
  - removed: derivedVtime, derivedVmin, inputForCurrentTerminal, inputForNameAndIO,
    outputForCurrentTerminal, outputForNameAndIO
  - added: inputForConfig, outputForConfig
  - updates to vty-rogue from jtdaugherty. Thanks! 
  - the oldest version of GHC tested to support vty is 7.6.2.
  - the oldest version of GHC that vty compiles under is 7.4.2

5.1.4
  - merged https://github.com/coreyoconnor/vty/pull/51 thanks trofi!

5.1.1
  - merged https://github.com/coreyoconnor/vty/pull/48 thanks sjmielke!
  - jtdaugherty resolved a number of compiler warnings. Thanks!

5.1.0
  - vmin and vtime can be specified however the application requires. See Graphics.Vty.Config.
  - fixed the processing of input when vmin is set > 1.

5.0.0
  - The naming convention now matches:
    - http://www.haskell.org/haskellwiki/Programming_guidelines#Naming_Conventions
  - all projects using vty for input must be compiled with -threaded. Please notify vty author if
    this is not acceptable.
  - mkVtyEscDelay has been removed. Use "mkVty def". Which initialized vty with the default
    configuration.
  - input handling changes
    - KASCII is now KChar
    - KPN5 is now KCenter
    - tests exist.
    - Applications can add to the input tables by setting inputMap of the Config.
      See Graphics.Vty.Config
    - Users can define input table extensions that will apply to all vty applications.
      See Graphics.Vty.Config
    - terminal timing is now handled by selecting an appropriate VTIME. Previously this was
      implemented within Vty itself. This reduced complexity in vty but provides a different meta
      key behavior and implies a requirement on -threaded.
    - The time vty will wait to verify an ESC byte means a single ESC key is the
      singleEscPeriod of the Input Config structure.
  - removed the typeclass based terminal and display context interface in favor of a data
    structure of properties interface.
  - renamed the Terminal interface to Output
  - The default picture for an image now uses the "clear" background. This background fills
    background spans with spaces or just ends the line.
    - Previously the background defaulted to the space character. This causes issues copying
      text from a text editor. The text would end up with extra spaces at the end of the line.
  - Layer support
    - Each layer is an image.
    - The layers for a picture are a list of images.
    - The first image is the top-most layer. The images are ordered from top to bottom.
    - The transparent areas for a layer are the backgroundFill areas. backgroundFill is
      added to pad images when images of different sizes are joined.
    - If the background is clear there is no background layer.
    - If there is a background character then the bottom layer is the background layer.
    - emptyPicture is a Picture with no layers and no cursor
    - addToTop and addToBottom add a layer to the top and bottom of the given Picture.
  - compatibility improvements:
    - terminfo based terminals with no cursor support are silently accepted. The cursor
      visibility changes in the Picture will have no effect.
    - alternate (setf/setb) color maps supported. Though colors beyond the first 8 are just a
      guess.
    - added "rgbColor" for easy support of RGB specified colors.
    - Both applications and users can add to the mapping used to translate from input bytes to
      events.
  - Additional information about input and output process can be appended to a debug log
    - Set environment variable VTY_DEBUG_LOG to path of debug log
    - Or use "debugLog <path>" config directive
    - Or set 'debugLog' property of the Config provided to mkVty.
  - examples moved to vty-examples package. See test directory for cabal file.
    - vty-interactive-terminal-test
      - interactive test. Useful for building a bug report for vty's author.
      - test/interactive_terminal_test.hs
    - vty-event-echo
      - view a input event log for vty. Example of interacting with user.
      - test/EventEcho.hs
    - vty-rogue
      - The start of a rogue-like game. Example of layers and image build operations.
      - test/Rogue.hs
    - vty-benchmark
      - benchmarks vty. A series of tests that push random pictures to the terminal. The
        random pictures are generated using QuickCheck. The same generators used in the
        automated tests.
      - test/benchmark.hs

4.7.0.0
    - API changes:
       - Added Graphics.Vty.Image.crop: Ensure an image is no larger than the specified size.
       - Added Graphics.Vty.Image.pad: Ensure an image is no smaller than the specified size.
       - Added Graphics.Vty.Image.translate: Offset an image.
    - Thanks Ben Boeckel <MathStuf@gmail.com> for these features.

4.3.0.0

4.2.1.0
    - API changes:
        - Attr record accessor fore_color changed to attr_fore_color
        - Attr record accessor back_color changed to attr_back_color
        - Attr record accessor style changed to attr_style
        - Added an "inline" display attribute changing DSL:
            - put_attr_change applies a display attribute change immediately to a terminal
            - For instance, can be used to change the display attrbiutes of text output via putStrLn
              and putStr. EX: "put_attr_change $ back_color red" will set the
              background color to red. 
            - Changes do not apply to a Picture output via output_picture. 
            - See Graphics.Vty.Inline
        - Moved all IO actions into any monad an instance of MonadIO

4.0.0.1
    - binding for mk_wcswidth was incorrect. Most platforms just magically worked due to
      coincidence.

4.0.0
    - API changes:
        - "getSize" has been removed. Use "terminal vty >>= display_bounds" where "vty" is an
          instance of the Vty data structure.
        - added a "terminal" field to the Vty data structure. Accesses the TerminalHandle associated
          with the Vty instance.
        - Graphics.Vty.Types has undergone a number of changes. Summary:
          - Partitioned into Graphics.Vty.Attributes for display attributes. Graphics.Vty.Image for
            image combinators. Graphics.Vty.Picture for final picture construction.
        - Graphics.Vty.Attributes:
          - "setFG" and "setBG" are now "with_fore_color" and "with_back_color"
          - All other "set.." equations similarly replaced.
          - "attr" is now "def_attr", short for "default display attributes" Also added a
            "current_attr" for "currently applied display attributes"
        - Graphics.Vty.Image:
          - "horzcat" is now "horiz_cat"
          - "vertcat" is now "vert_cat"
          - "renderBS" is now "utf8_bytestring"
          - "renderChar" is now "char"
          - "renderFill" is now "char_fill"
          - added a "utf8_string" and "string" (AKA "iso_10464_string") for UTF-8 encoded Strings
            and ISO-10464 encoded Strings. String literals in GHC have an ISO-10464 runtime
            representation.
        - Graphics.Vty.Picture:
          - exports Graphics.Vty.Image
          - "pic" is now "pic_for_image"
          - added API for setting background fill pattern.
    - Completely rewritten output backend.
        - Efficient, scanline style output span generator. Has not been fully optimized, but good
          enough.
        - The details required to display the desired picture on a terminal are well encapsulated.
        - Terminfo based display terminal implementation. With specialized derivitives for xterm,
          Terminal.app, and iTerm.app. 
            - Attempts to robustly handle even terminals that don't support all display attributes.
            - I've tested the following terminals with success: iTerm.app, Terminal.app, xterm,
              rxvt, mlterm, Eterm, gnome-terminal, konsole, screen, linux vty. Hopefully you will be
              as successfull. 
        - Improved unicode support. Double wide characters will display as expected.
    - 256 color support. See Graphics.Vty.Attributes.Color240. The actual output color is adjusted
      according to the number of colors the terminal supports.
    - The Graphics.Vty.Image combinators no longer require matching dimensions to arguments.
      Unspecified areas are filled in with a user-customizable background pattern. See
      Graphics.Vty.Picture.
    - output images are always cropped to display size.
    - Significant code coverage by QuickCheck tests. An interactive test for those final properties
      that couldn't be automatically verified.

    issues resolved:
        - "gnome terminal displays non-basic attributes as strikethrough"
            - http://trac.haskell.org/vty/ticket/14
        - "Multi-byte characters are not displayed correctly on update"
            - http://trac.haskell.org/vty/ticket/10
        - "Redraw does not handle rendering a line that extends beyond screen width characters" 
            - http://trac.haskell.org/vty/ticket/13
        - "The <|> and <-> combinators should be more forgiving of mismatched dimensions" 
            - http://trac.haskell.org/vty/ticket/9
        - "256-color support" 
            - http://trac.haskell.org/vty/ticket/19

