Skip to content

Releases

anymd 8.5.11

Choose a tag to compare

@github-actions github-actions released this 07 Nov 20:13
2b8bfcd

Patch Changes

  • Apply stricter archive entry validation.

anymd 8.5.10

Choose a tag to compare

@github-actions github-actions released this 07 Nov 18:29
f048a47

Patch Changes

  • Stop non-PDF conversion at 256 MiB of Markdown and ZIP-based conversion at 512 MiB of cumulative inflated input. Repeated EPUB chapters, slides and worksheet aliases count again; DOCX body, comments, footnotes and endnotes share one output ceiling. Resource-limit errors preserve the existing ConvertError variants and expose typed detail through limit_exceeded().
  • Apply source-access rules before media sidecars are discovered or opened. Restricted callers cannot read subtitles or sibling media outside their allowed directories, and unrestricted local conversion is unchanged.

anymd 8.5.9

Choose a tag to compare

@github-actions github-actions released this 03 Nov 06:17
fa78595

Patch Changes

  • Release the UTF-16 fixes from 8.5.8 with a complete native package set. The Linux x64 npm package for 8.5.8 remained staged and unavailable; this release uses a new version without replacing it.
  • Use portable archive recovery for existing native packages on Windows.

anymd 8.5.7

Choose a tag to compare

@github-actions github-actions released this 30 Oct 20:42
7a848cc

Patch Changes

  • Preserve the --output file when any input fails to convert, including runs with a mix of valid and invalid inputs. A failed conversion no longer replaces an earlier report with empty or partial output.
  • Accept -- before input paths, so names starting with - can be converted and filenames such as --help are read literally. Keep the setup client list beside its command in --help.

Documentation

  • Clarify output preservation and shell redirection, and mark the Python package as awaiting PyPI publication instead of offering unavailable pip and uvx installs.

anymd 8.5.6

Choose a tag to compare

@github-actions github-actions released this 30 Oct 10:15
6fecf03

Patch Changes

  • Accept the current production Money licence signer alongside the historical key. Explicit pro --test activation uses separate test trust and storage, keeping test grants out of ordinary CLI/MCP Pro operations.

  • State each shared rule once. The pages selector, the two-decimal ratio, the UTF-16 length, the warning list and the token estimate and front-matter quoting that the CLI and the browser both use now live in anymd-core (pages, fusion_util, text_rules), and the provider concurrency slot and request budget that OCR and region analysis both enforce live in anymd (provider_budget, with pdf_evidence_common for the shared argument parsing, truncation and tool result). Messages, limits, accepted page specifications and outputs are unchanged. The WASM build links anymd-core for these rules.

  • The browser build no longer links a socket: anymd-core's URL fetcher is behind its native feature (on by default), so the playground keeps its formats (a browser opens no URL), and a build without it refuses a url source with a message instead of failing to link.

  • Remove the unused tool_routes module and the unused assert_host_not_private export from anymd-core.

  • Dependency declarations now match their use: the package renames sylphx-mcp-kit (imported as mcp_kit), kamadak-exif (imported as exif), the vendored OCR crate's feature-only candle-transformers and the vendored PDF fork's not-yet-used postscript are declared to cargo machete, so the unused-dependency census reports no false edges.

Documentation

  • Record how published advisories are kept: every published advisory gets a CVE ID from GitHub as CNA, and one vulnerability is published once (docs/security/advisories.md). GHSA-xrc8-gj3q-m8vm is the canonical record for the pdf_compare allowlist bypass; GHSA-f8xf-6vpc-6hpj is its duplicate and says so.
  • Name the hosted, metered mode of the same crates: Sylphx AI parse serves the anymd-core, anymd-pdf and anymd-formats crates at a pinned published version for callers that want no local runtime, billed per page. The local anymd binary stays free and MIT and keeps every feature. Vision and the "Local and hosted" page now record this instead of saying a hosted service would be a separate product.
  • Record the crate API policy: the public converter API of anymd-core, anymd-pdf and anymd-formats is semver-stable within a major version. A patch release fixes behaviour without changing the public API, a minor release adds API without breaking one, and a breaking change ships only in a major version — so the hosted service's pinned version keeps working and is moved forward deliberately.

anymd 8.5.5

Choose a tag to compare

@github-actions github-actions released this 19 Oct 17:47
52b2ee4

Patch Changes

  • With --allow-dir or MCP_PDF_ALLOWED_DIRS set, every tool now refuses a local path outside those directories before opening it. pdf_compare was the one entrypoint that reached the comparison without that check; it now applies the same check as read, search and inspect, and a comparison of files inside the allowed directories is unchanged. A video subtitle sidecar is admitted before it is read.
  • Dependencies: zip 9.0.5, calamine 0.37, chacha20 0.10.2. No behaviour change.

anymd 8.5.4

Choose a tag to compare

@github-actions github-actions released this 16 Oct 00:08
a06cb41

Patch Changes

  • anymd pro buy now uses the live checkout service: it opens buy.sylphx.com/buy/anymd in your browser and saves the licence token it issues to this machine, instead of printing the Pro page. --no-browser and --json are unchanged, existing tokens and file locations are unchanged, and the Pro page plus the purchase command are still printed when the checkout cannot be reached.

anymd 8.5.3

Choose a tag to compare

@github-actions github-actions released this 11 Oct 09:48
1e4cb25

Patch Changes

  • Fix optional MCP arguments appearing in required in tools/list. Strict clients such as OpenCode can now omit read's transcript, download_asr_model, images and revisions, and search's case_sensitive and whole_word. Required arguments, nullable types, allowed values and limits are unchanged. Regression tests cover every listed tool and the legacy search schema. Thanks to @lenucksi for the detailed report and reproduction (#881).

anymd 8.5.1

Choose a tag to compare

@github-actions github-actions released this 02 Oct 23:49
f1d369b

Patch Changes

  • anymd now re-checks the OCR engine program (anymd-ocr-vlm) every time it starts to use it, not only when it is installed, so a changed or replaced file is caught before it runs. A brief "text file busy" error while the engine is being refreshed no longer fails the run; anymd retries it.

  • When OCR runs on a page or image and finds no text, the result now says OCR found no text instead of looking like a page that was never read.

  • anymd pro buy [--no-browser] [--json] opens the Pro page; in-terminal purchase turns on when the checkout service is live. anymd pro activate and anymd pro status are unchanged, and existing tokens and token files keep working (same key, ANYMD_PRO_TOKEN, and <config dir>/anymd/pro-token). The licence code now comes from sylphx-mcp-kit 0.6, so anymd pro status also shows where the token was read and warns before a licence with an expiry runs out.

anymd 8.5.0

Choose a tag to compare

@github-actions github-actions released this 02 Oct 22:24
d80a930

Minor Changes

  • The default anymd binary is smaller: about 25 MB instead of 35 MB on Linux x64, with no change to anything it converts. The local VLM OCR engine moved out into its own small program, anymd-ocr-vlm (about 10 MB). anymd setup ocr downloads it in the same one-time step as the model weights; anymd checks a signature from a key built into anymd itself (bound to this exact version), downloads over HTTPS only, and checks the program's own version before installing it. --ocr vlm needs the same setup as before, and its output is unchanged. After an upgrade, anymd refreshes the 10 MB engine once by itself for anyone who already ran anymd setup ocr; the 2 GB model weights are never downloaded without asking. If you ask for VLM OCR before running anymd setup ocr, anymd says VLM OCR needs a one-time setup: run anymd setup ocr``; over MCP that is a normal reply rather than an error. Tesseract OCR and every other feature need no setup. Builds from source with --features ocr-vlm keep the engine inside the binary.

  • read now marks scanned PDF pages it could not read. A page with no text layer that images cover gets <!-- page N: scanned image, no text layer; enable OCR to read it: anymd setup ocr / ocr: true --> after its page marker, the front matter gains scanned_pages: [N, …], and a result made only of scans opens with a one-line hint, so agents can tell an empty page from an unread scan. Pages with text, and pages OCR reads, are unchanged.