Avg Release Cycle
- Replaced 'wcwidth' with a call to the utf8proc library's character width function, which is much more up to date (by several Unicode versions) and returns the right width for a much larger set of characters.
- ➕ Added a bundled version of the utf8proc C library.
- 🛠 Fix mouse event offsets in mouse-up events
- Mouse events were modified so that the upper-left corner of the window is (0,0) rather than (1,1).
- ➕ Add Generic instance for Image
- 🛠 nextEvent: stop trying to refresh on a resize event (fixes segfault on refresh with normal cursor positioning mode)
- ✂ Remove redundant clause from clipForCharWidth (thanks Eric Mertens)
- ⚡️ Update maintainer
- 👻 Vty now raises a VtyConfigurationError exception when the TERM evironment variable is missing (thanks Eric Mertens)
- Graphics.Vty.Config got an explicit export list to avoid accidentally exporting internal types (thanks Eric Mertens)
- ➕ Add absolute cursor positioning mode AbsoluteCursor to Cursor. This mode provides greater control over cursor positioning by bypassing the logical positioning provided by default. Rather than positioning the cursor by looking at the widths of characters involved, this constructor lets you provide a physical row and column instead. This is useful in more sophisticated programs. (thanks Eric Mertens)
- ➕ Added a new Generic-derived config parser (thanks Eric Mertens)
- 🛠 Fixed the MShift case in the configuration file parser (thanks Eric Mertens)
- 🛠 Fixed wcwidth import and matched safeWcswidth to its documented behavior. Previously vty_mk_wcwidth was being imported with the wrong type causing the -1 return value to be mapped to the wrong Int value. Additionally safeWcswidth was using the unsafe character width function and only ensuring that the final result was non-negative. (thanks Eric Mertens)
- Vty now only emits UTF8 charset sequences in terminals without a preexisting UTF8 declaration to avoid emitting garbage sequences (fixes #89)
- ➕ Added new Output methods supportsBell and ringTerminalBell to find out whether the output device has an audio bell and to ring it (see #102)
- 🛠 Fixed "refresh" to work as advertised (see #104)
- API change: EvPaste input event now provides paste data as a raw ByteString rather than a String to allow the application to decode how best to decode it
- ModeDemo: added an explicit Control.Applicative import for older GHCs
- 0️⃣ 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
- supportsMode :: Mode -> Bool tells whether the device supports a mode
- setMode :: Mode -> Bool -> IO () turns a mode on or off
- getModeStatus :: Mode -> IO Bool tells you whether a mode is on or off
- ➕ Added a new demo program, ModeDemo.hs, to demonstrate usage of modes
- ➕ Added support for normal and extended mouse modes in Xterm-like terminals via the MouseDown and MouseUp Event constructors
- ➕ Added support for bracketed paste mode in Xterm-like terminals via the EvPaste event constructor
- ➕ Added derived Show instances for Event and Button (thanks Felix Hirn)
- Now TERM values containing "screen" will automatically use the XtermColor driver rather than just TerminfoBased
- Replaced lens dependency with microlens, microlens-mtl, microlens-th
dependencies. Issue #90
- Thanks Jonathan Daugherty
- Cabal corrections.
- Thanks Lennart Spitzner
- Replaced lens dependency with microlens, microlens-mtl, microlens-th dependencies. Issue #90