Fixing
Plain sentences, one button, and nothing changed until you say so.
In the app
Fix all (⌘.) rewrites only the lines it names and greens them; Undo (⌘Z) restores the exact original bytes. A judgment call — a fix that could say something your document did not — is kept apart from the mechanical ones and applied only when you ask.
Records fix by the group: broken rows are gathered by cause, and one button fixes the group, or all of them.
Across the two shapes
A verb is implemented once per shape, not once per format. That is why a CSV gets the same tools as a webhook payload: both collapse to one of two shapes before any verb runs.
How the shapes differ for repair: Records groups fixes by cause.
- document · JSON, YAML, XML
- records · NDJSON, CSV, TSV, Markdown table, Log
What is fixed, per format
A whole document is fixed as one text — the lines it names, nothing else; a records format fixes rows grouped by cause, and a row that matches no pattern is kept and counted.
- JSON · the whole document, line by line, with undo
- YAML · the whole document, line by line, with undo
- XML · the whole document, line by line, with undo
- NDJSON · per record, grouped by cause
- CSV · the whole document, line by line, with undo
- TSV · the whole document, line by line, with undo
- Markdown table · per record, grouped by cause
- Log · per record, grouped by cause
A worked example
Fix all over the webhook sample: 46 fixes in 7 kinds: 31 × quote unquoted key, 7 × remove trailing comma, 3 × single → double quotes, 2 × python false → json false, 1 × insert missing comma after value, 1 × python true → json true, 1 × python none → json null. The first fixes, by line, as Show me lists them:
- line 2 · Single → double quotes · 'evt_1P8xQm2eZvKYlo2C' → "evt_1P8xQm2eZvKYlo2C"
- line 6 · Single → double quotes · 'payment_intent.succeeded' → "payment_intent.succeeded"
- line 13 · Single → double quotes · 'usd' → "usd"
- line 24 · Insert missing comma after value · " shipping: → ", shipping:
- line 2 · Quote unquoted key · id: → "id":
- line 3 · Quote unquoted key · object: → "object":