Skip to content

0.1.5 - 2026-09-22

Choose a tag to compare

@github-actions github-actions released this 22 Sep 05:31
95bd9fb

Release Notes

This release adds a downloadable font catalogue, a table-of-contents drawer, collapsible <details> blocks, and theme-colored Mermaid diagrams.

Added

  • Let a stylesheet draw Mermaid diagrams in its own colors with a [mermaid] table: a built-in preset plus any of the renderer's fields, overlaid field by field as [page] is. font_family names fontdef ids the way a rule's font does. Diagrams measure and draw with the reader's own faces — the theme's list, then the body's Han faces for a cluster the list cannot draw, downloads and --fonts included — so a Chinese label keeps the reader's regional face. The bundled dark reader themes use it now, so they no longer show diagrams on white paper.
  • Add a persisted scroll-speed preference (0.5×–2×, in Settings) that scales every wheel notch and arrow step.
  • Add a table-of-contents drawer (Ctrl+B, or the toolbar's outline button) that lists a document's headings, highlights the reading position, and jumps to a heading through the ordinary anchor path; it is an overlay, so the document keeps scrolling and selecting behind it, while an open panel or confirmation keeps input precedence over it. A heading near the end scrolls to the top too, using the blank tail the other scroll paths already reach.
  • Declare downloadable font families with [[font-family]], independent of fontdef: a family lists the names it may already have (any of them being installed skips the download), optional description, SPDX license and homepage, and one or more mirror sources. A source is either a set of direct files or an archive whose container is recognized from its own bytes and whose members are picked by **-style patterns, with an optional sha256 and a 2 GiB archive cap; a failed mirror is removed before the next one runs. fontdef.urls is gone with it.
  • Give the settings panel three tabs — Generic, Styles and Fonts — and put the whole font catalogue on the Fonts tab: every family the builtin recommendations and the catalogued stylesheets declare, with its name, description, license, size and owner, filters by source and state, one download and one cancel per family, and an Open fonts folder button. Styles no longer mention fonts at all.
  • Add markview fonts list|download|path|verify, and move the diagnostic modes to subcommands (render, pdf, bench, latency, smoke-test) parsed with clap; markview FILE still opens the reader, and the old --render-style flags now name the subcommand that replaced them.
  • Recommend Noto in the reader itself: the builtin stylesheet declares Noto Serif, Noto Sans, Noto Sans Mono, Noto Serif CJK SC and Noto Sans CJK SC, each mirroring the official GitHub release archive with jsDelivr, the canonical ctan.org redirector and the Tsinghua CTAN mirror, and downloading every static weight its mirrors publish—the nine Latin weights with their italics, seven per Chinese subset.
  • Offer Noto Color Emoji as a downloadable family, mirrored from GitHub, jsDelivr, ctan.org and the Tsinghua CTAN mirror.
  • Accept a color bitmap face as a font download: CBDT/CBLC or sbix strikes count beside the outline tables, since the rasterizer already draws them.
  • Offer Fira Code as a downloadable family, from the upstream variable release and from Arch's ttf-fira-code package on archlinux.org and the Tsinghua mirror.
  • Cache network images on disk beneath the configuration directory: honor Cache-Control/Expires, revalidate stale entries, hold at most 128 MiB with LRU eviction, and serve a cached body under --offline.
  • Render a raw <details> block as a collapsible element: clicking its summary toggles a Markdown body (nesting and open supported), details and summary join the MVSS vocabulary, and both exports show every body expanded.
  • Render a mermaid fenced block as a diagram: the library runs on the image workers, its SVG and pixels are cached per source, and the result appears in the window, --render, --pdf and --smoke-test, while a broken diagram keeps the image placeholder and --offline still renders local diagrams.
  • Measure per-frame scroll pacing in --bench over a cold, warm and prewarmed pass: prepare and total percentiles, frames over the 120 Hz and 60 Hz budgets, glyphs rasterized in and out of the frame, and atlas pressure, including for a document with no geometry.
  • Support independent box edges and corners, heading markers, letter spacing, position conditions and pagination hints in reader and PDF output.
  • Add paper-edge rules under page.header and page.footer, with symmetric rule_width/rule_color decorations for PDF and PNG exports.

Changed

  • Redesign the Settings header with a persistent title and clickable Generic, Styles and Fonts tabs.

  • Draw the Styles page's order buttons as borderless vector arrows, matching the rest of the chrome instead of text glyphs.

  • Replace the Styles and Fonts pages' paging arrows with a scrolling list that shares the panel's wheel and scrollbar, clipping each row to the visible band.

  • Prepare Mermaid fonts and SVGs on the image workers, allowing the first layout to publish before a cold font collection is ready.

  • Load restricted SVG fonts only from configured Mermaid, SVG generic, and selected CJK fontdef candidates, avoiding full system-font materialization on first open.

  • Keep a diagram's parsed source across a theme change, so a new [mermaid] table redraws the diagrams already on screen without parsing them again.

  • Honor the system's per-axis lines- and characters-per-notch on Windows and count a Linux wheel detent as the usual three lines instead of one.

  • Ease discrete scroll requests and wheel notches for 120–400 ms: Page Up/Down, Space, Home/End, the arrow steps, a click on the scrollbar track and a #heading jump, with a reversing wheel taking over from the displayed offset, while a thumb drag stays immediate and ends a running animation.

  • Expand the <details> elements framing a heading a #anchor link or outline entry names, so a jump into a collapsed body reaches it instead of reporting it missing.

  • Hold a wheel gesture to the axis its first few moments chose, separated by the boundary the platform reports or by a pause where it reports none and inheriting nothing from the gesture before it, so a diagonal trackpad gesture no longer stops the page or slips a wide formula away, and a sideways gesture over no wide block still scrolls by the vertical motion it carries.

  • Prepare the screenful below in idle frames, leaving the visible frame's image demand alone, so no scroll frame rasterizes a glyph once a document is open: the worst such frame on a 100 KiB CJK document falls from 2.6 ms to 0.6 ms.

  • Reuse the PDF writer's font and stylesheet caches across a watch session's rebuilds instead of rebuilding them on every export.

  • Export PDFs about 40% faster: transparent fills are no longer written, an inline run's background is one rectangle instead of one per cluster, and a formula's glyphs leave as runs rather than one text object each.

  • Compare readers against SuperGoodViewer in the README tables, adding its open time and a resident-memory table for all three readers.

  • Measure each reader's resident memory and record readers that fail to render a fixture, instead of timing their compile-error window.

Fixed

  • Close the table of contents when clicking outside its drawer.
  • Make platform and image-cache tests portable across macOS, Linux and Windows.
  • Fix <details> parsing and interaction edge cases: tags that share a block and elements nested in the opening block still match, a summary stays with its own element, a quoted body is not quoted twice, references and footnotes defined outside the element resolve, identical elements toggle independently, and adjacent elements keep their content and nesting budget.
  • Reject pathologically nested Mermaid labels and render the diagram on a stack sized for the worst case the source cap allows, so a fence that passes the size bounds can no longer abort the reader.
  • Keep a Mermaid diagram's fence source out of the reading text, so selecting the figure no longer copies the source and a loading or failed diagram copies its placeholder message instead.
  • Remove soft line breaks from Chinese Markdown prose to avoid inserting spaces.
  • Name the download client with a User-Agent, so a mirror like Tsinghua's Arch repository answers instead of refusing an anonymous request.
  • Name Noto Serif SC and Noto Sans SC in the bundled Chinese fontdef lists, so the subset faces a download installs are actually shaped instead of being skipped.

Install markview 0.1.5

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/szdytom/markview/releases/download/v0.1.5/markview-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/szdytom/markview/releases/download/v0.1.5/markview-installer.ps1 | iex"

Download markview 0.1.5

File Platform Checksum
markview-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
markview-x86_64-pc-windows-msvc.zip x64 Windows checksum
markview-x86_64-pc-windows-msvc.msi x64 Windows checksum
markview-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum