Releases: Yurzi/dsh-pdf-mineru
Release list
v0.0.15
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
v0.0.14
dsh-pdf-mineru v0.0.14 establishes an evidence-based PDF reading workflow—spanning in-document search, targeted block inspection, bounded continuation, and local original-page verification. This release incorporates all reader improvements and reliability fixes since v0.0.12, including reference list preservation, cursor v3 presentation state inheritance, scoped diagnostics, and local Poppler-based page rendering.
Added
- Added in-document literal search (
query), exact block reading (block_id), and stable result-bound block identifiers that preserve original figure/table labels and source provenance. (7c91e69) - Added local original-page verification (
view: 'page') with optionalexpected_sha256, enabling direct Poppler-based page rendering against temporary streaming snapshots with timeout, cancellation, and output limits without contacting external Providers. (7c91e69) - Added structured block
diagnostics, advisory formulaverification_hints, engine and readerprovenancemetadata, and explicitmetadata_shortenedmarkers under constrained output budgets. (77cb48f)
Fixed
- Fixed continuation cursors dropping
inline_images: false: continuation now inherits image intent when omitted, allows explicit boolean overrides for subsequent cursors, and consistently respects model capabilities and image budgets. (77cb48f) - Restored reference list entries from
list,ref_text, andlist_itemsin parsed MinerU results, preserving entry ordering, numbering, and line breaks without lossy text coercion. (77cb48f) - Scoped quality diagnostics strictly to delivered content blocks to eliminate unrelated document warnings in TOC, table, search, or continuation responses, and recognized standard header, footer, footnote, and reference blocks. (77cb48f)
- Ensured all reading responses explicitly return a nullable
cursor(nullwhen reading is complete or not requested), preventing ambiguity in client continuation flows. (4ab2c62)
Changed
- Enforced bounded reading response budgets: capped default responses at 12,000 UTF-16 units with at most 8,000 units per body chunk and a 48,000-byte ceiling for JSON/prose outputs; omitted exported cache paths and duplicate TOC metadata by default unless requested via
focus: 'artifacts'orfocus: 'toc'. (7c91e69) - Reading Cursor v3: Continuation cursors now bind selected text, projection digests, artifact hashes, and reader/index versions while persisting image presentation intent. Older v1 and v2 cursor tokens are rejected with a restart instruction; existing published parse caches remain fully compatible without migration. Hosts should reload plugin tool definitions after upgrading. (77cb48f)
- Consolidated interim development reports into the maintained Model Reading Guide and refreshed README, architecture, and contributor documentation. (77cb48f)
- Expanded offline test suites and dual-provider regression coverage for parsed references, formula retention, diagnostic scoping, and continuation settings. (77cb48f)
Full Changelog: v0.0.12...v0.0.14
v0.0.12
dsh-pdf-mineru v0.0.12 upgrades runtime compatibility to DeepSeek Harness v0.1.5-rc.2, prevents user settings bloat through intelligent diff-to-base configuration pruning, introduces automatic legacy settings slimming on startup, adds page-level and section-level reset-to-defaults controls in the Web GUI, and enhances model-facing page range guidance on out-of-bounds requests.
Added
- Pruned default configuration values on save via
pruneConfigToDiffso that unchanged defaults are not written tosettings.yaml, preventing user configuration bloat. (16ceb76) - Automatic startup slimming via
detectBloatedSettingsOpsandsettings.mutateto clean up legacy bloated default entries from existingsettings.yamlfiles. (16ceb76) - Added page-level "Reset to Defaults" and section-level "Reset" controls in the Web settings UI to easily restore default values. (16ceb76)
- Formatted model-facing out-of-range error messages (
[PAGE_OUT_OF_RANGE]) to include the valid document page range (e.g.valid: 1-3, total pages: 3) when requested pages fall outside document bounds. (6d91815)
Changed
- Raised minimum supported DSH version to
0.1.5-rc.2and aligned DSH runtime peers, development dependencies, and lockfile. (7090cc4) - Use typed live Agent/session route access for image-capability detection, retaining request-header precedence, Agent-option fallback, and conservative handling of unavailable model metadata. (7090cc4)
- Replace obsolete Host, Tool, and Connection ambient declarations with published types; align client RPC calls and tool schema inference with rc.2 contracts. (7090cc4)
Fixed
- Explicitly inject both
connectionandwebServerfor RPC registration so headless hosts retain both model tools without attempting HTTP route registration. (7090cc4) - Use a caller-local guarded route registrar to handle Cordis service-getter dependency scoping and enforce loopback-only RPC access. (7090cc4)
- Include required empty
detailsin RPC error envelopes so rc.2 clients retain actionable MinerU error objects instead of rejecting the wire response. (7090cc4)
Full Changelog: v0.0.11...v0.0.12
v0.0.11
dsh-pdf-mineru v0.0.11 delivers critical storage concurrency protections, configuration schema v2 with automated migration, configurable inline image budgets, precise reading-continuation cursors, gated secondary artifacts, and strict lossless JSON tool outputs.
⚠️ Breaking Changes
- Storage Protocol & Locking: Stop all MinerU processes sharing the storage root before upgrading.
.process.lockis now a persistent version fence, not a lock to delete at normal shutdown. Local hard-link support and shared PID visibility are required; NFS or cross-host locking is not supported. (c597545) - Configuration Schema v2: Plugin configuration is versioned as schema v2. Legacy schema v1 configuration is automatically migrated: obsolete
defaults.artifactsandlimits.maxFilesPerRequestsettings are validated and pruned. (2a363d4) - Continuation Cursor Contract: Replaced numeric line offsets (
read_offset_line) with an opaque Unicode-safecursortoken for partial reading continuations. (c597545) - Secondary Artifact Gating: Secondary artifact file paths (
layout.json,model.json, etc.) inread_pdfare now omitted by default unless explicitly requested viafocus: 'artifacts'. (deded1c)
Added
- Configurable per-request inline image budget via
output.maxInlineImagessetting (defaulting to 6). (d571013) - Added
artifactsfocus option toread_pdfto inspect raw secondary artifact file paths on demand. (deded1c) - Automatic legal document boundary clamping (
narrowPageSelection) for out-of-bounds page requests inread_pdf. (deded1c)
Fixed
- Ensured all tool outputs strictly conform to lossless JSON by omitting undefined optional properties. (f2a3dad)
- Removed obsolete
defaults.artifactsfrom the shipped Cordis configuration to ensure clean startup under strict config validation. (c597545) - Routed async completion through a separate bounded synopsis API instead of Markdown projection flags, avoiding oversized Markdown allocations. (c597545, e75fc8d)
- Accurately accounted for consumed image bytes during partial reads, stat checks, and close failures; isolated stable Figure identifiers from attachment failures. (c597545, e75fc8d)
- Protected readers, image processors, producers, and storage maintenance across concurrent processes sharing a storage root, strictly rejecting symlinked traversal. (c597545)
- Enforced non-mutating cache reads and isolated published results from non-deterministic provider output. (c597545)
- Bounded maintenance traversal and surfaced incomplete storage scan statistics as lower bounds in the Web GUI. (c597545)
Changed
- Upgraded storage coordination to scoped local-filesystem bakery locking (
withLock) with a persistent.process.lockversion fence. (c597545) - Migrated configuration schema to v2, adding bounded backward-compatible migration logic for v1 configuration. (2a363d4)
- Streamlined prose presentation: removed verbose result headers and manifest paths, standardizing figure labeling as
Figure N (Page X, "Title")and displaying explicit page ranges. (deded1c) - Replaced numeric line offsets with an opaque Unicode-safe
cursortoken for partial reading continuations. (c597545)
Full Changelog: v0.0.10...v0.0.11
v0.0.10
dsh-pdf-mineru v0.0.10 guards against spurious inline image emissions on non-image focus modes and prevents unintended full document scans when page image candidate lists are empty.
Fixed
- Guarded
shouldInlineinread_pdfto only activate whenfocusincludes the image modality, preventing inline image emission for non-image focus modes (toc,text,table). (bb86df5) - Prevented
inlineImagesForSingleResultfrom falling back to full document scanning when candidate page image list is empty, adding comprehensive regression tests for per-page image isolation. (bb86df5)
Full Changelog: v0.0.9...v0.0.10
v0.0.9
dsh-pdf-mineru v0.0.9 introduces document table of contents inspection via focus: toc in read_pdf, and ensures strict schema compliance for inlined image outputs.
Added
- Added
tocoption (withoutlinealias) tofocusparameter inread_pdf, formatting and projecting document table of contents with hierarchical indentation and page indexing as Markdown. (62285e6) - Added comprehensive unit tests covering TOC markdown formatting, focus normalization, and outline-only content projection. (62285e6)
Fixed
- Omitted undeclared internal
attachmentRefproperty frominlined_imagestool output items to strictly conform toreadPdfResultSchema(additionalProperties: false), reconstructingImageAttachmentRefwithinrenderResult. (229bd2f)
Full Changelog: v0.0.8...v0.0.9
v0.0.8
Changed
- Refactored model tool surface to decoupled, specialized single-document tools:
read_pdf(synchronous reading with page slicing viapages, content focus filtering viafocus, and reading-order multimodal figure inlining) andasync_parse_pdf(native background parsing with document structure summary). - Enforced single
file_pathacross tools, pipeline, Zod schema, and SettingsPage, removing multi-file parameters (file_paths) andmaxFilesPerRequestlimit while preserving underlying provider batch primitives. - Completely decoupled proprietary MinerU parameters (
model,ocr,formula,table,language,artifacts,max_inline_images) from tool arguments; always request all artifacts from providers for permanent local caching. - Replaced markdown preview fields with full
markdown_contentand authoritativecontent_status(complete,partial,not_requested), featuring fair character budget allocation, clean paragraph-boundary truncation, and resume line offsets for partial deliveries. - Enhanced
pagesparsing to flexibly accept single numbers, number arrays, and range strings (e.g."1-3, 5"); addedfocusfiltering based on cachedcontent_list.jsonwith graceful fallback to Markdown. - Strictly ordered inline images by natural document reading order, linked to page selection, bound markdown captions, and eliminated rigid image quotas.
- Re-architected model output and tool descriptions to strict Plain Text English with zero emoji, eliminating hallucinated guidance references to deprecated fields.
- Decoupled document presentation, outline (TOC) extraction, character budget allocation, and prose formatting from
MinerUServiceinto dedicatedsrc/service/result-presenter.ts. - Consolidated shared HTTP request pipelines, timeout management, error body diagnostics, and retry policies into
src/providers/http-client.ts, eliminating duplicate logic across official and self-hosted providers. - Upgraded
self-hosted-v2multipart streaming to Node 22 nativeFormDataandopenAsBlob, removing third-partyform-datapackage dependency. - Replaced hand-rolled streaming JSON parser in
safe-zipwith standard V8JSON.parse, and standardized delay timers across all modules usingnode:timers/promises. - Adopted scoped locking (
withLock) across mutating storage operations (clearCache,commitTransaction,quarantine) with contention backoff, eliminating startup lifetime lock holding to allow concurrent multi-process initialization. - Eliminated self-inflicted read-only (
0o400/0o500) permission cycles inresult-repository, streamlining cache cleanup and quarantine deletions. - Modernized single-process storage lock (
ProcessLock) to use atomic file creation (flag: 'wx') with cross-platform dead PID reclamation, retiring abstract Unix sockets and Windows named pipes.
Removed
- Removed
mineru_healthfrom the model-facing tool surface, keeping it strictly as an internal loopback RPC probe for the Web GUI. - Removed obsolete batch coordination (
batch-coordinator.ts,batchViewSchema) in favor of unifiedResultView.