Skip to content

v0.12.0 — Open and Stream Line-oriented CSV

Choose a tag to compare

@jan-moravec jan-moravec released this 22 Jun 11:53
ec2fe5a

CSV joins JSON Lines and logfmt as the third format available across files, live tail, and network ingestion. This release is intended for line-oriented, comma-separated logs and exports: it supports common RFC 4180 quoting conventions, but not multiline quoted records.

What’s new

  • Open CSV files. Use File → Open… (Ctrl+O) or drag and drop. Each file in a multi-file queue is detected independently, so CSV, JSON Lines, and logfmt can be merged into one table. The file picker now includes *.csv, while content—not the extension—still selects the parser.
  • Tail CSV files. Use File → Open Log Stream… (Ctrl+Shift+O). The first non-blank line establishes the column schema, and subsequent lines become records with the same live-tail controls and retention behavior as the other formats.
  • Receive CSV over the network. Open File → Open Network Stream… (Ctrl+Shift+L) and choose CSV from Format. The first inbound line becomes the header for the entire session.
  • Keep the format with the session. CSV is stored as the csv source-format value, so restored sessions select the same parser automatically.

Accepted CSV

Input is comma-delimited and requires a header on the first non-blank line. CRLF and LF line endings are accepted, and a UTF-8 BOM is stripped when it appears at the start of the header. Quoted cells may contain commas and use "" for a literal quote. Duplicate headers remain addressable: later occurrences are renamed with _2, _3, and so on.

Bare cells share logfmt’s typing rules: empty cells read as null, booleans and decimal numbers receive typed values, and other content stays text. Quoted cells always stay strings, so "42" is not converted to a number. Rows with missing trailing cells expose null values; rows with cells beyond the header width are reported as errors. Auto-detection looks for a plausible header with at least two cells and a following non-blank row with the same cell count.

Important limitations

  • This is not strict RFC 4180 support. A quoted cell must open and close on the same physical line. Multiline quoted records are split at newline boundaries and rejected with Unterminated quoted value.
  • During live-tail rotation, a replacement file’s header is treated as a data row. Stop and reopen the file to establish the new header correctly.
  • With multiple TCP clients, whichever first line arrives first sets the schema for every client. Use identical headers and column order, or restrict CSV sessions to one producer.
  • Alternative delimiters and headerless CSV are not supported.

Compatibility

  • Existing v0.11.0 sessions continue to load unchanged; source.format simply gains the csv value. No keys are removed or renamed.
  • No new keyboard shortcuts are added. The existing networkStream/format preference can now hold csv.
  • Public parsing entry points remain stable; the decoder return-type changes are confined to internal headers.
  • Packages remain available for Ubuntu 22.04-compatible Linux systems, Windows 10/11, and macOS 12+, with SHA-256 checksums.

Full changelog: v0.11.0...v0.12.0