Repository navigation
Releases
anymd 8.5.11
Patch Changes
- Apply stricter archive entry validation.
anymd 8.5.10
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
ConvertErrorvariants and expose typed detail throughlimit_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
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
Patch Changes
- Preserve the
--outputfile 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--helpare 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
pipanduvxinstalls.
anymd 8.5.6
Patch Changes
-
Accept the current production Money licence signer alongside the historical key. Explicit
pro --testactivation uses separate test trust and storage, keeping test grants out of ordinary CLI/MCP Pro operations. -
State each shared rule once. The
pagesselector, 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 inanymd-core(pages,fusion_util,text_rules), and the provider concurrency slot and request budget that OCR and region analysis both enforce live inanymd(provider_budget, withpdf_evidence_commonfor the shared argument parsing, truncation and tool result). Messages, limits, accepted page specifications and outputs are unchanged. The WASM build linksanymd-corefor these rules. -
The browser build no longer links a socket:
anymd-core's URL fetcher is behind itsnativefeature (on by default), so the playground keeps its formats (a browser opens no URL), and a build without it refuses aurlsource with a message instead of failing to link. -
Remove the unused
tool_routesmodule and the unusedassert_host_not_privateexport fromanymd-core. -
Dependency declarations now match their use: the package renames
sylphx-mcp-kit(imported asmcp_kit),kamadak-exif(imported asexif), the vendored OCR crate's feature-onlycandle-transformersand the vendored PDF fork's not-yet-usedpostscriptare declared tocargo 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_compareallowlist 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-pdfandanymd-formatscrates at a pinned published version for callers that want no local runtime, billed per page. The localanymdbinary 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-pdfandanymd-formatsis 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
Patch Changes
- With
--allow-dirorMCP_PDF_ALLOWED_DIRSset, every tool now refuses a local path outside those directories before opening it.pdf_comparewas the one entrypoint that reached the comparison without that check; it now applies the same check asread,searchandinspect, 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
Patch Changes
anymd pro buynow uses the live checkout service: it opensbuy.sylphx.com/buy/anymdin your browser and saves the licence token it issues to this machine, instead of printing the Pro page.--no-browserand--jsonare 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
Patch Changes
- Fix optional MCP arguments appearing in
requiredintools/list. Strict clients such as OpenCode can now omitread'stranscript,download_asr_model,imagesandrevisions, andsearch'scase_sensitiveandwhole_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
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 textinstead 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 activateandanymd pro statusare 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 fromsylphx-mcp-kit0.6, soanymd pro statusalso shows where the token was read and warns before a licence with an expiry runs out.
anymd 8.5.0
Minor Changes
-
The default
anymdbinary 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 ocrdownloads 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 vlmneeds 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 rananymd setup ocr; the 2 GB model weights are never downloaded without asking. If you ask for VLM OCR before runninganymd setup ocr, anymd saysVLM OCR needs a one-time setup: runanymd 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-vlmkeep the engine inside the binary. -
readnow 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 gainsscanned_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.