@@ -8,8 +8,9 @@
8 possible to use 'str ""' as a non-empty image with height 1.
8 possible to use 'str ""' as a non-empty image with height 1.
11− - Reverted changes in 5.12 due to disagreements between terminal emulators
11+ - Reverted changes in 5.12 due to disagreements between terminal
12− and utf8proc; for more details, please see the ticket discussion at
12+ emulators and utf8proc; for more details, please see the ticket
13 https://github.com/coreyoconnor/vty/issues/115
14 https://github.com/coreyoconnor/vty/issues/115
@@ -23,8 +24,8 @@
23 - Fix mouse event offsets in mouse-up events
24 - Fix mouse event offsets in mouse-up events
26− - Mouse events were modified so that the upper-left corner of the window is
27+ - Mouse events were modified so that the upper-left corner of the
27− (0,0) rather than (1,1).
28+ window is (0,0) rather than (1,1).
30 - Add Generic instance for Image
31 - Add Generic instance for Image
@@ -62,8 +63,9 @@
62 (fixes #89)
63 (fixes #89)
65− - Added new Output methods supportsBell and ringTerminalBell to find out
66+ - Added new Output methods supportsBell and ringTerminalBell to find
66− whether the output device has an audio bell and to ring it (see #102)
67+ out whether the output device has an audio bell and to ring it (see
69 - Fixed "refresh" to work as advertised (see #104)
71 - Fixed "refresh" to work as advertised (see #104)
@@ -74,15 +76,17 @@
74 how best to decode it
76 how best to decode it
77− - ModeDemo: added an explicit Control.Applicative import for older GHCs
79+ - ModeDemo: added an explicit Control.Applicative import for older
80 - Mouse and paste modes are now off by default.
83 - Mouse and paste modes are now off by default.
81− - The Config type got new fields: mouseMode and bracketedPasteMode. These
84+ - The Config type got new fields: mouseMode and bracketedPasteMode.
82− determine whether these modes are enabled initially (for terminals
85+ These determine whether these modes are enabled initially (for
83− that support them).
86+ terminals that support them).
84− - Added a Mode type for modal terminal features (mouse events, bracketed
87+ - Added a Mode type for modal terminal features (mouse events,
85− paste mode) that is used with new Output interface functions:
88+ bracketed paste mode) that is used with new Output interface
86 * supportsMode :: Mode -> Bool tells whether the device supports a
90 * supportsMode :: Mode -> Bool tells whether the device supports a
88 * setMode :: Mode -> Bool -> IO () turns a mode on or off
92 * setMode :: Mode -> Bool -> IO () turns a mode on or off
@@ -101,14 +105,16 @@
101 XtermColor driver rather than just TerminfoBased
105 XtermColor driver rather than just TerminfoBased
104− - Replaced lens dependency with microlens, microlens-mtl, microlens-th dependencies. Issue #90
108+ - Replaced lens dependency with microlens, microlens-mtl, microlens-th
109+ dependencies. Issue #90
105 - Thanks Jonathan Daugherty
110 - Thanks Jonathan Daugherty
106 - Cabal corrections.
111 - Cabal corrections.
107 - Thanks Lennart Spitzner
112 - Thanks Lennart Spitzner
110− - Changed eventChannel of Graphics.Vty.Input from Chan to TChan. This enables clients to query if
115+ - Changed eventChannel of Graphics.Vty.Input from Chan to TChan.
116+ This enables clients to query if there are no pending events. The
111− there are no pending events. The Graphics.Vty interface nextEvent is unchanged. Clients that use
117+ Graphics.Vty interface nextEvent is unchanged. Clients that use
112 eventChannel directly will require updating.
118 eventChannel directly will require updating.
113 https://github.com/coreyoconnor/vty/issues/60
119 https://github.com/coreyoconnor/vty/issues/60
@@ -117,19 +123,22 @@
119 - Upgraded QuickCheck dependency to 2.7
125 - Upgraded QuickCheck dependency to 2.7
120− - The standard IO Config (standardIOConfig) was overriding any provided application config.
126+ - The standard IO Config (standardIOConfig) was overriding any
127+ provided application config. In addition, the inputFd and outputFd
121− In addition, the inputFd and outputFd could not be changed if mkVty was used.
128+ could not be changed if mkVty was used. Fixed.
123− - Correct handling of display attributes at end of line. The output attributes are set to default
129+ - Correct handling of display attributes at end of line. The output
130+ attributes are set to default at the end of content for the line and
124− at the end of content for the line and at the start of a new line. Previously the current
131+ at the start of a new line. Previously the current attribute would
125− attribute would extend to the next start of content. This was odd to reason about and was the
132+ extend to the next start of content. This was odd to reason about
126− cause of https://github.com/coreyoconnor/vty/issues/76
133+ and was the cause of https://github.com/coreyoconnor/vty/issues/76
127− IIRC Yi requires the old behavior to display the selection region correctly.
134+ IIRC Yi requires the old behavior to display the selection region
128− - shutdown of the input thread is now performed using killThread and synchronization on an MVar.
136+ - shutdown of the input thread is now performed using killThread and
137+ synchronization on an MVar. For correct handling of the terminal
129− For correct handling of the terminal read vmin and vtime the read must be a blocking read on an
138+ read vmin and vtime the read must be a blocking read on an OS
130− OS thread. This places a threadWaitRead, which will be interrupted by the killThread, prior to
139+ thread. This places a threadWaitRead, which will be interrupted by
140+ the killThread, prior to the uninterruptable read. An alternative
131− the uninterruptable read. An alternative would be to re-import the read foreign call as
141+ would be to re-import the read foreign call as interruptable.
135 - deepseq bounds increased for tests.
144 - deepseq bounds increased for tests.
@@ -139,7 +148,8 @@
139 - Thanks Eric Mertens
148 - Thanks Eric Mertens
142− - "str" now returns EmptyImage for empty strings to match behavior of other string-like Image constructors (fixes #74)
151+ - "str" now returns EmptyImage for empty strings to match behavior of
152+ other string-like Image constructors (fixes #74)
143 - Thanks Jonathan Daugherty
153 - Thanks Jonathan Daugherty
@@ -179,7 +189,8 @@
179 - Thanks Fuuzetsu!
189 - Thanks Fuuzetsu!
182− - evaluate/compile the input parsing table once instead of each keystroke.
192+ - evaluate/compile the input parsing table once instead of each
183 - https://github.com/coreyoconnor/vty/pull/59
194 - https://github.com/coreyoconnor/vty/pull/59
184 - Thanks ethercrow!
195 - Thanks ethercrow!
@@ -192,13 +203,15 @@
192 - Bump upper version bound for lens to 4.5. Thanks markus1189!
203 - Bump upper version bound for lens to 4.5. Thanks markus1189!
195− - Config structure now specifies file descriptor to use. The default is stdInput and stdOutput
206+ - Config structure now specifies file descriptor to use. The default
207+ is stdInput and stdOutput file descriptors. Previously Vty used
196− file descriptors. Previously Vty used stdInput for input and the follow code for output:
208+ stdInput for input and the follow code for output:
197− - hDuplicate stdout >>= handleToFd >>= (`hSetBuffering` NoBuffering)
209+ - hDuplicate stdout >>= handleToFd >>= (`hSetBuffering`
198− - the difference was required by Vty.Inline. Now, Vty.Inline uses the Config structure options
211+ - the difference was required by Vty.Inline. Now, Vty.Inline uses
199− to acheive the same effect.
212+ the Config structure options to acheive the same effect.
200− - removed: derivedVtime, derivedVmin, inputForCurrentTerminal, inputForNameAndIO,
213+ - removed: derivedVtime, derivedVmin, inputForCurrentTerminal,
201− outputForCurrentTerminal, outputForNameAndIO
214+ inputForNameAndIO, outputForCurrentTerminal, outputForNameAndIO
202 - added: inputForConfig, outputForConfig
215 - added: inputForConfig, outputForConfig
203 - updates to vty-rogue from jtdaugherty. Thanks!
216 - updates to vty-rogue from jtdaugherty. Thanks!
204 - the oldest version of GHC tested to support vty is 7.6.2.
217 - the oldest version of GHC tested to support vty is 7.6.2.
@@ -212,156 +225,184 @@
212 - jtdaugherty resolved a number of compiler warnings. Thanks!
225 - jtdaugherty resolved a number of compiler warnings. Thanks!
215− - vmin and vtime can be specified however the application requires. See Graphics.Vty.Config.
228+ - vmin and vtime can be specified however the application requires.
229+ See Graphics.Vty.Config.
216 - fixed the processing of input when vmin is set > 1.
230 - fixed the processing of input when vmin is set > 1.
219 - The naming convention now matches:
233 - The naming convention now matches:
220 - http://www.haskell.org/haskellwiki/Programming_guidelines#Naming_Conventions
234 - http://www.haskell.org/haskellwiki/Programming_guidelines#Naming_Conventions
221− - all projects using vty for input must be compiled with -threaded. Please notify vty author if
235+ - all projects using vty for input must be compiled with -threaded.
222− this is not acceptable.
236+ Please notify vty author if this is not acceptable.
223− - mkVtyEscDelay has been removed. Use "mkVty def". Which initialized vty with the default
237+ - mkVtyEscDelay has been removed. Use "mkVty def". Which initialized
224− configuration.
238+ vty with the default configuration.
225 - input handling changes
239 - input handling changes
226 - KASCII is now KChar
240 - KASCII is now KChar
227 - KPN5 is now KCenter
241 - KPN5 is now KCenter
228 - tests exist.
242 - tests exist.
229− - Applications can add to the input tables by setting inputMap of the Config.
243+ - Applications can add to the input tables by setting inputMap of
230− See Graphics.Vty.Config
244+ the Config. See Graphics.Vty.Config
231− - Users can define input table extensions that will apply to all vty applications.
245+ - Users can define input table extensions that will apply to all vty
232− See Graphics.Vty.Config
246+ applications. See Graphics.Vty.Config
233− - terminal timing is now handled by selecting an appropriate VTIME. Previously this was
247+ - terminal timing is now handled by selecting an appropriate VTIME.
248+ Previously this was implemented within Vty itself. This reduced
234− implemented within Vty itself. This reduced complexity in vty but provides a different meta
249+ complexity in vty but provides a different meta key behavior and
235− key behavior and implies a requirement on -threaded.
250+ implies a requirement on -threaded.
236− - The time vty will wait to verify an ESC byte means a single ESC key is the
251+ - The time vty will wait to verify an ESC byte means a single ESC
237− singleEscPeriod of the Input Config structure.
252+ key is the singleEscPeriod of the Input Config structure.
238− - removed the typeclass based terminal and display context interface in favor of a data
253+ - removed the typeclass based terminal and display context interface
239− structure of properties interface.
254+ in favor of a data structure of properties interface.
240 - renamed the Terminal interface to Output
255 - renamed the Terminal interface to Output
241− - The default picture for an image now uses the "clear" background. This background fills
256+ - The default picture for an image now uses the "clear" background.
242− background spans with spaces or just ends the line.
257+ This background fills background spans with spaces or just ends the
243− - Previously the background defaulted to the space character. This causes issues copying
259+ - Previously the background defaulted to the space character. This
260+ causes issues copying text from a text editor. The text would end
244− text from a text editor. The text would end up with extra spaces at the end of the line.
261+ up with extra spaces at the end of the line.
245 - Layer support
262 - Layer support
246 - Each layer is an image.
263 - Each layer is an image.
247 - The layers for a picture are a list of images.
264 - The layers for a picture are a list of images.
248− - The first image is the top-most layer. The images are ordered from top to bottom.
265+ - The first image is the top-most layer. The images are ordered from
249− - The transparent areas for a layer are the backgroundFill areas. backgroundFill is
267+ - The transparent areas for a layer are the backgroundFill areas.
250− added to pad images when images of different sizes are joined.
268+ backgroundFill is added to pad images when images of different
251 - If the background is clear there is no background layer.
270 - If the background is clear there is no background layer.
252− - If there is a background character then the bottom layer is the background layer.
271+ - If there is a background character then the bottom layer is the
253 - emptyPicture is a Picture with no layers and no cursor
273 - emptyPicture is a Picture with no layers and no cursor
254− - addToTop and addToBottom add a layer to the top and bottom of the given Picture.
274+ - addToTop and addToBottom add a layer to the top and bottom of the
255 - compatibility improvements:
276 - compatibility improvements:
256− - terminfo based terminals with no cursor support are silently accepted. The cursor
277+ - terminfo based terminals with no cursor support are silently
257− visibility changes in the Picture will have no effect.
278+ accepted. The cursor visibility changes in the Picture will have
258− - alternate (setf/setb) color maps supported. Though colors beyond the first 8 are just a
280+ - alternate (setf/setb) color maps supported. Though colors beyond
259− guess.
281+ the first 8 are just a guess.
260 - added "rgbColor" for easy support of RGB specified colors.
282 - added "rgbColor" for easy support of RGB specified colors.
261− - Both applications and users can add to the mapping used to translate from input bytes to
283+ - Both applications and users can add to the mapping used to
262− events.
284+ translate from input bytes to events.
263− - Additional information about input and output process can be appended to a debug log
285+ - Additional information about input and output process can be
286+ appended to a debug log
264 - Set environment variable VTY_DEBUG_LOG to path of debug log
287 - Set environment variable VTY_DEBUG_LOG to path of debug log
265 - Or use "debugLog <path>" config directive
288 - Or use "debugLog <path>" config directive
266 - Or set 'debugLog' property of the Config provided to mkVty.
289 - Or set 'debugLog' property of the Config provided to mkVty.
267− - examples moved to vty-examples package. See test directory for cabal file.
290+ - examples moved to vty-examples package. See test directory for cabal
268 - vty-interactive-terminal-test
292 - vty-interactive-terminal-test
269− - interactive test. Useful for building a bug report for vty's author.
293+ - interactive test. Useful for building a bug report for vty's
270 - test/interactive_terminal_test.hs
295 - test/interactive_terminal_test.hs
271 - vty-event-echo
296 - vty-event-echo
272− - view a input event log for vty. Example of interacting with user.
297+ - view a input event log for vty. Example of interacting with
273 - test/EventEcho.hs
299 - test/EventEcho.hs
274 - vty-rogue
300 - vty-rogue
275− - The start of a rogue-like game. Example of layers and image build operations.
301+ - The start of a rogue-like game. Example of layers and image
276 - test/Rogue.hs
303 - test/Rogue.hs
277 - vty-benchmark
304 - vty-benchmark
278− - benchmarks vty. A series of tests that push random pictures to the terminal. The
305+ - benchmarks vty. A series of tests that push random pictures to
306+ the terminal. The random pictures are generated using
279− random pictures are generated using QuickCheck. The same generators used in the
307+ QuickCheck. The same generators used in the automated tests.
281 - test/benchmark.hs
308 - test/benchmark.hs
284− - API changes:
311+ - API changes:
285− - Added Graphics.Vty.Image.crop: Ensure an image is no larger than the specified size.
312+ - Added Graphics.Vty.Image.crop: Ensure an image is no larger
313+ than the specified size.
286− - Added Graphics.Vty.Image.pad: Ensure an image is no smaller than the specified size.
314+ - Added Graphics.Vty.Image.pad: Ensure an image is no smaller
315+ than the specified size.
287− - Added Graphics.Vty.Image.translate: Offset an image.
316+ - Added Graphics.Vty.Image.translate: Offset an image.
288− - Thanks Ben Boeckel <MathStuf@gmail.com> for these features.
317+ - Thanks Ben Boeckel <MathStuf@gmail.com> for these features.
293− - API changes:
322+ - API changes:
294− - Attr record accessor fore_color changed to attr_fore_color
323+ - Attr record accessor fore_color changed to attr_fore_color
295− - Attr record accessor back_color changed to attr_back_color
324+ - Attr record accessor back_color changed to attr_back_color
296− - Attr record accessor style changed to attr_style
325+ - Attr record accessor style changed to attr_style
297− - Added an "inline" display attribute changing DSL:
326+ - Added an "inline" display attribute changing DSL:
298− - put_attr_change applies a display attribute change immediately to a terminal
327+ - put_attr_change applies a display attribute change
328+ immediately to a terminal
299− - For instance, can be used to change the display attrbiutes of text output via putStrLn
329+ - For instance, can be used to change the display attrbiutes
330+ of text output via putStrLn and putStr. EX:
300− and putStr. EX: "put_attr_change $ back_color red" will set the
331+ "put_attr_change $ back_color red" will set the background
301− background color to red.
332+ color to red.
302− - Changes do not apply to a Picture output via output_picture.
333+ - Changes do not apply to a Picture output via output_picture.
303− - See Graphics.Vty.Inline
334+ - See Graphics.Vty.Inline
304− - Moved all IO actions into any monad an instance of MonadIO
335+ - Moved all IO actions into any monad an instance of MonadIO
307− - binding for mk_wcswidth was incorrect. Most platforms just magically worked due to
338+ - binding for mk_wcswidth was incorrect. Most platforms just
308− coincidence.
339+ magically worked due to coincidence.
311− - API changes:
342+ - API changes:
312− - "getSize" has been removed. Use "terminal vty >>= display_bounds" where "vty" is an
343+ - "getSize" has been removed. Use "terminal vty >>= display_bounds"
313− instance of the Vty data structure.
344+ where "vty" is an instance of the Vty data structure.
314− - added a "terminal" field to the Vty data structure. Accesses the TerminalHandle associated
345+ - added a "terminal" field to the Vty data structure. Accesses the
315− with the Vty instance.
346+ TerminalHandle associated with the Vty instance.
316− - Graphics.Vty.Types has undergone a number of changes. Summary:
347+ - Graphics.Vty.Types has undergone a number of changes. Summary:
317− - Partitioned into Graphics.Vty.Attributes for display attributes. Graphics.Vty.Image for
348+ - Partitioned into Graphics.Vty.Attributes for display attributes.
349+ Graphics.Vty.Image for image combinators. Graphics.Vty.Picture
318− image combinators. Graphics.Vty.Picture for final picture construction.
350+ for final picture construction.
319− - Graphics.Vty.Attributes:
351+ - Graphics.Vty.Attributes:
320− - "setFG" and "setBG" are now "with_fore_color" and "with_back_color"
352+ - "setFG" and "setBG" are now "with_fore_color" and
321− - All other "set.." equations similarly replaced.
354+ - All other "set.." equations similarly replaced.
322− - "attr" is now "def_attr", short for "default display attributes" Also added a
355+ - "attr" is now "def_attr", short for "default display attributes"
323− "current_attr" for "currently applied display attributes"
356+ Also added a "current_attr" for "currently applied display
324− - Graphics.Vty.Image:
358+ - Graphics.Vty.Image:
325− - "horzcat" is now "horiz_cat"
359+ - "horzcat" is now "horiz_cat"
326− - "vertcat" is now "vert_cat"
360+ - "vertcat" is now "vert_cat"
327− - "renderBS" is now "utf8_bytestring"
361+ - "renderBS" is now "utf8_bytestring"
328− - "renderChar" is now "char"
362+ - "renderChar" is now "char"
329− - "renderFill" is now "char_fill"
363+ - "renderFill" is now "char_fill"
330− - added a "utf8_string" and "string" (AKA "iso_10464_string") for UTF-8 encoded Strings
364+ - added a "utf8_string" and "string" (AKA "iso_10464_string") for
365+ UTF-8 encoded Strings and ISO-10464 encoded Strings. String
331− and ISO-10464 encoded Strings. String literals in GHC have an ISO-10464 runtime
366+ literals in GHC have an ISO-10464 runtime representation.
333− - Graphics.Vty.Picture:
367+ - Graphics.Vty.Picture:
334− - exports Graphics.Vty.Image
368+ - exports Graphics.Vty.Image
335− - "pic" is now "pic_for_image"
369+ - "pic" is now "pic_for_image"
336− - added API for setting background fill pattern.
370+ - added API for setting background fill pattern.
337− - Completely rewritten output backend.
371+ - Completely rewritten output backend.
338− - Efficient, scanline style output span generator. Has not been fully optimized, but good
372+ - Efficient, scanline style output span generator. Has not been
339− enough.
373+ fully optimized, but good enough.
340− - The details required to display the desired picture on a terminal are well encapsulated.
374+ - The details required to display the desired picture on a
375+ terminal are well encapsulated.
341− - Terminfo based display terminal implementation. With specialized derivitives for xterm,
376+ - Terminfo based display terminal implementation. With specialized
342− Terminal.app, and iTerm.app.
377+ derivitives for xterm, Terminal.app, and iTerm.app.
343− - Attempts to robustly handle even terminals that don't support all display attributes.
378+ - Attempts to robustly handle even terminals that don't
379+ support all display attributes.
344− - I've tested the following terminals with success: iTerm.app, Terminal.app, xterm,
380+ - I've tested the following terminals with success: iTerm.app,
381+ Terminal.app, xterm, rxvt, mlterm, Eterm, gnome-terminal,
345− rxvt, mlterm, Eterm, gnome-terminal, konsole, screen, linux vty. Hopefully you will be
382+ konsole, screen, linux vty. Hopefully you will be as
346− as successfull.
383+ successfull.
347− - Improved unicode support. Double wide characters will display as expected.
384+ - Improved unicode support. Double wide characters will display as
348− - 256 color support. See Graphics.Vty.Attributes.Color240. The actual output color is adjusted
386+ - 256 color support. See Graphics.Vty.Attributes.Color240. The actual
349− according to the number of colors the terminal supports.
387+ output color is adjusted according to the number of colors the
350− - The Graphics.Vty.Image combinators no longer require matching dimensions to arguments.
389+ - The Graphics.Vty.Image combinators no longer require matching
390+ dimensions to arguments. Unspecified areas are filled in with a
351− Unspecified areas are filled in with a user-customizable background pattern. See
391+ user-customizable background pattern. See Graphics.Vty.Picture.
352− Graphics.Vty.Picture.
353− - output images are always cropped to display size.
392+ - output images are always cropped to display size.
354− - Significant code coverage by QuickCheck tests. An interactive test for those final properties
393+ - Significant code coverage by QuickCheck tests. An interactive test
355− that couldn't be automatically verified.
394+ for those final properties that couldn't be automatically verified.
357− issues resolved:
396+Issues resolved:
358− - "gnome terminal displays non-basic attributes as strikethrough"
397+ - "gnome terminal displays non-basic attributes as strikethrough"
359− - http://trac.haskell.org/vty/ticket/14
398+ - http://trac.haskell.org/vty/ticket/14
360− - "Multi-byte characters are not displayed correctly on update"
399+ - "Multi-byte characters are not displayed correctly on update"
361− - http://trac.haskell.org/vty/ticket/10
400+ - http://trac.haskell.org/vty/ticket/10
362− - "Redraw does not handle rendering a line that extends beyond screen width characters"
401+ - "Redraw does not handle rendering a line that extends beyond screen
363− - http://trac.haskell.org/vty/ticket/13
403+ - http://trac.haskell.org/vty/ticket/13
364− - "The <|> and <-> combinators should be more forgiving of mismatched dimensions"
404+ - "The <|> and <-> combinators should be more forgiving of mismatched
365− - http://trac.haskell.org/vty/ticket/9
406+ - http://trac.haskell.org/vty/ticket/9
366− - "256-color support"
407+ - "256-color support"
367− - http://trac.haskell.org/vty/ticket/19
408+ - http://trac.haskell.org/vty/ticket/19