Repository navigation
Releases: szdytom/markview
Release list
0.2.0 - 2026-10-06
Release Notes
Highlights:
- A native Android app for phones and tablets, sharing settings, tabs, fonts, image caching and export with the desktop reader.
- Tabs, reading positions and open disclosures restored on the next launch.
- Tabs drawn into platform-style window chrome, with a System, macOS, Windows or Linux layout choice.
- Windows precision touchpad panning that follows the finger and the system's own inertia.
- MVSS themes with per-rule media filters, instance-local registration and dynamic theme selection.
- Continued robustness and security hardening.
Added
-
Restore tabs, reading positions and disclosure states across launches with an optional desktop setting; Android keeps sessions by default.
-
Add MVSS
marker_widthfor theme-controlled list marker columns, with automatic expansion for wide numbers and checkboxes. -
Add per-rule MVSS
mediafilters with OR matching; resolve shared parsed declarations on environment changes, keeping media checks outside rendering. -
Add a localized Android “Read in Markview” open/share entry for Markdown files, including generic attachments and URI shares supplied through
ClipData. -
Run Android phone, tablet and sw600dp boundary integration tests in GitHub Actions, and attach signed APKs and checksums to releases.
-
Open the phone Tabs Drawer with a right swipe and right-side Contents with a left swipe on any touchscreen, including tablets and desktop computers.
-
Include Android mobile mode and smallest width in a single About and copied-diagnostics line.
-
Add MV4A (MarkView as a Android App), sharing desktop settings, tabs, fonts, image caching and export, with Android document access, touch adaptation and emulator integration tests; the installed app is named Markview.
-
Pan a Windows precision touchpad through Direct Manipulation, so the finger's contact and the OS's own inertia move the page as one motion;
MARKVIEW_NO_DMkeeps the wheel paths. The pan yields to scrollbar, selection and viewer drags, and focus loss, resize, reload, a panel opening or a tab switch abandon it mid-glide. -
Document the Direct Manipulation touchpad pan in the architecture document, and add the design's terms, contact and native inertia, to the scrolling glossary.
-
Add MVaaC instance-local MVSS registration and dynamic selection by ID, with cached parsing and reserved
bundled:theme IDs. -
Add configurable text and inline background edges with local-em baseline shifts, shared by reader and PDF typography.
-
Integrate tabs into platform-style window chrome, with a persisted System, macOS, Windows or Linux layout choice and native window movement and resizing.
-
Add connected rounded tabs alongside underlined tabs, selectable in general settings without document reflow.
-
Render multi-block grouping HTML tags such as
<div>and<section>as transparent containers, laying out their already-parsed Markdown body in place instead of showing the raw source.
Changed
-
Remove tracked development artifacts and redundant release checksum files, source tarball and dist manifest; show GitHub SHA-256 values in the download table.
-
Make archive member patterns stay inside one
/-separated segment:**is rejected, and matching is bounded by the pattern and member name lengths. -
Keep raw HTML inside
<summary>literal, matching GFM, instead of parsing it as Markdown. -
Package Android release APKs for ARM64 only to reduce download size; retain ARM64 and x86_64 debug builds and x86_64 KVM emulator tests.
-
Reduce phone list indentation and quotation/table padding across bundled reader themes.
-
Compact Light theme headings, quotations and table cells on phones using MVSS media rules.
-
Keep the document scrollbar 6 px from the desktop edge and flush with the mobile edge, with a fixed thickness on hover and drag.
-
Fold next-launch settings into Interface and show a localized restart hint only for changed window layout, colored by the MVSS
warningfield. -
Hide the settings-file, fonts-folder and styles-folder buttons on Android phones and tablets.
-
Hide the scroll-speed setting on Android phones and tablets.
-
Fill the available reading width in phone mode, preserving side margins, and hide the column-width setting; tablets and desktops retain adjustable columns.
-
Refine the phone tab drawer with left-aligned filenames, subtle selection markers, quiet open controls and a theme-colored Markview icon.
-
Use
sw600dpto keep phones in portrait with a left tab drawer and hide their tab-style setting; tablets retain desktop tabs and rotation. -
Move tab style from MVSS to the
tab-styleuser setting, defaulting tounderline(formerlyclassic). -
Separate neighboring inactive tabs in both tab styles while keeping active-tab joins and the trailing edge clear.
-
Default text layout edges to cap-height/baseline, allowing line heights and page breaks to follow the new typography policy.
-
Balance macOS traffic-light margins and deepen light and builtin tab-strip backgrounds, matching inactive tabs to the strip.
-
Strengthen light-theme hover feedback, unify right-side toolbar and window-button spacing without a separator, and add Linux chevron and diamond controls.
-
Choose window layout from a dropdown, matching the language selector.
-
Share caption input routing across viewer and reader modes, keep layout queries free of native-window mutations, and cache tab-strip extents.
-
Batch a pan's sub-pixel travel until it adds up to a whole physical pixel, and flush the residue on release: the OS inertia tail stops redrawing the page for motion the display cannot show, while the page still lands exactly where the viewport does.
Fixed
-
Stabilize Android integration checks for native inspection timeouts and window offsets, and avoid emulator Vulkan debug-label crashes.
-
Wait for Web scroll measurements before assertions, and separate Markdown headings from HTML tags in the SVG regression fixture.
-
Use a controlled clock in the image pipeline progress regression test so scheduler delays cannot cancel its healthy fixture.
-
Open local documents and images without waiting and accept only regular files, so a FIFO beside the document can no longer wedge a read, an export or a tab.
-
Bound shutdown and headless waits: a worker blocked in an uninterruptible call is abandoned at a deadline instead of holding exit or an export forever.
-
Make hovered inactive tab labels clearer by mixing 70% active text and 30% muted text from the effective stylesheet.
-
Write PDF and PNG exports, downloaded fonts and cached images through an exclusive random temporary file, so a symlink planted beside the destination is never written through.
-
Reuse the Markdown blocks Comrak already parsed under
<details>instead of re-parsing each body, so repeated disclosures no longer multiply the document definitions; an unmatched opener still falls back without rescanning the tail. -
Resolve a raw HTML block's styles into one fixed-size state per run instead of a snapshot per open tag, so deeply nested or repeated tags no longer cost quadratic time and memory.
-
Share each link address across the scopes, runs and layout rectangles that carry it, and bound the raw HTML scopes open at once, so inline tags around one long
hrefcan no longer multiply it into quadratic memory or hashing time. -
Preserve block-relative session positions below text and let explicit search, scrollbar or background fragment navigation cancel pending restoration.
-
Skip WinGet updates without failing release CI while the initial community submission is still pending.
-
Reserve alignment insets in narrow list marker columns so small bullets, checkboxes and ordered labels cannot overlap item text.
-
Prevent nested list closing spaces from accumulating, and keep lower heading fonts consistent in Celadon, Rosewood and artist PDF themes.
-
Follow the Linux desktop's light/dark preference through the settings portal, including live changes and the Styles “Follow system” action.
-
Align the reader viewport with the toolbar and bottom bar, removing blank strips that clipped scrolling content at both edges.
-
Vertically center settings labels and controls using visible glyph bounds, including CJK and mixed-font text.
-
Raise the settings header divider to balance the auto-save hint's spacing below the tabs.
-
Render Android Mermaid labels with Roboto Flex by supporting glyphs with more than 32 variation tuples.
-
Stabilize Android CI with AOSP images, launcher-dialog handling and synchronization of focus, layouts and previews.
-
Add Droid Sans Mono before the generic monospace fallback in builtin and artist MVSS themes.
-
Embed KaTeX fonts in debug builds so Android formulas and PDF exports use the bundled math faces.
-
Blend Android system bars into the reader chrome in light and dark styles while keeping controls inside the safe area.
-
Support touchscreen dragging and edge resizing of custom window frames on Linux, using the touch contact's native serial on Wayland.
-
Exit and recreate the Android reader cleanly when its Activity is destroyed, using a pinned winit fork.
-
Reload changed local images after their source files are updated.
-
Replace reimported Android folders without stale files and release JNI local references after each bridge call.
-
Hide desktop window-layout and single-instance options on Android and ignore their saved runtime values.
-
Make settings fill the app content area on narrow screens, keeping centered dialogs on wider screens.
-
Preserve reading positions inside large images when returning to cached tabs, retaining bounded intrinsic sizes while releasing inactive pixels.
-
Reload images when returning to cached tabs, including after closing the active tab.
-
Keep custom window controls interactive above the image viewer and support caption-button taps without triggering covered controls.
-
Make unused tab-strip space draggable on Windows and...
0.1.11 - 2026-10-03
Release Notes
Highlights:
- Start a search with
/and jump straight to the next match. - Refined touchpad and wheel scrolling, without stalls or lurches.
- New setting to open files from a second launch in tabs of the existing window.
- Correct CJK bold rendering in the reader and PDF export.
- More predictable triple-click and drag selection.
- Continued robustness and security hardening.
Changed
- Pin Comrak to upstream revision
4127507, which includes all of Markview's merged parser fixes, in the reader and fuzz harness. - Expand MVaaC demo fonts with variable Latin weights and italics plus Chinese medium/semibold faces, using npmmirror with a jsDelivr fallback.
- Use version-pinned CDN WOFF2 faces for MVaaC demo Latin and Simplified Chinese text, and persist font downloads across reloads with Cache Storage.
- Remove the MVaaC demo’s redundant reading hint.
- Redesign the MVaaC demo with restrained typesetting, square controls, a centered width-limited workspace and a compact header with a GitHub link.
- Load the MVaaC SPA’s Noto fonts from version-pinned CDN URLs and keep tiny subset fonts in the regression harness only.
- Show font download counts, received bytes or percentages and renderer/page preparation stages during MVaaC SPA startup.
Added
- Start an empty document search with
/while reading, ignoring selected text and preserving literal slash input in text fields. - Expand the
fuzz/harness with three document-structure oracles (reference resolution, source-range content,<details>structure), a structural PDF readback oracle, a LaTeX-awaremathmutator, and pinned-slot campaign scripts. - Prepare WinGet package manifests, installation checks and stable-release update submissions for
szdytom.Markview; releases keep moving while first-time registration is pending. - Add an opt-in single-instance setting that opens files from subsequent launches in tabs of the existing reader window.
- Link macOS app bundles and Linux AppImages in release downloads; list the Windows MSI before the portable ZIP and include macOS installation and quarantine instructions.
Fixed
-
Keep inline SVG decoding and disclosure source navigation compatible with container-prefix and footnote parsing fixes.
-
Keep a covering font family when the requested weight is unavailable, selecting its closest available weight instead of skipping to the next candidate.
-
Start a paused wheel stream's new travel at packet arrival and decay speed across stalled frames, preventing jumps when rendering resumes (#3).
-
Compare canonical paths in single-instance regression tests, fixing Windows path assertions and macOS directory-notification timeouts.
-
Clear cancelled wheel momentum targets and start paused or reversed packet streams from the displayed position, preventing jumps and motion against new input.
-
Restore the high-resolution wheel stream's packet momentum dropped by the interaction refactor, so a Windows touchpad's inertia rides across the gaps between packets again (#3).
-
Spend the speed a paused wheel stream leaves behind, whose stale carry sent the page on the old way and made a reversal answer nothing (#3).
-
Continue a wheel stream through the flushes a batchy touchpad delivers after a silence and the whole detents it rounds out mid-gesture, instead of killing the momentum into a dead stop and a lurch (#3).
-
Still the page within a beat once its packets go quiet, by lifting the lead and dying at a faster quiet rate, so a hand that halts on the pad no longer leaves a long coast (#3).
-
Cap the chase and adapt the lead to packet spacing, let a late flush keep the stream's decaying speed instead of claiming one from its silence-long distance, and believe a packet's own rate no faster than the chase — a flush lands as a dense burst of large packets whose rates name speeds no finger reached — so all of them arrive as glides instead of lunges and freezes (#3).
-
Make the syntax-highlight cache regression test independent of background worker scheduling.
-
Keep single-instance authentication tokens private, bound IPC requests and reject forwarding after the event loop closes.
-
Forward macOS desktop-opened documents before a secondary instance exits and register surviving independent windows when enabling single-instance mode.
-
Run campaign blocks in libFuzzer fork mode with
-keep_seed, so a known crash no longer ends the block before its time budget and the fork startup merge stays off the clock. -
Signal the whole process group when
rsscap.shpasses its RSS ceiling, so a heavy descendant cannot outlive the wrapper. -
Block in
slot.sh --waituntil a slot frees instead of failing immediately like--try, and keep the holder record when a lock is opened. -
Create the campaign artifact, slot and guard-log directories before they are first used, so a fresh checkout can start and check a campaign.
-
Match each reference text run to the reference span that contains it in the
refdeforacle, so a link resolving to a destination its definition contradicts is caught. -
Stop the
refdefdefinition scan from reporting list-, quote- and raw-HTML-contained definitions as parser crashes, and never invent a definition row. -
Preserve the order of explicit
mathprobeprobe sizes instead of duplicating and reversing them. -
Normalize footnote labels before numbering, so a disclosure body reusing a document label references the one note instead of allocating a second number.
-
Ignore
<details>inside code spans and fenced code when deciding whether a prefix ends in an open HTML block, restoring the opening-viewport fast path. -
Preserve paragraph source ranges before tables with CRLF line endings by updating the Comrak pin.
-
Keep indented code block source ranges stable across trailing blank lines by updating the Comrak pin.
-
Keep
<details>footnotes once at the document's end, including cross-disclosure references; defer incomplete disclosures and unstable note numbering in prefixes, and assign heading anchors in final reading order. -
Give adjacent disclosures their own source ranges, retaining original offsets through multiline HTML tags inside lists and block quotes.
-
Complete syntax highlighting synchronously in layout differential fuzzing to avoid reporting background color updates as cache divergence.
-
Keep preceding blocks unchanged when an unused link reference definition is appended, with correct Comrak table source positions and consistent
<details>body termination. -
Pin Comrak to our front-matter line-count fix to prevent a
<details>parsing panic on UTF-8 documents with lone carriage returns, and keep closing-tag ranges correct after HTML normalization. -
Unify the MVaaC demos into a reading/editing SPA with shared documents, an embedded component guide, file opening, downloads and a compact responsive workspace.
-
Extract editor-independent scroll anchors, input ownership and versioned request cancellation into
@markview/scroll-sync. -
Render inline SVG as static host-decoded images and reject unsupported external SVG dependencies in browser resources.
-
Add per-instance shared font sets, an explicit font loading/cache package and optional WOFF/WOFF2 decoding in official WASM builds.
-
Add reusable viewer/editor/resource packages, a CodeMirror split editor with automatic source following, configurable TOC/layout and a built-package example.
-
Add versioned MVaaC source geometry, complete TOC and a container-mounted viewer with progressive navigation and reading-position events.
-
Center the MVaaC editor divider grip in horizontal and vertical layouts, including hosts with a global border-box reset.
-
Keep MVaaC disclosure summaries in their intended font and spacing by supplying their required 600 weight.
-
Evict MVaaC demo font cache batches that fail validation so malformed HTTP 200 responses cannot prevent startup recovery.
-
Preserve CR source-line offsets and restrict text-free collapsed-container scroll anchors to their visible opening line.
-
Exclude relocated footnotes from MVaaC scroll anchors so early definitions cannot displace main prose synchronization.
-
Batch MVaaC scroll anchors in Rust and retain progressive-layout prefixes instead of repeating quadratic source queries on every revision.
-
Rebuild MVaaC editor scroll following around continuous, reversible position maps with shared endpoints and gesture ownership to prevent jumps and feedback.
-
Keep editor-to-preview scrolling continuous across wrapped image source and multiline SVG, including adjacent blank lines.
-
Parse adjacent SVG elements iteratively and preserve normalized code and math text extending beyond inline SVG boundaries.
-
Preserve Unicode source ranges in adjacent quoted disclosures, atomic image geometry and source navigation through horizontally panned content.
-
Retain source reading targets while progressive reflow has not yet published enough content to position them.
-
Preserve original source ranges inside HTML disclosures and code-line offsets across CRLF input.
-
Preserve symlinked settings resources and fade loading/error feedback when previewing the document.
-
Load settings styles and font catalogues in the background with immediate loading feedback, cached refreshes and retry controls.
-
Exclude automatic CJK/Latin spacing from the start and end of selection highlights.
-
Limit triple-click selection and dragging to the current paragraph or table cell inside lists, block quotes and other containers.
-
Preserve CJK bold in reader and PDF themes by treating the preferred Medium face as a minimum weight instead of an absolute override.
-
Ignore the pointer position reports the macOS backend repeats before every wheel event, which pulled an open list's highlight back to the hovered option between notches.
Install markview 0.1.11
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/szdytom/markview/releases/...0.1.10 - 2026-10-01
Release Notes
This is a hardening release: hostile-input fuzzing removed panics in parsing, incremental reparse, download date/max-age handling and raw HTML scanning, and shaping no longer hangs on an extreme font size. Desktop readers also get a full-size image viewer, wheel-scrolled option lists and per-role font selection, while the WebAssembly front end stays in-progress groundwork.
Added
- Add host-managed asynchronous MVaaC image requests with viewport priorities, cancellable RGBA delivery, progressive reflow and opt-in browser URL/decode helpers.
- Keep an open option list inside the panel that owns it and cap its width at the panel's, so a list never overflows the window.
- Scroll an open option list with the wheel: wherever the pointer rests, one notch of travel moves the highlight one option, a trackpad's pixel travel accumulates to that notch, and a list longer than its window draws its own scrollbar.
- Open a full-size viewer over any image: click to open, wheel or glide to zoom about the pointer, drag to pan, click or Escape to close.
- Add
markview-selection, the pointer-driven selection machine taken out ofInteractionState, so a second front end can drive the same grains, click counting and drag rules. - Cover the selection paths that had no test: what a copy takes, the drag-past-edge auto-scroll tick, the deferred
Ctrl+A, and carrying a selection across an update. - Let a host with no filesystem supply its own faces as bytes through
FontConfig::from_faces, so the shaper can be driven from a front end that has no directory to scan. - Add
markview-web, awasm-bindgenfront end that lays Markdown out with the engine and paints it into a<canvas>, with pointer selection, clipboard copy and layout budgeted across frames. - Add the MVaaC canvas demo under
web/: a textarea feeds Markdown to the WebAssembly module, with a Playwright acceptance suite that checks rendering, incremental re-layout and copy. - Add
scripts/check_web_font_coverage.py, which reports the characters of a document that none of the bundled subset faces can draw. - Add
ProgressiveLayout, a layout pass that suspends between blocks and resumes without re-measuring what it already laid out, so a front end can bound each step by a time budget. - Add the
@markview/webTypeScript package and a pnpm monorepo underweb/, bundling the WebAssembly front end into a reusable component with a progressive layout handle and a very thin demo app. - Choose the family of each font role — serif, sans-serif, monospace and the same three for Han text — from a Set fonts step beside the Fonts page's catalogue filters, one chooser row per role: a pick reflows the document at once and persists as a per-role
fontdefoverride, and the Han rows appear only for thecjk-typevariant in force, offering only the families that cover Han text. - A
cargo-fuzzharness for the library crates (fuzz/, not part of the root workspace): eleven targets covering parse, incremental reparse, MVSS, layout, progressive layout, math, highlight, shaping, fonts, PDF export, and render geometry, with structure-aware mutators, calibrated per-input wall and allocation budgets, and spec-derived seed corpora. Afuzz-onlyprewarm_highlightAPI lets the harness pay the syntax-highlight warm-up before its input budgets start.
Changed
- Point the Comrak patch at upstream again, now carrying the fence-offset fix and the multiline inline source-position fix.
- Align publishable web package versions with Markview and synchronize them during releases.
- Load MVaaC text fonts from host URLs or bytes during initialization; the esbuild demo emits separate font assets, while KaTeX stays embedded in wasm.
- Share document hover, cursor, scrolling and gesture inertia between desktop and Web; Web adds host activation callbacks, anchors, details and selectable scroll motion ownership, defaulting to internal wheel easing.
- Route Windows fractional wheel events through ordinary wheel easing, removing the touchpad-specific packet momentum path pending a new adaptation.
- Share one cancellable native download service and CPU budget across images and fonts, with owned progress events and transactional installation.
- Version pixel lookups and frame demand, move eviction outside cache locks, and wake layout through a shared latest-request mailbox.
- Bound background CPU work by queue size and retained inputs; cancel obsolete highlight epochs and wake owners after completion.
- Own diagram face metrics under one lock and share reclaimable font names; reject chooser selections from retired catalogues.
- Drive
layout_progressivefrom the resumable pass, so the engine has one block loop instead of two and a cancelled prefix costs nothing to resume. - Split the font module into validation, directory scanning and diagram selection, so a front end reuses the parts it has and leaves the rest behind.
- Put directory scanning behind a
font-directoriesfeature that is off by default, so a build for a host without a filesystem leaves everystd::fscall out of the binary. - Focus security documentation on policy and the threat model, with implementation details and verification work in separate references.
- Name the loop generically in
handle_user_eventand the newtick, so the event and timer paths run without a window server. - Separate the reading text a copy takes from the clipboard write that stores it.
- Take a
SurfaceSourceinmarkview-renderinstead of a window, so the renderer never names a windowing toolkit and a canvas front end can drive it the way the desktop window does. - Take the library crates' clock from
web-timeinstead ofstd::time, becauseInstant::nowpanics onwasm32-unknown-unknown; on every other target it is the same type re-exported. - Put texture readback and GPU waits behind a
readbackfeature that is off by default, because both block the calling thread and a browser has no second thread to wait on. - Declare wgpu's
webglbackend forwasm32-unknown-unknown, somarkview-renderbuilds for the Web;winitleaves its dependency tree.
Fixed
- Prevent malicious HTTP dates and overflowing
max-agevalues from panicking during downloads or redirect cache calculations. - Take multiline inline source positions from the block rather than the inline, so formulas and code spans keep the same range across differing indents, containers and line endings.
- Keep the line ending that closes an incremental parse window, so a multiline formula or code span at the window's edge gets the same source range as in a full parse.
- Prevent shaping from hanging when an extreme font size overflows Parley's line height, including sizes supplied by a valid MVSS rule.
- Keep thematic-break source ranges on their marker line, so trailing blank lines no longer change block IDs or make incremental and full parses disagree.
- A raw HTML attribute scan no longer splits a multi-byte space that stripping a leading
/exposed (<details /\u{a0}open>), which panicked on an 18-byte document. - A merged inline's source range only ever grows, so the out-of-order positions comrak reports after a link reference definition can no longer invert a range.
- Treat a
[x]: yline that continues a paragraph as text, not as a reference definition, so a prefix parse or a<details>body no longer resolves a link the document never had. - A prefix parse no longer cuts through YAML front matter or an open raw HTML block, and keeps the line ending a trailing list marker needs.
- Remove deprecated TypeScript
baseUrloptions and resolve web package aliases relative to each configuration file. - Apply horizontal overflow transforms and clipping to MVaaC image priorities, and infer SVG MIME types for byte decoding.
- Keep scanned glyph fallback choices independent of preceding characters, reuse fallback faces when caches fill, and preserve the cached text length limit.
- Preserve Web selections and held drag bases until a replacement reflow has laid out their blocks.
- Honor a corrected MVaaC wasm URL on retry when an early font failure leaves the previous binary request pending and that request later fails.
- Preserve the displayed Web scroll offset when changing motion mode or pressing the pointer during an animation over incomplete layout.
- Toggle Web disclosures using the document behind the published prefix, and stop internal scroll animation when external input pans a wide block.
- Apply external scroll travel from the displayed animation offset, preserve absolute requests through growing Web layouts, and defer End navigation until the final document height is known.
- Move image cache writes and eviction off the shared I/O runtime so disk work does not stall transfers or cancellation.
- Cancel pending save selections during shutdown, keep highlight preparation linear, and finish queued file creation before cancellation cleanup.
- Persist restoring the last font role to Default by removing its saved override.
- Offer Han font choosers only for definitions resolved by the selected CJK variant.
- Draw open language menus once to preserve translucent backgrounds and avoid redundant shaping.
- Fix image viewer activation without selectable text, capture covered controls' input, and cancel or latch drags correctly across focus loss and pointer movement.
- Refresh open image viewers after decoding and keep very thin images within the window's fit bounds.
- Cover the WebAssembly front end's publication bookkeeping and selection-length cache with native tests, replacing the Playwright wall-clock timing assertion that could flake on a loaded runner.
- Keep the last completed pass's block geometry when a later pass is cancelled, so typing past a document no longer flushes the warm cache.
- Keep a block's completed-pass membership separate from the pass that last used it, so a pass that resumes geometry and is then abandoned cannot cost the warm cac...
0.1.9 - 2026-09-29
Release Notes
This release adds in-document text search with a bottom search bar, MVSS table.border_collapse modes, and artist-template font downloads through international mirrors. It also brings a reusable single-line text input with IME support and fixes a long tail of scrolling, PDF export and font-loading issues.
Added
-
Offer artist-template font downloads through international CTAN and TUNA mirrors, with matching SHA-256 pins and template fonts preferred over system alternatives.
-
Add MVSS
table.border_collapsemodes to share cell borders or retain independent, optionally rounded cell borders. -
Find text throughout a document with a bottom search bar, Unicode case folding, whole-word matching, disclosure navigation and independent match highlights.
-
Reusable single-line text input with selection, clipboard, undo/redo and IME support; PDF exports can use a custom title for each document session.
Changed
-
Replace the Qi Baishi, Van Gogh and Mondrian export layouts with updated MVSS designs, preserving their bundled IDs.
-
Prefill document search with the selected text when pressing Ctrl+F (Cmd+F on macOS).
-
Close the search bar when switching documents while retaining each document’s query and match options.
-
Submit document searches immediately without debounce, scan a compact text index and receive results without rebuilding highlight indexes on the UI thread.
Fixed
-
Keep a high-resolution wheel stream moving across the gaps between its packets: a Windows touchpad hands its inertia over as a few large packets, each arriving a quarter of a second after the motion it describes, so the reader now carries a speed between them instead of easing every packet from a standstill, which made a fast two-finger scroll crawl and then lurch. Whole-detent wheels and stream events are untouched.
-
Keep PDF code-block text selectable with glyph-level mappings; leave copied whitespace reconstruction to the viewer.
-
Compress PDF images with bounded loading and rayon instead of retaining all decoded pixels; abort export with a source-specific error if an image resource is missing.
-
Pin table border integration tests to committed fonts so they pass with system fonts hidden in Linux CI.
-
Keep screen geometry and theme flags out of PDF commands, restrict
--scrolltorender, and reject reader arguments before subcommands. -
Update screenshot callers for the render-only
--scrolloption and abort capture when the reader exits or fails to initialize. -
Keep table grid borders at a single thickness in reader and PDF output by default, and avoid scanline rounding of square GPU borders.
-
Wake waiting font transfers when the transfer gate is poisoned, even with warning logging disabled.
-
Recover poisoned runtime caches and gracefully degrade failed font and worker state instead of cascading panics.
-
Reveal the correct search anchor in RTL text and preserve visible highlights around multiline image placeholders.
-
Coalesce IME cursor-area updates and skip unchanged rectangles to prevent Wayland request feedback during text input.
-
Use canonical document paths in search tests so tab restoration works on Windows and macOS temporary directories.
-
Pin fonts in app, image, diagram, font catalogue and GPU tests, including SVG decoding, benchmark warmup and a committed CJK Medium face; Linux CI now hides system fonts.
-
A font test flaking under parallel
cargo testby relying on a global cache slot surviving LRU eviction; it now asserts on the collection it built itself.
Install markview 0.1.9
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/szdytom/markview/releases/download/v0.1.9/markview-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/szdytom/markview/releases/download/v0.1.9/markview-installer.ps1 | iex"Download markview 0.1.9
| 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 |
0.1.8 - 2026-09-24
Release Notes
This release adds compiled-in Chinese and Japanese interface translations, improves font loading, and fixes front matter layout and macOS file opening.
Added
- Draw the whole interface in Simplified Chinese — both panels, the reader's chrome, the status line, the notice strip, the confirmation and the fonts page — following the system language or the new Interface language setting under a new Interface section, with every label compiled in from
assets/locales. - Translate the interface into Traditional Chinese and Japanese as well, so a
zh-Hant,zh-TW,zh-HKorjalocale gets its own text instead of the Simplified or English fallback. - Offer the interface languages in a list the row's own control opens, so the chooser grows with every language the build carries instead of with every row's width.
- Make that list own input like a confirmation: it takes the pointer, wheel, touch and keys while it is open, returns focus to its chooser when it closes, and closes when its row leaves the page.
- Carry the status line, the footer's warnings, the export panel's own buttons and the format names in its save dialog in the same compiled-in text, so no label is left behind in English.
Changed
- Draw YAML front matter as a collapsed
Frontmatterdisclosure whose body is theyamlcode block, dropping the YAML parser and its dependency so no alias or nesting expands under the reader; exports draw none of it. - Move Scroll speed out of Reading layout into the Interface section, beside the language it shares a device-level concern with.
- Resolve the system language once instead of per frame, so drawing a label costs no allocation.
- Refresh the measured performance baselines, charts and comparison tables against the current build, and drop SuperGoodViewer from the reader and PDF tables.
Fixed
- Use the personal font download directory in PDF and PNG exports and in the
pdf,renderandsmoke-testsubcommands, so an export matches the reader's display;--ignore-system-fontsstill pins the run. - Put the front matter's label and visibility options in its layout cache key, so switching the interface language or hiding the front matter for an export updates its disclosure instead of reusing stale geometry.
- Ask for a relayout when the interface language changes, so the front matter's label follows it instead of waiting for the next edit.
- Map each font file into the shaper instead of reading it whole, so a drawing run that loads the download directory pays for the tables a document draws rather than for every face on disk.
- Open the Markdown files the macOS desktop hands the reader — a double-click in Finder, an "Open with" choice, or a file dropped on the app's icon — which arrived as an Apple Event the bundle advertised but nothing answered, so the desktop reported that the reader could not open the format and started it with an empty window; every file of one event becomes its own document.
Install markview 0.1.8
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/szdytom/markview/releases/download/v0.1.8/markview-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/szdytom/markview/releases/download/v0.1.8/markview-installer.ps1 | iex"Download markview 0.1.8
| 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 |
0.1.7 - 2026-09-23
Release Notes
This patch release adds touch and trackpad gestures, captured dragging, inertial scrolling, and larger control hit areas.
Added
- Support touch taps, captured dragging and inertial scrolling, with larger control hit areas and shared touchpad gesture handling.
Fixed
- Keep fast trackpad scrolling continuous when fingers lift before motion settles, avoiding a pause followed by a sudden long scroll.
Install markview 0.1.7
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/szdytom/markview/releases/download/v0.1.7/markview-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/szdytom/markview/releases/download/v0.1.7/markview-installer.ps1 | iex"Download markview 0.1.7
| 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 |
0.1.6 - 2026-09-23
Release Notes
This release renders YAML front matter, adds an About tab and collapsible table-of-contents sections, brings the green 8-bit reader theme, and reworks the Styles and Fonts settings.
Added
-
Add compact, right-aligned stacked-square SVG buttons in the Contents header to expand or collapse all outline sections.
-
Add the 8-bit reader theme with green CRT colors, Fusion Pixel typography throughout the document and UI.
-
Collapse and expand nested table-of-contents sections with per-tab state and keyboard navigation that skips hidden headings.
-
Add a compact About tab in Settings with a centered application icon, the standard project description, a clickable project link and one-click copying of diagnostic information: version, build date, OS, active WGPU backend, and commit.
-
Read
---fenced YAML front matter: a flat mapping renders as a two-column table with a bold key column, anything nested renders as ayamlcode block, andfront_matterjoins the MVSS vocabulary as the frame around either shape — withtable/cellorcode_block/labelcomposing into one rendering, andshow = falsehiding the block while its metadata stays parsed. A document that opens with an unclosed---is unchanged.
Changed
-
Prefer upright LXGW WenKai for Simplified Chinese emphasis in reader and PDF themes, offer it through GitHub, SourceForge and archlinuxcn (Europe/TUNA) font downloads, and fall back through system Kai fonts (
regularscript[cjk]) to synthetic italics. -
Reuse segmented settings controls for the Fonts status filter, with shared borders and consistent selection and focus highlights.
-
Rework the Styles settings with clearer priorities: numbered badges for enabled styles, and arrows hidden at the ends of the order.
-
Rework the Fonts settings: drop the source filter, rename the states to Missing / Downloaded / In System, split the bulk action into Download Missing and Download All, and show sources, download progress and empty-state guidance.
-
Consolidate panel navigation and font UI ownership, share bounded HTTP transport, and decouple PDF requests from CLI launch options.
-
Clarify paired performance checks under any consistent power mode; refresh absolute README metrics only during releases.
-
Compare readers and PDF pipelines against SuperGoodViewer 1.0.8, whose mathematics fixtures now render and whose new
sgv exportcommand joins the PDF table. -
Refresh the README size, memory and first-frame figures to the current build.
Fixed
-
Draw shared borders in segmented settings controls only once, preserving selection and keyboard focus highlights.
-
Update font download counts as each file finishes, accumulate transferred bytes correctly, and show a continuous progress bar using each active transfer’s byte fraction with clearer details and an SVG cancel control.
-
Draw the increase/decrease controls with SVG icons instead of font glyphs, avoiding minus-sign font fallback warnings.
-
Keep the bulk font-download buttons hoverable, and silently do nothing when no downloads are needed.
-
Align the Styles summary and separator with Generic settings while keeping the tabs clear on short panels, align style text, center the priority badges and row controls, and hide unavailable arrows.
-
Build the downloadable-font catalogue when the Fonts or Styles page opens instead of during window startup, removing a system-font collection build from the first frame and about 8 MiB from the reader.
-
Name the requested resource in shared HTTP transport errors, so a failed font download no longer reports an image error.
-
Fold a ligature's continuation clusters into the cluster that draws the glyph, so its selection highlight, hit testing and copy range cover the whole ligature instead of leaving a gap over half of it.
Install markview 0.1.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/szdytom/markview/releases/download/v0.1.6/markview-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/szdytom/markview/releases/download/v0.1.6/markview-installer.ps1 | iex"Download markview 0.1.6
| 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 |
0.1.5 - 2026-09-22
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_familynamesfontdefids the way a rule'sfontdoes. 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--fontsincluded — 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-speedpreference (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 offontdef: 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 optionalsha256and a 2 GiB archive cap; a failed mirror is removed before the next one runs.fontdef.urlsis 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 withclap;markview FILEstill 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/CBLCorsbixstrikes 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-codepackage 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 andopensupported),detailsandsummaryjoin the MVSS vocabulary, and both exports show every body expanded. - Render a
mermaidfenced 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,--pdfand--smoke-test, while a broken diagram keeps the image placeholder and--offlinestill renders local diagrams. - Measure per-frame scroll pacing in
--benchover 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.headerandpage.footer, with symmetricrule_width/rule_colordecorations 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
fontdefcandidates, 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#headingjump, 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#anchorlink 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 SCandNoto Sans SCin the bundled Chinesefontdeflists, 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 | shInstall 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 |
| [m... |
0.1.4 - 2026-09-19
Release Notes
This release adds stylesheet discovery and validation, expands theme and typography support, and improves reader previews.
Fixed
- Avoid spurious font fallback warnings from UI headings requesting unavailable weight 600 faces.
Added
-
markview ss listlists bundled and installed stylesheets. -
Optional CJK Medium UI overlay and GPU weight comparisons, with documented exact-weight fallback behavior.
-
Monochrome, Qi Baishi, Van Gogh and Mondrian PDF themes, plus
theme = "none"for uncolored code. -
MVSS
targetsdeclares UI/PDF destinations, filters theme selectors and rejects incompatible use. -
Celadon, Blueprint and Rosewood reader themes, a theme preview fixture, and an MVSS authoring skill.
-
Benchmark reports separate GPU preparation/submission from blocking completion
to diagnose tail latency without changing the end-to-end timing scope. -
Settings offer an eye button that fades the panel for live document previews.
-
markview ss validate FILE.mvss.tomlparses a stylesheet in place and
reports its version and rule count, so a draft can be checked before install. -
The
markview-iconicon!macro parses an SVG at compile time into a
unit-box vector buffer, so the reader keeps its UI icons as editable files
with no SVG parser in the binary. -
The reader exports the open document to PDF or a whole-document PNG from a
toolbar button orCtrl+E, with its own text size, indent, paper, margins,
stylesheet sequence and PNG scale under[export]insettings.toml,
independent of the reading view. -
The export panel's
Export and Watch…action keeps rewriting the same file
whenever the document is saved. -
The README sets the same text through a browser engine and through Markview at
one measure, andscripts/render_typography_comparison.pyreproduces the
figure. -
The README also times opening a document against MarkText, with
scripts/compare_readers.py, and one document to one PDF against Typst,
Chromium and XeLaTeX, withscripts/compare_pdf_engines.py.
Changed
-
Prefer Medium (500) CJK faces throughout bundled themes, with inherited-weight fallback; refresh README screenshots.
-
Enlarge Print page headers, footers and page numbers to 0.75em.
-
Refresh Light/Dark palettes and move shared style defaults into the hidden, lowest-priority
builtinsheet. -
Reorganize the MVSS guide with theme recipes, cascade rules and a validation workflow.
-
Stylesheet panels use a matching vector arrow for the Back action.
-
Redesigned reader chrome with flat, square controls and coordinated light/dark themes;
shared, grouped settings and export panels scroll without shrinking their controls. -
The toolbar's Open and Settings buttons, and every panel's close button, are
vector icons drawn from those buffers instead of text labels. -
The reader's export opens the written file with the operating system, and the
export icon points out of its tray instead of into it. -
The export panel refuses to open without a document, and its header names the
document and the resulting measure instead of repeating the rows. -
PDF export is set at 12 pt body text by default, on the command line and in
the reader's export panel.
Fixed
- Keep all three toolbar buttons visible while a panel or confirmation is open.
- Buttons now show distinct hover and pressed fills, including selected choices;
keyboard-only focus replaces the border without stacking extra outlines.
Install markview 0.1.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/szdytom/markview/releases/download/v0.1.4/markview-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/szdytom/markview/releases/download/v0.1.4/markview-installer.ps1 | iex"Download markview 0.1.4
| 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 |
0.1.3 - 2026-09-18
Release Notes
Themeable list markers and code chips, a watching PDF export, and exports that
pin their own fonts.
Added
- An MVSS font candidate takes
synthetic_italic = true, which shears an
upright face by 14° when the family has no italic of its own. The bundled
styles use it for CJK emphasis, so Chinese and Japanese text now slants
instead of falling back. --pdf … --watchre-exports whenever the document or a local image it
references changes, until the session is stopped. Rebuilds reuse the previous
parse, block layout and decoded images; an unchanged save is skipped.- An MVSS
fontdeftakesemoji = true, which marks the family as the face for
Emoji text; the bundled reader and print styles use it. - MVSS takes
alignandshapeon list markers:alignplaces a bullet,
number or checkbox left, centered or right in its column, andshapedraws a
bullet as a disc, square, triangle, diamond, plus or minus. Ashapelist is
cycled by bullet nesting depth; ordered levels do not advance it. - MVSS takes
numberingandalignonenum, so a theme can format ordered
numbers (a),I.,一、,①) with Typst's numbering patterns and place
them independently of bullets. The marker column grows to the widest number
a list renders. - MVSS takes
border_width,radius, andaccentontask_marker, so a
theme can thicken, round and fill a task checkbox; a completed box fills with
accentand draws its check incolor. The bundled styles do. --fonts DIR(repeatable) adds a directory of font files, and
--ignore-system-fontsshapes with those directories alone, so an export no
longer depends on the fonts the machine happens to have installed.- MVSS takes
paddingon["code"], which insets an inline code chip: the
horizontal sides widen the run and push its neighbours, and the vertical
sides make the chip taller. The bundled styles pad code, which used to touch
the text around it.
Changed
- Bullets and task checkboxes are drawn shapes rather than text, so they are no
longer selectable or copied; the bundled styles center them in their column. - Inline code breaks between any two characters inside a run, free at a word
edge and at a small penalty inside a word, so a long identifier wraps instead
of overflowing its block. The run's edges keep ordinary break rules, so a
following comma or closing bracket never starts a line.
Fixed
- A task checkbox is drawn as an antialiased box with its check centered
inside, like a list marker. The interior used to resolve transparent and the
check used to sit outside the box, so a pending task read as a solid square. - Emoji style is uniform again: a text family that happens to hold an Emoji
symbol—Noto Sans CJK covering⚠️, say—no longer beats the configured Emoji
face, which used to mix monochrome and color Emoji in one document. - A blockquote's bar is centered on the text it frames: the quote's box no
longer absorbs the outer spacing of its first and last child, which left the
bar hanging far below a quote. - Syntax colors no longer leak: a code comment painted every line after it in
the comment color, because syntect was handed lines without their terminator. - PDF export drew the CJK and emoji inside a formula's
\text{…}group with
the document's fonts instead of dropping them. - A PDF's text map names every character of a ligature: an
filigature used
to extract asf, losing theifrom copied or searched text. - A PDF names every glyph of an ordered-list number, which used to leave a
replacement character after the number when the text was copied. --pdf --watchrecognizes equivalent spellings of one path, including a
..over a symlinked directory such as macOS's/var.
Install markview 0.1.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/szdytom/markview/releases/download/v0.1.3/markview-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/szdytom/markview/releases/download/v0.1.3/markview-installer.ps1 | iex"Download markview 0.1.3
| 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 |