diff --git a/AUTHORS b/AUTHORS index d3f98ef..040ceb5 100644 --- a/AUTHORS +++ b/AUTHORS @@ -19,4 +19,4 @@ library: * Yoshikuni Jujo * Dmitry Ivanov -Plus others.. Check the git log and CHANGELOG for a full list. +Plus others.. Check the git log and CHANGELOG.md for a full list. diff --git a/CHANGELOG b/CHANGELOG.md similarity index 55% rename from CHANGELOG rename to CHANGELOG.md index 8efd06c..56785eb 100644 --- a/CHANGELOG +++ b/CHANGELOG.md @@ -8,8 +8,9 @@ possible to use 'str ""' as a non-empty image with height 1. 5.13 - - Reverted changes in 5.12 due to disagreements between terminal emulators - and utf8proc; for more details, please see the ticket discussion at + - Reverted changes in 5.12 due to disagreements between terminal + emulators and utf8proc; for more details, please see the ticket + discussion at https://github.com/coreyoconnor/vty/issues/115 5.12 @@ -23,8 +24,8 @@ - Fix mouse event offsets in mouse-up events 5.11.2 - - Mouse events were modified so that the upper-left corner of the window is - (0,0) rather than (1,1). + - Mouse events were modified so that the upper-left corner of the + window is (0,0) rather than (1,1). 5.11.1 - Add Generic instance for Image @@ -62,8 +63,9 @@ (fixes #89) 5.9 - - Added new Output methods supportsBell and ringTerminalBell to find out - whether the output device has an audio bell and to ring it (see #102) + - Added new Output methods supportsBell and ringTerminalBell to find + out whether the output device has an audio bell and to ring it (see + #102) 5.8.1 - Fixed "refresh" to work as advertised (see #104) @@ -74,15 +76,17 @@ how best to decode it 5.7.1 - - ModeDemo: added an explicit Control.Applicative import for older GHCs + - ModeDemo: added an explicit Control.Applicative import for older + GHCs 5.7 - Mouse and paste modes are now off by default. - - The Config type got new fields: mouseMode and bracketedPasteMode. These - determine whether these modes are enabled initially (for terminals - that support them). - - Added a Mode type for modal terminal features (mouse events, bracketed - paste mode) that is used with new Output interface functions: + - The Config type got new fields: mouseMode and bracketedPasteMode. + These determine whether these modes are enabled initially (for + terminals that support them). + - Added a Mode type for modal terminal features (mouse events, + bracketed paste mode) that is used with new Output interface + functions: * supportsMode :: Mode -> Bool tells whether the device supports a mode * setMode :: Mode -> Bool -> IO () turns a mode on or off @@ -101,14 +105,16 @@ XtermColor driver rather than just TerminfoBased 5.5.0 - - Replaced lens dependency with microlens, microlens-mtl, microlens-th dependencies. Issue #90 + - Replaced lens dependency with microlens, microlens-mtl, microlens-th + dependencies. Issue #90 - Thanks Jonathan Daugherty - Cabal corrections. - Thanks Lennart Spitzner 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 + - 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 @@ -117,19 +123,22 @@ 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. + - 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. @@ -139,7 +148,8 @@ - Thanks Eric Mertens 5.2.10 - - "str" now returns EmptyImage for empty strings to match behavior of other string-like Image constructors (fixes #74) + - "str" now returns EmptyImage for empty strings to match behavior of + other string-like Image constructors (fixes #74) - Thanks Jonathan Daugherty 5.2.9 @@ -179,7 +189,8 @@ - Thanks Fuuzetsu! 5.2.3 - - evaluate/compile the input parsing table once instead of each keystroke. + - evaluate/compile the input parsing table once instead of each + keystroke. - https://github.com/coreyoconnor/vty/pull/59 - Thanks ethercrow! @@ -192,13 +203,15 @@ - 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 + - 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. @@ -212,156 +225,184 @@ - 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. + - 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. + - 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. + - 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. + - 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. + - 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. + - 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. + - 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. + - 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 + - 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 " config directive - Or set 'debugLog' property of the Config provided to mkVty. - - examples moved to vty-examples package. See test directory for cabal file. + - 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. + - 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. + - 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. + - 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. + - 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 for these features. + - 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. 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 + - 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. + - 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. + - 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 +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 diff --git a/vty.cabal b/vty.cabal index c582819..f6b6b6a 100644 --- a/vty.cabal +++ b/vty.cabal @@ -29,7 +29,7 @@ cabal-version: >= 1.18 build-type: Simple data-files: README.md, AUTHORS, - CHANGELOG, + CHANGELOG.md, LICENSE tested-with: GHC >= 7.6.2