Skip to content

Readout 3.0.1

Choose a tag to compare

@github-actions github-actions released this 11 Oct 03:09
8cd88b1

3.0.1

A correctness and privacy hardening release. No new features, no format
changes — everything below is a fix verified by the new release pipeline
(signed-product smoke tests, WebKit patch-engine tests, Core unit tests).

Fixed

  • Document headings such as ## Notice no longer inherit the reader's own
    element styles or steal #fragment links; interface ids now live under
    ro-, and ro--prefixed slugs gain an h- prefix (#3).
  • "Show Only Changes" keeps the reading position: hidden blocks no longer
    break anchor capture/restore, and the resize compensator no longer
    double-corrects filter reflow (#4).
  • Writes that land during the first load are replayed right after the
    initial patch instead of being lost until the next write
    (#6).
  • Resume prefers the excerpt match nearest the saved position when several
    blocks look alike (#6).
  • Word count and reading time cover prose blocks only (code, math,
    diagrams, raw HTML and front matter excluded); don't counts as one
    word; timing is mixed-pace Latin 230 wpm + CJK 450 cpm
    (#6).
  • Background update checks never pop up: they add a menu item that opens
    the release page; the manual-check dialog shows plain-text notes with a
    "View Full Release Notes" button (#6).
  • The Welcome window height follows the recent-file count instead of
    jumping between two fixed sizes; change-rail buttons use localized
    labels (#6).
  • Heading-id collision tests now also assert alignment-sensitive styles,
    and the fragment test starts scrolled at the bottom
    (#6).

Privacy

  • The renderer Content-Security-Policy allows no http:/https: sources
    at all: background images, video posters, SVG images, image inputs,
    table backgrounds and srcset candidates can no longer phone home at
    render time. Remote images load only on click, downloaded by the app
    without cookies (15 s timeout, 20 MB cap, image/* only); video/audio
    open externally; Quick Look never loads remotely
    (#5).
  • The in-app privacy wording is now exact: nothing is fetched at render
    time; the only automatic networking is the weekly update check, which
    can be turned off in Settings (#5).
  • HTML sanitizing neutralizes navigation-capable tags (meta refresh,
    base, form, link) so they cannot survive parsing
    (#7).

Process

  • Releases now ship only the verified signed artifact: Release build +
    ad-hoc sign + boot from /Applications + smoke assertions + Quick Look
    check, published as draft, re-download-verified, then undrafted
    (#1).
  • Preflight gates every release on tag format, strict semver growth,
    release notes, MARKETING_VERSION, tag-on-main, and green CI on the
    tagged commit; manual dispatches only re-run existing tags
    (#1, #2).
  • v1.0.0 (which crashed at launch inside dyld) carries a do-not-use
    warning and no longer offers downloads.