termdash/CHANGELOG.md

498 lines
16 KiB
Markdown
Raw Normal View History

2019-01-25 11:02:44 +08:00
# Changelog
All notable changes to this project are documented here.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
2022-01-14 12:36:19 +08:00
## [0.16.1] - 13-Jan-2022
### Changed
2022-01-14 13:17:30 +08:00
- Change the Go versions the CI builds with up to 1.17.
2022-01-14 12:36:19 +08:00
- Bump github.com/gdamore/tcell from 2.2.0 to 2.4.0.
- Bump github.com/mattn/go-runewidth from 0.0.12 to 0.0.13.
2021-04-04 05:06:12 +08:00
## [0.16.0] - 03-Apr-2021
### Added
- The `Text` widget has a new option `MaxTextCells` which can be used to limit
the maximum number of cells the widget keeps in memory.
### Changed
- Bump github.com/mattn/go-runewidth from 0.0.10 to 0.0.12.
## [0.15.0] - 06-Mar-2021
2020-12-31 12:40:17 +08:00
### Changed
- Bump github.com/gdamore/tcell/v2 from 2.0.0 to 2.2.0.
2021-01-13 11:04:20 +08:00
- Bump github.com/mattn/go-runewidth from 0.0.9 to 0.0.10.
- Allowing CI to modify go.mod and go.sum when necessary.
- Executed `go mod tidy`.
2020-12-31 12:40:17 +08:00
### Added
- TitleColor and TitleFocusedColor options for border title which enables the
setting of separate colors for border and title on a container.
2020-12-30 15:27:40 +08:00
## [0.14.0] - 30-Dec-2020
2020-11-25 11:05:20 +08:00
### Breaking API changes
2020-11-28 12:07:40 +08:00
- The `widgetapi.Widget.Keyboard` and `widgetapi.Widget.Mouse` methods now
2020-11-25 11:05:20 +08:00
accepts a second argument which provides widgets with additional metadata.
2020-11-28 12:07:40 +08:00
All widgets implemented outside of the `termdash` repository will need to be
2020-12-27 14:03:12 +08:00
updated similarly to the `Barchart` example below. Change the original method
2020-11-28 12:07:40 +08:00
signatures:
```go
func (*BarChart) Keyboard(k *terminalapi.Keyboard) error { ... }
func (*BarChart) Mouse(m *terminalapi.Mouse) error { ... }
```
By adding the new `*widgetapi.EventMeta` argument as follows:
```go
func (*BarChart) Keyboard(k *terminalapi.Keyboard, meta *widgetapi.EventMeta) error { ... }
func (*BarChart) Mouse(m *terminalapi.Mouse, meta *widgetapi.EventMeta) error { ... }
```
2020-11-25 11:05:20 +08:00
### Fixed
- `termdash` no longer crashes when `tcell` is used and the terminal window
downsizes while content is being drawn.
2020-11-24 11:35:08 +08:00
### Added
#### Text input form functionality with keyboard navigation
2020-12-30 13:59:39 +08:00
- added a new `formdemo` that demonstrates a text input form with keyboard
navigation.
#### Infrastructure changes
2020-12-27 14:03:12 +08:00
- `container` now allows users to configure keyboard keys that move focus to
the next or the previous container.
- containers can request to be skipped when focus is moved using keyboard keys.
- containers can register into separate focus groups and specific keyboard keys
can be configured to move the focus within each focus group.
- widgets can now request keyboard events exclusively when focused.
- users can now set a `container` as focused using the new `container.Focused`
option.
#### Updates to the `button` widget
2020-11-25 12:03:28 +08:00
- the `button` widget allows users to specify multiple trigger keys.
- the `button` widget now supports different keys for the global and focused
scope.
2020-11-29 03:24:22 +08:00
- the `button` widget can now be drawn without the shadow or the press
animation.
- the `button` widget can now be drawn without horizontal padding around its
text.
2020-11-29 03:24:22 +08:00
- the `button` widget now allows specifying cell options for each cell of the
displayed text. Separate cell options can be specified for each of button's
main states (up, focused and up, down).
- the `button` widget allows specifying separate fill color values for each of
its main states (up, focused and up, down).
- the `button` widget now has a method `SetCallback` that allows updating the
callback function on an existing `button` instance.
2020-11-24 11:35:08 +08:00
#### Updates to the `textinput` widget
- the `textinput` widget can now be configured to request keyboard events
exclusively when focused.
2020-12-28 16:41:52 +08:00
- the `textinput` widget can now be initialized with a default text in the
input box.
2020-11-18 12:24:05 +08:00
## [0.13.0] - 17-Nov-2020
2020-11-13 15:30:51 +08:00
### Added
- the `Text` widget now allows user to specify custom scroll marker runes.
2020-11-14 13:09:40 +08:00
### Changed
2020-11-18 12:24:05 +08:00
- terminal cells now support font modifier options (bold, italic,
underline, strike through).
2020-11-16 03:38:16 +08:00
- `tcell` dependency was upgraded to v2.0.0.
2020-11-18 12:24:05 +08:00
- upgraded versions of all other dependencies.
2020-11-15 12:30:10 +08:00
- aligned the definition of the first 16 colors with the definition used by
Xterm and `tcell`. Defined two non-standard colors `ColorMagenta` and
`ColorCyan` to make this change backward compatible for users that use
`termbox-go`.
2020-11-14 14:10:55 +08:00
- made `tcell` terminal implementation the default in examples, demos and
documentation.
2020-11-14 13:09:40 +08:00
2020-11-13 15:12:48 +08:00
### Fixed
- coveralls again triggers and reports on PRs.
2020-11-18 12:24:05 +08:00
- addressed some lint issues.
- improved test coverage in some modules.
- changed the Blue color in demos to a more visible shade.
2020-11-14 15:27:48 +08:00
- fixed a bug where segment display text in `termdashdemo` appeared to be
jumping.
2020-11-13 15:12:48 +08:00
2020-09-01 10:40:08 +08:00
## [0.12.2] - 31-Aug-2020
### Fixed
- advanced the CI Go versions up to Go 1.15.
- fixed the build status badge to correctly point to travis-ci.com instead of
travis-ci.org.
2020-06-21 02:51:28 +08:00
## [0.12.1] - 20-Jun-2020
2020-04-11 03:38:27 +08:00
2020-06-21 02:33:00 +08:00
### Fixed
- the `tcell` unit test can now pass in headless mode (when TERM="") which
happens under bazel.
2020-06-21 03:20:12 +08:00
- switching coveralls integration to Github application.
2020-06-21 02:33:00 +08:00
2020-06-21 02:51:28 +08:00
## [0.12.0] - 10-Apr-2020
2020-03-21 02:10:53 +08:00
### Added
- Migrating to [Go modules](https://blog.golang.org/using-go-modules).
- Renamed directory `internal` to `private` so that external widget development
is possible. Noted in
2020-04-11 03:45:25 +08:00
[README.md](https://github.com/mum4k/termdash/blob/master/README.md) that packages in the
`private` directory don't have any API stability guarantee.
2020-03-21 02:10:53 +08:00
## [0.11.0] - 7-Mar-2020
#### Breaking API changes
- Termdash now requires at least Go version 1.11.
### Added
- New [`tcell`](https://github.com/gdamore/tcell) based terminal implementation
which implements the `terminalapi.Terminal` interface.
- tcell implementation supports two initialization `Option`s:
- `ColorMode` the terminal color output mode (defaults to 256 color mode)
- `ClearStyle` the foreground and background color style to use when clearing
the screen (defaults to the global ColorDefault for both foreground and
background)
### Fixed
- Improved test coverage of the `Gauge` widget.
2019-06-06 04:31:44 +08:00
## [0.10.0] - 5-Jun-2019
### Added
- Added `time.Duration` based `ValueFormatter` for the `LineChart` Y-axis labels.
- Added round and suffix `ValueFormatter` for the `LineChart` Y-axis labels.
- Added decimal and suffix `ValueFormatter` for the `LineChart` Y-axis labels.
- Added a `container.SplitOption` that allows fixed size container splits.
- Added `grid` functions that allow fixed size rows and columns.
2019-04-29 10:11:16 +08:00
### Changed
- The `LineChart` can format the labels on the Y-axis with a `ValueFormatter`.
2019-05-01 11:04:28 +08:00
- The `SegmentDisplay` can now display dots and colons ('.' and ':').
2019-04-29 10:11:16 +08:00
- The `Donut` widget now guarantees spacing between the donut and its label.
2019-05-24 11:04:20 +08:00
- The continuous build on Travis CI now builds with cgo explicitly disabled to
2020-11-16 03:38:16 +08:00
ensure both Termdash and its dependencies use pure Go.
2019-04-29 10:11:16 +08:00
2019-04-29 10:45:28 +08:00
### Fixed
- Lint issues found on the Go report card.
- An internal library belonging to the `Text` widget was incorrectly passing
`math.MaxUint32` as an int argument.
2019-04-29 10:45:28 +08:00
## [0.9.1] - 15-May-2019
2019-05-14 10:44:00 +08:00
### Fixed
- Termdash could deadlock when a `Button` or a `TextInput` was configured to
call the `Container.Update` method.
2019-04-29 09:36:19 +08:00
## [0.9.0] - 28-Apr-2019
2019-04-26 11:46:36 +08:00
### Added
- The `TextInput` widget, an input field allowing interactive text input.
2019-04-29 09:18:54 +08:00
- The `Donut` widget can now display an optional text label under the donut.
2019-04-26 11:46:36 +08:00
### Changed
- Widgets now get information whether their container is focused when Draw is
executed.
- The SegmentDisplay widget now has a method that returns the observed character
capacity the last time Draw was called.
- The grid.Builder API now allows users to specify options for intermediate
containers, i.e. containers that don't have widgets, but represent rows and
columns.
- Line chart widget now allows `math.NaN` values to represent "no value" (values
that will not be rendered) in the values slice.
#### Breaking API changes
- The widgetapi.Widget.Draw method now accepts a second argument which provides
widgets with additional metadata. This affects all implemented widgets.
- Termdash now requires at least Go version 1.10, which allows us to utilize
`math.Round` instead of our own implementation and `strings.Builder` instead
of `bytes.Buffer`.
- Terminal shortcuts like `Ctrl-A` no longer come as two separate events,
Termdash now mirrors termbox-go and sends these as one event.
2019-03-30 14:24:37 +08:00
## [0.8.0] - 30-Mar-2019
2019-02-25 05:40:32 +08:00
### Added
2019-03-11 11:36:42 +08:00
- New API for building layouts, a grid.Builder. Allows defining the layout
iteratively as repetitive Elements, Rows and Columns.
- Containers now support margin around them and padding of their content.
2019-03-29 12:27:37 +08:00
- Container now supports dynamic layout changes via the new Update method.
2019-02-25 05:40:32 +08:00
### Changed
2019-03-03 06:56:37 +08:00
- The Text widget now supports content wrapping on word boundaries.
- The BarChart and SparkLine widgets now have a method that returns the
observed value capacity the last time Draw was called.
2019-03-03 11:03:14 +08:00
- Moving widgetapi out of the internal directory to allow external users to
develop their own widgets.
2019-03-30 14:24:37 +08:00
- Event delivery to widgets now has a stable defined order and happens when the
container is unlocked so that widgets can trigger dynamic layout changes.
2019-02-25 05:40:32 +08:00
### Fixed
- The termdash_test now correctly waits until all subscribers processed events,
not just received them.
- Container focus tracker now correctly tracks focus changes in enlarged areas,
i.e. when the terminal size increased.
- The BarChart, LineChart and SegmentDisplay widgets now protect against
external mutation of the values passed into them by copying the data they
receive.
2019-03-29 12:27:37 +08:00
## [0.7.2] - 25-Feb-2019
### Added
- Test coverage for data only packages.
### Changed
- Refactoring packages that contained a mix of public and internal identifiers.
2019-02-25 05:40:32 +08:00
#### Breaking API changes
The following packages were refactored, no impact is expected as the removed
identifiers shouldn't be used externally.
- Functions align.Text and align.Rectangle were moved to a new
internal/alignfor package.
- Types cell.Cell and cell.Buffer were moved into a new internal/canvas/buffer
package.
## [0.7.1] - 24-Feb-2019
### Fixed
2019-02-24 14:56:48 +08:00
- Some of the packages that were moved into internal are required externally.
This release makes them available again.
2019-02-25 05:40:32 +08:00
### Changed
#### Breaking API changes
- The draw.LineStyle enum was refactored into its own package
2019-02-24 14:56:48 +08:00
linestyle.LineStyle. Users will have to replace:
2019-02-24 14:58:12 +08:00
- draw.LineStyleNone -> linestyle.None
- draw.LineStyleLight -> linestyle.Light
- draw.LineStyleDouble -> linestyle.Double
- draw.LineStyleRound -> linestyle.Round
2019-02-24 13:28:18 +08:00
## [0.7.0] - 24-Feb-2019
2019-02-13 13:48:08 +08:00
### Added
2019-02-24 13:28:18 +08:00
#### New widgets
- The Button widget.
2019-02-24 13:28:18 +08:00
#### Improvements to documentation
- Clearly marked the public API surface by moving private packages into
internal directory.
- Started a GitHub wiki for Termdash.
#### Improvements to the LineChart widget
2019-02-14 13:46:14 +08:00
- The LineChart widget can display X axis labels in vertical orientation.
- The LineChart widget allows the user to specify a custom scale for the Y
axis.
2019-02-16 13:38:32 +08:00
- The LineChart widget now has an option that disables scaling of the X axis.
Useful for applications that want to continuously feed data and make them
"roll" through the linechart.
- The LineChart widget now has a method that returns the observed capacity of
the LineChart the last time Draw was called.
- The LineChart widget now supports zoom of the content triggered by mouse
events.
2019-02-24 13:28:18 +08:00
#### Improvements to the Text widget
2019-02-15 13:41:33 +08:00
- The Text widget now has a Write option that atomically replaces the entire
text content.
2019-02-24 13:28:18 +08:00
#### Improvements to the infrastructure
- A function that draws text vertically.
2019-02-21 14:21:47 +08:00
- A non-blocking event distribution system that can throttle repetitive events.
2019-02-24 13:28:18 +08:00
- Generalized mouse button FSM for use in widgets that need to track mouse
button clicks.
2019-02-13 13:48:08 +08:00
2019-02-13 11:42:49 +08:00
### Changed
2019-02-13 13:48:08 +08:00
- Termbox is now initialized in 256 color mode by default.
2019-02-20 13:52:51 +08:00
- The infrastructure now uses the non-blocking event distribution system to
distribute events to subscribers. Each widget is now an individual
subscriber.
2019-02-21 14:21:47 +08:00
- The infrastructure now throttles event driven screen redraw rather than
redrawing for each input event.
- Widgets can now specify the scope at which they want to receive keyboard and
mouse events.
#### Breaking API changes
2019-02-22 13:37:56 +08:00
##### High impact
- The constructors of all the widgets now also return an error so that they
can validate the options. This is a breaking change for the following
widgets: BarChart, Gauge, LineChart, SparkLine, Text. The callers will have
to handle the returned error.
2019-02-13 11:42:49 +08:00
2019-02-22 13:37:56 +08:00
##### Low impact
- The container package no longer exports separate methods to receive Keyboard
and Mouse events which were replaced by a Subscribe method for the event
distribution system. This shouldn't affect users as the removed methods
aren't needed by container users.
- The widgetapi.Options struct now uses an enum instead of a boolean when
widget specifies if it wants keyboard or mouse events. This only impacts
development of new widgets.
2019-02-22 13:37:56 +08:00
2019-02-15 12:16:28 +08:00
### Fixed
- The LineChart widget now correctly determines the Y axis scale when multiple
series are provided.
2019-02-18 15:14:14 +08:00
- Lint issues in the codebase, and updated Travis configuration so that golint
is executed on every run.
- Termdash now correctly starts in locales like zh_CN.UTF-8 where some of the
characters it uses internally can have ambiguous width.
2019-02-15 12:16:28 +08:00
## [0.6.1] - 12-Feb-2019
2019-02-13 12:36:45 +08:00
### Fixed
- The LineChart widget now correctly places custom labels.
2019-02-07 13:16:51 +08:00
## [0.6.0] - 07-Feb-2019
2019-01-25 11:02:44 +08:00
### Added
- The SegmentDisplay widget.
2019-01-25 11:02:44 +08:00
- A CHANGELOG.
- New line styles for borders.
2019-01-25 11:02:44 +08:00
### Changed
- Better recordings of the individual demos.
2019-01-25 11:02:44 +08:00
### Fixed
2019-01-27 11:33:20 +08:00
- The LineChart now has an option to change the behavior of the Y axis from
zero anchored to adaptive.
2019-01-25 11:02:44 +08:00
- Lint errors reported on the Go report card.
2019-01-27 13:00:30 +08:00
- Widgets now correctly handle a race when new user data are supplied between
calls to their Options() and Draw() methods.
2019-01-25 11:02:44 +08:00
## [0.5.0] - 21-Jan-2019
2019-01-25 11:02:44 +08:00
### Added
- Draw primitives for drawing circles.
- The Donut widget.
### Fixed
- Bugfixes in the braille canvas.
- Lint errors reported on the Go report card.
2019-01-27 11:54:50 +08:00
- Flaky behavior in termdash_test.
2019-01-25 11:02:44 +08:00
## [0.4.0] - 15-Jan-2019
2019-01-25 11:02:44 +08:00
### Added
- 256 color support.
- Variable size container splits.
- A more complete demo of the functionality.
### Changed
- Updated documentation and README.
## [0.3.0] - 13-Jan-2019
2019-01-25 11:02:44 +08:00
### Added
- Primitives for drawing lines.
- Implementation of a Braille canvas.
- The LineChart widget.
## [0.2.0] - 02-Jul-2018
2019-01-25 11:02:44 +08:00
### Added
- The SparkLine widget.
- The BarChart widget.
- Manually triggered redraw.
- Travis now checks for presence of licence headers.
### Fixed
- Fixing races in termdash_test.
## 0.1.0 - 13-Jun-2018
2019-01-25 11:02:44 +08:00
### Added
- Documentation of the project and its goals.
- Drawing infrastructure.
- Testing infrastructure.
- The Gauge widget.
- The Text widget.
2022-01-14 12:36:19 +08:00
[unreleased]: https://github.com/mum4k/termdash/compare/v0.16.1...devel
[0.16.1]: https://github.com/mum4k/termdash/compare/v0.16.0...v0.16.1
2021-04-04 05:06:12 +08:00
[0.16.0]: https://github.com/mum4k/termdash/compare/v0.15.0...v0.16.0
[0.15.0]: https://github.com/mum4k/termdash/compare/v0.14.0...v0.15.0
2020-12-30 15:27:40 +08:00
[0.14.0]: https://github.com/mum4k/termdash/compare/v0.13.0...v0.14.0
2020-11-18 12:24:05 +08:00
[0.13.0]: https://github.com/mum4k/termdash/compare/v0.12.2...v0.13.0
2020-09-01 10:40:39 +08:00
[0.12.2]: https://github.com/mum4k/termdash/compare/v0.12.1...v0.12.2
2020-06-21 02:51:28 +08:00
[0.12.1]: https://github.com/mum4k/termdash/compare/v0.12.0...v0.12.1
2020-04-11 03:38:27 +08:00
[0.12.0]: https://github.com/mum4k/termdash/compare/v0.11.0...v0.12.0
[0.11.0]: https://github.com/mum4k/termdash/compare/v0.10.0...v0.11.0
2019-06-06 04:31:44 +08:00
[0.10.0]: https://github.com/mum4k/termdash/compare/v0.9.1...v0.10.0
[0.9.1]: https://github.com/mum4k/termdash/compare/v0.9.0...v0.9.1
2019-04-29 09:36:19 +08:00
[0.9.0]: https://github.com/mum4k/termdash/compare/v0.8.0...v0.9.0
2019-03-30 14:24:37 +08:00
[0.8.0]: https://github.com/mum4k/termdash/compare/v0.7.2...v0.8.0
2019-02-25 05:40:32 +08:00
[0.7.2]: https://github.com/mum4k/termdash/compare/v0.7.1...v0.7.2
2019-02-24 14:56:48 +08:00
[0.7.1]: https://github.com/mum4k/termdash/compare/v0.7.0...v0.7.1
2019-02-24 13:28:18 +08:00
[0.7.0]: https://github.com/mum4k/termdash/compare/v0.6.1...v0.7.0
[0.6.1]: https://github.com/mum4k/termdash/compare/v0.6.0...v0.6.1
2019-02-07 13:16:51 +08:00
[0.6.0]: https://github.com/mum4k/termdash/compare/v0.5.0...v0.6.0
[0.5.0]: https://github.com/mum4k/termdash/compare/v0.4.0...v0.5.0
[0.4.0]: https://github.com/mum4k/termdash/compare/v0.3.0...v0.4.0
[0.3.0]: https://github.com/mum4k/termdash/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/mum4k/termdash/compare/v0.1.0...v0.2.0