# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [v1.0.0] - 2026-07-25
This is the first version with all of libui-ng's full widget set.
### Added
- New examples in `eg/`:
- `timer.pl` - demonstrates `uiTimer` by printing timestamps every second
- `hello_world.pl` - minimal "Hello, World!" window
- `controlgallery.pl` - port of the upstream libui-ng control gallery showcasing basic controls, numbers, lists, and data choosers
- `calculator.pl` - basic calculator with grid layout, menus, and a settings dialog
- `clock.pl` - animated analog clock using `uiArea`, `uiTimer`, and draw matrix transforms
- `datetime.pl` - demonstrates `uiDateTimePicker` with date, time, and combined pickers
- `fontpicker.pl` - demonstrates `uiFontButton` and reading font properties
- `form.pl` - demonstrates `uiForm` layout with various control types
- `graph.pl` - plots mathematical functions from editable spinbox data points
- `grid.pl` - demonstrates `uiNewGrid` with cell spanning and stretchy controls
- `group.pl` - demonstrates `uiNewGroup`, `uiGroupSetMargined`, and dynamic group titles
- `image.pl` - demonstrates `uiNewImage` and image columns in a table
- `matrix.pl` - animated `uiDrawMatrix` transforms (translate, scale, rotate, skew)
- `menu.pl` - demonstrates all menu types: items, check items, separators, enable/disable, and submenus
- `notepad.pl` - multi-document tabbed text editor with file open/save and dirty tracking
- `quiz.pl` - interactive multiple-choice quiz with navigation, scoring, and results review
- `scrollarea.pl` - demonstrates `uiNewScrollingArea` with a large interactive map
- `separators.pl` - demonstrates `uiNewHorizontalSeparator` and `uiNewVerticalSeparator`
- `stopwatch.pl` - start/stop/lap timer using `uiTimer` and `Time::HiRes`
- `tab.pl` - demonstrates `uiTab` with append, insert, delete, margined, and selection tracking
- `table.pl` - demonstrates `uiNewTableModel` with sortable columns
- `text_attributes.pl` - demonstrates `uiAttributedString` with styled text rendering
- `bittorrent_threads.pl` - multi-threaded BitTorrent client using ithreads for background networking
### Changed
- `uiNewArea` and `uiNewScrollingArea` wrap callbacks (`Draw`, `MouseEvent`, `KeyEvent`). to tansparently handle casting opaque pointers to useful structs.
## [0.02] - 2023-03-11
### Added
- New widgets:
- `LibUI::Area` (very rough)
- `LibUI::ScrollingArea`
- New example scripts:
- `eg/demo.pl`: very basic, "Hello, World!" type of example
- `eg/widgets.pl`: demo of (nearly all) basic controls
- `eg/histogram.pl`: demo of `LibUI::Area` and related functions
- New enum and structs: `LibUI::Area::Handler`, `::KeyEvent`, `::MouseEvent`, `::Modifiers`
### Changed
- Renamed widgets to fit existing pattern:
- `LibUI::HorizontalSeparator` => `LibUI::HSeparator`
- `LibUI::VerticalSeparator` => `LibUI::VSeparator`
## [0.01] - 2022-12-07
### Added
- Original version
[Unreleased]: https://github.com/sanko/LibUI.pm/compare/v1.0.0...HEAD
[v1.0.0]: https://github.com/sanko/LibUI.pm/compare/0.02...v1.0.0
[0.02]: https://github.com/sanko/LibUI.pm/compare/0.01...0.02
[0.01]: https://github.com/sanko/LibUI.pm/releases/tag/0.01