Revision history for Terminal-Widgets
0.1.5 2024-04-01T00:35:56-07:00
[Bug Fixes]
- Ignore Input events that change state when the Input is disabled, but
continue to allow navigation events regardless
[Cleanup]
- Fix and clarify a few comments
- Remove unused imports in several files
[Debugging]
- Show widget dirty state in Widget.gist
[Examples]
- Add a heat-ping example based on the new SmokeChart widget
- Add proper log scrolling to the basic form example
[Functionality]
- Support for scrollable, ragged, lazy, span-styled buffers via new
Scrollable, ScrollBar, and SpanBuffer roles
- New HScrollBar and VScrollBar widgets with full symbol set support and
both keyboard and mouse event handling
- Experimental support for slice-addressed visualizations
- New SmokeChart visualization widget
- Support overriding default behavior of Input::Text.finish-entry
- Add content-width and content-height helper methods to Widget
[Performance]
- Actually optimize copies and prints based on real dirty areas, rather than
always assuming every widget is always fully dirty
- Lazily cache span width in Span itself
[Refactoring]
- Refactor Viewer::Log in terms of SpanBuffer, vastly simplifying it
0.1.4 2024-03-02T14:00:05-08:00
[API Simplification]
- Provide helper methods for cleaner form group handling
- Allow App.add-terminal to set locale and ui-prefs as well
[Bug Fixes]
- Silence an uninitialized warning in Menu icon handling (when a particular
menu item doesn't have an icon associated with it)
- Much more correct min width defaults for SingleLineInput layouts
[Debugging]
- Improve Input.gist-flags for glanceability
[Examples]
- Demo group introspection in form example
[Functionality]
- All Inputs will set their hint (if any) when focused
- Initial sketch of ColorSet and ColorTheme functionality; API expected to
change in the future, especially for theme variants and variant selection
- Define a number of terminal capability variants on a default dark/cool theme
- Add Tango-approximating variants of default theme, for a less harsh look
than the highly saturated xterm-style variants
- Convert Input widgets to use ColorSets instead of hardcoding
- Add additional color selectors to configure additional UI elements
(hint, link, prompt, cursor)
- Allow Input activation flash to be turned off (activate/deactivate still
_happen_ in that case, but don't cause a widget to flash when they do)
[Testing]
- Update GitHub Workflow definition to clear deprecation warning
[Refactoring]
- Refactor min width default handling for SingleLineInput layouts
- Move hint handling from Input::Menu to Input base class
[Layout Styles]
- Pass requested layout style info into default-styles as well, so
default-styles can build out the implications of requested styles
0.1.3 2024-02-22T23:38:50-08:00
[Debugging]
- Add tunable Widget compositing debugging
- Make ACTIVE state more obvious in Input.gist-flags
[Functionality]
- Add support for menu item icons
0.1.2 2024-02-21T20:44:08-08:00
[Bug fixes]
- Update META6 to require latest versions of dependencies, and add a missing
dependency (Text::MiscUtils)
0.1.1 2024-02-21T18:35:46-08:00
[API Changes]
- First *experimental* version of translatable UI elements; see Functionality
- This release should still be compatible with existing 0.1.0 code, but
future releases in the 0.1.x cycle may not be
- Will almost certainly require some additional changes to work seamlessly
with span tree coloring and proper interpolations
[Bug Fixes]
- Fit styles example into 80 columns (it was not intended to demonstrate
overflow behavior and doesn't handle it well)
[Functionality]
- Translatable string markup operators added for lightweight code changes
- Translations handled by Locale object, which is tied to the Terminal
- Terminal passed as context to Layout objects, allowing the Locale
to influence layout measurements
- Terminal capabilities and locale can now be updated on the fly (causing
a screen refresh)
- Currently works with Labeled Input, Menu, and PlainText widgets
- PlainText widgets can optionally add soft-wrapping behavior in addition
to respecting hard-wrapped lines in the input text as before
- Window title also translated (and sanitized for security reasons)
[Refactoring]
- Refactor debug-grid and improve its empty grid handling
0.1.0 2024-02-12T17:19:15-08:00
[API Changes]
- Begin process of rationalizing refresh handling for an easier mental model
and fewer redundant or missing refreshes
- Create a new global LayoutBuilt event, and issue it in TopLevel.relayout
to notify widgets that the overall layout has finished building (and thus
all widgets should now exist and be nominally initialized)
[Functionality]
- Add initial support for styling of span trees
- Add styled span tree support to Viewer::Log
[Examples]
- Demo span-styled log entries and layout gists in form example
[Refactoring]
- Massive refactor of Viewer::Log to use LogEntry objects
0.0.13 2024-02-12T16:54:00-08:00
[Bug Fixes]
- Fix precedence thinko in menu width detection that caused some menus to
overdraw their right boundary
- Invalidate grid-string cache for full-screen composites, fixing a visual
bug seen when switching back to a previously-viewed screen
- Compute fixed layouts for widgets created statically from an existing grid
- Add stub for build-layout method to clarify that TopLevel requires it
[Debugging]
- Show when a Widget is focused in Widget gists
- Add a debug-grid method to Widget for dumping a widget's grid contents
as an ANSI-colored snapshot, rather than as an array of arrays of Cells
0.0.12 2023-11-26T21:03:49-08:00
[Bug Fixes]
- Select correct item when using mouse-click selection on a scrolled Menu
- Allow Text input to receive focus via mouse click
- Make sure TopLevel's .layout object knows its own .widget object (the
original TopLevel itself)
- Build *base* Widget objects as internal widget tree nodes if requested
by the layout tree
- Draw framing on *base* Widget objects also, not just subclasses
- Make sure Style.clone calls Style's TWEAK, just as for new/bless
- Sort unset layout children by MarginBox size, not default sizing box
- Simplify and fix propagate-xy box model corrections
- Fix correction handling in child layout share computations
[Examples]
- Update styles example to include box model (framing) styling as well
[Refactoring]
- Factor color-merge() helper out to ::Utils::Color
- Refactor, improve, and expand gist logic for both Widget and Layout objects
- Clarify layout computation via change of variable
0.0.11 2023-11-12T17:11:18-08:00
[Bug Fixes]
- Prefer to autofocus on widgets that process input (falling back to widgets
that are able to handle events of any type, as before)
[Examples]
- Add an example showing how to move back and forth between form pages
0.0.10 2023-11-12T14:53:56-08:00
[Bug Fixes]
- Fix layout bug causing max limits to be ignored when allocating extra space
to undersized child layout nodes
[Examples]
- Add a scrolling, colored, responsive-layout menu example
[Functionality]
- Support autoscrolling Menu input widgets
- Support per-menu-item colors
0.0.9 2023-11-08T15:34:35-08:00
[Bug Fixes]
- Handle menu items with no hotkeys
[Examples]
- Add a simple text, border, and layout style demo
[Functionality]
- Allow override of Menu hint target
- Add a custom gist method for Menu
0.0.8 2023-09-03T20:24:54-07:00
[Bug Fixes]
- Minor tweaks, fixes, and error message improvements
[Functionality]
- Add missing right/bottom-correction BoxModel multis
- Track timing for app bootup and terminal initialization
- Add ::Progress::Tracker role to unify interface to progress tracking widgets
- Support loading screens with optional progress tracking display
- Allow layout objects to specify a share weight for distributing space
- Add spacer-only layout leaf node for self-documenting convenience
[I18n]
- Stub in ::I18N::Locale class and ensure each Terminal gets one
[Performance]
- Various minor micro-optimizations
[Quality]
- Improve quality and performance of gray-color() utility multis
- Better represent uneven xterm-256 color cube mapping in rgb-color() utility
multis, adding rgb-color-flat() multis to use the old flat-mapping formulae
[Refactoring]
- Move all color utilities in ::Utils into a separate ::Utils::Color module
- Move relayout phases from Terminal to TopLevel
- Move TW_* environment var handling to ::App.add-terminal
- Significantly refactor and simplify App booting (many commits), resulting
in adding separate ::Simple::App class as well
0.0.7 2023-06-24T22:17:50-07:00
[Bug Fixes]
- Make sure ::Input::Text uses scroll markers matched to terminal caps
[Documentation]
- Add doc with ruminations on styles
[Functionality]
- Add right-correction and bottom-correction methods to BoxModel
- Rewrite Widget compositing to clip to parent's content area
[Packaging]
- Bump dependencies
[Refactoring]
- Move ::TerminalCapabilities out to its own separate distribution,
Terminal::Capabilities
0.0.6 2023-06-08T22:12:17-07:00
[Bug Fixes]
- Correct width and height when building objects
- Fix thinkos in distributing unassigned height/width in layouts
- Comment out seemingly-redundant callsame
- Fix WHY for ::Input::Text
[Examples]
- Update form example with framing styles
[Functionality]
- Expand BoxModel and make it more usable
- Add `draw-framing` and related methods to base Widget class
- Draw and account for framing for all existing widgets
[Refactoring]
- Move BoxDrawing consumption to base Widget class
0.0.5 2023-06-04T12:24:07-07:00
[Functionality]
- Support terminal capabilities and envvars for them in ::App
- Adjust input widget rendering based on available symbol set
- Add initial sketch of ::I18N::Translation
[Packaging]
- Fix copyright years
0.0.4 2023-05-21T14:56:20-07:00
[Functionality]
- Add PlainText widget for simple text blocks
- Add Input::Menu widget for trivial menus
- Add 'highlight' as a themable color for Input widgets
- Allow layout widgets to dynamically generate their default styles
- Provide symbol-set helper routine for terminal capabilities
[Refactoring/Cleanup]
- Reduce boilerplate in building layout and widget trees
- Remove commented-out code
[Testing/CI]
- Upgrade to checkout@v3 to avoid CI warning
0.0.3 2023-05-12T21:03:44-07:00
[Bug fixes]
- Prevent bubble-up event duplication
[Functionality]
- First bits of Widget dirty area handling
- Add initial terminal capabilities tracking
- Add initial Unicode symbol set variants
- Add RGB -> Luma/grayscale conversion utils
- Add convenience method for finding widget's toplevel's terminal
0.0.2 2022-08-09T18:14:58-07:00
[Bug fixes]
- Return Empty from Simple::TopLevel.initial-layout stub
- Remove existing content in Input::Text.reset-entry-state
- Don't send events to children that can't understand them
- Recalc coordinate offsets even for unparented Widgets
[Functionality]
- Add a Terminal.has-initialized Promise
- First bits of Z-order support for Widgets (API changes expected)
0.0.1 2022-07-23T16:44:48-07:00
- Initial proof-of-concept version