This release adds automatic local PDF.js rendering when Poppler is unavailable, while keeping the existing read_pdf(view: "page") interface, source verification, bounded execution and native image delivery. Reader cursor v3, index v2 and parsed caches remain unchanged.
Added
- Added a PDF.js 6.3.289 + @napi-rs/canvas 1.0.9 subprocess fallback, with package-local fonts, CMaps, ICC profiles and WASM resources. Normal installation does not require system Poppler on supported native platforms. (25df849)
- Added
renderer: "poppler" | "pdfjs"to original-page results, strict output schemas and Native presentation, with matching physical page-count provenance. (25df849) - Added backend-selection, real subprocess and PDF fixture regressions, plus offline full-tool and installed-package smoke validation from an unrelated working directory. (25df849)
Fixed
- Preserve cancellation and the shared deadline even when temporary cleanup finishes late; cleanup errors cannot mask an already established primary failure. (25df849)
- Distinguish Poppler output I/O errors and signal termination from invalid PDFs without retrying another backend. (25df849)
- Validate complete bounded PNG containers, including chunks, checksums and end markers, before attachment delivery. (25df849)
Changed
- Prefer Poppler and fall back only for missing or explicitly non-executable dependencies. PDF failures, hash/identity mismatches, out-of-range pages, cancellation, timeouts and resource limits never trigger a backend retry. (25df849)
- Share one checked snapshot, concurrency slot and total deadline across both renderers. Ship the fixed unbundled Node entry explicitly and keep heavy/native runtime dependencies outside the host/client bundles. (25df849)
- Document supported native platforms, installation requirements and rendering limits. Canvas still requires a platform binary; application/V8 limits are not an OS sandbox or a total process-memory cap, and the two renderers are not pixel-equivalent. (25df849)
Full Changelog: v0.0.14...v0.0.15