Pimp My IDE / line inspector
Back to garage
October 3, 2026 | editors / logs / agent receipts

Put the event stream on glass.

JSON Lines keeps one record on each line. A table can reveal patterns across those records. Keep both views because neither can replace the other.

Use JSONL for event records that need to append, stream, filter, and survive partial inspection. Keep line order, identifiers, status, and evidence pointers inside each record.

A table preview is a small feature with a useful opinion.

Zed 1.23.1-pre adds JSONL and NDJSON to its tabular data preview. The preview opens beside the source. The release is marked as a prerelease, so this is a current preview feature rather than a settled stable contract.[1]

The implementation pull request explains the behavior. Each nonblank line must be a JSON object. Top-level keys become columns in first-seen order. Later keys add columns. Nested values stay compact JSON. Missing fields, JSON null, the string "null", and an empty string remain different values.[2]

Keep the source as the receipt. Use the table as the inspection light.

One line gives failure a location.

The JSON Lines format has three short rules. Use UTF-8. Put one valid JSON value on each line. Separate values with a line terminator. Its documentation recommends a final line terminator because that makes concatenation easier.[3]

For agent runs, one record per line gives every event a stable physical location. A parser can report line 37 without rejecting the identity of lines 1 through 36. A shell pipeline can start reading before the producer closes the file. An append does not require rewriting one large array.

A row needs enough identity to stand alone.

A useful event record names the run, sequence, time, event, status, and evidence pointer. Add task or tool identifiers when one run can contain parallel work. Do not make the reader infer order from timestamps alone. Clocks can repeat, drift, or arrive out of order.

Keep status words small and fixed. For example, use open, ok, error, and review. Put free text in a separate message field. If every producer invents a new status sentence, the table gains columns but loses a usable filter.

The table is not the storage contract.

Zed's pull request says the preview is read-only and parses the full file. It also says large-file performance was not benchmarked in that change. Those limits matter. A pleasant table does not make an unbounded trace cheap, durable, or safe to open.[2]

Keep rotation and retention outside the editor. Redact secrets before they reach the file. Treat nested payloads as links or bounded summaries when they can grow. If an evidence object is large, store its path and hash in the event rather than copying the whole object into every line.

Query the stream without erasing the stream.

The jq manual says jq reads a sequence of JSON values and runs the filter on each value. Its compact-output option writes each result as one line. That makes jq a natural inspection tool for JSONL without first wrapping the records in an array.[4]

Use jq -c 'select(.status == "error")' events.jsonl to extract error records while preserving one record per output line. Save the filter beside a runbook when it carries operational meaning. The command is part of the review method, not disposable terminal history.

Interactive makeover / event stream light table

Inspect the lines without losing the lines.

This replaces a raw-log-only view with one joined control. Edit the source, filter its status, inspect the table, and copy the matching jq command. The raw text remains the source of truth.

Source
Parse
Inspect

Source reel

Data stays in this browser tab. Blank lines are ignored. Inspection is limited to the first 200 nonblank lines.

Filter events by status

Inspection glass

Column order follows first appearance. A missing key, JSON null, the string "null", and an empty string get separate labels.

4 records parsed4 shown
This browser tool parses a small pasted sample. It does not stream a live file, preserve numeric precision beyond the browser's JSON parser, redact secrets, verify event truth, benchmark large files, or write a durable receipt.

Sources read

Source log and evidence boundary
  1. Zed 1.23.1-pre release notes, published September 30 and read October 3, 2026. They announce JSONL and NDJSON table previews and give the preview shortcuts. GitHub marks the release as a prerelease.
  2. Zed pull request 64471, merged September 24 and read October 3, 2026. It documents object-only rows, first-seen columns, null handling, line-numbered errors, read-only behavior, full-file parsing, tests, platform coverage, and the missing large-file benchmark.
  3. JSON Lines format documentation, read October 3, 2026. It supplies the UTF-8, one-value-per-line, and line-terminator requirements plus the recommendation for a final terminator.
  4. jq 1.8 manual, read October 3, 2026. It documents sequence input, per-value filtering, and compact newline-separated output.

Evidence boundary. The six-field event record, status vocabulary, retention advice, and light-table interaction are Pimp My IDE's editorial recommendations. This page did not build Zed, benchmark its preview, or test large files. The local inspector handles at most 200 nonblank lines and accepts object records only.