Changelog of @hackage/reflex-vty 0.4.0.0

Revision history for reflex-vty

0.4.0.0

  • Breaking Changes:
    • Added mouse tracking to the behavior of pane such that
      • Mouse actions that start outside of the region are not tracked
      • Mouse drag sequences that start OFF the region are NOT reported
      • Mouse drag sequences that start ON the region and drag off ARE reported
      • Introduce MonadHold constraint to pane
    • Added MonadHold constraint to several methods that use pane

0.3.1.1

  • Loosen version bounds and support GHC 9.4

0.3.1.0

  • Replace mempty with defAttr for Attr from Graphics.Vty to make it compatible with vty-5.34

0.3.0.0

  • Re-design textInput, TextInput and TextInputConfig.
    • Allows users to implement more complex behavior.
    • _textInputConfig_modify is now applied to the text-value of textInput after user input events such as mouse clicks and keyboard input. This may change the observable behavior.

0.2.0.1

  • Loosen version bounds on ref-tf and vty

0.2.0.0

  • Module Reorganization: The following modules have been added (and are all re-exported by Reflex.Vty):
    • Reflex.Vty.Widget.Box for all the box functions and datatypes
    • Reflex.Vty.Widget.Input.Mouse for clicking, dragging, and scrolling
    • Reflex.Vty.Widget.Split contains splitV, splitH, etc
    • Reflex.Vty.Widget.Text contains text rendering functions like text and display
  • Bugfixes:
    • Remove text-icu dependency and switch to wcwidth from vty package to compute character width in Data.Text.Zipper.
    • goToDisplayLinePosition in Data.Text.Zipper correctly accounts for character width now.
    • #37 Layout should support focus changes through nested layouts (thanks @pdlla for getting this started -- see entry on Layout and Focus below).
    • Fix distribution of available space when it cannot be evenly distributed. Previously, all leftover space would be allocated to the first stretchable widget.
  • Breaking Changes:
    • Layout and focus have been substantially refactored to fix #37 and support a wider variety of layouts and focus switching requirements.
      • Added a new HasFocus class (the old one is now HasFocusReader) to produce focusable elements, and manage focus state. See the "Focus" section of the Reflex.Vty.Widget.Layout module documentation.
      • Layout no longer has any focus-tracking responsibility. See the "Layout" section of the Reflex.Vty.Widget.Layout module documentation.
      • tile no longer takes a configuration record and no longer requires that its child widget return a focus request event. Focus requests are instead handled using calls to requestFocus in the child widget.
      • Calls to fixed and stretch must now be replaced with tile . fixed and tile . stretch
      • stretch now takes a minimum size argument
      • Added flex which is equivalent to stretch 0
      • tabNavigation no longer returns an Event. Instead it calls requestFocus directly with the appropriate Refocus_Shift value.
      • Added axis (in HasLayout), a lower-level primitive which is used to implement row and col.
      • Added region (in HasLayout), which is used to claim screen real estate and used to implement tile and grout
      • Added grout, a container element that is not itself focusable (though its children can be)
    • Removed VtyWidget and replaced it with a number of separate classes and monad transformers
      • Replace HasDisplaySize with HasDisplayRegion which carries around a region instead of just a width and height. displayWidth and displayHeight are now functions implemented in terms of askRegion instead of class methods.
      • Add a DisplayRegion monad transformer
      • Rename ImageWriter to HasImageWriter
      • Introduce an ImageWriter monad transformer
      • Rename HasFocus to HasFocusReader
      • Introduce a FocusReader monad transformer
      • Replace HasVtyInput with HasInput
      • Introduce an Input monad transformer
      • Introduce HasTheme reader class to allow setting Vty attributes of all built-in widgets
      • Introduce ThemeReader monad transformer
    • Remove DynRegion and currentRegion. Use Dynamic t Region and current instead. This also changes the type of pane's argument.
    • CheckboxConfig now has a field taking an Event to set the value of the checkbox.
    • checkbox now accepts keyboard input (spacebar to check and uncheck) and is displayed in bold when focused.
    • HasInput (formerly HasVtyInput) now has a method localInput for filtering the input a child widget may receive
    • HasImageWriter now has a method mapImages for transforming the images emitted by a child widget
    • boxTitle now takes a Behavior t Text as its title, instead of a plain Text
    • fill now takes a Behavior t Char instead of a Char
    • The following functions are no longer specialized to VtyWidget:
      • pane: Now requires HasInput t m, HasImageWriter t m, HasDisplayRegion t m, HasFocusReader t m
      • drag: Now requires HasInput
      • mouseDown: Now requires HasInput
      • mouseUp: Now requires HasInput
      • mouseScroll: Now requires HasInput
      • key: Now requires HasInput
      • keys: Now requires HasInput
      • keyCombo: Now requires HasInput
      • keyCombos: Now requires HasInput
      • splitV: Now requires HasDisplayRegion t m, HasInput t m, HasImageWriter t m, HasFocusReader t m
      • splitH: Now requires HasDisplayRegion t m, HasInput t m, HasImageWriter t m, HasFocusReader t m
      • splitVDrag: Now requires HasDisplayRegion t m, HasInput t m, HasImageWriter t m, HasFocusReader t m
      • fill: Now requires HasImageWriter and HasDisplayRegion
      • boxTitle: Now requires HasDisplayRegion t m, HasImageWriter t m, HasInput t m, HasFocusReader t m, HasTheme t m
      • box: Now requires HasDisplayRegion t m, HasImageWriter t m, HasInput t m, HasFocusReader t m, HasTheme t m
      • boxStatic: Now requires HasDisplayRegion t m, HasImageWriter t m, HasInput t m, HasFocusReader t m, HasTheme t m
      • richText: Now requires HasImageWriter, and HasDisplayRegion
      • scrollableText: Now requires HasInput, HasImageWriter, HasTheme, and HasDisplayRegion
      • blank: Now requires Monad
      • button: Now requires HasFocusReader, HasInput, HasImageWriter, HasTheme, and HasDisplayRegion
      • textButton: Now requires HasFocusReader, HasInput, HasImageWriter, HasTheme, and HasDisplayRegion
      • textButtonStatic: Now requires HasFocusReader, HasInput, HasImageWriter, HasTheme, and HasDisplayRegion
      • link: Now requires HasInput, HasImageWriter, HasTheme, and HasDisplayRegion
      • checkbox: Now requires HasFocusReader, HasInput, HasImageWriter, and HasDisplayRegion
    • TextZipper interface changes
      • _displayLines_offsetMap type changed to OffsetMapWithAlignment
      • _displayLines_cursorY replaced with _displayLines_cursorPos which include X position
      • some exposed methods intended for internal use only have been removed
      • textInput: Now requires HasFocusReader, HasInput, HasImageWriter, HasTheme, and HasDisplayRegion
      • multilineTextInput: Now requires HasFocusReader, HasInput, HasImageWriter, HasTheme, and HasDisplayRegion
      • textInputTile: Now requires HasFocusReader, HasInput, HasLayout, HasTheme, and HasFocus
  • Misc:
    • (#40 Add alignment support to TextZipper)[https://github.com/reflex-frp/reflex-vty/pull/40]
      • Add alignment (left/center/right) support to TextZipper
      • Add basic unit tests for newly created alignment methods in TextZipper
    • Add default instances for HasInput, HasFocus, and HasImageWriter
    • Export withinImage and add imagesInRegion to crop images to a region
    • Add anyChildFocused, which provides information about whether subwidgets are focused
    • Add filterKeys, which is the same as localInput but only cares about keyboard events
    • Add hoistRunLayout to apply a transformation to the context of a Layout action and run that action
    • Add various MFunctor instances
    • Add a CPU usage indicator to the example executable

0.1.4.2

  • Wider bounds for GHC 8.10 support

0.1.4.1

0.1.4.1

  • Migrate to new dependent-sum / dependent-map (after the "some" package split)

0.1.4.0

  • (#15) Add PostBuild instance for Layout.
  • (#17) Add splitH to implement horizontal functionality of splitV.
  • (#19) Add boxTitle: a box with a title.
  • (#19) Update the text editing example to use boxTitle.
  • (#21) Fix bug in drag that caused dragging with different mouse button to trigger the click event.
  • (#22) Add support for GHC 8.8.

0.1.3.0

  • Add mouseScroll to capture scroll wheel events.
  • Add scrollableText: a text display widget that can be scrolled using the mouse or keyboard.
  • Add widget to the example executable that displays scrollable text.

0.1.2.1

  • Add keyCombo function (single-key-combination version of keyCombos).
  • Use upstream NotReady instances instead of orphans defined in this package if reflex-0.6.3 is available.

0.1.2.0

  • Allow TextZipper contents to be transformed before being displayed.
  • Fix bug in row orientation.
  • Handle wrapping of lines containing full-width unicode characters in textInput.

0.1.1.1

  • Bump minimum version of reflex.

0.1.1.0

  • Set version bounds in cabal file.
  • Add travis CI config.

0.1.0.0

  • Initial release