Skip to content

Changelog

The same API as 1.0.0, with documentation: nothing to change in your code.

  • An install page and ten guides of one task each, in docs/: a first list in an app, keys and clicks, columns, sections, ranges, a scrollbar and a count, styles, rows rewritten in place, 100,000 items built on demand, and running the benchmarks. Their examples run as tests.
  • Every release now carries docs-vX.Y.Z.tar.gz, those pages with an overview, the changelog and the API reference, built by bin/docs-bundle.

pito-list reaches 1.0.0 with the same API as 0.8.0: nothing to change in your code.

  • A new README: every feature shown with a clip, a still or a chart, the measured numbers up front (about 0.3 ms a frame for 20,000 rows, no allocations in a warm frame, 70× faster than a ratatui Table built from every row) and a first-use example.
  • examples/versus.rs, which draws the same 20,000 items with pito-list and with ratatui’s Table and prints each one’s frame time and allocations.
  • docs/guide.md: every feature in detail, the whole API and the full example.
  • The LICENSE file holds the MIT licence alone, TRADEMARKS.md says the names and logos stay reserved, and the brand reads PITO MD.
  • CI runs the whole gate on Linux, Windows and macOS on every push and nightly.
  • An opt-in scrollbar and a count of the rows on screen: ListView::scrollbar and ListView::count, with List::shown() and List::position() for an app’s own footer.
  • The demo quits as every PITO TUI does, on ctrl+c pressed twice.
  • Shared, a ready source over an Arc<Vec<T>> of the app’s own items that builds a row only when a draw or a key asks for it, through a closure or a Build<T> type; Arc<Vec<Row>> and Arc<[Row]> are sources too.
  • A demo example, whose clip opens the README, which points to PITO at https://pitomd.com.
  • A code of conduct, a security policy and CI on GitHub.
  • The licence’s copyright line carries the owner’s legal name with its diacritics, Cătălin Ilinca.
  • The gate is tiered: bin/gate --fast for every commit, the full gate before a merge, nightly and before every tag.
  • A list drew past the right edge of its area when its pinned columns’ minimums didn’t fit; every write now clips to the list’s own area.
  • Styles::cursor for a marker drawn in its own style over the selected line, List::columns() with each drawn column’s index, position and width, and Column::fit for columns as wide as their widest cell on screen.
  • Cell::set_style, Cell::set_part_style and Mark::set_style, which restyle a cell, one part or a mark in place.
  • A selected range for Visual modes, with the marker on the cursor row only, kept colours under the selection, a styled header with a key column, and rows rewritten in place without allocating.
  • Section headings and blank rows the cursor skips, cells of several styled parts, a cell running to the end of the row, a flexible column, lazy rows through the Source trait, and paging by cursor or view.
  • With an end line and one line left for rows, the selected last row no longer scrolls out behind the end line.
  • A base style that blank cells take, so a page background an app paints shows under the list.
  • Selectable list rows for ratatui apps, with a bold marker on the selected row and padded columns that drop by priority, a clipped last column, scrolling, paging and click hits.