Repository navigation
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 Wayland, sharing tab bounds with native Windows caption hit testing.
-
Disable unused Adwaita window decorations so Wayland does not parse desktop button layouts or warn about
iconbuttons. -
Show the pointer cursor over custom window buttons, including Windows maximize-hover Snap Layouts, while preserving drag and resize cursors.
-
Pin the page while the OS inertia coasts over a touchpad contact that never left the pad, so a hand that rests on the glass holds the page still.
-
Count a touchpad pan's first and last frames in full: the travel the first content update already carries pans instead of grounding the gesture, and the final update reaches the seam even when it shares the release's batch.
-
Keep an open image viewer out of the touchpad pan: its contacts stay on the wheel paths, which zoom the viewer, instead of scrolling the page behind it.
-
Claim the touchpad pointer through the window's pointer hit-test, the only message that can begin a touchpad gesture; the touch events winit delivers never carry the pad's contacts.
-
Keep the viewport's own ready-reset cycle out of the fold, so releasing a pan parks the content without throwing the page back by everything the hand had travelled.
-
Invalidate MVaaC cached geometry when stylesheet selection changes font definitions, including when restoring the default theme.
-
Raise inline code beside Chinese text by 0.08em (#6), join mixed-font code backgrounds, and keep vertical background padding independent of line height.
-
Keep the same external spacing between Chinese prose and inline code containing Chinese or Latin text.
-
Keep glyphs, inline backgrounds and decorations with their text row during PDF pagination, preventing compact spacing or large padding from duplicating text.
-
Keep blank text rows safe when the font collection is empty, including the browser's initial font configuration.
-
Check image-viewer redraws independently of caption drawing order across all window layouts.
Install markview 0.2.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/szdytom/markview/releases/download/v0.2.0/markview-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/szdytom/markview/releases/download/v0.2.0/markview-installer.ps1 | iex"Download markview 0.2.0
| File | Platform | Checksum (SHA-256) |
|---|---|---|
| markview-0.2.0-aarch64.app.zip | Apple Silicon macOS | af9ed9a1ebc6f15d9ab78fd0d2c89759c82dec162242c875bf5cead2f077ade8 |
| markview-x86_64-pc-windows-msvc.msi | x64 Windows | 70816f57d58442f405a5636228784bc759291320412be195c8d04876f8ecfe8d |
| markview-x86_64-pc-windows-msvc.zip | x64 Windows (Portable) | 059f828d93bf59dc38f69e031cb2afc7a767873e449a9acb874ed9c1f60a1230 |
| markview-0.2.0-x86_64.AppImage | x64 Linux | ee89e103bfdb68429c236bcb61f322da9e4ce7a09a1aefaed177525136254d45 |
| markview-0.2.0-android.apk | Android 9+ (ARM64) | ef0d80d54afe4e78a274b184dd25cb37ffbff356c5ae720854d40c424d43af0e |
macOS: Extract the .app.zip, drag Markview.app to Applications, then run xattr -d com.apple.quarantine /Applications/Markview.app in Terminal to remove the quarantine flag before opening the app.