facett-icebergview — browse and time-travel one Iceberg table, drawn
from Arrow RecordBatches. The component is engine-agnostic: you hand
it, per Iceberg snapshot, the snapshot's metadata + its materialized Arrow
frame; it renders a snapshot picker (newest-first, showing snapshot id /
timestamp / row-count) over a virtualized, paged row grid (the rows come
from [facett_table::Table], built from the batch via [facett_arrow]).
Selecting a snapshot loads that snapshot's frame — time travel.
Like every facett component it implements [Facet] (title / ui /
state_json), so it drops into a FacetDeck and is robot-testable through
facett_core::harness: drive [IcebergView::select_snapshot] / [IcebergView::set_page]
headlessly and assert state_json (the current snapshot, the snapshot list,
and the visible rows all change). state_json exposes:
table— the table name,snapshots— every snapshot newest-first (id,timestamp_ms,rows),current— the selected snapshot id,total_rows/page/page_size/visible_rows— the paged view.
Why not just facett-table? A table viewer shows one frame. This adds
the Iceberg dimension — the history of snapshots and the control to scrub
between them — which is the whole point of a lakehouse table browser. The
adapter that fills it from a real catalog (skade) lives host-side (korp /
nornir) so this crate never takes a hard catalog/engine dependency.