Skip to content

VoidReader 1.2.0 — "Reading the Fine Print"

Latest

Choose a tag to compare

@github-actions github-actions released this 26 Apr 16:00
· 1 commit to main since this release

VoidReader 1.2.0 — "Reading the Fine Print"

The one where we learn what your document is about before you do

You know how every markdown file starts with a block of YAML that nobody reads? Turns out it's actually useful — title, author, tags, dates, all that metadata people carefully maintain and then scroll past. VoidReader now reads it for you and puts it somewhere nice.

Frontmatter Banner

Documents with YAML frontmatter (--- fenced at the top) now render a styled banner above the content. Key-value pairs display as labeled rows, and values that look like comma-separated lists (looking at you, tags:) wrap into tidy pills. It's the kind of thing you didn't know you wanted until you see it, and then you wonder why every markdown viewer doesn't do this.

Works in the reader, in print output, and in Quick Look previews — because metadata doesn't stop being metadata just because you hit ⌘P.

Scroll Percentage (Again)

Yes, again. Turns out 1.1's progressive rendering — the thing that made large documents load 134x faster — had a side effect: the scroll percentage was calculated against the initial chunk's height, not the full document. So you'd open a 50,000-row table, see "100%" immediately, and wonder if the document was really that short. It was not.

The fix is one line: recalculate scroll percentage when the denominator changes after progressive render completes. The regression test suite is considerably more than one line, because we're tired of fixing this.

Regression Tests

Four unit tests proving the progressive-render math stays honest, plus two UI tests that open pathological fixtures and verify the percentage starts at zero. CI generates the fixtures on the fly and cleans up after itself, because checking 50,000-row tables into git felt wrong.

Housekeeping

Centralized the code block chrome constants (header height, padding) into one place instead of three. Copilot noticed the drift risk before we did — credit where it's due.

Performance Lab

All four scenarios green, no regressions from frontmatter work:

Scenario Samples Idle Work Top App Frame
open-large 458 12 (2.6%) 433 (94.5%) VoidReaderApp.$main() 91%
scroll-to-bottom 768 14 (1.8%) 667 (86.8%) Low — no single hotspot
search-navigate 503 14 (2.8%) 471 (93.6%) MarkdownChunker.findFirstChunkEnd 0.6%
edit-toggle 2,248 1 (0.04%) 1,842 (81.9%) AttributedString.init 10.5%

The edit-toggle AttributedString dominance is known and pre-existing — it's CoreText doing legitimate work building styled text for the editor. Nothing new, nothing alarming.

Install / Update

brew install --cask lazypower/tap/voidreader
# or
brew upgrade --cask voidreader

Or grab the DMG from Releases.

Full Changelog: v1.1.0...v1.2.0

Co-authored with Claude Opus 4.6, who has now fixed the scroll percentage in three consecutive releases and is starting to take it personally.