Skip to content

Releases: PDFMathTranslate/PDFMathReader

v0.1.13

Choose a tag to compare

@reycn reycn released this 18 Oct 07:52

PDFMathReader v0.1.13

This release includes 9 new features and 4 fixes and improvements since v0.1.12. See the highlights below.

0.1.13

New features

  • draw original PDF serif and sans-serif text with chosen local fonts — Two experimental settings name an installed font for the original document's serif text and one for its sans-serif text. pdf.js keeps every glyph's position and advance; the patched showText draws the glyph's Unicode in the local face, narrowed when wider. Math, symbol and monospaced fonts, translated pages and thumbnails keep the document's fonts. (f6e3421)
  • pick installed fonts for original and translated documents in Appearance — Six preferences replace the experimental serif/sans text fields: sans-serif, serif and monospace fonts for original pages and for translated pages. GET /api/fonts scans installed font files and sorts families into sans, serif and mono. Each popup lists the document's own font, then up to 8 previously used fonts, then its own style and the other two, alphabetically. Ultra fast mode falls back to the translated serif or sans font. (48a16bb)
  • choose separate local fonts for CJK characters in original and translated documents (1c13247)
  • merge local document font pickers into main — Brings in the codex/local-pdf-fonts branch: choose installed fonts for original and translated documents in Appearance settings, including separate CJK fonts. Conflicts in canvas rendering keep main's stale-draw guard (currentDraw) alongside the per-document font substitution. (175a04e)
  • share kernels with remote devices and show connected clients (6ecb48f)
  • continue translations in service mode while windows are minimized (b77dcca)
  • add art and zotero app icons and refresh the modern icon — Also completes missing translation keys in the es, fr, ja, ko and zh-TW locales. (ea8fc7a)
  • add an only-for-mouse option to force smooth scrolling — Trackpad events scroll natively when the option is enabled. (b90ebdd)
  • shorten companion pairing codes to eight characters (5bec25f)

Fixes and improvements

  • skip remote document claims for empty reader windows (3f761be)
  • await configured companion service credentials (49cf77e)
  • display companion device identity on connection (49708af)
  • preserve custom language choices and refresh assets and docs (ece15b4)

Update

Quit PDFMathReader, download the package for your system below, replace the existing application, and reopen it. Your documents and settings are preserved.

Full changelog

v0.1.12

Choose a tag to compare

@reycn reycn released this 16 Oct 09:33

PDFMathReader v0.1.12

This release includes 2 new features and 5 fixes and improvements since v0.1.11. See the highlights below.

0.1.12

New features

  • add app icon picker to Appearance settings — Offer seven app icons (Default, Warm, Spring, Classic, Blueprint, Moonlight, Modern) generated from doc/icons, with Default rebuilt from app-base. The choice is applied at runtime to the Dock tile on macOS and window icons elsewhere, and Dark Mode automatically switches to Moonlight. Settings previews show the bare icon body without outline or shadow. (7297555)
  • copy selection or focused annotation with Cmd+C and show a toast — Cmd+C copies the selected text, or the focused highlight's passage (falling back to the comment body) when nothing is selected. Every reader copy now confirms with a Copied toast that previews the copied text. Adds copy.copied to all locales and smoke coverage for both paths. (b9e5cc8)

Fixes and improvements

  • release rendering resources in inactive readers (613f130)
  • disable rich-text placeholders for the remote Precise kernel — Remote pdf2zh servers run unpatched BabelDOC, which typesets translated style tags such as <样式 id='1'> literally. Send disableRichTextTranslate with remote jobs and bump the remote cache key so pages with leaked tags are retranslated. (e8df685)
  • keep sidebar row corners and theme thumbnails clean — Constrain the sidebar nav column so long labels ellipsize instead of clipping the selected row's right corners, and drop the hairline border on appearance thumbnails to match macOS Settings. (ddcd3cf)
  • keep vertical pages clear of Liquid Glass chrome with reduced padding — Reduced padding zeroed the reader inset that keeps the first page below the floating Liquid Glass header and tab bar. Restore a toolbar-height top inset for vertical reading only; horizontal pages already fill the full height. (62c78a2)
  • remove extra left padding from Recents magic zoom — Clamp the magnified row softly against both edges instead of reserving fixed side padding, so the first card sits flush with the section title. (7e29fa1)

Update

Quit PDFMathReader, download the package for your system below, replace the existing application, and reopen it. Your documents and settings are preserved.

Full changelog

v0.1.11

Choose a tag to compare

@reycn reycn released this 14 Oct 18:17

PDFMathReader v0.1.11

This release includes 5 new features and 8 fixes and improvements since v0.1.10. See the highlights below.

0.1.11

New features

  • add bionic reading with fixed-length and word-root modes (d9e2d81)
  • add original-document-only bionic reading option (7c50f2f)
  • translate all pages for the current document from the menu (c680461)
  • add experimental TF-IDF font weighting for original pages — Words frequent on a page but rare across previously opened documents get a glyph stroke in three strengths, painted through the bionic-reading pdf.js hook and merged with bionic glyphs. Every opened document lends the terms of 12 random pages to a local document-frequency cache kept by the backend beside the translation cache. Scoring follows fasttfidf: raw tf, idf = ln(N/df) + 1, max_df 0.5. (6252b05)
  • experimental, force smooth scrolling even with jagged wheel input — Wheel input in the reader drives a target offset that the view chases each frame (70 ms exponential ease), so notched mouse wheels and uneven trackpad event streams glide instead of jumping. Pinch zoom, nested scrollers that can still move, Reduce Motion, and page jumps keep native behaviour; a glide stops as soon as something else moves the view. (28203be)

Fixes and improvements

  • promote close actions in Windows and Linux menus (1c38188)
  • keep bionic ink additive and stroke-scaled on real PDFs — The paper background rule also painted the ink canvases, erasing the glyphs they thickened. Smear width now follows measured stroke width, and smaller lines inside a drop cap's tall box are left out of its thickening. (af00592)
  • render bionic reading directly in PDF glyph painting (baa13f3)
  • keep kernel and service selection per document instead of per session (0abab21)
  • promote EPUB, TF-IDF emphasis and smooth scrolling to General settings — - Move translation mode to the top of Translation > Behavior. - Rename "Open EPUB books" to "Support EPUB files" and move it to General > Document handling. - Rename TF-IDF font weighting to "Emphasize document-specific terms", move it to General > Emphasis, and mention TF-IDF in its hint. - Move force smooth scrolling to General > Reading behavior. (6c538e8)
  • kernel error popover blur and stacking above the tab bar (71d9501)
  • translate scanned PDFs by recovering hidden OCR text with pdf.js — Native extraction returns only an image for scanned pages, so only footers were translated. Re-extract such pages with pdf.js, normalize OCR words into lines, weight body size by characters, ship pdfjs-dist on every platform, and bump the layout cache schema to 4. (fe12bc7)
  • indent bionic reading sub-settings under the mode control (06f6a8d)

Update

Quit PDFMathReader, download the package for your system below, replace the existing application, and reopen it. Your documents and settings are preserved.

Full changelog

v0.1.10

Choose a tag to compare

@reycn reycn released this 13 Oct 15:54

PDFMathReader v0.1.10

This release includes 16 new features and 6 fixes and improvements since v0.1.9. See the highlights below.

0.1.10

New features

  • reopen documents with their cached translation version and scope annotations to it — Record which kernel and language pairs hold cached translations for each document, in the document's cache scope so clearing it discards the record. Expose them through GET /api/documents/:id/translation-versions. When a document opens and any usable kernel and language version is cached, open that version (the current setting first) with translations shown, and let the normal reading-scope logic translate the remaining pages. A document without a cached version is treated as new and follows the open-mode setting. Translation highlights and comments now remember the version that drew them. Other versions show only the note marker on the source text instead of misplaced translated rectangles, and jumping to such an annotation or quick link falls back to the source view. (808359a)
  • add experimental watermark removal by abnormal font and image size — Add an experimental, off-by-default setting (Settings > Experimental) that hides likely watermarks while rendering pages. The PDF file is never modified. Detection runs on the pdf.js operator list and is applied through the page.render operationsFilter, so only the watermark paint operations are skipped: - Text runs are removed when much larger than the body text and also diagonal, translucent, pale, or repeated at the same position across sampled pages. Diagonal translucent text is removed at a lower size threshold. - Images covering 8-85% of the page are removed when translucent, pale or repeated across pages. Full-page images (scans, backgrounds) are kept. - Size alone never removes anything, so titles, running footers and margin stamps stay. - Optional content layers named watermark are hidden. Render caches are keyed by the filter, and toggling the setting re-renders the visible pages. Adds analysis unit tests on real pdf.js operator lists and an Electron canvas pixel smoke test (--smoke-test=watermark). (848c530)
  • hide removed watermark text from the text layer and translation layout — When experimental watermark removal is on, the text of the runs it removes from the canvas is also left out of the places that read page text: - The reading text layer drops spans that match a removed run, so the invisible watermark can no longer be selected or copied. The layer redraws when the setting is toggled. - Ultra fast layout drops paragraphs that only hold removed watermark text, so they are neither covered by a translation nor sent to be translated. Matching is by normalized text: a short piece must equal a whole removed run, a longer piece may also be part of one. If the page cannot be analysed, the layout is used unchanged. Adds unit tests for the matcher, the repeated-position trait and the layout filter, and extends the Electron smoke test to check the text layer. (7bfb5c3)
  • add experimental dock-style magic zoom for recent document covers — Covers in the Recents gallery grow under the pointer and neighbours make room, like the macOS Dock. Off by default in Settings > Experimental; gallery view only; skipped for touch and reduced motion. (c66394a)
  • zoom nearby recent covers like the macOS Dock — Widen the magic zoom falloff to scale with cover spacing so about three covers on each side grow, and add side padding so outer covers are not clipped. (d6f4e90)
  • remove translucent page-sized watermark images — A tiled stamp is often a single image drawn several times larger than the page with a low fill alpha, so only a part of it shows. The image rule kept every image covering 85% of the page or more, which let those stamps through. Images at that size are now removed when they are translucent; opaque ones (scans, backgrounds) are still kept. Checked against a real research report whose every page carries one 25% alpha image of 15 times the page area: the stamp is gone from the canvas and returns when the setting is switched off. Across about 500 PDFs, only genuine stamps (Peer Review, Do Not Copy, Retracted, a faded map) are matched. (1aa136b)
  • add experimental automatic table of contents generation — Add an experimental, off-by-default setting (Settings > Experimental) that adds Edit > Generate Table of Contents for documents without bookmarks. Generation runs locally and its progress is shown in the Contents sidebar; nothing is sent anywhere. - A printed contents page is parsed first, including dot leaders and right-aligned page numbers, and its page numbers are mapped to physical pages. - Without one, headings are inferred from font size, numbering and spacing. - Scanned pages without a text layer are not supported, and the generated contents are not saved with the document. Adds unit tests for the generator and the new preference. (3f33f3a)
  • refine recents magic zoom with smoother easing and edge reveal — Focal cover reaches 2.4x with a two-cover reach, drawn over the Open PDF button on an opaque fill. Animation is script-driven with fade in/out, avoids per-frame layout reads, and slides partially visible covers into view on hover. Experimental labels drop the experimental suffix. (a09bc6c)
  • redesign kernel mode switcher with symbol icons and sliding selection ring — Replace the screenshot-style mode previews with bolt.fill, Lucide scale and sparkles icons tinted via CSS mask. Tiles are now 56x56 squircles, and a single selection ring slides between them (disabled for reduced motion). (09923cd)
  • verify Edit menu rotate current page is selectable — Assert that Rotate Current Page and the page-width/height alignment items are enabled once a document is open. Programmatic menu clicks bypass the enabled state, so the smoke test previously could not catch a greyed-out item. (aa6e05f)
  • add Finder-style tab mode switcher to reading behavior settings — Reading Behavior gains a Tabs / Window setting (default Window). In tab mode reader windows join one group, only the active tab is shown, and a Finder-style tab bar sits full width beneath the header, above the sidebar and pages. New Window (Cmd-N) and New Tab (Cmd-T) open the start page as a tab; Ctrl-Tab cycles tabs. Switching to Tabs merges open windows; switching back splits tabs into separate windows. The tabs desktop smoke covers grouping, layout, selection, reorder, close, Cmd-N and mode switching. (231bf7c)
  • scale sidebar thumbnails with sidebar width — Thumbnails grow and shrink with a resized sidebar relative to its default width while each page keeps its aspect ratio. The list stays anchored on the visible page and redraws sharply once a drag ends. (a96c772)
  • open a page gallery by double-clicking a sidebar thumbnail — Double-clicking a sidebar thumbnail opens a full-window contact sheet of every page that covers both the sidebar and the reader. The chosen page flies from the sidebar into its grid tile while the remaining tiles ripple in. Double-clicking a tile, or pressing Enter, flies that page back and resumes reading there; Esc closes the gallery without changing the page. Arrow keys, Home and End move the selection. Tiles use AppKit-style paper shadows with a lifted shadow during flight and a dark-mode variant. (f51d80e)
  • offer Open Link for URLs detected in selected text (a189949)
  • offer Copy Email for addresses detected in selected text (6aedde8)
  • add experimental side-by-side translation compare view — Translation > Compare… opens a two-column view: each side picks its own kernel and service, the left starting from the reader's current choice and the right from an empty setup card. Each lane renders and translates asynchronously. Disabled by default under Experimental settings. (eb5c7bd)

Fixes and improvements

  • keep visible pages from staying blank after a failed paint — A paint that threw aborted its lane and the rest of the pass, and nothing repainted the page until the next scroll or zoom. Contain each page paint, log the error, and retry a visible empty canvas up to three times with a growing pause. A cached frame no longer counts as a hit when its canvas was emptied. Release the pdf.js page data of watermark-sample pages so the scan no longer holds tens of megabytes per page. ...
Read more

v0.1.9

Choose a tag to compare

@reycn reycn released this 12 Oct 12:26

PDFMathReader v0.1.9

This release includes 12 new features and 12 fixes and improvements since v0.1.7. See the highlights below.

0.1.9

New features

  • show actual kernel translation progress (7e654a4)
  • discover models and select prompt files (e7ba7e3)
  • animate reader paragraph gap adjustments (d0a00ef)
  • 即便模型存在差异,也优先沿用已有译文,默认关闭 (d3be8d1)
  • epub support (in experimental feature setting, enabled by default) (fd384a7)
  • ultrafast kernel supports customized setting of "Using serif fonts" and "Specify a font" in mode setting of the advanced setting menu (bb3884f)
  • service provider supports more than one OpenAI compatible services (add, rename, edit, delete), storages in application and pass to kernel according to the user's choice (940e40a)
  • experimental remote Precise kernel over HTTP (zotero-pdf2zh protocol) — Add an optional client for the zotero-pdf2zh server protocol. Precise pages are translated remotely only when GET /health returns status "ok"; if the check or the remote job fails, the local kernel runs instead. - Upload one-page PDFs to /translate (async), poll /api/tasks and /api/history, download the mono PDF from /translatedFile/<name> - Never forward API keys; the server uses its own translation service - Glossaries, native/on-device services and the Fast kernel stay local - Remote pages use their own cache key, so they reopen while offline; they carry no paragraph layout (no reading text layer) - Settings > Experimental: switch, server URL, optional service, health check - Credit zotero-pdf2zh in README (en, zh-CN) (5125aef)
  • add experimental Jev paragraph reading aids (8d4f08e)
  • move GPU inference preference to Performance settings — The Prefer GPU inference switch now lives under Performance > Resources for the Fast and Precise kernels. Advanced settings keep the stored value when saving or restoring defaults. (fb7dcc9)
  • better complex layout detection in ultrafast mode (66f568b)
  • add zotero-pdf2zh to About project links (2a03975)

Fixes and improvements

  • allow longer chatgpt subscription inference (8f46393)
  • reorganize settings and refine controls (7f53f5f)
  • the translation remains refreshed after switching another translation service when the using old translation option enabled; expected behavior is that, if the doc + kernel matches and the option is enabled, prioritize the translation cache of texts (1a1e7f2)
  • paragraph spaces optimization not working as expected in ultrafast mode (with unexpected additional spaces) (dab9e41)
  • clipped focus ring on provider settings text fields (04ca6fa)
  • Siliconflow free service is limited by /config qps and retries after 429, Precise and Fast custom prompt packages are included in the proxy template to avoid 400 errors (6925030)
  • scrollable pop-up menu when the model list is longer than the view (5857f5c)
  • remote Precise kernel takes precedence and fails over on stalled servers — - Use the remote kernel even when a custom service or glossary is selected; the server cannot receive either, so log a diagnostic instead of silently falling back to the local kernel - Time out job submission and downloads, and give up after repeated unanswered status polls so a hung server falls back to the local kernel - Tolerate servers without /api/tasks (4.0.x) by relying on /api/history (784c5de)
  • show indeterminate progress while the remote Precise kernel reports 0% (3e9793b)
  • estimate remote Precise kernel progress from status text (a74aa67)
  • combine interrupted paragraphs before Fast typesetting (4e087e6)
  • lazy-load UI languages and scope the Liquid Glass observer (0.1.8) — - Split the UI strings into one module per language under src/i18n/locales. English stays bundled as the fallback; other languages load on first use through loadUILanguage(). The startup App chunk shrinks from 761.5 kB to 463.6 kB (224.0 kB to 147.6 kB gzip). - setUILanguage applies the language, document lang and dir only after its strings are loaded; a newer choice supersedes a pending one. - Connect the document.body mutation observer only while Liquid Glass is enabled and not downgraded to the solid fallback. - Add the missing translation.pdfIncomplete string for ar, arz, ur, hi, bn, ru, pt, de and pcm, which fixes the ui-language test. - Add tests for lazy loading and the observer lifecycle. - Bump the version to 0.1.8. (baa30e8)

Update

Quit PDFMathReader, download the package for your system below, replace the existing application, and reopen it. Your documents and settings are preserved.

Full changelog

v0.1.7

Choose a tag to compare

@reycn reycn released this 10 Oct 12:20

PDFMathReader v0.1.7

This release includes 4 new features and 3 fixes and improvements since v0.1.6. See the highlights below.

0.1.7

New features

  • notify PDF completion and allow 200 MB files (c49c7c0)
  • add experimental ChatGPT Subscription translation provider (7d1f24e)
  • add GPU inference preference for Windows and macOS (87672e8)
  • use GPU for formula OCR when enabled (e900310)

Fixes and improvements

  • allow revealing partially translated PDFs on Windows (b36f343)
  • use native file manager sending actions (a8dd9f0)
  • restore external reading and ultrafast translated PDF export — Keep the current document active while saving reading state. Exclude reader associations and show external application windows. Pass encoded file URLs to Chromium PDF handlers. Export ultrafast paragraph translations as PDF overlays while preserving original pages and page rotations. (351bf2b)

Update

Quit PDFMathReader, download the package for your system below, replace the existing application, and reopen it. Your documents and settings are preserved.

Full changelog

Build provenance: packages originate from Packaging run 38050666816 at commit 7b29796473ef227507b1fef9b0b751fa3bb187ae. macOS packages were subsequently signed with the pinned Apple Development identity (team XUG85B2S2L) and passed deep strict signature and version verification; application source archives were unchanged by signing. Windows and Linux packages are the original CI artifacts.

v0.1.6

Choose a tag to compare

@reycn reycn released this 10 Oct 07:44

PDFMathReader v0.1.6

This release includes 1 new features and 2 fixes and improvements since v0.1.5. See the highlights below.

0.1.6

New features

  • add native Windows PDF file actions (807bc9f)

Fixes and improvements

  • confirm highlight deletion with one click (7a0a4f7)
  • sort languages by name and contain reader overlays (7510c12)

Update

Quit PDFMathReader, download the package for your system below, replace the existing application, and reopen it. Your documents and settings are preserved.

Full changelog

v0.1.5

Choose a tag to compare

@reycn reycn released this 10 Oct 07:04

PDFMathReader v0.1.5

This release includes 2 new features and 6 fixes and improvements since v0.1.4. See the highlights below.

0.1.5

New features

  • add Finder and AirDrop file actions on macOS — Add localized File menu actions for original and translated PDFs. Assemble completed translated pages into a PDF for Finder and AirDrop, and disable translated actions until all pages are available. (218541d)
  • add nine interface languages — Sort interface language choices by English country name and default to English. Add native menu translations, RTL metadata and PDF layout isolation, with locale coverage and persistence checks. (041a09d)

Fixes and improvements

  • repair update installation and recent controls — Copy ASAR archives as physical files and preserve relative framework symlinks. Report bounded update failure details and verify pinned macOS release signatures before publication. Remove the duplicate white SDK substrate beneath recent-document glass controls. (6c3663b)
  • defer cache cleanup until browsing is idle — Defer automatic cache cleanup until 30 seconds of inactivity and no active translation or layout tasks. Share activity across reader backends, abort cleanup when browsing resumes, and classify eviction candidates in one pass instead of repeated cache scans. Return cache-only misses before Python and kernel startup probes. (6e7a18f)
  • upgrade liquid-glass to 0.0.2 (288a646)
  • activate native PDF apps before handing off — Use a packaged macOS helper to wait for Launch Services and foreground activation before completing PDF handoff. Keep discovered applications available across document windows and sign the native helper with the app. Validation: 165 application tests, lint, and build passed. (9c542ef)
  • open current PDF in native applications (0675d4c)
  • remove duplicate annotation glass outline (06995ec)

Update

Quit PDFMathReader, download the package for your system below, replace the existing application, and reopen it. Your documents and settings are preserved.

Full changelog

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 09 Oct 09:48

PDFMathReader v0.1.4

This release includes 1 new features and 2 fixes and improvements since v0.1.3. See the highlights below.

0.1.4

New features

  • add experimental Jev document language check — Skip automatic translation when bounded PDF samples match the source language. Prefer a custom Jev token over TYPESAFE_API_KEY and preserve translation on uncertain or failed checks. Rename Chinese formula recognition and Liquid Glass settings. (00d5afb)

Fixes and improvements

  • support Fast OCR and stabilize translation workers — Persist OCR language data and capture scanned-page paragraphs; repair missing OCR dependencies in existing Fast environments. Disable native telemetry to prevent concurrent worker shutdown crashes, reuse reading state by content hash, and group experimental options below advanced settings. (5d024a2)
  • restore PDF rendering and document window behavior — Bundle PDF.js CMaps, standard fonts, and image decoders; keep sidebar thumbnail rendering independent from page scrolling and recover visible thumbnails after bitmap eviction. Close the current document window when another document remains open, and compare document language with the configured translation target. Add rendering, window lifecycle, and language regression coverage. (b0d23ef)

Update

Quit PDFMathReader, download the package for your system below, replace the existing application, and reopen it. Your documents and settings are preserved.

Full changelog

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 09 Oct 07:00

PDFMathReader v0.1.3

This release includes 3 new features and 2 fixes and improvements since v0.1.2. See the highlights below.

0.1.3

New features

  • add liquid glass and translation refocus — Add macOS Liquid Glass settings and controls, progressive title bar blur, glass menus and feedback surfaces. Fix sidebar tab interaction and inline tool icons. Use paragraph or page blur-and-refocus translation transitions while preserving character reveal code. Recover translation jobs and cover queue and animation edge cases. (d68b761)
  • improve reading layout and translation behavior — Add optional paragraph gap compaction and reading-ahead translation scheduling. Preserve cropped canvas clarity and annotation visibility, improve external application handoff, and refine settings navigation and controls. (5729cd0)
  • restore translated pages before kernel startup (e902a30)

Fixes and improvements

  • prevent blank pages during reader rendering — Paint visible pages independently, reuse sharper in-flight frames, and retain bounded prefetch previews without duplicate offscreen canvases. Use compacted coordinates for translation reveal animations and cover rendering handoffs with regression tests. (1574f03)
  • stabilize liquid glass sidebar layout and refresh (b805498)

Update

Quit PDFMathReader, download the package for your system below, replace the existing application, and reopen it. Your documents and settings are preserved.

Full changelog