Avg Release Cycle
- ⬆️ Bump upper version bound for lens to 4.5. Thanks markus1189!
- 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 >>= (
- the difference was required by Vty.Inline. Now, Vty.Inline uses the Config structure options to acheive the same effect.
- hDuplicate stdout >>= handleToFd >>= (
- ✂ 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
- 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:
- vmin and vtime can be specified however the application requires. See Graphics.Vty.Config.
- 🛠 fixed the processing of input when vmin is set > 1.
- 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
- 0️⃣ The default picture for an image now uses the "clear" background.
This background fills background spans with spaces or just ends the
- 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 " config directive
- Or set 'debugLog' property of the Config provided to mkVty.
- 👀 examples moved to vty-examples package. See test directory for cabal
- interactive test. Useful for building a bug report for vty's author.
- view a input event log for vty. Example of interacting with user.
- The start of a rogue-like game. Example of layers and image build operations.
- 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.
- ➕ 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 [email protected] for these features.
- 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