v1.10.0
A feature and robustness release: a new terminal heatmap view, a major
upgrade to the Qt6 desktop GUI (vvg), and the remaining high-severity
correctness/OOM fixes from the code audit.
Added
--heatmap— render the numeric columns as a colour heatmap in the
terminal (rows × numeric-columns, globally normalised, viridis palette).
--image-modeselects the backend:auto(kitty graphics if supported, else
half-block),kitty,sixel,halfblock, orascii. When stdout is not a
terminal a plain ASCII intensity grid is written instead of raw escape
sequences.- Qt6 GUI (
vvg) — a real desktop application: menu bar, File▸Open
(multi-file → tabs), drag-and-drop, recent files, and error dialogs; a
genomic region/tabix query bar with a pileup toggle (re-opens BAM/VCF/BED
over a region); a View menu (column show/hide, go-to-row, shortcuts help).
Filtering, sorting and find now run off the UI thread with a progress bar
and a Cancel button, so the window stays responsive on large files.
Fixed
- HDF5 / AnnData — a dense
Xmatrix tab is previewed (first 1000 rows ×
200 columns) instead of densifying the entire matrix into RAM, which could
OOM/abort the reader on a real dataset. - Workbooks (XLSX & ODS) — a row wider than the header no longer makes
Arrow reject the whole sheet; every row is padded to the widest and the
overflow header columns are namedcolN. - ODS —
table:number-rows-repeatedon a non-empty row now expands to N
rows (capped) instead of silently dropping the duplicates. - TUI — sort / filter / stats / search drain a streaming source to EOF
first, so they cover the whole file instead of only the chunks scrolled
through so far. --heatmap—Inf/NaNcells no longer poison normalization (they're
treated as gaps); the scan buffer is bounded; non-TTY output is guarded.- KDE plugins — the Dolphin thumbnailer and KFileMetaData extractor handle
malformed input gracefully (empty result, no worker abort).
Performance
- GUI — row→chunk mapping is
O(log chunks)via a cumulative-offset binary
search (wasO(chunks)per cell); find navigates a precomputed match list in
O(log matches)and uses an Arrowmatch_substringprefilter for literals.
Docs
- Documented
--heatmap/--image-mode, NumPy.npz/.npy, and.fods
across--help, the man page, the README, and the bash/fish/zsh completions;
clarified that the KF6 GUI plugins are optional.