Repository navigation
v0.12.0 — Open and Stream Line-oriented CSV
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
csvsource-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.formatsimply gains thecsvvalue. No keys are removed or renamed. - No new keyboard shortcuts are added. The existing
networkStream/formatpreference can now holdcsv. - 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