Skip to content

Releases: salt-die/batgrl

RecycleView!

12 Sep 01:48
0cbc959
Compare
Choose a tag to compare

Added RecycleView, a gadget that can display lots of data using very few gadgets!
Added additional size constraint options and new handle effects to split layouts.

"reverse" field added to Cell

28 Aug 02:06
Compare
Choose a tag to compare

"reverse" field added to Cell

So before this change, if one wanted, say, an upper 5/8ths block (which doesn't exist), a lower 3/8ths block ("▃") could instead be used with the foreground and background colors swapped.

The issue with this is alpha compositing always composites with the background color! So the flipped foreground and background colors will look sorely out-of-place as soon as any transparency is enabled.

"reverse" fixes this. Now, an upper 5/8ths block can be created by setting the cell's "reverse" field and alpha compositing will still look correct using the "bg_color" field.

Additional changes:

  • Minor fixes to ansi parsing on windows.
  • text_tools.cell function renamed to text_tools.new_cell.
  • ANSI art viewer (parses and displays .ans files) added.
  • PosHint and SizeHint dataclasses removed. PosHintDict and SizeHintDict renamed PosHint/SizeHint, respectively.
  • Added optional filter for FileChooser.
  • Added dynamic bars option to ScrollView.
  • Continued doc string improvements.
  • Small bug fixes.

Inline Mode!

21 Jul 17:00
Compare
Choose a tag to compare

v0.35.0

  • Inline mode added (apps are rendered below the terminal prompt in inline mode). Apps can swap from alternate buffer to inline mode while running. Note that resizing terminal in inline mode (or swapping to inline mode after a resize) will trigger a screen clear. See it in action: https://github.com/user-attachments/assets/21990d3b-8290-46c1-a64c-2d284d5c2183
  • Terminal focus events now tracked and dispatched.
  • Ansi input parsing refactored. Large pastes should no longer be broken into multiple paste events.
  • Removed feature: saving output to asciicast format.
  • Python 3.12 now required. Numpy 2.0 now required.
  • Events are now mutable dataclasses.

Motion along Bezier curves!

28 Mar 20:08
Compare
Choose a tag to compare

This release adds a BezierCurve type and a coroutine move_along_path that will move a gadget along a sequence of curves. move_along_path also accepts different easings to control movement. Additional changes include:

  • VideoPlayer and BrailleVideoPlayer renamed Video and BrailleVideo, respectively.
  • clear() method added to Text and Graphics and shift() method added to Text.
  • Gadget minimum height/width is now 0 from 1.
  • on_progress parameter of tween() method of Gadget now accepts a callable with a single argument (the argument is the current progress of the tween).
  • Text effects added. A recreation of some effects from https://github.com/ChrisBuilds/terminaltexteffects.

A new canvas data type.

17 Feb 11:30
Compare
Choose a tag to compare

Introducing the new canvas data type, Cell! Major changes:

  • Char renamed to Cell.
  • Cell has additional fields "fg_color" and "bg_color".
  • colors ndarray of Text and _Root gadgets removed.
  • ColorPair removed.

Additional changes:

  • Theming is now done with a dictionary of hexcodes.
  • GadgetBase is now Gadget.
  • Pane gadget replaces the old Gadget type. Pane also alpha composites.
  • Transparency semantics for text gadgets updated. Can now alpha composite with
    the background of transparent text.
  • An alpha parameter/attribute has been added to several gadgets to use new
    compositing.
  • render() method is now private, renamed _render().
  • Resizable behavior removed.
  • The following gadgets no longer inherit from Text, but prefer composition:
    BoxImage, BrailleImage, BrailleVideoPlayer, ProgressBar, Slider, Sparkline
  • Running code in a separate thread is now optional for Console.
  • MenuItem is now private, renamed _MenuItem.

Critical bug fixes.

01 Dec 13:07
Compare
Choose a tag to compare

Changes in v0.31.1

  • Fixed missing _pos attribute from _Root. This caused errors when getting top, left, right, bottom attributes.
  • Tasks returned by videos and animations don't propagate cancellations. Unwanted behavior could occur if while awaiting these tasks the video was paused or stopped.

Markdown gadget!

29 Nov 22:56
Compare
Choose a tag to compare

Markdown gadget added! Render markdown in the terminal with graphics, links, tables, lists and task lists! See it in action.

Changes for v0.31.0

  • Markdown gadget added/mistletoe added as a dependency.
  • add_text funcion and add_str, and set_text methods can now accept batgrl-flavored inline markdown if markdown=True.
  • Multi-line paste for console gadget.
  • Doc strings now conform to pydocstyle.
  • Raycaster refactored.
  • Three new Text borders added: near, mcgugan_tall, mcgugan_wide.
  • Cursor save/restore during rendering re-added.
  • VideoPlayer and BrailleVideoPlayer raise FileNotFound if file doesn't exist to prevent cv2 from eating the errors.
  • Render lock is now re-entrant. Gadgets must acquire render lock to resize or reposition.

GadgetBase and Stack Layout.

20 Oct 05:12
Compare
Choose a tag to compare

New in v0.29.0

  • Gadget, Text, and Graphics (and a few other gadgets) now inherit from
    GadgetBase. This removes background_char and background_color_pair
    from many gadgets where these attributes/parameters did nothing.
  • StackLayout added. Stack layouts position their children horizontally or
    vertically and resize them to use all available space. Child height or width
    proportions can be set with the proportions attribute.
  • add_syntax_highlight added to text gadgets. Pygments added as a dependency.

Additional Changes

  • ColorTheme is now a dataclass (instead of a NamedTuple).
  • ScrollView is themable (again)
  • Character attributes of gadgets, such as Text.default_char or
    Gadget.background_char can now be set with styled Char.
  • Gadget size and position are locked during rendering for thread safety.
  • Gadgets that inherited scroll view now inherit GadgetBase and have a
    scroll view.
  • Updated description of transparency for Gadget.
  • Fix several occurrences of improper escapes in strings.
  • Moved Char, style_char, and coerce_char into text_tools.
  • All layouts (except split layout) remove hints from children.

Console Gadget!

14 Oct 20:17
Compare
Choose a tag to compare

New in v0.28.0:

  • Console gadget added.
  • Select all and select word key-binds added to text input gadgets.
  • Method signatures added to method stubs in doc strings.
  • Several bug fixes.

Renamed project to `batgrl`. Rendering now uses regions.

07 Oct 12:52
Compare
Choose a tag to compare

New in v0.27.0

  • Renamed project to batgrl. Badass terminal graphics library. Widgets are now gadgets for flavor.
  • Rendering now uses regions by default, but painter's algorithm can still be used by passing the rendering mode to an App.