docs
Features
The tour, grouped by what you're doing: reading, reviewing, browsing GitHub, editing, and getting documents back out. PullMark is deliberately not a full review client — it shows the Markdown in a change; your usual tools remain right for the code.
Reading
- GitHub-faithful rendering — tables, task lists,
footnotes, alerts, collapsible
<details>, syntax highlighting, Mermaid diagrams, and KaTeX math ($…$/$$…$$), all offline. A paragraph of just[toc]becomes a linked table of contents;==highlight==,~sub~,^sup^render too. - Click to inspect — images, diagrams, and block formulas open in a pan-and-zoom overlay; Save As… and Share export exactly what you're inspecting (diagrams as real SVG).
- Live files — documents re-render when saved from any editor; relative images and links resolve, and clicking a link to another Markdown file opens it in place (as a preview when it lives in an open Location).
- Navigation — the outline sidebar (⌥⌘O), ⌘F find-in-page, ⇧⌘F search across every file in the sidebar, and ⌘K Open Quickly for headings, files, PRs, recents — or paste a path or GitHub URL straight into it.
- Blame at reading altitude — a quiet gutter of
authorship: one avatar per run of blocks, hover for the commit,
click through for line history. GitHub's blame API where the file
lives on GitHub, plain
git blameotherwise. - Reading comfort — themes, content width, line numbers (Settings), browser-style zoom, light/dark, full screen, and reading positions remembered per document.
Reviewing pull requests
- Rendered diffs — added, removed, and changed blocks highlighted in the rendered page, word-level diffs where the edit is small enough to make sense, inline or side-by-side (⌥⌘L), plus the raw Source Diff (⌘2) and the final Result (⌘3). Moved paragraphs get a quiet "moved" chip instead of red-plus-green noise.
- Review threads in place — existing comments appear under the blocks they discuss; hover a block to Start a review, Add single comment, or Add a suggestion (and the pencil edits the block as a suggestion). Reviews submit with a verdict, or save to GitHub as a pending review.
- Where the PR stands — the overview header shows the review decision (approved, changes requested, review required), every reviewer's verdict as badged avatars with awaited reviewers alongside, and a CI checks capsule that opens into the full check list — durations, required tags, and a link to each check's logs. It all refreshes quietly every minute.
- The conversation, readable — one chronological timeline on the overview: comments and review verdicts in order, each review's inline comments nested under its summary with the file they discuss named on the card. Reactions, edits and deletes on your own comments, and the comment box at the timeline's foot. On for everyone (Settings ▸ General ▸ Reviewing tucks the threads away).
- Stays current — open PRs are checked every minute; a banner offers refresh when the branch moves, and your draft comments survive. Comments written offline queue and upload when they can.
- Review requests — PRs awaiting your review, in the sidebar with unread counts. PR images and repo-relative links resolve at the PR's commit.
GitHub, without the browser
- Markdown links open in-app — click a
github.com/…/blob/…link and PullMark renders it (the first click asks; ⌘-click inverts your default). A provenance bar pinsowner/repo @ ref · pathwith a way back to GitHub. - Browse whole repos — load a repo's Markdown tree into Locations, switch branches, compare against other branches, view blame — private repos use the credentials PRs already use, and nothing fetched ever touches disk.
- Branches and worktrees — local checkouts wear a branch chip; its menu opens worktrees as their own Locations and reads other branches remotely. Local always beats remote when a worktree already has the branch.
Editing and committing
- Edit in place — a block's pencil (or ⌘E for the whole document) turns blocks into editors inside the rendered page; ⌘↩ saves, Esc cancels. Saves are guarded against the file changing underneath, and versioned for Revert Last Edit.
- Commit from the app — ⌃⌘K opens the commit sheet for the file's repo: pick files, write the message, optionally push, with a guard before committing straight to main.
Comparing with history
- Any file, any revision — the toolbar's Compare button (the clock and chevron) diffs the working file against any of its last 25 commits, or any local or remote branch — rendered, with the changed words highlighted, exactly like a pull request. A quiet dot on the button means the file has uncommitted changes.
- "What did I just change?" — one menu item
(View → Compare with Last Commit) or one shell
command (
pullmark --diff file.md, see the CLI). The diff keeps up as the file keeps changing — watch an agent's edits land, highlighted, as they save.
Getting documents out
- Export — PDF (one continuous page) or fully self-contained HTML; Share sends the document anywhere macOS can.
- Copy in two flavors — ⌘C is rich text for Docs/Slack; ⌥⌘C is the underlying Markdown.
- Print — ⌘P, at 100% regardless of zoom.
- Quick Look — Space in Finder previews Markdown with PullMark's own rendering.
A toolbar that's yours
Right-click the toolbar — or View → Customize Toolbar… — for the native customization palette: drag out what you never use, rearrange the rest, add Flexible Space. Each kind of view keeps its own arrangement, remembered across launches: a local file, a GitHub doc, a pull request file, and the PR overview are separate toolbars, and you customize each one while you're in it — the same way Mail's compose window keeps its own toolbar.
Beyond the default set, the palette holds items that start hidden: a raw-Source toggle, Zoom In / Actual Size / Zoom Out, the Content Width picker, Add Margin Note (while the feature is on), and for GitHub docs Share — the document's github.com page, never a raw link — and Reload, which re-resolves a branch to its current tip and stays disabled, with the reason, for documents opened at a specific commit. Out of the box nothing changes; the palette holds the rest. The Toolbar lists every view's items.
Everything else
- Windows and tabs — ⌘N opens an independent window; merge into native tabs. External opens land in the frontmost window.
- The
pullmarkcommand — files, folders, and worktrees from any terminal. See Command Line. - Default-app control — make PullMark the
.mdhandler in one click, and it notices if an upgrade drops the binding. - Built-in updates — signed, notarized releases with one-click update and a What's New sheet.
- Privacy posture — GitHub content is fetched over the API and kept in memory, and documents are never copied anywhere. The privacy page has the full story.