Changelog for vty-5.2.1

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 thanks trofi! 5.1.1 - merged 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: - - 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 - 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 <> for these features. - 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 - 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,, and - Attempts to robustly handle even terminals that don't support all display attributes. - I've tested the following terminals with success:,, 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" - - "Multi-byte characters are not displayed correctly on update" - - "Redraw does not handle rendering a line that extends beyond screen width characters" - - "The <|> and <-> combinators should be more forgiving of mismatched dimensions" - - "256-color support" -