ef79a39721
Add CSV import functionality
...
- Use csv crate for robust CSV parsing (handles quoted fields, empty values, \r\n)
- Extend --import command to auto-detect format by file extension (.csv or .json)
- Reuse existing ImportPipeline and analyzer for field type detection
- Categories detected automatically (string fields), measures for numeric fields
- Updated help text and welcome screen to mention CSV support
All 201 tests pass.
2026-04-01 01:32:19 -07:00
09caf815d3
test: add proptest property-based tests
...
Add proptest dependency and property tests for:
- CellKey: key normalization invariants (sort order, dedup, round-trip,
prefix non-equality, merge commutativity)
- View: axis exclusivity, set_axis, idempotency, page_selection roundtrip,
hide/show roundtrip, toggle_group_collapse involution
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-24 00:10:44 -07:00
eae00522e2
Initial implementation of Improvise TUI
...
Multi-dimensional data modeling terminal application with:
- Core data model: categories, items, groups, sparse cell store
- Formula system: recursive-descent parser, named formulas, WHERE clauses
- View system: Row/Column/Page axes, tile-based pivot, page slicing
- JSON import wizard (interactive TUI + headless auto-mode)
- Command layer: all mutations via typed Command enum for headless replay
- TUI: Ratatui grid, tile bar, formula/category/view panels, help overlay
- Persistence: .improv (JSON), .improv.gz (gzip), CSV export, autosave
- Static binary via x86_64-unknown-linux-musl + nix flake devShell
- Headless mode: --cmd '{"op":"..."}' and --script file.jsonl
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-20 21:11:55 -07:00