I am happy to announce the release of the ratatui_ruby library v0.9.0
under the terms of the Lesser GNU General Public License, version 3.0
or later (LGPL-3.0-or-later). Thanks to Mike Perham for bringing this
license to my attention.
The roadmap is now public. Planned gems include `ratatui_ruby-tea` for
Model-View-Update architecture, `ratatui_ruby-kit` for retained-mode
components, and `ratatui_ruby-framework` for an omakase TUI experience.
The wiki index documents the full architecture.
This release adds ergonomic APIs that reduce boilerplate. State query
predicates, symbol constants, CSS-inspired constraint aliases, and
navigation methods make common tasks more intuitive.
Licensing changes:
* **LGPL-3.0-or-later Library.**
Library code (`lib/`, `sig/`) is now LGPL. Proprietary applications
can link against the library. Library modifications remain open source.
* **MIT-0 Snippets.**
Documentation code snippets are now MIT-0. Copy example code without
attribution requirements.
What is new:
* **State Query Predicates.**
Widgets now answer questions about their state. `List#selected?`
returns true if an item is selected. `Table#row_selected?`,
`Table#column_selected?`, and `Table#cell_selected?` check selection
state. `Gauge#filled?` and `Gauge#complete?` check progress. Both
`List` and `Table` respond to `empty?`.
* **Symbol Constants.**
Enum-style parameters now expose named constants for IDE autocomplete.
`List::HIGHLIGHT_ALWAYS`, `Table::FLEX_CENTER`,
`Layout::Layout::DIRECTION_VERTICAL`. Self-documenting code replaces
magic symbols.
* **CSS-Inspired Constraint Aliases.**
The TUI facade provides familiar constraint names. `fixed(n)` aliases
`constraint_length`. `percent(n)` aliases `constraint_percentage`.
`flex(n)` and `fr(n)` alias `constraint_fill`. `split(...)` aliases
`layout_split`. Cleaner layout code for developers who think in CSS.
* **ListState Navigation.**
`ListState` now provides `select_next`, `select_previous`,
`select_first`, and `select_last`. These methods handle edge cases
automatically. `select_next` selects the first item if nothing is
selected. `select_previous` selects the last.
* **Rect Geometry Methods.**
`Rect` exposes edge accessors (`left`, `right`, `top`, `bottom`),
size queries (`area`, `empty?`), and geometry transformations
(`union`, `inner`, `offset`, `clamp`). Iterators (`rows`, `columns`,
`positions`) yield slices or coordinates for hit testing and layout.
Documentation:
* **Ecosystem Roadmap.**
The wiki index is now the canonical architecture document. It defines
the ecosystem layers, Big Tent philosophy, Tea/Kit paths, licensing
model, and roadmap. One document explains what RatatuiRuby is and
where it is going.
* **Migration Guides in Wiki.**
Migration guides now live in the wiki instead of the main repository.
The v0.7.0 namespace restructure guide is the first to move.
* **Ecosystem Drafts Archive.**
The AI-assisted planning documents from the exploration phase are
now archived in the wiki. A timeline index reconstructs the
six phases from Fruit Proposals through Roadmap Documents.
Historical context for understanding how the architecture evolved.
Breaking changes:
- `assert_snapshot` removed. Use `assert_plain_snapshot` or
`assert_snapshots` instead.
- `Block#border_color` removed. Use `border_style: Style.new(fg: color)`
for equivalent functionality.
- `LineChart` removed. Use `Chart` with `Dataset.new(graph_type: :line)`
instead. See `examples/widget_chart/` for usage.
Full changelog: https://git.sr.ht/~kerrick/ratatui_ruby/tree/v0.9.0/item/CHANGELOG.md
Gem: https://rubygems.org/gems/ratatui_ruby
Source: https://git.sr.ht/~kerrick/ratatui_ruby
Wiki: https://man.sr.ht/~kerrick/ratatui_ruby