Skip to content

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 05 Oct 16:25
2ded6b6

0.6.0 (2026-10-05)

⚠ BREAKING CHANGES

  • the concrete cursors (CsvCursor, XlsxCursor, OdsCursor, ArchiveCursor, GzipCursor) and CsvDialectDetector are internal, so TabularFile.Open is the only way to a cursor; every public type is in the TriasDev.Tabular namespace, the format options included; CsvCursorOptions.Dialect is replaced by the Delimiter, Encoding and Quote hints and CsvDialect is output-only; the writer reports its limits as TabularWriteException (write.too-many-rows, write.too-many-merges, write.too-many-styles) instead of TabularLimitException; row numbers are int on both sides (TabularExport returns ValueTask, AnalysisProgress.RowsRead is int); HorizontalAlignment is CellHorizontalAlignment, TabularWriter.Style is RegisterStyle, CellStyle.Number and Date are NumberFormat and DateFormat; NumberFormat.Parse and DateFormat.Parse throw FormatException; typed import fields come only from their factories; CursorDiagnostics has no public constructor.

Features

  • count a column's rows that fall in a set of values (5b773ae)
  • declare field groups as alternatives in priority order (d819eff)
  • hand a mapper the group that locates its row (5b6ba1d)
  • judge field alternatives per row during extraction (8adec9f)
  • precheck what a mapping decides about field alternatives (a27d6c6)
  • read gzip-compressed files as the file inside them (#80) (78e1223)
  • read tar and tar.gz archives as one workbook (#82) (faf0be7)
  • report how each set of alternatives covers the rows (d691f7c)
  • review a whole file through a mapping before importing it (ac2758c)
  • write: cell styles for xlsx and ods (#90) (45dbca8)
  • write: ColumnBatch — rows given by column, typed, with a style per column (#93) (13f2807)
  • write: sheet layout — header style, frozen panes, auto-filter, merged cells (#91) (c158848)
  • write: TabularExport<T> — an export declared once with typed columns (#84) (78f2379)
  • write: TabularFormat.Zip — a zip of csv sheets (#94) (1e8e23c)
  • write: write csv through TabularWriter, round-tripping through the import (#77) (5de3450)
  • write: write OpenDocument spreadsheets through TabularWriter (#83) (8567fa1)
  • write: write xlsx through TabularWriter, with our own streaming zip writer (#81) (6451e59)

Bug Fixes

  • an invalid value locates nothing, an unneeded one costs nothing, and the precheck does not block AllOrNothing for rows that import (547cc20)
  • archive: refuse a tar metadata entry that claims more than it can hold, instead of letting TarReader's InvalidOperationException escape (#99) (7363a42), closes #92
  • csv: find the delimiter when the dialect probe ends inside a multi-line quoted field (#101) (916adf8)
  • the deferred archive and OpenDocument findings (#102) (d88ea71)
  • write: keep a failed write's exception on close; sheet options for a declared export (#98) (0fea097)

Code Refactoring

  • the public API's last breaking window before 0.6.0 (#108) (8d6825a)