JDFJDF/ docs

JDF Reader — desktop app

A native Tauri-based macOS app that reads, renders, edits, and auto-saves .jdf files (plain JSON) and .jdfx bundles (zip with embedded images / fonts). Imports PDFs and Markdown to JDF on the fly. Exports back to PDF.

Install

brew tap uurtech/jdf
brew install jdf

Installs JDF Reader.app into /Applications. Updates: brew upgrade --cask jdf.

Open documents

Edit a paragraph

Double-click any element. The whole paragraph (or heading, list item, table cell, collapsible title, image src/alt) becomes an inline editor. Type. Press Enter or click anywhere else — the change saves to disk in ~150 ms.

Restructure on hover

Hover any element. A floating toolbar appears in the top-right corner with ↑ Move up · ↓ Move down · ⧉ Duplicate · × Delete. No right-click, no menu hunting.

Insert new elements

The Insert bar at the top of every page lets you append a Text / Rich text / List / Table / Shape / Image / Section / TOC element with a single click.

Pages

The sidebar shows a colored mini-preview of every page. Click + for a new page. Hover any thumbnail and click the red × to delete it.

Memory model

Images & .jdfx bundles

JDF ships in two file shapes: .jdf (plain JSON, what you've been editing in any text editor) and .jdfx (zip bundle of document.json + manifest.json + assets/). The reader picks automatically: a document with embedded images / fonts saves as .jdfx; a text-only document stays .jdf. You can override the extension in the Save As dialog.

Both formats open the same way and have identical schemas inside; .jdfx just keeps the binary payload out of the JSON. document.json.meta remains the source of truth for content metadata (title, author, keywords); manifest.json only carries format metadata (version, generator, asset listing) — they never duplicate fields. Manifest schema: spec/jdfx-manifest-schema.json.

PDF import

Drag a .pdf onto the viewer and you get an editable JDF copy that looks identical to the original. Per text run the importer extracts: position (mm), font family, size, bold/italic, color, opacity, links. Vector shapes (rect, line, path) preserved with their fills and strokes. Embedded images placed at their original transform — saved as a .jdfx bundle so the binary payload lives in assets/ rather than bloating the JSON.

PDF export

Cmd+Shift+E or the toolbar PDF button. Honors page size, orientation, text colors, real TOC, embedded images. Renders text/richtext/list/table/collapsible/shape.

Undo / redo

Cmd+Z / Cmd+Shift+Z. 100-step history covering every text edit, structural change, and JSON commit.

Multiple windows

Cmd+N or the toolbar "New" button. Compare two documents side-by-side.

Keyboard shortcuts

ShortcutAction
Cmd+OOpen file
Cmd+WClose document
Cmd+NNew window
Cmd+SSave As .jdf
Cmd+Shift+EExport PDF
Cmd+Z / Cmd+Shift+ZUndo / redo
Cmd+FSearch
Cmd+BToggle sidebar
Cmd+DToggle dark mode
Cmd+PPrint
Cmd+= / Cmd+- / Cmd+0Zoom in / out / reset
Previous / next page
Double-clickEdit element
Enter / Esc / Cmd+EnterCommit / cancel / multi-line commit
?Show shortcut overlay

Linux and Windows

Builds (.deb, .AppImage, .rpm, .msi, .exe) are produced by GitHub Actions on every tag — see the latest release.